<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">GMD</journal-id><journal-title-group>
    <journal-title>Geoscientific Model Development</journal-title>
    <abbrev-journal-title abbrev-type="publisher">GMD</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Geosci. Model Dev.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1991-9603</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/gmd-19-4497-2026</article-id><title-group><article-title>The Normalized Interpolated Convolution from  an Adaptive Subgrid (NICAS) method</article-title><alt-title>The NICAS method</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Ménétrier</surname><given-names>Benjamin</given-names></name>
          <email>benjamin.menetrier@met.no</email>
        </contrib>
        <aff id="aff1"><label>1</label><institution>The Norwegian Meteorological Institute, P.O. Box 43, Blindern, 0313 Oslo, Norway</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Benjamin Ménétrier (benjamin.menetrier@met.no)</corresp></author-notes><pub-date><day>27</day><month>May</month><year>2026</year></pub-date>
      
      <volume>19</volume>
      <issue>10</issue>
      <fpage>4497</fpage><lpage>4511</lpage>
      <history>
        <date date-type="received"><day>21</day><month>November</month><year>2025</year></date>
           <date date-type="rev-request"><day>2</day><month>January</month><year>2026</year></date>
           <date date-type="rev-recd"><day>16</day><month>March</month><year>2026</year></date>
           <date date-type="accepted"><day>16</day><month>April</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Benjamin Ménétrier</copyright-statement>
        <copyright-year>2026</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026.html">This article is available from https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e80">This article presents an innovative method to apply a correlation operator to a vector in a high-dimensional system, as often needed in variational data assimilation algorithms. The Normalized Interpolated Convolution from an Adaptive Subgrid (NICAS) method is very appealing as it can work for any grid, on domains with complex boundaries, producing inhomogeneous and anisotropic correlation functions, and it is very efficient for large correlation support radii. In this study, we detail the method motivations and theoretical background, we describe the practical implementation of several important features, and we assess its computational cost in various configurations to exhibit its strengths and limitations. Finally, we compare these characteristics to the similar existing methods.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>University Corporation for Atmospheric Research</funding-source>
<award-id>SUBAWD001085</award-id>
</award-group>
</funding-group>
</article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e92">In variational data assimilation, the background error term of the minimized cost function requires the application of a background error covariance matrix. Due to the size of the system, this matrix is never stored and applied directly, but modeled using different techniques, so it is referred to as “operator” rather than “matrix” hereafter. While the inverse of the background error operator generally appears in the cost function, only its forward application or the application of one of its square-roots is needed in minimization algorithms, thanks to preconditioning techniques.</p>
      <p id="d2e95">We can distinguish two broad classes of background error covariance operators: <list list-type="order"><list-item>
      <p id="d2e100">Parametrized covariance operators are built as sequences of sparse operators (see <xref ref-type="bibr" rid="bib1.bibx1 bib1.bibx2" id="altparen.1"/> for a detailed review), where the central operator is a univariate correlation operator.</p></list-item><list-item>
      <p id="d2e107">Ensemble-based covariance operators are directly sampled from an ensemble of forecasts, and the sampling noise is damped with a localization operator, which has the structure of a correlation operator <xref ref-type="bibr" rid="bib1.bibx14 bib1.bibx5" id="paren.2"/>.</p></list-item></list> In both cases, it is thus necessary to apply a correlation operator to a vector, and this operation has to be performed many times: as many as the number of iterations in the minimization for a parametrized covariance operator (<inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>), and as many as the number of iterations in the minimization multiplied by the ensemble size for the ensemble-based operator (<inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>). As a consequence, applying the correlation operator must be fast and scalable. Many methods have already been developed to achieve this, all with their own strengths and limitations, as described in the Discussion section at the end of this paper.</p>
      <p id="d2e140">The Normalized Interpolated Convolution from an Adaptive Subgrid (NICAS) presented here can work on any model grid, regular or unstructured, it can handle domains with complex boundaries like oceans, land-surface or sea-ice models, it can represent inhomogeneous and anisotropic correlation functions without any additional cost, and it is particularly efficient for large correlation support radii.</p>
      <p id="d2e143">The NICAS method was initially developed in 2017, and a first note was published without peer review three years later <xref ref-type="bibr" rid="bib1.bibx16" id="paren.3"/>. Since then, the method and its implementation have been continuously improved within the BUMP (Background error on an Unstructured Mesh Package) block of the SABER (System-Agnostic Background Error Representation) library, a keystone of the JEDI (Joint-Effort for Data assimilation Integration) project lead by the JCSDA and its partners. The current code is more mature and very different from what it was in 2020, and it is now routinely used in research and operations by many users <xref ref-type="bibr" rid="bib1.bibx13 bib1.bibx9 bib1.bibx10" id="paren.4"/>.</p>
      <p id="d2e153">The scope of this article is limited to univariate aspects of correlation operators: the NICAS method does not handle the correlations between variables in multivariate cases. In most variational data assimilation systems, univariate and multivariate aspects are separated. For correlation operators, so called “balance operators” can introduce complex relationships between variables, as described for the atmosphere in <xref ref-type="bibr" rid="bib1.bibx1 bib1.bibx2" id="text.5"/> for large scales and <xref ref-type="bibr" rid="bib1.bibx3" id="text.6"/> for convective scales, or as in <xref ref-type="bibr" rid="bib1.bibx30" id="text.7"/> for the ocean. For localization operators, the multivariate treatment is often simpler, as described in <xref ref-type="bibr" rid="bib1.bibx17" id="text.8"/> and <xref ref-type="bibr" rid="bib1.bibx11" id="text.9"/>.</p>
      <p id="d2e171">The NICAS method, its motivations and features are described in Sect. 2, while the practical implementation challenges and choices are explained in Sect. 3, with a step-by-step illustration of the resulting algorithm. In Sect. 4, we evaluate the performances of the NICAS method for different configurations and we assess the scalability of the different tasks. An overview of the similar existing methods is given in Sect. 5, to underline for which applications and configurations each method should be preferred, before the conclusions in Sect. 6.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>NICAS method description</title>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Motivations</title>
      <p id="d2e189">To introduce the NICAS method, we start with a brief order-of-magnitude analysis of the computational cost of the application of a correlation matrix to a vector. Let us assume that a domain of dimensionality <inline-formula><mml:math id="M3" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> (e.g. <inline-formula><mml:math id="M4" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> on a plane or on the sphere) is discretized into a grid <inline-formula><mml:math id="M5" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> containing <inline-formula><mml:math id="M6" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> cells of typical size <inline-formula><mml:math id="M7" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> and typical volume proportional to <inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. Since the total volume of the domain <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:mi mathvariant="script">V</mml:mi><mml:mo>∝</mml:mo><mml:mi>n</mml:mi><mml:msup><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is fixed, we can deduce that <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>∝</mml:mo><mml:msup><mml:mi mathvariant="italic">γ</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. Applying a dense correlation operator <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:mi mathvariant="bold">C</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> to a vector <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> requires <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:mi mathvariant="script">K</mml:mi><mml:mo>∝</mml:mo><mml:msup><mml:mi>n</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> operations, which is not computationally affordable for large systems (e.g. <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>∼</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">9</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> for NWP operational systems).</p>
      <p id="d2e345">However, as illustrated on the plane (<inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>) in Fig. <xref ref-type="fig" rid="F1"/>a, if the correlation function defining <inline-formula><mml:math id="M16" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> is compactly supported with a typical support radius <inline-formula><mml:math id="M17" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula>, the number of points within the support is proportional to <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msup><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>≪</mml:mo><mml:mi mathvariant="script">V</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M19" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> becomes sparse. The number of operations <inline-formula><mml:math id="M20" display="inline"><mml:mi mathvariant="script">K</mml:mi></mml:math></inline-formula> can be be significantly reduced: <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:mi mathvariant="script">K</mml:mi><mml:mo>∝</mml:mo><mml:msup><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula> instead of <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. Introducing the correlation resolution <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula>, i.e. the correlation support radius <inline-formula><mml:math id="M24" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> expressed as a function of the grid cell size <inline-formula><mml:math id="M25" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula>, we finally get <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:mi mathvariant="script">K</mml:mi><mml:mo>∝</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. In many cases, <inline-formula><mml:math id="M27" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is rather large. For instance, a 300 km correlation support radius for a 10 km resolution grid gives a correlation resolution <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">30</mml:mn></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e501">Example on the plane of a full grid <bold>(a)</bold> and a subgrid <bold>(b)</bold>, with cells of typical size <inline-formula><mml:math id="M29" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> or <inline-formula><mml:math id="M30" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula>, respectively. The red dots are involved in the convolution with a correlation function of radius <inline-formula><mml:math id="M31" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> of the blue point at the center. The number of operations required to apply the convolution over the whole domain is obviously larger in case <bold>(a)</bold> than in case <bold>(b)</bold>, and is proportional to the of the correlation resolutions <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> squared, respectively.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f01.png"/>

        </fig>

      <p id="d2e575">The fundamental idea of the NICAS method, as illustrated in Fig. <xref ref-type="fig" rid="F1"/>b, is to apply the correlation operator on a dedicated subgrid <inline-formula><mml:math id="M34" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> of size <inline-formula><mml:math id="M35" display="inline"><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> and typical cell size <inline-formula><mml:math id="M36" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>, for which the correlation resolution <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> is minimal, in order to reduce the number of operations from <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:mi mathvariant="script">K</mml:mi><mml:mo>∝</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="script">K</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>∝</mml:mo><mml:msup><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. However, <inline-formula><mml:math id="M40" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> should be large enough to keep the correlation function sharpness on <inline-formula><mml:math id="M41" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>. To define this adaptive subgrid <inline-formula><mml:math id="M42" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>, we start from the correlation resolution <inline-formula><mml:math id="M43" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> prescribed by the user, from which we deduce the typical subgrid cell size <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e733">The NICAS correlation operator <inline-formula><mml:math id="M45" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> on the grid <inline-formula><mml:math id="M46" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> is given by

            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M47" display="block"><mml:mrow><mml:mi mathvariant="bold">C</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="bold">NS</mml:mi><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:msup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msup><mml:mi mathvariant="bold">N</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>×</mml:mo><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is the correlation operator on <inline-formula><mml:math id="M49" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula>, <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:mi mathvariant="bold">S</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is an interpolation from <inline-formula><mml:math id="M51" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> to <inline-formula><mml:math id="M52" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:mi mathvariant="bold">N</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is a diagonal operator ensuring that <inline-formula><mml:math id="M54" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> is normalized (i.e. <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>), because even if <inline-formula><mml:math id="M56" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> is normalized, <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:mi mathvariant="bold">S</mml:mi><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:msup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is not normalized in general.</p>
      <p id="d2e931">If <inline-formula><mml:math id="M58" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is large enough, then <inline-formula><mml:math id="M59" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> can be set a value significantly smaller than <inline-formula><mml:math id="M60" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>, in which case the cost of the NICAS method should become dominated by the interpolation <inline-formula><mml:math id="M61" display="inline"><mml:mi mathvariant="bold">S</mml:mi></mml:math></inline-formula>, which grows linearly with <inline-formula><mml:math id="M62" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>. Another important feature of the NICAS approach is the large flexibility given to <inline-formula><mml:math id="M63" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>, which is fully explicit. Thus, it can be inhomogeneous and anisotropic, non-separable, and handle complex boundaries. A final key aspect is the subgrid adaptiveness: the local density of <inline-formula><mml:math id="M64" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> should be a function of the local correlation support radius of <inline-formula><mml:math id="M65" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Working with square-roots</title>
      <p id="d2e1011">Since <inline-formula><mml:math id="M66" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> is a correlation operator, it is symmetric positive definite. Thus, there is an infinity of possible square-roots <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>×</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> such that <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. The number <inline-formula><mml:math id="M69" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> of columns of <inline-formula><mml:math id="M70" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> depends on the chosen modeling for <inline-formula><mml:math id="M71" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>. Once <inline-formula><mml:math id="M72" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> is defined, it is straightforward to provide a square-root of <inline-formula><mml:math id="M73" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> denoted <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:mi mathvariant="bold">U</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M75" display="block"><mml:mrow><mml:mi mathvariant="bold">U</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="bold">NS</mml:mi><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          In practice, it is always better to implement <inline-formula><mml:math id="M76" display="inline"><mml:mi mathvariant="bold">U</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">U</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> than <inline-formula><mml:math id="M78" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> directly, for at least two reasons: <list list-type="bullet"><list-item>
      <p id="d2e1188">ensuring the positive definiteness of the implementation of <inline-formula><mml:math id="M79" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> can be numerically challenging, while <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">UU</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is always symmetric positive (semi-)definite by construction,</p></list-item><list-item>
      <p id="d2e1210"><inline-formula><mml:math id="M81" display="inline"><mml:mi mathvariant="bold">U</mml:mi></mml:math></inline-formula> can be very useful for cost function preconditioning, or in randomization procedures to generate an ensemble of perturbations whose asymptotic correlation matrix is <inline-formula><mml:math id="M82" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula>.</p></list-item></list></p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>The <xref ref-type="bibr" rid="bib1.bibx8" id="text.10"/> function square-root</title>
      <p id="d2e1238">The shape of the correlation function in <inline-formula><mml:math id="M83" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> is completely free in the NICAS method, as long as its square-root is known. However, we have chosen to stick to the widely used piecewise polynomial, compactly supported function from <xref ref-type="bibr" rid="bib1.bibx8" id="text.11"/>, denoted GC99 hereafter. For sake of simplicity, a slightly different scaling is used in this function compared to the original paper (Sect. 4c), to ensure that it goes to zero when the input argument goes to one:

            <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M84" display="block"><mml:mrow><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="script">C</mml:mi><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mfenced close="" open="{"><mml:mtable rowspacing="2.845276pt 2.845276pt" class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">5</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mo>-</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">20</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>d</mml:mi><mml:mo>≤</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">8</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">5</mml:mn></mml:msup><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">20</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>-</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mi>d</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msup><mml:mi>d</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle><mml:mo>&lt;</mml:mo><mml:mi>d</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mn mathvariant="normal">1</mml:mn><mml:mo>&lt;</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

          Here, the normalized distance <inline-formula><mml:math id="M85" display="inline"><mml:mi>d</mml:mi></mml:math></inline-formula> corresponds in the original paper to <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:mo>|</mml:mo><mml:mi>z</mml:mi><mml:mo>|</mml:mo><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>c</mml:mi></mml:mrow></mml:math></inline-formula> where <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:mo>|</mml:mo><mml:mi>z</mml:mi><mml:mo>|</mml:mo></mml:mrow></mml:math></inline-formula> is the distance to the origin and <inline-formula><mml:math id="M88" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula> is the half support radius. As explained in the original paper, this function is obtained “by self-convolving the continuous, piecewise linear function”, which provides an explicit square-root function <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:mi mathvariant="script">U</mml:mi><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Within the more general parametric family developed in the original paper, the special case of <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:mi mathvariant="script">C</mml:mi><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> corresponds to a linear square-root function <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:mi mathvariant="script">U</mml:mi><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>: 

            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M92" display="block"><mml:mrow><mml:mi mathvariant="script">U</mml:mi><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="array" rowspacing="2.845276pt" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>d</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>d</mml:mi><mml:mo>≤</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle><mml:mo>&lt;</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          In the discrete case, the correlation square-root <inline-formula><mml:math id="M93" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> is built as:

            <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M94" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>N</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mi mathvariant="script">U</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">with</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="script">Z</mml:mi><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mi>r</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:mi mathvariant="script">Z</mml:mi><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is a measure of the distance between the points of <inline-formula><mml:math id="M96" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> corresponding to indices <inline-formula><mml:math id="M97" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M98" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:msubsup><mml:mi>N</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> is an internal normalization factor ensuring that <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>C</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Figure <xref ref-type="fig" rid="F2"/> illustrates this correlation function on a regular 1D subgrid, with a correlation resolution <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula>: <list list-type="bullet"><list-item>
      <p id="d2e1788">A vector <inline-formula><mml:math id="M102" display="inline"><mml:mi mathvariant="bold-italic">δ</mml:mi></mml:math></inline-formula> of impulses is defined on <inline-formula><mml:math id="M103" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> (<inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> except for a few elements where <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>).</p></list-item><list-item>
      <p id="d2e1839">The correlation square-root adjoint <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is applied on <inline-formula><mml:math id="M107" display="inline"><mml:mi mathvariant="bold-italic">δ</mml:mi></mml:math></inline-formula>, showing the triangular shape defined in equation (<xref ref-type="disp-formula" rid="Ch1.E4"/>).</p></list-item><list-item>
      <p id="d2e1866">The correlation <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is applied on <inline-formula><mml:math id="M109" display="inline"><mml:mi mathvariant="bold-italic">δ</mml:mi></mml:math></inline-formula>, showing the discrete approximation of the bell shape defined in Eq. (<xref ref-type="disp-formula" rid="Ch1.E3"/>).</p></list-item></list> It should be noted that the internal normalization <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">N</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> works as intended: reducing the amplitude of <inline-formula><mml:math id="M111" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> with an appropriate factor leads to a perfectly normalized <inline-formula><mml:math id="M112" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>.</p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e1939">Correlation operator applied to impulses on a 1D subgrid. From top to bottom: support radius <inline-formula><mml:math id="M113" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> and correlation resolution <inline-formula><mml:math id="M114" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula>; vector of impulses <inline-formula><mml:math id="M115" display="inline"><mml:mi mathvariant="bold-italic">δ</mml:mi></mml:math></inline-formula>; correlation square-root adjoint applied to impulses <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:mi mathvariant="bold-italic">δ</mml:mi></mml:mrow></mml:math></inline-formula>; correlation applied to impulses <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi mathvariant="bold-italic">δ</mml:mi></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f02.png"/>

        </fig>

</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Anisotropic extension</title>
      <p id="d2e2009">If the domain dimensionality <inline-formula><mml:math id="M118" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> is larger than 1, the correlation operator can be made anisotropic by replacing the normalized distance <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> in Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>) with a tensor-based normalized distance:

            <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M120" display="block"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo><mml:msup><mml:mo>)</mml:mo><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msup><mml:mi mathvariant="bold">D</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:msqrt></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is the vector of coordinates of the point of <inline-formula><mml:math id="M122" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> corresponding to index <inline-formula><mml:math id="M123" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:mi mathvariant="bold">D</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>×</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is a support tensor. In <xref ref-type="bibr" rid="bib1.bibx29" id="text.12"/>, the local correlation tensor is described as “a natural generalization of the (square of) the Daley length-scale for characterizing the spatial scales of the function”. Similarly here, the support tensor <inline-formula><mml:math id="M125" display="inline"><mml:mi mathvariant="bold">D</mml:mi></mml:math></inline-formula> is a natural generalization of the support radius <inline-formula><mml:math id="M126" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> of the GC99 function. The components of <inline-formula><mml:math id="M127" display="inline"><mml:mi mathvariant="bold">D</mml:mi></mml:math></inline-formula> define the support of the function as a <inline-formula><mml:math id="M128" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>-dimensional ellipsoid. Figure <xref ref-type="fig" rid="F3"/> shows examples of the GC99 function with different support tensors in a 2D case.</p>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e2205">Examples of anistropic GC99 functions with three different support tensors, in the cartesian (<inline-formula><mml:math id="M129" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M130" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>) coordinates system.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f03.png"/>

        </fig>

</sec>
<sec id="Ch1.S2.SS5">
  <label>2.5</label><title>Multi-components extension</title>
      <p id="d2e2237">To change the shape of the correlation function, two strategies are possible: <list list-type="bullet"><list-item>
      <p id="d2e2242">either using another correlation function for <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:mi mathvariant="script">C</mml:mi><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, but a square-root <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:mi mathvariant="script">U</mml:mi><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> must be explicitly available, </p></list-item><list-item>
      <p id="d2e2275">or combining several components of the GC99 function together, with a specific support radius and a specific weight for each component.</p></list-item></list> Figure <xref ref-type="fig" rid="F4"/> shows an example of the second approach: three components with decreasing support radii and increasing weights are combined to produce a peaked correlation function with fat tails. In this case, the overall computational cost is dominated by the component with the smaller support radius.</p>

      <fig id="F4"><label>Figure 4</label><caption><p id="d2e2283">Three NICAS components with decreasing support radii and increasing weights, separated (top panel) or combined (bottom panel).</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f04.png"/>

        </fig>


</sec>
<sec id="Ch1.S2.SS6">
  <label>2.6</label><title>Inhomogeneous extension with an adaptive subgrid</title>
      <p id="d2e2302">The correlation operator can also can be made inhomogeneous by using a locally varying support radius <inline-formula><mml:math id="M133" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> or support tensor <inline-formula><mml:math id="M134" display="inline"><mml:mi mathvariant="bold">D</mml:mi></mml:math></inline-formula>. If the subgrid is kept regular, the sharpness of the correlation operator becomes inhomogeneous as well, as illustrated by Fig. <xref ref-type="fig" rid="F5"/>. For the left-hand side impulse of Fig. <xref ref-type="fig" rid="F5"/>, where the support radius <inline-formula><mml:math id="M135" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is small, the local correlation resolution <inline-formula><mml:math id="M136" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> is lower than 5, whereas it is larger than 10 for the right-side impulse where the support radius <inline-formula><mml:math id="M137" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is large. To enforce a homogeneous resolution <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> when the support radius <inline-formula><mml:math id="M139" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is locally varying, the only solution is to introduce a locally varying cell size <inline-formula><mml:math id="M140" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> following the same pattern. Figure <xref ref-type="fig" rid="F6"/> shows such a case: the cell size is smaller on the left-hand side where <inline-formula><mml:math id="M141" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is small, and larger on the right-hand side where <inline-formula><mml:math id="M142" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is large. Thus, the sharpness of the correlation function is homogeneous, whatever the local support radius. It should be noted that the internal normalization <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">N</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> becomes inhomogeneous for an inhomogeneous correlation resolution <inline-formula><mml:math id="M144" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>, but tends to be homogeneous when the cell size is adjusted to keep a homogeneous <inline-formula><mml:math id="M145" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> (not shown in figures).</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e2437">Same as Fig. <xref ref-type="fig" rid="F2"/> with an inhomogeneous support radius <inline-formula><mml:math id="M146" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f05.png"/>

        </fig>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e2457">Same as Fig. <xref ref-type="fig" rid="F5"/> with an inhomogeneous cell size <inline-formula><mml:math id="M147" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f06.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Practical implementation</title>
      <p id="d2e2487">The NICAS method description in the previous section leaves many options open for the practical implementation. This section details some of the constraints and choices that seem appropriate for an efficient parallel implementation, suitable for the large grids of geophysical models.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Splitting horizontal and vertical directions</title>
      <p id="d2e2497">In theory, the normalized distance <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> defined in Eqs. (<xref ref-type="disp-formula" rid="Ch1.E5"/>) and (<xref ref-type="disp-formula" rid="Ch1.E6"/>) could be fully tridimensional. However, in stratified fluids like the atmosphere or the ocean, it makes sense to split the normalized distance into horizontal and vertical components. As a consequence, the tensor formulation of Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) is always used in practice, but with zero cross-components between the horizontal and the vertical directions:

            <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M149" display="block"><mml:mrow><mml:mi mathvariant="bold">D</mml:mi><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mtable class="array" columnalign="left left left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">off</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">off</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msubsup><mml:mi>r</mml:mi><mml:mi mathvariant="normal">v</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">off</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are the horizontal support tensor components, and <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the vertical support radius. In the horizontally isotropic case: <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">off</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the horizontal support radius. In the horizontally anisotropic case, Eq. (14) of <xref ref-type="bibr" rid="bib1.bibx19" id="text.13"/> defines an equivalent horizontal support radius <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> associated with the horizontal part of the support tensor. <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is chosen so that the area of the ellipse defined by horizontal support tensor is equal to the area of the circle of radius <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M160" display="block"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msub><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">off</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfenced><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          This equivalent support radius <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> will be useful to generate the adaptive horizontal subgrid.</p>
      <p id="d2e2775">Theoretically, <inline-formula><mml:math id="M162" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> could be any tridimensional structured or unstructured subgrid. However, it is also relevant here to separate the vertical and horizontal directions, introducing an intermediate grid <inline-formula><mml:math id="M163" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula> as illustrated on Fig. <xref ref-type="fig" rid="F7"/>: <list list-type="bullet"><list-item>
      <p id="d2e2802">First, a vertical sub-sampling of <inline-formula><mml:math id="M164" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> is performed, based on the vertical support radius <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the resolution <inline-formula><mml:math id="M166" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula>: only a subset of the levels of the <inline-formula><mml:math id="M167" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> are kept to define the intermediate grid <inline-formula><mml:math id="M168" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula>.</p></list-item><list-item>
      <p id="d2e2851">Second, a horizontal subgrid is generated for each level of <inline-formula><mml:math id="M169" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula> depending on the horizontal support radius <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (or its equivalent in the anisotropic case) and the resolution <inline-formula><mml:math id="M171" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>, in order to build <inline-formula><mml:math id="M172" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>.</p></list-item></list> With such a subgrid construction process, the interpolation <inline-formula><mml:math id="M173" display="inline"><mml:mi mathvariant="bold">S</mml:mi></mml:math></inline-formula> from <inline-formula><mml:math id="M174" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> to <inline-formula><mml:math id="M175" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> is efficiently performed in two steps: horizontally first to go from <inline-formula><mml:math id="M176" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> to <inline-formula><mml:math id="M177" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">̃</mml:mo></mml:mover></mml:math></inline-formula>, and then vertically to go <inline-formula><mml:math id="M178" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula> to <inline-formula><mml:math id="M179" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula>.</p>

      <fig id="F7"><label>Figure 7</label><caption><p id="d2e2960">Example of definition of <inline-formula><mml:math id="M180" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">̃</mml:mo></mml:mover></mml:math></inline-formula> and <inline-formula><mml:math id="M181" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> from <inline-formula><mml:math id="M182" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> for a simplified case where the horizontal and vertical support radii <inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are both horizontally homogeneous and vertically increasing. <bold>(a)</bold> Full grid <inline-formula><mml:math id="M185" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula>, <bold>(b)</bold> intermediate grid   <inline-formula><mml:math id="M186" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">̃</mml:mo></mml:mover></mml:math></inline-formula> and <bold>(c)</bold> subgrid <inline-formula><mml:math id="M187" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>. See text for details.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f07.png"/>

        </fig>

      <p id="d2e3056">While the obvious choice for the horizontal distance measure on the sphere is the great-circle distance, the choice of vertical coordinate is completely free in NICAS. Any vertical coordinate field provided on <inline-formula><mml:math id="M188" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> can be used, as long as the vertical support radius <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> has the same unit as the provided coordinate. This feature is very convenient for modeling vertically coupled correlations between Earth components, like atmosphere and ocean.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Horizontal subgrid generation</title>
      <p id="d2e3085">Different strategies are available to generate the horizontal subgrid at each selected level of the intermediate grid <inline-formula><mml:math id="M190" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula>: <list list-type="custom"><list-item><label>a.</label>
      <p id="d2e3100">If the local correlation radius <inline-formula><mml:math id="M191" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is homogeneous, a regular subgrid with a known (quasi-)homogeneous resolution is relevant. For a global domain on the sphere, an octahedral Gaussian grid <xref ref-type="bibr" rid="bib1.bibx15" id="paren.14"/> is a good choice. Even if its cell size is slightly inhomogeneous (larger at mid-latitudes, smaller at the poles), it is possible to precisely select its truncation to obtain the desired subgrid cell size <inline-formula><mml:math id="M192" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> on average. For a regional domain, a subgrid made of equilateral triangles on the projection plane is a good candidate. </p></list-item><list-item><label>b.</label>
      <p id="d2e3125">A random sampling can yield a more homogeneous subgrid, especially if it has a blue noise distribution (also known as Poisson disk sampling) that avoids clusters of sampled points. The Bridson's algorithm <xref ref-type="bibr" rid="bib1.bibx4" id="paren.15"/> is a fast and reliable method to generate such a sampling in arbitrary dimensions, and it can be adapted on the sphere with a minor modification of the annulus random sampling step.</p></list-item><list-item><label>c.</label>
      <p id="d2e3132">If the local correlation radius <inline-formula><mml:math id="M193" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is inhomogeneous, the Bridson's algorithm can also be modified to take into account the variations of the Poisson disk radius.</p></list-item></list> Figure <xref ref-type="fig" rid="F8"/> shows an example of each of these three strategies for a global domain. The Bridson's algorithm provides a more homogeneous sampling in case (b) than the octahedral Gaussian grid of case (a), and the local sampling density is consistently adjusted to the varying local support radius provided by the user in case (c).</p>

      <fig id="F8"><label>Figure 8</label><caption><p id="d2e3147">Sampling strategies: <bold>(a)</bold> octahedral Gaussian grid for a homogeneous radius <inline-formula><mml:math id="M194" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula>; <bold>(b)</bold> Bridson's algorithm for a homogeneous radius <inline-formula><mml:math id="M195" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula>; <bold>(c)</bold> Bridson's algorithm for an inhomogeneous radius <inline-formula><mml:math id="M196" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula>. Typical subgrid cell size <inline-formula><mml:math id="M197" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> (in km) is given by the color scale.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f08.png"/>

          
        </fig>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e3201">Top panels: correlation function (stream function) obtained for an initial impulse at the black dot location, with <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and smoothing interpolations from left to right, respectively. Bottom panels: corresponding meridional derivative (eastward wind). Units are arbitrary, but color scales are similar for each row.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f09.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Interpolation choice</title>
      <p id="d2e3240">The implementation of the interpolation <inline-formula><mml:math id="M200" display="inline"><mml:mi mathvariant="bold">S</mml:mi></mml:math></inline-formula> in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) should depend on the usage of the NICAS method. For the vertical direction, a linear interpolation seems to be sufficient, even if a higher order one could be easily implemented. For the horizontal direction, assuming that <inline-formula><mml:math id="M201" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> is unstructured, the simplest option is a linear interpolation based on the Delaunay tesselation of the subgrid. However, the output field resulting from this type of interpolation is of class <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, which means that it is continuous but has potentially discontinuous derivatives. This discontinuity can be harmful if the derivatives of the analysis variables are important for subsequent calculations. For instance, if the analysis wind variables are the stream function <inline-formula><mml:math id="M203" display="inline"><mml:mi mathvariant="italic">φ</mml:mi></mml:math></inline-formula> and the velocity potential <inline-formula><mml:math id="M204" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>, the physical wind components <inline-formula><mml:math id="M205" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M206" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula> based on the derivatives of <inline-formula><mml:math id="M207" display="inline"><mml:mi mathvariant="italic">φ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M208" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> will be discontinuous, as shown in the left panel of Fig. <xref ref-type="fig" rid="F9"/>.</p>
      <p id="d2e3318">A possible solution is to introduce a more advanced interpolation producing fields of class <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, with continuous first-order derivatives. The SSRFPACK library <xref ref-type="bibr" rid="bib1.bibx25" id="paren.16"/> implements such an interpolation, using local estimates of the function gradient at each subgrid point <xref ref-type="bibr" rid="bib1.bibx26" id="paren.17"/>. Even if this interpolation significantly improves the continuity of <inline-formula><mml:math id="M210" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M211" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula> in the central panel of Fig. <xref ref-type="fig" rid="F9"/>, the results are still noisy because of the errors in the local gradient estimation procedure provided with SSRFPACK.</p>
      <p id="d2e3355">Since the convolution operator <inline-formula><mml:math id="M212" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> on <inline-formula><mml:math id="M213" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> is a smoother, there is actually no need for an accurate interpolation between <inline-formula><mml:math id="M214" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> and <inline-formula><mml:math id="M215" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula>. A smoothing interpolation could ensure smooth results on <inline-formula><mml:math id="M216" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula>. Its local smoothing support radius should be defined as a fraction of the horizontal correlation support radius <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, for consistency. However, this secondary smoothing would increase the initially intended smoothing on <inline-formula><mml:math id="M218" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula>. To alleviate this issue, an empirical reduction factor can be applied on the horizontal support radius (or tensor), which in turn increases the size of <inline-formula><mml:math id="M219" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> and the overall cost. So this option is slightly more costly, but it provides very clean results as shown on the right panel of Fig. <xref ref-type="fig" rid="F9"/>. While the differences seem minor between the correlation functions themselves for the three different interpolations (top row), the impact on the derivative can very large (bottom row).</p>
</sec>
<sec id="Ch1.S3.SS4">
  <label>3.4</label><title>Normalization calculation</title>
      <p id="d2e3443">One significant advantage of the NICAS method over other existing methods is its exact normalization (<inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>). Once the square-root of the correlation operator on <inline-formula><mml:math id="M221" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> (i.e. <inline-formula><mml:math id="M222" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>) and the interpolation from <inline-formula><mml:math id="M223" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> to <inline-formula><mml:math id="M224" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> (i.e. <inline-formula><mml:math id="M225" display="inline"><mml:mi mathvariant="bold">S</mml:mi></mml:math></inline-formula>) are defined, the normalization operator <inline-formula><mml:math id="M226" display="inline"><mml:mi mathvariant="bold">N</mml:mi></mml:math></inline-formula> is computed as the inverse of the square-root of the diagonal of <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:mi mathvariant="bold">S</mml:mi><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi mathvariant="bold">S</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. Defining the vector <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> as a vector of zeros, except for a value one at the <inline-formula><mml:math id="M229" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>th position, <inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> can be computed as:

            <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M231" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msubsup><mml:mi mathvariant="bold">S</mml:mi><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mi mathvariant="bold">S</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mfenced close="〉" open="〈"><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi mathvariant="bold">S</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi mathvariant="bold">S</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msubsup><mml:mfenced open="∥" close="∥"><mml:mrow><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">U</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mi mathvariant="bold">S</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:mo>⋅</mml:mo><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula> denotes a canonical inner product and <inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:mo>∥</mml:mo><mml:mo>⋅</mml:mo><mml:msub><mml:mo>∥</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> the corresponding <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msup><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> norm. Thus, <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> can be exactly computed using Algorithm 1. This operation involves a lot of bookkeeping and it can be costly, but a parallel implementation is straightforward and significantly reduces this cost.</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog1"><label>Algorithm 1</label><caption><p id="d2e3785">Normalization computation</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d2e3792" specific-use="FOR"><bold>for</bold> each point <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M237" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d2e3821" specific-use="STATE">Initialize <inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>.</p></list-item>
    <list-item>
      <p id="d2e3841" specific-use="STATE">Prepare the list <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">L</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of all the points <inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> of <inline-formula><mml:math id="M241" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> involved in the interpolation to point <inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, together with their respective interpolation weights <inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>.</p></list-item>
    <list-item>
      <p id="d2e3906" specific-use="FOR"><bold>for</bold> each couple <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">L</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d2e3954" specific-use="STATE">Prepare the list <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">L</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> of all the points <inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> of <inline-formula><mml:math id="M248" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> involved in the correlation square-root at point <inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, associated with their respective square-root convolution weights <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>.</p></list-item>
    <list-item>
      <p id="d2e4029" specific-use="STATE">Sum the contributions of all the points <inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> on <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:<disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M253" display="block"><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mspace linebreak="nobreak" width="1em"/><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:msub><mml:mi mathvariant="script">L</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></disp-formula></p></list-item></list></p></list-item>
    <list-item>
      <p id="d2e4112" specific-use="ENDFOR"><bold>end</bold> <bold>for</bold></p></list-item>
    <list-item>
      <p id="d2e4121" specific-use="STATE">Compute the normalization coefficient: <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula></p></list-item></list></p>
            </list-item>

    <list-item>

      <p id="d2e4156" specific-use="ENDFOR"><bold>end</bold> <bold>for</bold></p>
            </list-item>
          </list></disp-quote></boxed-text>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e4167">NICAS steps for an isotropic correlation function: <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(a)</bold>, <inline-formula><mml:math id="M256" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">N</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(b)</bold>, <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msup><mml:mi mathvariant="bold">N</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(c)</bold>, <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:msup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msup><mml:mi mathvariant="bold">N</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(d)</bold>, <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mi mathvariant="bold">S</mml:mi><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:msup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msup><mml:mi mathvariant="bold">N</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(e)</bold> and <inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:mi mathvariant="bold">NS</mml:mi><mml:mover accent="true"><mml:mi mathvariant="bold">C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:msup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msup><mml:mi mathvariant="bold">N</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(f)</bold>. The exact maximum value is indicated at the bottom right for each panel.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f10.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS5">
  <label>3.5</label><title>Steps illustration</title>
      <p id="d2e4334">To illustrate how the NICAS method works in practice, the operator <inline-formula><mml:math id="M261" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> of Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) is applied to an impulse vector <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and the result at each step is displayed. Figure <xref ref-type="fig" rid="F10"/> shows these steps for an isotropic correlation function, and Fig. <xref ref-type="fig" rid="F11"/> for an anisotropic correlation function with a land/sea mask. The normalization <inline-formula><mml:math id="M263" display="inline"><mml:mi mathvariant="bold">N</mml:mi></mml:math></inline-formula> ensures that the correlation function maximum is equal to one at the end of the last step, even if the impulse on <inline-formula><mml:math id="M264" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> is not collocated with a point <inline-formula><mml:math id="M265" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>. To take the land/sea mask into account in Fig. <xref ref-type="fig" rid="F11"/>: <list list-type="bullet"><list-item>
      <p id="d2e4390">all the masked points (land mask) are removed from both <inline-formula><mml:math id="M266" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M267" display="inline"><mml:mover accent="true"><mml:mi mathvariant="script">G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>,</p></list-item><list-item>
      <p id="d2e4411">for all the correlation and interpolation operations, the operation is removed if the segment between the two points involved in the operation crosses a segment of the masked area boundary.</p></list-item></list> This last check can be costly, depending on the mask resolution. However, it is possible to split the NICAS usage into two successive steps: 
<list list-type="bullet"><list-item>
      <p id="d2e4420">A <italic>setup</italic> step, where (i) the subgrid is generated, (ii) the interpolation from the subgrid to the full grid is defined, (iii) the convolution on the subgrid is computed, and (iv) the normalization of the whole operator is estimated. Most of the computational cost occurs during this phase, including the additional cost associated with advanced features such as inhomogenous, anisotropic, or boundary-aware correlation functions. The resulting operators are generally stored into dedicated files (NetCDF format), either one file per MPI task or in a common global file, for a future use. If a common global file is read in a subsequent execution, a data redistribution is needed, which comes with a extra communication cost.</p></list-item><list-item>
      <p id="d2e4427">An <italic>application</italic> step, where the NICAS operator is applied on fields. This application includes computation and communication sub-steps for both the interpolation and the convolution applications, and the multiplication with the normalization field.</p></list-item></list></p>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e4435">Same as Fig. <xref ref-type="fig" rid="F10"/> for an anisotropic correlation function with a land/sea mask.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f11.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Computational cost and scalability</title>
      <p id="d2e4455">Evaluating the computational cost of a new method is a complex task because it depends on many parameters, on the parallel configuration, on the hardware, etc. The goal of this section is to give a broad overview of how the cost of the NICAS method is impacted by key parameters, how the method scales, and where speed up gains could be obtained in the future.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Experimental setup</title>
      <p id="d2e4465">All the experiments in this section are performed on a single horizontal level, because the vertical aspect of NICAS has little impact on performances. The grid <inline-formula><mml:math id="M268" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> is an octahedral Gaussian grid at truncation TCo600 (<inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">461</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">600</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">16.5</mml:mn></mml:mrow></mml:math></inline-formula> km at the equator) and is the same for all the experiments. To obtain a given correlation resolution <inline-formula><mml:math id="M271" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> on <inline-formula><mml:math id="M272" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula>, the correlation support radius <inline-formula><mml:math id="M273" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is given by <inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:math></inline-formula>. Then, to obtain a given correlation resolution <inline-formula><mml:math id="M275" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> on <inline-formula><mml:math id="M276" display="inline"><mml:mover accent="true"><mml:mi>G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula>, the subgrid cell size is set as <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>. As a consequence, the subgrid size is <inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>∝</mml:mo><mml:msup><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>∝</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. Since <inline-formula><mml:math id="M279" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is homogeneous, <inline-formula><mml:math id="M280" display="inline"><mml:mover accent="true"><mml:mi>G</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> is defined as a regular octahedral Gaussian grid with the appropriate truncation to fit the target subgrid cell size <inline-formula><mml:math id="M281" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula>, unless stated otherwise. The interpolation method is the simplest <inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> linear interpolation based on a Delaunay tesselation of <inline-formula><mml:math id="M283" display="inline"><mml:mover accent="true"><mml:mi>G</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>, unless stated otherwise. All the experiments are performed on a dedicated compute node of the BullSequana XH2000 HPC of ECMWF. The results are the average elapsed timings of 10 executions for the setup step (where the NICAS operators are computed) and 100 executions for the application step (where they are applied to a vector).</p>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e4687">Timings for different combinations of the correlation resolutions <inline-formula><mml:math id="M284" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M285" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula>, for the setup step (top panel) and the application step (bottom panel).</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f12.png"/>

        </fig>

</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Correlation resolution</title>
      <p id="d2e4721">As explained in Sect. 2.1, the correlation resolutions <inline-formula><mml:math id="M286" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M287" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> have a major impact on the cost of the NICAS method, and they can make it very competitive or very costly. An order-of-magnitude analysis can be conducted for the different steps of the NICAS method: <list list-type="order"><list-item>
      <p id="d2e4743">For the setup step: <list list-type="bullet"><list-item>
      <p id="d2e4748">The cost of the subgrid generation is mostly due to the assignment of each subgrid point to a given MPI task, depending on its location. This cost increases linearly with the subgrid size <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>∝</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>.</p></list-item><list-item>
      <p id="d2e4779">The cost of the interpolation setup increase with <inline-formula><mml:math id="M289" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>, kept constant here, and with <inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>∝</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> for the generation of the tesselation to compute the interpolation weights.</p></list-item><list-item>
      <p id="d2e4817">The cost of the convolution setup increases with the subgrid size <inline-formula><mml:math id="M291" display="inline"><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover></mml:math></inline-formula> multiplied by the number of points within a radius <inline-formula><mml:math id="M292" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula>, which is <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>c</mml:mi></mml:msub><mml:mo>∝</mml:mo><mml:msup><mml:mi>r</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>∝</mml:mo><mml:msup><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. So the total cost should be proportional to <inline-formula><mml:math id="M294" display="inline"><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mn mathvariant="normal">4</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>.</p></list-item><list-item>
      <p id="d2e4895">The cost of the normalization setup is mostly due to the inversion of indices list, which increases with <inline-formula><mml:math id="M295" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>∝</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>.</p></list-item></list></p></list-item><list-item>
      <p id="d2e4926">For the application step: <list list-type="bullet"><list-item>
      <p id="d2e4931">The cost of the normalization and the interpolation applications is proportional to <inline-formula><mml:math id="M296" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> (constant).</p></list-item><list-item>
      <p id="d2e4942">The cost of the convolution application is proportional to <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:msub><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>c</mml:mi></mml:msub><mml:mo>∝</mml:mo><mml:msup><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mn mathvariant="normal">4</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>.</p></list-item></list></p></list-item></list></p>
      <p id="d2e4981">Figure <xref ref-type="fig" rid="F12"/> provides a confirmation of this analysis, for experiments on 32 MPI tasks, with a few more interesting points. First, the setup step is several orders of magnitude more expensive than the application step. In the application step, the cost of communications is negligible (only local halo exchange), the cost of normalization is also very small, and the cost of convolution is significantly smaller than the cost of interpolation. This was the fundamental idea of the NICAS method design detailed in Sect. 2.1: making the whole cost dominated by the interpolation, which depends on the size <inline-formula><mml:math id="M298" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> of <inline-formula><mml:math id="M299" display="inline"><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula> and the type of interpolation, independently from the convolution itself.</p>
</sec>
<sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Interpolation impact</title>
      <p id="d2e5008">Figure <xref ref-type="fig" rid="F13"/> shows the impact of the interpolation type alone, the other parameters being held constant (32 MPI tasks, <inline-formula><mml:math id="M300" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M301" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula>). Among the three interpolations tested here, the <inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> linear interpolation based on a Delaunay tesselation is of course the cheapest. The <inline-formula><mml:math id="M303" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> upgrade, which requires the estimation of gradients at the vertices of the interpolation triangle is slightly more expensive. With the smoothing interpolation, needed to get continuous derivatives, the correlation support radius <inline-formula><mml:math id="M304" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> needs to be artificially decreased in order to compensate for the “double-smoothing” in both the convolution and the interpolation operators. In the current experiment, <inline-formula><mml:math id="M305" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> needed to be multiplied by a factor 0.7 to obtain the same total correlation radius. Thus, the size <inline-formula><mml:math id="M306" display="inline"><mml:mover accent="true"><mml:mi>n</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> of the subgrid was multiplied by approximately <inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">0.7</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>≃</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>, which explains the amplitude of the cost increase for both the setup and the application steps.</p>

      <fig id="F13"><label>Figure 13</label><caption><p id="d2e5107">Timings for different interpolation types, for the setup step (top panel) and the application step (bottom panel).</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f13.png"/>

        </fig>


</sec>
<sec id="Ch1.S4.SS4">
  <label>4.4</label><title>Scalability</title>
      <p id="d2e5127">To evaluate the NICAS method scalability, the same experiment (<inline-formula><mml:math id="M308" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula>) is run with either 16, 32, 64 or 128 MPI tasks. Since a single HPC node is always used, the cost of communications might be underestimated here. Indeed, it would probably be larger on several nodes because of slower inter-nodes communications. For sake of comparison, a “perfect scalability” curve is computed by extrapolating the timing of the case with the lowest number of MPI tasks and dividing this timing by a factor 2 each time the number of MPI tasks increases by a factor 2.</p>
      <p id="d2e5157">Figure <xref ref-type="fig" rid="F14"/> shows that the setup step does not scale perfectly, mostly because of the interpolation setup and the subgrid generation. Indeed, the tesselation algorithm (STRIPACK) that accounts for an important part of the interpolation setup is not parallel. Similarly, the assignment of each subgrid point to a given MPI task in the subgrid generation is not parallel neither. However, the application step scales very well and closely follows the “perfect scalability” curve. This is a real important feature of the NICAS method.</p>

      <fig id="F14"><label>Figure 14</label><caption><p id="d2e5164">Timings for different numbers of MPI tasks, for the setup step (top panel) and the application step (bottom panel). The dashed black line indicates a perfect scalability extrapolated from the lowest number of MPI tasks.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/4497/2026/gmd-19-4497-2026-f14.png"/>

        </fig>

      <p id="d2e5174">As noted before, the setup step is several orders of magnitude more expensive than the application step and it does not scale as well, even though most of the development efforts have been (and still are) devoted to its acceleration. But it is not a blocking issue because: <list list-type="bullet"><list-item>
      <p id="d2e5179">The setup step can be run before the time critical path of the data assimilation process, i.e. as a preparation step before all the observations are available. </p></list-item><list-item>
      <p id="d2e5184">Once the NICAS operators are computed and stored in dedicated files as sparse operators (indices and weights), they can be read efficiently in a following run and the setup step becomes much faster.</p></list-item><list-item>
      <p id="d2e5188">The most important goal is to get the application step fast and scalable, because it is run in the time critical path, and it needs to be run many times during the minimization, as mentioned in the introduction.</p></list-item></list></p>
</sec>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>Discussion</title>
      <p id="d2e5201">The NICAS method presented here is only one new option among many existing algorithms to apply a correlation operator on a vector in a variational data assimilation context. Here is a non-exhaustive overview of the most commonly used methods: <list list-type="bullet"><list-item>
      <p id="d2e5206">Explicit convolution: this brute-force method would require the storage and application of huge matrices, which is absolutely not possible in practice for large systems.</p></list-item><list-item>
      <p id="d2e5210">Spectral-based methods <xref ref-type="bibr" rid="bib1.bibx21 bib1.bibx6" id="paren.18"/>: the correlation operator is assumed to be diagonal in a basis of orthogonal functions, built from spherical harmonics for the whole sphere or Fourier harmonics for rectangular regional domains. Thanks to the optimized implementations of spectral transforms, this is a very fast method, whose speed is independent from the correlation support radius. It is also perfectly normalized. But it has several limitations: the resulting correlation functions are homogeneous and isotropic, they cannot take complex boundaries into account. Besides, the spectral transforms require specific regular grids and need global communications among MPI tasks.</p></list-item><list-item>
      <p id="d2e5217">Wavelets-based methods <xref ref-type="bibr" rid="bib1.bibx7" id="paren.19"/>: same approach as the spectral-based method, but using a basis of wavelet functions to relax the homogeneity assumption.</p></list-item><list-item>
      <p id="d2e5224">Diffusion-based methods <xref ref-type="bibr" rid="bib1.bibx28" id="paren.20"/>: the application of a correlation operator to a vector can be seen as the result of a diffusion process with an extra normalization step. This process can take complex boundaries into account, and can produce inhomogeneous and anisotropic functions. It can even be extended to a generalized diffusion equation including a polynomial of the Laplacian operator, and produce negative lobes. In an explicit formulation, solving such equations only requires local halo communications, but a lot of iterations can be needed to maintain the numerical accuracy and stability, especially for large correlation support radii. With the implicit formulation <xref ref-type="bibr" rid="bib1.bibx20" id="paren.21"/>, the iterative solving is more stable but requires global communications (to compute dot products), although this limitation can be partially avoided with the Chebyshev iteration method described in <xref ref-type="bibr" rid="bib1.bibx31" id="text.22"/>. Normalization is also a major issue because the analytical estimates are not accurate <xref ref-type="bibr" rid="bib1.bibx32" id="paren.23"/>. Recent attempts with deep-learning approaches show promising ways for solving this issue <xref ref-type="bibr" rid="bib1.bibx27" id="paren.24"/>.</p></list-item><list-item>
      <p id="d2e5243">Recursive filters <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx23" id="paren.25"/>: in a 1D framework, implicit diffusion can be implemented as a recursive filter, which is fast and stable but shares the normalization issue of diffusion-based methods. Applied successively in all directions, recursive filters can generate multi-dimensional correlation functions that are inhomogeneous and potentially anisotropic <xref ref-type="bibr" rid="bib1.bibx12" id="paren.26"/>. Obviously, this method requires regular grids. The usual parallelization along rows, columns and levels does not scale optimally and requires global communications. </p></list-item><list-item>
      <p id="d2e5254">Beta filters <xref ref-type="bibr" rid="bib1.bibx24" id="paren.27"/>: this explicit multi-grid implementation of compactly supported beta distributions could be seen as the closest relative of the NICAS method. It shares its idea of reducing the grid resolution and using compactly supported functions, but differs in many aspects. The beta filters can use multiple subgrids instead of one for the NICAS method. However for the beta filters, these subgrids are regular subdivisions of the initial grid, and are not adaptive with respect to the local length-scale. Also, the beta filters are not perfectly normalized, contrary to the NICAS method.</p></list-item></list> It would be unfair to conclude that one of these methods is better than all the others. Each one is well-adapted to specific applications and configurations. The NICAS method is a particularly relevant candidate for: unstructured grids, domains with complex boundaries, inhomogeneous and anisotropic correlation functions, large correlation support radii. Hybridization of these methods could also be a promising avenue, for instance to obtain a peaked correlation function from a combination of Gaussian-like functions as in Fig. <xref ref-type="fig" rid="F4"/>: the largest scales could be handled by NICAS and the smallest ones by a diffusion method.</p>
</sec>
<sec id="Ch1.S6" sec-type="conclusions">
  <label>6</label><title>Conclusions</title>
      <p id="d2e5272">This article has described the Normalized Interpolated Convolution on an Adaptive Subgrid (NICAS) method, a new way of applying a correlation operator to a vector for high-dimensional systems. This approach is not based on a theoretical breakthrough, but it relies on a precise order-of-magnitude analysis of the computational costs, followed by a careful implementation. Among the interesting features of the method, we can cite: <list list-type="bullet"><list-item>
      <p id="d2e5277">the fine control of the accuracy/cost trade-off, with the subgrid resolution parameter,</p></list-item><list-item>
      <p id="d2e5281">the ability to efficiently represent inhomogeneous correlation functions, with the adaptive subgrid,</p></list-item><list-item>
      <p id="d2e5285">the capacity to handle anisotropic functions and complex boundaries, with the explicit convolution specification, </p></list-item><list-item>
      <p id="d2e5290">the exact normalization, with the explicit knowledge of all operations.</p></list-item></list> We have shown in simplified cases that the scalability of the method behaved as expected, with a very good scalability for the application step, while some parts of the setup step are not parallelized yet. Since the real added value of the NICAS method lies in its practical implementation, this is where improvements could be made. For instance, the horizontal subgrid generation with the Bridson's algorithm could be parallelized, as well as the Delaunay tesselation generation needed for the <inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M311" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="script">C</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> interpolations.</p>
      <p id="d2e5316">The NICAS method has been designed with variational data assimilation in mind, but it can also be useful to generate random fields with specific spatial structures. These fields are needed, for instance, as perturbations in various stochastic methods for ensemble forecasting.</p>
      <p id="d2e5319">The BUMP block of the SABER library where NICAS is implemented also contains specific tools dedicated to the estimation of correlation and localization length-scales from an ensemble. These diagnostics are specifically designed to be consistent with the NICAS method and to provide horizontal and vertical support radius fields, support tensor fields for the anisotropic case, and amplitude fields for the multi-components case. This part of the code was beyond the scope of the present article and will be the main topic of a future publication.</p>
</sec>

      
      </body>
    <back><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e5326">The SABER code official repository on Github, maintained by the JCSDA, is available at <uri>https://github.com/jcsda/saber</uri> (last access: 26 May 2026). A dedicated repository containing the SABER code version used in this article, as well as the data and scripts required to reproduce the experiments, is available at <ext-link xlink:href="https://doi.org/10.5281/zenodo.20268128" ext-link-type="DOI">10.5281/zenodo.20268128</ext-link> <xref ref-type="bibr" rid="bib1.bibx18" id="paren.28"/>.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e5341">The contact author has declared that none of the authors has any competing interests.</p>
  </notes><notes notes-type="disclaimer"><title>Disclaimer</title>

      <p id="d2e5347">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e5353">The author would like to acknowledge all the developers and researchers who have used the NICAS code since its first implementation and provided valuable feedback, bugfixes and suggestions for improvements. Their friendly contributions have made the development of the NICAS method a successful adventure over the years. Finally, the author would like to thank the reviewers for their constructive feedback on the first draft of this article.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e5359">This research of the Institut de Recherche en Informatique de Toulouse (IRIT) was funded by the University Corporation for Atmospheric Research (UCAR) subaward no. SUBAWD001085. The work was continued and finished with the funding of the Norwegian Meteorological Institute.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e5365">This paper was edited by Guoqing Ge and reviewed by two anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Bannister(2008a)</label><mixed-citation> Bannister, R. N.: A review of forecast error covariance statistics in atmospheric variational data assimilation. I: Characteristics and measurements of forecast error covariances, Q. J. Roy. Meteorol. Soc., 134, 1951–1970, 2008a.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Bannister(2008b)</label><mixed-citation> Bannister, R. N.: A review of forecast error covariance statistics in atmospheric variational data assimilation. II: Modelling the forecast error covariance statistics, Q. J. Roy. Meteorol. Soc., 134, 1971–1996, 2008b.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Bannister(2021)</label><mixed-citation> Bannister, R. N.: Balance conditions in variational data assimilation for a high-resolution forecast model, Q. J. Roy. Meteorol. Soc., 147, 2917–2934, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Bridson(2007)</label><mixed-citation>Bridson, R.: Fast poisson disk sampling in arbitrary dimensions, SIGGRAPH sketches, ACM, p. 22, <ext-link xlink:href="https://doi.org/10.1145/1278780.1278807" ext-link-type="DOI">10.1145/1278780.1278807</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Buehner(2005)</label><mixed-citation> Buehner, M.: Ensemble-derived stationary and flow-dependent background-error covariances: Evaluation in a quasi-operational NWP setting, Q. J. Roy. Meteorol. Soc., 131, 1013–1043, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Courtier et al.(1998)Courtier, Andersson, Heckley, Vasiljevic, Hamrud, Hollingsworth, Rabier, Fisher, and Pailleux</label><mixed-citation> Courtier, P., Andersson, E., Heckley, W., Vasiljevic, D., Hamrud, M., Hollingsworth, A., Rabier, F., Fisher, M., and Pailleux, J.: The ECMWF implementation of three-dimensional variational assimilation (3D-Var). I: Formulation, Q. J. Roy. Meteorol. Soc., 124, 1783–1807, 1998.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Fisher(2003)</label><mixed-citation>Fisher, M.: Background Error Covariance Modelling, in: ECMWF Seminar on Recent Developments in Data Assimilation for Atmosphere and Ocean, ECMWF, Reading, UK, 45–63, <uri>https://www.ecmwf.int/en/elibrary/74483-background-error-covariance-modelling</uri> (last access: 26 May 2026), 2003.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Gaspari and Cohn(1999)</label><mixed-citation> Gaspari, G. and Cohn, S. E.: Construction of correlation functions in two and three dimensions, Q. J. Roy. Meteorol. Soc., 125, 723–757, 1999.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Guerrette et al.(2023)Guerrette, Liu, Snyder, Jung, Schwartz, Ban, Vahl, Wu, Baños, Yu, Ha, Trémolet, Auligné, Gas, Ménétrier, Shlyaeva, Miesch, Herbener, Liu, Holdaway, and Johnson</label><mixed-citation>Guerrette, J. J., Liu, Z., Snyder, C., Jung, B.-J., Schwartz, C. S., Ban, J., Vahl, S., Wu, Y., Baños, I. H., Yu, Y. G., Ha, S., Trémolet, Y., Auligné, T., Gas, C., Ménétrier, B., Shlyaeva, A., Miesch, M., Herbener, S., Liu, E., Holdaway, D., and Johnson, B. T.: Data assimilation for the Model for Prediction Across Scales – Atmosphere with the Joint Effort for Data assimilation Integration (JEDI-MPAS 2.0.0-beta): ensemble of 3D ensemble-variational (En-3DEnVar) assimilations, Geosci. Model Dev., 16, 7123–7142, <ext-link xlink:href="https://doi.org/10.5194/gmd-16-7123-2023" ext-link-type="DOI">10.5194/gmd-16-7123-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Jung et al.(2024)Jung, Ménétrier, Snyder, Liu, Guerrette, Ban, Baños, Yu, and Skamarock</label><mixed-citation>Jung, B.-J., Ménétrier, B., Snyder, C., Liu, Z., Guerrette, J. J., Ban, J., Baños, I. H., Yu, Y. G., and Skamarock, W. C.: Three-dimensional variational assimilation with a multivariate background error covariance for the Model for Prediction Across Scales – Atmosphere with the Joint Effort for Data assimilation Integration (JEDI-MPAS 2.0.0-beta), Geosci. Model Dev., 17, 3879–3895, <ext-link xlink:href="https://doi.org/10.5194/gmd-17-3879-2024" ext-link-type="DOI">10.5194/gmd-17-3879-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Lee et al.(2024)Lee, Amezcua, and Bannister</label><mixed-citation> Lee, J. C. K., Amezcua, J., and Bannister, R. N.: Variable-dependent and selective multivariate localization for ensemble-variational data assimilation in the tropics, Mon. Weather Rev., 152, 1097–1118, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Liu et al.(2007)Liu, Xue, Purser, and Parrish</label><mixed-citation> Liu, H., Xue, M., Purser, R. J., and Parrish, D. F.: Retrieval of Moisture from Simulated GPS Slant-Path Water Vapor Observations Using 3DVAR with Anisotropic Recursive Filters, Mon. Weather Rev., 135, 1506–1521, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Liu et al.(2022)Liu, Snyder, Guerrette, Jung, Ban, Vahl, Wu, Trémolet, Auligné, Ménétrier, Shlyaeva, Herbener, Liu, Holdaway, and Johnson</label><mixed-citation>Liu, Z., Snyder, C., Guerrette, J. J., Jung, B.-J., Ban, J., Vahl, S., Wu, Y., Trémolet, Y., Auligné, T., Ménétrier, B., Shlyaeva, A., Herbener, S., Liu, E., Holdaway, D., and Johnson, B. T.: Data assimilation for the Model for Prediction Across Scales – Atmosphere with the Joint Effort for Data assimilation Integration (JEDI-MPAS 1.0.0): EnVar implementation and evaluation, Geosci. Model Dev., 15, 7859–7878, <ext-link xlink:href="https://doi.org/10.5194/gmd-15-7859-2022" ext-link-type="DOI">10.5194/gmd-15-7859-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Lorenc(2003)</label><mixed-citation> Lorenc, A. C.: The potential of the ensemble Kalman filter for NWP – a comparison with 4D-Var, Q. J. Roy. Meteorol. Soc., 129, 3183–3203, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Malardel et al.(2016)Malardel, Wedi, Deconinck, Diamantakis, Kühnlein, Mozdzynski, Hamrud, and Smolarkiewicz</label><mixed-citation> Malardel, S., Wedi, N., Deconinck, W., Diamantakis, M., Kühnlein, C., Mozdzynski, G., Hamrud, M., and Smolarkiewicz, P.: A new grid for the IFS, ECMWF Newsletter, 146, 23-228, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Ménétrier(2020)</label><mixed-citation>Ménétrier, B.: benjaminmenetrier/nicas_doc: Initial version, Zenodo [documentation], <ext-link xlink:href="https://doi.org/10.5281/zenodo.4058620" ext-link-type="DOI">10.5281/zenodo.4058620</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Ménétrier(2023)</label><mixed-citation>Ménétrier, B.: benjaminmenetrier/multivariate_localization: 2023-01-18 version (v2.0.1), Zenodo [documentation], <ext-link xlink:href="https://doi.org/10.5281/zenodo.7547230" ext-link-type="DOI">10.5281/zenodo.7547230</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Ménétrier(2026)</label><mixed-citation>Ménétrier, B.: benjaminmenetrier/saber_bundle: Accepted article figures, Zenodo [code and data set], <ext-link xlink:href="https://doi.org/10.5281/zenodo.20268128" ext-link-type="DOI">10.5281/zenodo.20268128</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Ménétrier et al.(2014)Ménétrier, Montmerle, Berre, and Michel</label><mixed-citation> Ménétrier, B., Montmerle, T., Berre, L., and Michel, Y.: Estimation and diagnosis of heterogeneous flow-dependent background-error covariances at the convective scale using either large or small ensembles, Q. J. Roy. Meteorol. Soc., 140, 2050–2061, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Mirouze and Weaver(2010)</label><mixed-citation> Mirouze, I. and Weaver, A. T.: Representation of correlation functions in variational assimilation using an implicit diffusion operator, Q. J. Roy. Meteorol. Soc., 136, 1421–1443, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Parrish and Derber(1992)</label><mixed-citation>Parrish, D. F. and Derber, J. C.: The National Meteorological Center's Spectral Statistical-Interpolation Analysis System, Mon. Weather Rev., 120, 1747–1763, 1992.  </mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Purser et al.(2003a)Purser, Wu, Parrish, and Roberts</label><mixed-citation> Purser, R. J., Wu, W.-S., Parrish, D. F., and Roberts, N. M.: Numerical Aspects of the Application of Recursive Filters to Variational Statistical Analysis. Part I: Spatially Homogeneous and Isotropic Gaussian Covariances, Mon. Weather Rev., 131, 1524–1535, 2003a.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Purser et al.(2003b)Purser, Wu, Parrish, and Roberts</label><mixed-citation> Purser, R. J., Wu, W.-S., Parrish, D. F., and Roberts, N. M.: Numerical Aspects of the Application of Recursive Filters to Variational Statistical Analysis. Part II: Spatially Inhomogeneous and Anisotropic General Covariances, Mon. Weather Rev., 131, 1536–1548, 2003b.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Purser et al.(2022)Purser, Rancic, and Pondeca</label><mixed-citation> Purser, R. J., Rancic, M., and Pondeca, M. S. F. V. D.: The Multigrid Beta Function Approach for Modeling of Background Error Covariance in the Real-Time Mesoscale Analysis (RTMA), Mon.Weather Rev., 150, 715–732, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Renka(1997)</label><mixed-citation> Renka, R. J.: Algorithm 773: SSRFPACK: interpolation of scattered data on the surface of a sphere with a surface under tension, ACM Trans. Math. Softw., 23, 435–442, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Renka et al.(1984)Renka, Renka, and Cline</label><mixed-citation>Renka, R. J., Renka, R., and Cline, A.: A triangle-based C<sup>1</sup> interpolation method, Rocky Mountain J. Math., 14, 223–237, 1984.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Skrunes et al.(2023)Skrunes, Destouches, Weaver, Coulaud, Goux, and Lapeyre</label><mixed-citation>Skrunes, F. K., Destouches, M., Weaver, A., Coulaud, G., Goux, O., and Lapeyre, C.: Application of deep learning to the estimation of normalization coefficients in diffusion-based covariance models, arXiv [preprint], <ext-link xlink:href="https://doi.org/10.48550/arXiv.2312.05068" ext-link-type="DOI">10.48550/arXiv.2312.05068</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Weaver and Courtier(2001)</label><mixed-citation> Weaver, A. and Courtier, P.: Correlation modelling on the sphere using a generalized diffusion equation, Q. J. Roy. Meteorol. Soc., 127, 1815–1846, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Weaver and Mirouze(2013)</label><mixed-citation> Weaver, A. T. and Mirouze, I.: On the diffusion equation and its application to isotropic and anisotropic correlation modelling in variational assimilation, Q. J. Roy. Meteorol. Soc., 139, 242–260, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Weaver et al.(2005)Weaver, Deltel, Machu, Ricci, and Daget</label><mixed-citation> Weaver, A. T., Deltel, C., Machu, E., Ricci, S., and Daget, N.: A multivariate balance operator for variational ocean data assimilation, Q. J. Roy. Meteorol. Soc., 131, 3605–3625, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Weaver et al.(2018)Weaver, Gürol, Tshimanga, Chrust, and Piacentini</label><mixed-citation> Weaver, A. T., Gürol, S., Tshimanga, J., Chrust, M., and Piacentini, A.: “Time”-Parallel diffusion-based correlation operators, Q. J. Roy. Meteorol. Soc., 144, 2067–2088, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Weaver et al.(2020)Weaver, Chrust, Ménétrier, and Piacentini</label><mixed-citation> Weaver, A. T., Chrust, M., Ménétrier, B., and Piacentini, A.: An evaluation of methods for normalizing diffusion-based covariance operators in variational data assimilation, Q. J. Roy. Meteorol. Soc., 147, 289–320, 2020.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>The Normalized Interpolated Convolution from  an Adaptive Subgrid (NICAS) method</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Bannister(2008a)</label><mixed-citation>
      
Bannister, R. N.: A review of forecast error covariance statistics in
atmospheric variational data assimilation. I: Characteristics and
measurements of forecast error covariances, Q. J. Roy. Meteorol. Soc., 134, 1951–1970, 2008a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Bannister(2008b)</label><mixed-citation>
      
Bannister, R. N.: A review of forecast error covariance statistics in
atmospheric variational data assimilation. II: Modelling the forecast error
covariance statistics, Q. J. Roy. Meteorol. Soc., 134, 1971–1996, 2008b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Bannister(2021)</label><mixed-citation>
      
Bannister, R. N.: Balance conditions in variational data assimilation for a
high-resolution forecast model, Q. J. Roy. Meteorol. Soc., 147, 2917–2934, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Bridson(2007)</label><mixed-citation>
      
Bridson, R.: Fast poisson disk sampling in arbitrary dimensions, SIGGRAPH sketches, ACM, p. 22, <a href="https://doi.org/10.1145/1278780.1278807" target="_blank">https://doi.org/10.1145/1278780.1278807</a>, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Buehner(2005)</label><mixed-citation>
      
Buehner, M.: Ensemble-derived stationary and flow-dependent background-error
covariances: Evaluation in a quasi-operational NWP setting, Q. J. Roy. Meteorol. Soc., 131, 1013–1043, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Courtier et al.(1998)Courtier, Andersson, Heckley, Vasiljevic,
Hamrud, Hollingsworth, Rabier, Fisher, and Pailleux</label><mixed-citation>
      
Courtier, P., Andersson, E., Heckley, W., Vasiljevic, D., Hamrud, M.,
Hollingsworth, A., Rabier, F., Fisher, M., and Pailleux, J.: The ECMWF
implementation of three-dimensional variational assimilation (3D-Var). I: Formulation, Q. J. Roy. Meteorol. Soc., 124, 1783–1807, 1998.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Fisher(2003)</label><mixed-citation>
      
Fisher, M.: Background Error Covariance Modelling, in: ECMWF Seminar on
Recent Developments in Data Assimilation for Atmosphere and Ocean, ECMWF, Reading, UK, 45–63, <a href="https://www.ecmwf.int/en/elibrary/74483-background-error-covariance-modelling" target="_blank"/> (last access: 26 May 2026), 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Gaspari and Cohn(1999)</label><mixed-citation>
      
Gaspari, G. and Cohn, S. E.: Construction of correlation functions in two and
three dimensions, Q. J. Roy. Meteorol. Soc., 125, 723–757, 1999.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Guerrette et al.(2023)Guerrette, Liu, Snyder, Jung, Schwartz, Ban,
Vahl, Wu, Baños, Yu, Ha, Trémolet, Auligné, Gas, Ménétrier,
Shlyaeva, Miesch, Herbener, Liu, Holdaway, and Johnson</label><mixed-citation>
      
Guerrette, J. J., Liu, Z., Snyder, C., Jung, B.-J., Schwartz, C. S., Ban, J., Vahl, S., Wu, Y., Baños, I. H., Yu, Y. G., Ha, S., Trémolet, Y., Auligné, T., Gas, C., Ménétrier, B., Shlyaeva, A., Miesch, M., Herbener, S., Liu, E., Holdaway, D., and Johnson, B. T.: Data assimilation for the Model for Prediction Across Scales – Atmosphere with the Joint Effort for Data assimilation Integration (JEDI-MPAS 2.0.0-beta): ensemble of 3D ensemble-variational (En-3DEnVar) assimilations, Geosci. Model Dev., 16, 7123–7142, <a href="https://doi.org/10.5194/gmd-16-7123-2023" target="_blank">https://doi.org/10.5194/gmd-16-7123-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Jung et al.(2024)Jung, Ménétrier, Snyder, Liu, Guerrette, Ban,
Baños, Yu, and Skamarock</label><mixed-citation>
      
Jung, B.-J., Ménétrier, B., Snyder, C., Liu, Z., Guerrette, J. J., Ban, J., Baños, I. H., Yu, Y. G., and Skamarock, W. C.: Three-dimensional variational assimilation with a multivariate background error covariance for the Model for Prediction Across Scales – Atmosphere with the Joint Effort for Data assimilation Integration (JEDI-MPAS 2.0.0-beta), Geosci. Model Dev., 17, 3879–3895, <a href="https://doi.org/10.5194/gmd-17-3879-2024" target="_blank">https://doi.org/10.5194/gmd-17-3879-2024</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Lee et al.(2024)Lee, Amezcua, and Bannister</label><mixed-citation>
      
Lee, J. C. K., Amezcua, J., and Bannister, R. N.: Variable-dependent and
selective multivariate localization for ensemble-variational data
assimilation in the tropics, Mon. Weather Rev., 152, 1097–1118, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Liu et al.(2007)Liu, Xue, Purser, and Parrish</label><mixed-citation>
      
Liu, H., Xue, M., Purser, R. J., and Parrish, D. F.: Retrieval of Moisture from Simulated GPS Slant-Path Water Vapor Observations Using 3DVAR with
Anisotropic Recursive Filters, Mon. Weather Rev., 135, 1506–1521, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Liu et al.(2022)Liu, Snyder, Guerrette, Jung, Ban, Vahl, Wu,
Trémolet, Auligné, Ménétrier, Shlyaeva, Herbener, Liu, Holdaway, and Johnson</label><mixed-citation>
      
Liu, Z., Snyder, C., Guerrette, J. J., Jung, B.-J., Ban, J., Vahl, S., Wu, Y., Trémolet, Y., Auligné, T., Ménétrier, B., Shlyaeva, A., Herbener, S., Liu, E., Holdaway, D., and Johnson, B. T.: Data assimilation for the Model for Prediction Across Scales – Atmosphere with the Joint Effort for Data assimilation Integration (JEDI-MPAS 1.0.0): EnVar implementation and evaluation, Geosci. Model Dev., 15, 7859–7878, <a href="https://doi.org/10.5194/gmd-15-7859-2022" target="_blank">https://doi.org/10.5194/gmd-15-7859-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Lorenc(2003)</label><mixed-citation>
      
Lorenc, A. C.: The potential of the ensemble Kalman filter for NWP – a
comparison with 4D-Var, Q. J. Roy. Meteorol. Soc., 129, 3183–3203, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Malardel et al.(2016)Malardel, Wedi, Deconinck, Diamantakis,
Kühnlein, Mozdzynski, Hamrud, and Smolarkiewicz</label><mixed-citation>
      
Malardel, S., Wedi, N., Deconinck, W., Diamantakis, M., Kühnlein, C.,
Mozdzynski, G., Hamrud, M., and Smolarkiewicz, P.: A new grid for the IFS,
ECMWF Newsletter, 146, 23-228, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Ménétrier(2020)</label><mixed-citation>
      
Ménétrier, B.: benjaminmenetrier/nicas_doc: Initial version, Zenodo [documentation], <a href="https://doi.org/10.5281/zenodo.4058620" target="_blank">https://doi.org/10.5281/zenodo.4058620</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Ménétrier(2023)</label><mixed-citation>
      
Ménétrier, B.: benjaminmenetrier/multivariate_localization: 2023-01-18 version (v2.0.1), Zenodo [documentation], <a href="https://doi.org/10.5281/zenodo.7547230" target="_blank">https://doi.org/10.5281/zenodo.7547230</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Ménétrier(2026)</label><mixed-citation>
      
Ménétrier, B.: benjaminmenetrier/saber_bundle: Accepted article figures, Zenodo [code and data set], <a href="https://doi.org/10.5281/zenodo.20268128" target="_blank">https://doi.org/10.5281/zenodo.20268128</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Ménétrier et al.(2014)Ménétrier, Montmerle, Berre, and
Michel</label><mixed-citation>
      
Ménétrier, B., Montmerle, T., Berre, L., and Michel, Y.: Estimation and diagnosis of heterogeneous flow-dependent background-error covariances at the convective scale using either large or small ensembles, Q. J. Roy. Meteorol. Soc., 140, 2050–2061, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Mirouze and Weaver(2010)</label><mixed-citation>
      
Mirouze, I. and Weaver, A. T.: Representation of correlation functions in
variational assimilation using an implicit diffusion operator, Q. J. Roy. Meteorol. Soc., 136, 1421–1443, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Parrish and Derber(1992)</label><mixed-citation>
      
Parrish, D. F. and Derber, J. C.: The National Meteorological Center's
Spectral Statistical-Interpolation Analysis System, Mon. Weather Rev., 120, 1747–1763, 1992.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Purser et al.(2003a)Purser, Wu, Parrish, and
Roberts</label><mixed-citation>
      
Purser, R. J., Wu, W.-S., Parrish, D. F., and Roberts, N. M.: Numerical Aspects of the Application of Recursive Filters to Variational Statistical Analysis. Part I: Spatially Homogeneous and Isotropic Gaussian Covariances, Mon. Weather Rev., 131, 1524–1535, 2003a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Purser et al.(2003b)Purser, Wu, Parrish, and
Roberts</label><mixed-citation>
      
Purser, R. J., Wu, W.-S., Parrish, D. F., and Roberts, N. M.: Numerical Aspects of the Application of Recursive Filters to Variational Statistical Analysis. Part II: Spatially Inhomogeneous and Anisotropic General Covariances, Mon. Weather Rev., 131, 1536–1548, 2003b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Purser et al.(2022)Purser, Rancic, and Pondeca</label><mixed-citation>
      
Purser, R. J., Rancic, M., and Pondeca, M. S. F. V. D.: The Multigrid Beta
Function Approach for Modeling of Background Error Covariance in the
Real-Time Mesoscale Analysis (RTMA), Mon.Weather Rev., 150, 715–732, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Renka(1997)</label><mixed-citation>
      
Renka, R. J.: Algorithm 773: SSRFPACK: interpolation of scattered data on the
surface of a sphere with a surface under tension, ACM Trans. Math. Softw.,
23, 435–442, 1997.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Renka et al.(1984)Renka, Renka, and Cline</label><mixed-citation>
      
Renka, R. J., Renka, R., and Cline, A.: A triangle-based C<sup>1</sup> interpolation
method, Rocky Mountain J. Math., 14, 223–237, 1984.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Skrunes et al.(2023)Skrunes, Destouches, Weaver, Coulaud, Goux, and
Lapeyre</label><mixed-citation>
      
Skrunes, F. K., Destouches, M., Weaver, A., Coulaud, G., Goux, O., and Lapeyre, C.: Application of deep learning to the estimation of normalization
coefficients in diffusion-based covariance models, arXiv [preprint], <a href="https://doi.org/10.48550/arXiv.2312.05068" target="_blank">https://doi.org/10.48550/arXiv.2312.05068</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Weaver and Courtier(2001)</label><mixed-citation>
      
Weaver, A. and Courtier, P.: Correlation modelling on the sphere using a
generalized diffusion equation, Q. J. Roy. Meteorol. Soc., 127, 1815–1846, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Weaver and Mirouze(2013)</label><mixed-citation>
      
Weaver, A. T. and Mirouze, I.: On the diffusion equation and its application to isotropic and anisotropic correlation modelling in variational assimilation, Q. J. Roy. Meteorol. Soc., 139, 242–260, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Weaver et al.(2005)Weaver, Deltel, Machu, Ricci, and
Daget</label><mixed-citation>
      
Weaver, A. T., Deltel, C., Machu, E., Ricci, S., and Daget, N.: A multivariate balance operator for variational ocean data assimilation, Q. J. Roy. Meteorol. Soc., 131, 3605–3625, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Weaver et al.(2018)Weaver, Gürol, Tshimanga, Chrust, and
Piacentini</label><mixed-citation>
      
Weaver, A. T., Gürol, S., Tshimanga, J., Chrust, M., and Piacentini, A.:
“Time”-Parallel diffusion-based correlation operators, Q. J. Roy. Meteorol. Soc., 144, 2067–2088, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Weaver et al.(2020)Weaver, Chrust, Ménétrier, and
Piacentini</label><mixed-citation>
      
Weaver, A. T., Chrust, M., Ménétrier, B., and Piacentini, A.: An evaluation of methods for normalizing diffusion-based covariance operators in
variational data assimilation, Q. J. Roy. Meteorol. Soc., 147, 289–320, 2020.

    </mixed-citation></ref-html>--></article>
