<?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-9751-2026</article-id><title-group><article-title>EnviFlux (v1.0): a simplified surface flux inversion tool based on four-dimensional variational data assimilation (4D-Var)</article-title><alt-title>EnviFlux: a simplified 4D-Var surface flux inversion tool</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1 aff2">
          <name><surname>Bannister</surname><given-names>Ross N.</given-names></name>
          <email>r.n.bannister@reading.ac.uk</email>
        <ext-link>https://orcid.org/0000-0002-6846-8297</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Dept. of Meteorology, Univ. of Reading, Whiteknights Road, Earley Gate, Reading, RG6 6ET, UK</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>National Centre for Earth Observation, Space Park Leicester, Corporation Road, Leicester, LE4 5SP, UK</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Ross N. Bannister (r.n.bannister@reading.ac.uk)</corresp></author-notes><pub-date><day>12</day><month>October</month><year>2026</year></pub-date>
      
      <volume>19</volume>
      <issue>19</issue>
      <fpage>9751</fpage><lpage>9780</lpage>
      <history>
        <date date-type="received"><day>19</day><month>December</month><year>2025</year></date>
           <date date-type="rev-request"><day>10</day><month>March</month><year>2026</year></date>
           <date date-type="rev-recd"><day>2</day><month>September</month><year>2026</year></date>
           <date date-type="accepted"><day>18</day><month>September</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Ross N. Bannister</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/9751/2026/gmd-19-9751-2026.html">This article is available from https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e87">This paper introduces EnviFlux, which is a software tool (written in C++) to study the inverse problem of estimating the distribution of fluxes of a trace gas globally at the Earth's surface. This is done using a four-dimensional variational technique, which combines information from (i) synthetic observations of the trace gas spanning a defined time window, (ii) a transport model linking the initial concentration and surface fluxes to predictions of the observations, and (iii) a priori information. The novelty of this system – compared to those that attempt to solve for real data – is in its relative simplicity and low cost, allowing new ideas to be assessed and understood quickly and cheaply. This is in line with many other developments in data assimilation that are often first explored using so-called “toy” systems. Part of this paper is to document this system, which is sufficiently complex to allow assimilation of in situ and total column amount (TCA) observation in arbitrary configurations, and has a flexible background error covariance model, but is simple enough to be run relatively quickly.</p>

      <p id="d2e90">Another part of this paper uses EnviFlux to explore the effect of model error and observation bias on inferred surface fluxes in two example scenarios and with two observation types, namely surface in situ (SIS) and TCA. The first is a highly idealised case with a flux pair (a localised source and a localised sink), where no a priori information concerning their positions is provided. It is found that model errors in the assimilation can severely affect the inferred flux positions and amounts, but observation biases do not affect the positions, but do affect the amounts. The second scenario is closer to a real-world example of methane flux estimates where an a priori is refined with observations. The effect of model error is less than for the first scenario, but is still evident, and the observation biases affect the flux amounts. In both cases, the SIS observations allow a more accurate estimate of surface flux characteristics than the TCA observations, even though the experiments are setup to allow a fair comparison of the two. The last part of the paper raises some research questions that EnviFlux could help address.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>National Centre for Earth Observation</funding-source>
<award-id>PR140015</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="d2e102">A great potential of data assimilation is in its scope to infer hidden information that cannot be easily measured directly or accurately. The estimation of the rates of exchange of trace gases at the Earth's surface is one example that has important uses, e.g. in understanding and quantifying what processes and locations are responsible for the increasing concentrations of greenhouse gases in the Earth's atmosphere. Example studies include those for carbon dioxide (<inline-formula><mml:math id="M1" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>) <xref ref-type="bibr" rid="bib1.bibx16 bib1.bibx22" id="paren.1"/>, methane (<inline-formula><mml:math id="M2" display="inline"><mml:mrow class="unit"><mml:msub><mml:mi mathvariant="normal">CH</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>) <xref ref-type="bibr" rid="bib1.bibx24 bib1.bibx56" id="paren.2"/>, nitrous oxide (<inline-formula><mml:math id="M3" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">N</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi mathvariant="normal">O</mml:mi></mml:mrow></mml:math></inline-formula>) <xref ref-type="bibr" rid="bib1.bibx31 bib1.bibx63" id="paren.3"/>, and other trace gases <xref ref-type="bibr" rid="bib1.bibx38 bib1.bibx2 bib1.bibx44 bib1.bibx52 bib1.bibx26" id="paren.4"/>. The method works by combining measurements of trace gas concentrations downstream of surface sources or sinks, with rules about how the air gets modified by the sources and sinks, and then how it is transported to the observation sites (this is usually in the form of a chemical transport model). This process is called “inverse modelling” or “top-down flux estimation” <xref ref-type="bibr" rid="bib1.bibx36" id="paren.5"/> and has been applied using a number of techniques. These include direct inversions (using an explicit estimator formula) to infer the fluxes over a small number of large geographical regions <xref ref-type="bibr" rid="bib1.bibx28 bib1.bibx13" id="paren.6"/>, Markov chain Monte-Carlo <xref ref-type="bibr" rid="bib1.bibx43" id="paren.7"/>, regressions <xref ref-type="bibr" rid="bib1.bibx51" id="paren.8"/>, back-trajectories <xref ref-type="bibr" rid="bib1.bibx2" id="paren.9"/>, fixed-lag Kalman smoothers <xref ref-type="bibr" rid="bib1.bibx71" id="paren.10"/>, ensemble Kalman filters <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx12 bib1.bibx53" id="paren.11"/>, and four-dimensional variational data assimilation (4D-Var) <xref ref-type="bibr" rid="bib1.bibx34 bib1.bibx16 bib1.bibx47 bib1.bibx67" id="paren.12"/>.</p>
      <p id="d2e178">Even the most carefully implemented inverse modelling studies have shortcomings owing to unknown or imperfectly modelled processes, unaccounted for errors, or incorrectly specified error covariances. One such issue is the influence of inevitable transport errors on the flux estimates, which has been the subject of numerous studies <xref ref-type="bibr" rid="bib1.bibx18 bib1.bibx10 bib1.bibx60 bib1.bibx48" id="paren.13"/>. In particular, <xref ref-type="bibr" rid="bib1.bibx35" id="text.14"/> found that transport errors contributed to the uncertainty in <inline-formula><mml:math id="M4" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> fluxes of <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.1</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">Pg</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">C</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">yr</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>(</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">6</mml:mn></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">km</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula> over land even though the model imperfections resulted in errors in predicted <inline-formula><mml:math id="M6" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> column averages of just <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">ppm</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> (comparable to the measurement error considered). <xref ref-type="bibr" rid="bib1.bibx38" id="text.15"/> reported that for the estimate of carbon monoxide (CO) fluxes, transport model errors can contribute to 5 <inline-formula><mml:math id="M8" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> of global emission errors, with larger values as the scale of interest gets smaller, becoming one and a half times the a priori fluxes at the model grid level. Further, <xref ref-type="bibr" rid="bib1.bibx14" id="text.16"/> found different locations of <inline-formula><mml:math id="M9" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> fluxes depending on the transport model used in the inversion. Another issue is the presence of biases <xref ref-type="bibr" rid="bib1.bibx15 bib1.bibx18" id="paren.17"/>, which – whether in the model or in the observations – can contribute to large innovations, and hence to anomalous inferred fluxes.</p>
      <p id="d2e296">These, and many other issues (see, e.g. the conclusions section of this paper), means that there is still a huge amount of research to be done to develop and refine inverse modelling techniques. Chemical transport models (CTM, and hence the whole inverse modelling procedures) are expensive to run <xref ref-type="bibr" rid="bib1.bibx1" id="paren.18"/>, and so there is scope to explore some new ideas using low-cost simplified flux inversion systems that can be run repeatedly without the need for expensive high performance computers. This paper introduces a much simplified Environmental Flux inverse system “EnviFlux” that can be used to do low-cost experimentation around ideas related to such inverse problems. The software is designed to investigate the 4D-Var method of solving the the global flux inversion problem inexpensively by running idealised twin experiments (as other authors have done in more complex and expensive systems, e.g. <xref ref-type="bibr" rid="bib1.bibx17 bib1.bibx10 bib1.bibx69 bib1.bibx64" id="altparen.19"/>. It is hoped that some lessons learned with this simplified system can be transferred to real-world (particularly 4D-Var-based) systems such as those used in <xref ref-type="bibr" rid="bib1.bibx29" id="text.20"/> (based on GEOS-Chem, <xref ref-type="bibr" rid="bib1.bibx11" id="altparen.21"/>), <xref ref-type="bibr" rid="bib1.bibx16" id="text.22"/> (based on LMDZ, <xref ref-type="bibr" rid="bib1.bibx33" id="altparen.23"/>), <xref ref-type="bibr" rid="bib1.bibx47" id="text.24"/> (based on TM5, <xref ref-type="bibr" rid="bib1.bibx39" id="altparen.25"/>), <xref ref-type="bibr" rid="bib1.bibx67" id="text.26"/> (INVICAT, based on TOMCAT, <xref ref-type="bibr" rid="bib1.bibx19" id="altparen.27"/>), <xref ref-type="bibr" rid="bib1.bibx37" id="text.28"/> (based on WRF-Chem, <xref ref-type="bibr" rid="bib1.bibx27" id="altparen.29"/>), and other models, and their developments. This paper demonstrates some findings from EnviFlux by studying the impact of model error and observation biases on the ability to infer the positions and magnitudes of surface fluxes of a generic trace gas.</p>
      <p id="d2e337">The structure of this paper is as follows. Section <xref ref-type="sec" rid="Ch1.S2"/> describes the basic set-up of the system, including the state vector, the computational grids, and the tracer transport scheme. Section <xref ref-type="sec" rid="Ch1.S3"/> describes how the inverse problem is solved in the context of 4D-Var. Sections <xref ref-type="sec" rid="Ch1.S4"/> and <xref ref-type="sec" rid="Ch1.S5"/> provide demonstrations of the system, one with a example to estimate the position and magnitude of a source/sink pair in a “weakly Bayesian” (minimal a priori information) context, and another with a more conventional Bayesian set-up to improve a given a priori with observations. Section <xref ref-type="sec" rid="Ch1.S6"/> summarises the findings, and poses some further issues that EnviFlux may be used to study. Appendices <xref ref-type="sec" rid="App1.Ch1.S1"/>–<xref ref-type="sec" rid="App1.Ch1.S3"/> describe the formulation, use, and calibration of the spectral-based scheme used for the background error covariance matrix, which comprises a significant part of the system. Appendix <xref ref-type="sec" rid="App1.Ch1.S4"/> describes the way the software is structured, including the core code (written in C++), and visualisation/post-processing tools (written in python). Appendix <xref ref-type="sec" rid="App1.Ch1.S5"/> assesses the computational resources needed to run the software, Appendix <xref ref-type="sec" rid="App1.Ch1.S6"/> shows how the 4D-Var cost function converges with the iteration, and Appendix <xref ref-type="sec" rid="App1.Ch1.S7"/> discusses some consequences of the model error scheme used. EnviFlux also has a user guide, which complements this paper with some algorithmic details and instructions to run the software. The user guide and code are available in the GitHub repository <xref ref-type="bibr" rid="bib1.bibx8" id="paren.30"/>, and data are also available <xref ref-type="bibr" rid="bib1.bibx7" id="paren.31"/>.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Description of the system and the forward problem</title>
      <p id="d2e378">EnviFlux has many components that work together to estimate the global surface fluxes. This section is a scientific description of the basic components that comprise the forward part of the system. Some finer details are documented in the user guide.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>The continuous equations of motion</title>
      <p id="d2e388">The continuous equation of motion for the tracer, <inline-formula><mml:math id="M10" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> (a mixing ratio), in 3D is nominally

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M11" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E1"><mml:mtd><mml:mtext>1</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M12" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula> is the prescribed 3D wind vector (<inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mtable class="matrix" columnalign="center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mi>u</mml:mi></mml:mtd><mml:mtd><mml:mi>v</mml:mi></mml:mtd><mml:mtd><mml:mi>w</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>⊺</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>), <inline-formula><mml:math id="M14" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is the 2D surface flux field, the operator <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:math></inline-formula> constructs a 3D field of zero apart from the surface where it assigns the value <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:msub><mml:mi>d</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (surface layer thickness <inline-formula><mml:math id="M17" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, surface air density <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.225</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">kg</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula>), <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are the horizontal and vertical diffusion coefficients, <inline-formula><mml:math id="M21" display="inline"><mml:mi mathvariant="normal">∇</mml:mi></mml:math></inline-formula> is the 3D gradient operator, and <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">∇</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="M23" display="inline"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> are the horizontal and vertical Laplacian operators. In practice, Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) is solved on a discrete grid in space and time (see below). In EnviFlux, <inline-formula><mml:math id="M24" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> has units of <inline-formula><mml:math id="M25" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">kg</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> (although the units in many applications is moles per mole of dry air), and <inline-formula><mml:math id="M26" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> has units of <inline-formula><mml:math id="M27" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. Since the purpose of this work is to study the inverse problem in its simplest form, the tracer in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) has no sub-grid influences, like convection and turbulence, nor chemical reactions that would apply to methane e.g. like hydroxyl or photochemical oxidation. Stable tracers like carbon dioxide or sulphur hexafluoride would be the most suitable species for EnviFlux, but this paper focuses on a hypothetical tracer (although in the second example application shown in this paper, Sect. <xref ref-type="sec" rid="Ch1.S5"/>, the tracer has a methane-like flux pattern).</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>The state vector, the spatial grid, and time-stepping</title>
      <p id="d2e785">The core component of EnviFlux is the state vector, <inline-formula><mml:math id="M28" display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula>, which comprises the initial and boundary conditions needed to make predictions of the atmospheric tracer mixing ratio, <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.  The state vector is written

                <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M30" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mtable class="matrix" columnalign="center" rowlines="solid none none none" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the initial 3D tracer field, and <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the surface flux field at a set of equally spaced time-steps <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the time interval between flux fields. Bold symbols indicate the variables are part of the state vector. In this paper sometimes only the <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> part of <inline-formula><mml:math id="M36" display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula> is referred to and other times only the <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> part. The notation <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:msub><mml:mfenced open="{" close="}"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> shall refer to these parts respectively.</p>
      <p id="d2e1030">The spatial grid is shown in Fig. <xref ref-type="fig" rid="F1"/>, which has <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> longitudes, <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> latitudes, and <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> vertical levels. The time-stepping is done in three stages, namely (i) the semi-Lagrangian (SL) advection stage, (ii) the diffusion stage, and (iii) the flux stage, which are described below. EnviFlux uses four kinds of time step, which are as follows (see Fig. <xref ref-type="fig" rid="F2"/>). <list list-type="bullet"><list-item>
      <p id="d2e1073">The <italic>minor time step</italic>, <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, is the interval used to divide up the back-trajectory for the solver needed for the SL advection scheme.</p></list-item><list-item>
      <p id="d2e1090">The <italic>diffusion time step</italic>, <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">κ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, is the time step used to solve the diffusion part of Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>).</p></list-item><list-item>
      <p id="d2e1110">The <italic>major time step</italic>, <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, is the interval between the files specifying <inline-formula><mml:math id="M46" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula>. It is also used as the length of time of each back-trajectory, which is divided into <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> sub intervals.</p></list-item><list-item>
      <p id="d2e1150">The <italic>flux time step</italic>, <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (mentioned above), is the time interval between flux fields.</p></list-item></list> The values of these steps are restricted such that <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">κ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> are positive integers. The three stages of the model's time-stepping (over a major time step, <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>) are as follows. <list list-type="order"><list-item id="Ch1.I2.i1">
      <p id="d2e1230">The first stage solves the advection part of Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) with the SL method. Each <inline-formula><mml:math id="M53" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> point on the grid is taken as a “starting point” in a back trajectory calculation from time <inline-formula><mml:math id="M54" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> back to <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>. This time is divided into smaller steps of size <inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> where the backward path for each is calculated using fourth-order Runge–Kutta <xref ref-type="bibr" rid="bib1.bibx55" id="paren.32"/>. This leads to an “end point” at <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> for each trajectory. The “start” and “end” are in inverted commas as a reminder that these are meant in a backward time sense. The value of <inline-formula><mml:math id="M58" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> at the “starting point” at time <inline-formula><mml:math id="M59" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> after this first stage is replaced by the value of <inline-formula><mml:math id="M60" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> at the “end point” at <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>. This involves spatial interpolation. EnviFlux allows tri-linear or tri-cubic interpolation, with the latter recommended to reduce loss of conservation. Advection is driven by prescribed 3D wind fields, stored in an archive of files; in this paper these are derived from the Eurpoean Reanalysis 5 (ERA-5) winds <xref ref-type="bibr" rid="bib1.bibx30" id="paren.33"/>. As the forward model (and the adjoint) is repeated many times during an assimilation (Sect. <xref ref-type="sec" rid="Ch1.S3"/>), the “end points” are archived so the trajectories do not need to be computed each time. We call this “boosting” as it speeds up the computation.</p></list-item><list-item>
      <p id="d2e1333">The second stage solves the diffusion part of Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>). Practically, the advected field from stage 1 is copied back to <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> and a pure diffusion equation (Eq. <xref ref-type="disp-formula" rid="Ch1.E1"/> without the advection and flux terms) is integrated using standard finite-differences with steps of size <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">κ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to time <inline-formula><mml:math id="M64" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>. Diffusion can be applied as a physical process, or to stablise a numerical scheme. For the experiments shown in this paper, no explicit diffusion is applied as the SL scheme is stable and introduces its own numerical diffusion.</p></list-item><list-item>
      <p id="d2e1373">The third stage introduces the surface fluxes to the model's layer closest to the surface with an increment of <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>×</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are defined above. This form assumes that the fluxes add tracer to or remove tracer from the air uniformly within the surface grid layer at each horizontal position. The particular flux field time in the state vector (Eq. <xref ref-type="disp-formula" rid="Ch1.E2"/>) used in this step is simply <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mtext>int</mml:mtext><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, where the <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:mtext>int</mml:mtext><mml:mo>(</mml:mo><mml:mo>•</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> function rounds down to the nearest integer. In other words <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the flux field valid between times <inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mi>t</mml:mi><mml:mo>&lt;</mml:mo><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p></list-item></list> The output of the third stage approximates the solution of Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) at time <inline-formula><mml:math id="M72" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>. The approximations made in these steps are assumed to be adequate for this simplified system. As stated above, EnviFlux does not include (sub-grid) turbulent or convective transport processes, nor chemical reactions.</p>

      <fig id="F1" specific-use="star"><label>Figure 1</label><caption><p id="d2e1536">The horizontal <bold>(a)</bold> and vertical <bold>(b)</bold> model grids used for EnviFlux. In the horizontal, the tracer (<inline-formula><mml:math id="M73" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>), flux (<inline-formula><mml:math id="M74" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>), and vertical wind (<inline-formula><mml:math id="M75" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula>) are stored at points where the black lines cross and indexed with the black <inline-formula><mml:math id="M76" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M77" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula>. The zonal wind (<inline-formula><mml:math id="M78" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>) is stored at intermediate longitudes indexed with the blue <inline-formula><mml:math id="M79" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, and at the same latitudes as <inline-formula><mml:math id="M80" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>. The meridional wind (<inline-formula><mml:math id="M81" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>) is stored at the same longitudes as <inline-formula><mml:math id="M82" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>, and intermediate latitudes indexed with the red <inline-formula><mml:math id="M83" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula>. The north (np) and south (sp) poles lie on black latitudes. This is the Arakawa “C” grid. In EnviFlux the longitudes are equally spaced, but the latitudes are Gaussian latitudes, which are not equally spaced (this is to allow accurate application of a spherical transform used to model the <inline-formula><mml:math id="M84" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix – see Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/>). In the vertical, <inline-formula><mml:math id="M85" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M86" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M87" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula> are stored on “half levels” indexed with the purple <inline-formula><mml:math id="M88" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M89" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula> is stored on “full levels” indexed with the black <inline-formula><mml:math id="M90" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>. This is the Charney–Phillips staggering.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f01.png"/>

        </fig>

      <fig id="F2"><label>Figure 2</label><caption><p id="d2e1685">Timeline showing the time-stepping schemes used by EnviFlux, showing the four time intervals used. The back trajectories used for the semi-Lagrangian advection are of time length <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, which are comprised of minor time-steps, <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> is also the time interval of the wind files. Explicit diffusion effects are introduced with a timestep <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">κ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and the flux fields have a time interval of <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f02.png"/>

        </fig>

      <p id="d2e1746">For the rest of this paper, we shall represent these three steps with the linear propagator <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>k</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, where the <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> superscript indicates that the propagator is dependent on the surface flux part of the state vector, Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>), which obviously influences the model trajectory. The surface flux does not get updated, which is why it is not part of the main argument. There are three caveats about the meaning of this propagator. The first is that when <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> the argument of <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, i.e. <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mfenced open="(" close=")"><mml:mn mathvariant="normal">0</mml:mn></mml:mfenced></mml:mrow></mml:math></inline-formula>, must be identical to the tracer component of the state vector, i.e. <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:msub><mml:mfenced open="{" close="}"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The propagator definition may therefore be refined:

                <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M102" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mi>k</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="cases" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:msub><mml:mfenced open="{" close="}"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          The second and third caveats are covered in the next section.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>The adjoint step</title>
      <p id="d2e2015">The second caveat concerns the adjoint operator, i.e. <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mfenced close=")" open="("><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced><mml:mo>:=</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced open="{" close="}"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>⊺</mml:mo></mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mfenced close=")" open="("><mml:mrow><mml:mi>k</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>. The action of the adjoint propagates gradient<fn id="Ch1.Footn1"><p id="d2e2089">Gradient of the observation term of the cost function, see Eqs. (<xref ref-type="disp-formula" rid="Ch1.E5"/>) and (<xref ref-type="disp-formula" rid="Ch1.E6"/>).</p></fn> information (indicated with the hat) from <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mfenced close=")" open="("><mml:mrow><mml:mi>k</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> backwards in time to <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mfenced close=")" open="("><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>. Additionally, this operator must incrementally update the gradient state <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msub><mml:mfenced open="{" close="}"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The third caveat concerns the action of the adjoint at the earliest time. While when <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, the output of the adjoint operator is the tracer gradient, <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mfenced close=")" open="("><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> (and update of <inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>), as indicated above, in the special case when <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, i.e. <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>→</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mfenced open="{" close="}"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>⊺</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, the output will be defined as the gradient of the whole state vector. In summary:

                <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M112" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>⊺</mml:mo></mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>k</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced><mml:mo>:=</mml:mo><mml:mfenced open="{" close=""><mml:mtable columnspacing="1em" rowspacing="0.2ex" class="cases" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mfenced close=")" open="("><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>k</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mfenced close=")" open="("><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mtd><mml:mtd><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          where the <inline-formula><mml:math id="M113" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:math></inline-formula> are the accumulations of increments held in the <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> superscript during the course of the adjoint operations (as mentioned in caveat 2). This definition is for notational convenience when computing the gradient of the cost function (see Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>).</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Description of the inverse problem</title>
      <p id="d2e2471">This section is a description of how the surface fluxes are inferred from observations.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>The cost function</title>
      <p id="d2e2481">EnviFlux uses an incremental formulation of the cost function that is minimised during the 4D-Var. In this formulation, <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is the background field (a priori), and <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mrow></mml:math></inline-formula> is the increment, found by minimising the 4D-Var cost function. Instead of varying <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mrow></mml:math></inline-formula> directly, a control variable, <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> is varied, where <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> are related via <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M123" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula> is the background error covariance matrix (Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/>). This change of variable removes the <inline-formula><mml:math id="M124" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix in explicit form from the cost function, and helps improve the conditioning (see e.g. <xref ref-type="bibr" rid="bib1.bibx4" id="altparen.34"/> or Sect. 3.1 of <xref ref-type="bibr" rid="bib1.bibx8" id="altparen.35"/>). In terms of <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> the cost function is

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M126" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>J</mml:mi><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">δ</mml:mi><mml:msup><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>⊺</mml:mo></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi>T</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold">H</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced open="{" close="}"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mfenced open="[" close="]"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mfenced close="}" open="{"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>⊺</mml:mo></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E5"><mml:mtd><mml:mtext>5</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>×</mml:mo><mml:msubsup><mml:mi mathvariant="bold">R</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mfenced open="(" close=")"><mml:mo>•</mml:mo></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where the notation <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is explained in Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>, <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi>T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the number of major time-steps in the problem, <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the set of observations made at time-step <inline-formula><mml:math id="M131" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">H</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the observation operator, <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the observation error covariance matrix, and <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mfenced close="}" open="{"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the background tracer at <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. The “<inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">a</mml:mi><mml:mo>⊺</mml:mo></mml:msup><mml:msup><mml:mi mathvariant="bold">A</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>•</mml:mo></mml:mrow></mml:math></inline-formula>” notation is shorthand for “<inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">a</mml:mi><mml:mo>⊺</mml:mo></mml:msup><mml:msup><mml:mi mathvariant="bold">A</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mi mathvariant="bold-italic">a</mml:mi></mml:mrow></mml:math></inline-formula>”, for brevity. Even though the notation in Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>) implies that observations are at major time-steps only, EnviFlux does allow observations to be made at intermediate times, which are treated with linear interpolation (for details see Sect. 3.2.1 of <xref ref-type="bibr" rid="bib1.bibx8" id="altparen.36"/>).</p>
      <p id="d2e2979">The gradient of the cost function is

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M138" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:msub><mml:mi>J</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mo>⊺</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi>T</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced open="{" close="}"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>⊺</mml:mo></mml:msup><mml:msubsup><mml:mi mathvariant="bold">H</mml:mi><mml:mi>k</mml:mi><mml:mo>⊺</mml:mo></mml:msubsup><mml:msubsup><mml:mi mathvariant="bold">R</mml:mi><mml:mi>k</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E6"><mml:mtd><mml:mtext>6</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>×</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold">H</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">M</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>→</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:mfenced close="]" open="["><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mfenced open="{" close="}"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mo>⊺</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:mfenced><mml:mo>⊺</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, which is fed to a conjugate gradient-based descent algorithm <xref ref-type="bibr" rid="bib1.bibx25 bib1.bibx40" id="paren.37"/> to iteratively minimise the cost function. A version of the gradient calculation that is more efficient to compute than Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) is used by EnviFlux (see Sect. 3.2.2 of <xref ref-type="bibr" rid="bib1.bibx8" id="altparen.38"/>).</p>
      <p id="d2e3238">The block partitioning of <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> is similar to that of <inline-formula><mml:math id="M141" display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula> in Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>) in the sense that the first part concerns the initial conditions and the remainder concerns the surface fluxes:

                <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M142" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mtable class="matrix" columnalign="center" rowlines="solid none none" framespacing="0em"><mml:mtr><mml:mtd><mml:mtext>initial conditions</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow/></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>surface fluxes</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd/></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The size of each block in <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> is the same as in <inline-formula><mml:math id="M144" display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula>, but the elements have different meanings. The elements represent weights of different spectral components, and vertical or temporal modes. This is discussed further in Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/>.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Observations and observation operators</title>
      <p id="d2e3319">EnviFlux allows three types of observation to be assimilated, namely in situ tracer observations, integrated total column amount (TCA) observations, and direct flux observations. Observations can be at any geographical location, and tracer observations can additionally be made at any height above the surface within the domain. The model's version of the observations, <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">H</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, are found by linear interpolation in space and time. The TCA observations are found from a discretisation of the vertical integral <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:mo>∫</mml:mo><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi mathvariant="normal">d</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M147" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> is height above the surface, <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the air density (this has a similar mathematical structure as the Jacobian of the radiative transfer models used to assimilate some satellite observations), and <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the tracer field interpolated to the geographical location and time of each observation.</p>
      <p id="d2e3402">Currently in EnviFlux, observation errors are assumed uncorrelated. The observation error standard deviations, <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="normal">o</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>, can be set arbitrarily for each observation, and the diagonal elements of the <inline-formula><mml:math id="M151" display="inline"><mml:mi mathvariant="bold">R</mml:mi></mml:math></inline-formula>-matrix is made up of values <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msup><mml:mrow><mml:msup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="normal">o</mml:mi></mml:msup></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. EnviFlux uses these observation operators in the assimilation, and the same operators are used to make synthetic observations as part of the twin experiment method.</p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>The background error covariance matrix</title>
      <p id="d2e3446">The background error covariance matrix, or <inline-formula><mml:math id="M153" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula> for short, is a fundamental component of a Gaussian-based Bayesian problem, such as that described by Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>). As in most assimilation systems, the probability density function of background errors is assumed to be Gaussian, where the mean is <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and the error covariance is <inline-formula><mml:math id="M155" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>. The <inline-formula><mml:math id="M156" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix specifies, statistically, how large background errors are and how background errors are correlated, e.g. <xref ref-type="bibr" rid="bib1.bibx3" id="text.39"/>. The background term of the unprecondioned cost function – when written in terms of <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mrow></mml:math></inline-formula>, see Eq. (6) of <xref ref-type="bibr" rid="bib1.bibx8" id="text.40"/> – is proportional to minus the logarithm of this PDF.</p>
      <p id="d2e3500">In the preconditioned cost function, Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>), the new variable, <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula>, is chosen to have unit background error covariances, which means that the background errors in this <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula>-representation are uncorrelated and have unit variance. The <inline-formula><mml:math id="M160" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix appears in this preconditioned system via a square-root in the variable transform <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula>, i.e. <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> (for more details about this kind of variable transform, see e.g. <xref ref-type="bibr" rid="bib1.bibx4" id="altparen.41"/> or <xref ref-type="bibr" rid="bib1.bibx6" id="altparen.42"/>). <inline-formula><mml:math id="M163" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula> is a large matrix, and so instead of storing it explicitly, it is formulated with a set of component operators, called a background error covariance model. In practice these are compactly encoded as subroutines. In EnviFlux it has the following form:</p>
      <p id="d2e3591">

                <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M164" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mtable class="matrix" columnalign="center center center" rowlines="solid none none" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:msubsup><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mo>⊺</mml:mo></mml:msubsup><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:mtd><mml:mtd><mml:mo fence="true" mathsize="2.0em">|</mml:mo></mml:mtd><mml:mtd><mml:mn mathvariant="bold">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow/></mml:mtd><mml:mtd><mml:mo mathsize="2.0em" fence="true">|</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="bold">0</mml:mn></mml:mtd><mml:mtd><mml:mo mathsize="2.0em" fence="true">|</mml:mo></mml:mtd><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:msubsup><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mo>⊺</mml:mo></mml:msubsup><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mo mathsize="2.0em" fence="true">|</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which acts on <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> of the form of Eq. (<xref ref-type="disp-formula" rid="Ch1.E7"/>). The top-left block operates on the initial condition part of <inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> and the bottom-right block operates on the flux part of <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula>, and there is no coupling between them in this choice of model. Alternative <inline-formula><mml:math id="M168" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix models may be coded instead, but the parts of this <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula>, associated with the initial conditions and fluxes, are now explained in turn.</p>
<sec id="Ch1.S3.SS3.SSS1">
  <label>3.3.1</label><title>The part of <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula> associated with the initial conditions</title>
      <p id="d2e3847">The first part of <inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula> is associated with the initial conditions, <inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (upper left in Eq. <xref ref-type="disp-formula" rid="Ch1.E8"/>). <list list-type="order"><list-item id="Ch1.I3.i1">
      <p id="d2e3882">In the order of operation, the first stage (<inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula>) models horizontal correlations of <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Suppose that horizontal correlations are represented by the matrix <inline-formula><mml:math id="M175" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. This can be written in its eigenvalue decomposition <inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mo>⊺</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the (diagonal) matrix of eigenvalues, and <inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the matrix of eigenvectors. This form justifies this particular square-root, <inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> (so that the square-root multiplied by its transpose gives <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>). Here, <inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is chosen to be a spherical spectral transform (transforming from a spectral space representation of the control vector to a grid space representation), so the eigenvectors have the assumed form of spherical harmonics. The spectral representation is a grid of wavenumbers <inline-formula><mml:math id="M182" display="inline"><mml:mi mathvariant="normal">ℓ</mml:mi></mml:math></inline-formula> (the “degree” wavenumber), <inline-formula><mml:math id="M183" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> (the “order” wavenumber) (see Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>), and vertical level. The form of the transform is symbolic only, as practically the horizontal transform is applied separately for each vertical level (as a Kronecker product). The diagonals of <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are prescribed functions of <inline-formula><mml:math id="M185" display="inline"><mml:mi mathvariant="normal">ℓ</mml:mi></mml:math></inline-formula>, which goes from 0 to the maximum value <inline-formula><mml:math id="M186" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> (where <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>) and we use the same function for each vertical level. The shape of <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> sets the horizontal lengthscale for initial tracer background errors. <inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> uses the <italic>SHTools</italic> software <xref ref-type="bibr" rid="bib1.bibx66" id="paren.43"/>. A tutorial on this horizontal transform is given in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>, how it is applied in Appendix <xref ref-type="sec" rid="App1.Ch1.S2.SS1"/>, and how <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is found in Appendix <xref ref-type="sec" rid="App1.Ch1.S3.SS1"/>. The natural output grid for <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a Gaussian grid, and <italic>SHTools</italic> uses co-latitudes. EnviFlux uses the same Gaussian grid and the reconfiguration <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> operator here just transforms from co-latitudes to geographical latitudes.</p></list-item><list-item id="Ch1.I3.i2">
      <p id="d2e4212">The next stage (<inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:msubsup><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mo>⊺</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>), models vertical correlations. The eigenvector and eigenvalue matrices (<inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> respectively, each <inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> matrices) are derived from the proposed vertical correlation matrix shown in Fig. <xref ref-type="fig" rid="F3"/>. Again, this transform is symbolic only, as practically the vertical matrices are applied separately for each horizontal position (as a Kronecker product). Practical notes are given in Appendix <xref ref-type="sec" rid="App1.Ch1.S2.SS2"/>, how <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are found is described in Appendix <xref ref-type="sec" rid="App1.Ch1.S3.SS2"/>.</p></list-item><list-item>
      <p id="d2e4334">The last matrix, <inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, is a diagonal matrix and specifies how background error standard deviations of the initial tracer depend on position in space. This is discussed in Sect. <xref ref-type="sec" rid="Ch1.S3.SS3.SSS3"/>.</p></list-item></list></p>

      <fig id="F3"><label>Figure 3</label><caption><p id="d2e4354">The vertical error correlation matrix for <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which is used to find the eigenvectors, <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and eigenvalues, <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. This matrix is computed according to the procedure outlined in Appendix <xref ref-type="sec" rid="App1.Ch1.S3.SS2"/>.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f03.png"/>

          </fig>

</sec>
<sec id="Ch1.S3.SS3.SSS2">
  <label>3.3.2</label><title>The part of <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula> associated with the fluxes</title>
      <p id="d2e4431">The second part of <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula> is that associated with the surface fluxes, <inline-formula><mml:math id="M206" display="inline"><mml:mi mathvariant="bold-italic">ρ</mml:mi></mml:math></inline-formula> (bottom right in Eq. <xref ref-type="disp-formula" rid="Ch1.E8"/>). <list list-type="custom"><list-item><label>4.</label>
      <p id="d2e4459">The first stage is <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula>. This is similar to point 1 above and again the form is symbolic only, as practically the transform is applied separately to each of the <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> flux times. The diagonals of <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> form a prescribed function of <inline-formula><mml:math id="M210" display="inline"><mml:mi mathvariant="normal">ℓ</mml:mi></mml:math></inline-formula>. The shape of <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> sets the horizontal lengthscale for flux background errors. See Appendices <xref ref-type="sec" rid="App1.Ch1.S1"/>, <xref ref-type="sec" rid="App1.Ch1.S2.SS1"/>, and <xref ref-type="sec" rid="App1.Ch1.S3.SS1"/>. The <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> operator is the same as in point 1 above.</p></list-item><list-item id="Ch1.I4.i2"><label>5.</label>
      <p id="d2e4553">The next stage is <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:msubsup><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mo>⊺</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, which models temporal correlations for <inline-formula><mml:math id="M214" display="inline"><mml:mi mathvariant="bold-italic">ρ</mml:mi></mml:math></inline-formula>. The temporal eigenvectors, <inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and eigenvalues, <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, are derived from a prescribed <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> temporal correlation matrix with a specified correlation timescale. See Appendices <xref ref-type="sec" rid="App1.Ch1.S2.SS3"/> and <xref ref-type="sec" rid="App1.Ch1.S3.SS3"/>.</p></list-item><list-item><label>6.</label>
      <p id="d2e4662">The last matrix, <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (see Sect. <xref ref-type="sec" rid="Ch1.S3.SS3.SSS3"/>), is a diagonal matrix and specifies how background error standard deviations in <inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> depend on position in space. <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> has the following <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> block form:<disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M222" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mtable class="matrix" columnalign="center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mi mathvariant="normal">⋱</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p></list-item></list> As the <inline-formula><mml:math id="M223" display="inline"><mml:mi mathvariant="bold-italic">χ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M224" display="inline"><mml:mi mathvariant="bold-italic">ρ</mml:mi></mml:math></inline-formula> parts in <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula> are separate, this assumes that background errors between these are uncorrelated. Including such coupling is beyond the scope of this work.</p>
</sec>
<sec id="Ch1.S3.SS3.SSS3">
  <label>3.3.3</label><title>The background error standard deviations, <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></title>
      <p id="d2e4886">The background error standard deviation fields (diagonals of <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>) influence how much information is provided by the background verses the observations. <inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is a function of longitude, latitude, and height, and <inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is a function of longitude, latitude, and time (in time intervals of <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>). Where and when the background error standard deviation is larger, the assimilation has less confidence in the background and so gives more relative weight to the observations. The particular choices of <inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> can be chosen arbitrarily.</p>
</sec>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>A “weakly Bayesian” example for source/sink location detection</title>
      <p id="d2e4990">A first, and novel, demonstration is to investigate how well EnviFlux can identify the locations (and “strengths”) of a pair of localised flux features from observations only. The details of these experiments, including the background error covariance specifications and the observation details, are provided in the middle column of Table <xref ref-type="table" rid="T1"/>. In particular, the configuration of <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">32</mml:mn></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">65</mml:mn></mml:mrow></mml:math></inline-formula> longitudes, <inline-formula><mml:math id="M237" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">33</mml:mn></mml:mrow></mml:math></inline-formula> latitudes), and 56 vertical levels is used, with an assimilation window of 100 <inline-formula><mml:math id="M238" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula> (providing time for air parcels to travel continental scales or more) and a 12-h major time-step. Further, fluxes are considered constant for <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">30</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M240" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula> and have a three-month temporal correlation timescale. This allows fluxes to have a seasonal cycle and change smoothly (although only part of the seasonal cycle is considered here). The 4D-Var is always run with a fixed number of inner loop iterations (25), which we have found adequate for convergence (shown in Appendix <xref ref-type="sec" rid="App1.Ch1.S6"/> for this and a selection of other experiments in this paper). A guide to the computational resources needed to run EnviFlux is provided in Appendix <xref ref-type="sec" rid="App1.Ch1.S5"/>. Figure <xref ref-type="fig" rid="F4"/> shows the initial conditions and flux field used as the truth for this experiment. The pair of features comprises a source point of peak strength 0.004 <inline-formula><mml:math id="M241" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and a sink point of peak strength 0.005 <inline-formula><mml:math id="M242" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The source location reflects a real-world emission location of methane – see, e.g. Fig. 4 of <xref ref-type="bibr" rid="bib1.bibx56" id="text.44"/> – but the sink location is chosen for curiosity only, as in reality methane sinks are not localised in this way.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e5142">Specifications of the two sets of experiments that are done. The first set is for the feature detection experiments (Sect. <xref ref-type="sec" rid="Ch1.S4"/>, middle column) and the second set is for the flux adjustment experiments (Sect. <xref ref-type="sec" rid="Ch1.S5"/>, right column). The vector <inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> is defined as a vector of independent random numbers, each drawn from the Gaussian distribution <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. For each set of experiments, separate total column amount (TCA) and surface in situ (SIS) observations (Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/>) are assimilated. The geographical locations of the observations follow that of an orbiting satellite. The observation error standard deviations, <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, are determined by doing a run of the true state over the experimental period, and then taking <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M247" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> of the standard deviation of the computed observations.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="center" colsep="1"/>
     <oasis:colspec colnum="3" colname="col3" align="center"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Feature detection experiments</oasis:entry>
         <oasis:entry colname="col3">Quasi real-world experiments</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Grid dimensions</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0"><inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">32</mml:mn></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">65</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">33</mml:mn></mml:mrow></mml:math></inline-formula>), <inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">56</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Experiment length</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">100 <inline-formula><mml:math id="M252" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Minor time-step, <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">1 <inline-formula><mml:math id="M254" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">h</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Major time-step, <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">12 <inline-formula><mml:math id="M256" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">h</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Source time-step, <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">30 <inline-formula><mml:math id="M258" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">No. of 4D-Var iterations</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">25 </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Driving winds</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">ERA-5 3D winds interpolated to EnviFlux grid </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col3" align="center">True state </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">True state (<inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2">Fig. <xref ref-type="fig" rid="F4"/>a</oasis:entry>
         <oasis:entry colname="col3">Fig. <xref ref-type="fig" rid="F9"/>a</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">True state (<inline-formula><mml:math id="M260" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2">Fig. <xref ref-type="fig" rid="F4"/>b</oasis:entry>
         <oasis:entry colname="col3">Fig. <xref ref-type="fig" rid="F9"/>b</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col3" align="center">a priori state </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">a priori mean (<inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:msub><mml:mfenced open="{" close="}"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">χ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">a priori mean (<inline-formula><mml:math id="M264" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2">Zero</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:msub><mml:mfenced close="}" open="{"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col3" align="center">Background error covariance specifications </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M267" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">kg</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">4.2 (surface) to 3.5 (top, <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">46</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M269" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula>) </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M271" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2">0.00002</oasis:entry>
         <oasis:entry colname="col3">0.002 land, 0.0002 sea</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Horiz. corr. fn. shape (<inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M273" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">Lorentzian </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Horiz. lengthscale (<inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">600 <inline-formula><mml:math id="M275" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Horiz. lengthscale (<inline-formula><mml:math id="M276" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">400 <inline-formula><mml:math id="M277" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Vertical correlations (<inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">Fig. <xref ref-type="fig" rid="F3"/></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Temporal cor. fn. shape (<inline-formula><mml:math id="M279" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">Lorentzian </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Timescale (<inline-formula><mml:math id="M280" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">3 months </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col3" align="center">Observations </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Horiz. locations</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">Locations below an orbit of period 98 <inline-formula><mml:math id="M281" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">min</mml:mi></mml:mrow></mml:math></inline-formula>, 98° inclination </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Type</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">Total column amount or surface in situ </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Frequency</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="0">Every 96 <inline-formula><mml:math id="M282" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">35 <inline-formula><mml:math id="M284" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> (TCA), 4 <inline-formula><mml:math id="M285" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">kg</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> (SIS)</oasis:entry>
         <oasis:entry colname="col3">45 <inline-formula><mml:math id="M286" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> (TCA) 4 <inline-formula><mml:math id="M287" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">kg</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> (SIS)</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F4" specific-use="star"><label>Figure 4</label><caption><p id="d2e6009">The true state chosen for the source/sink location detection experiments. Panel <bold>(a)</bold> is for <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> at level 10 (850 <inline-formula><mml:math id="M289" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> above the ground, units <inline-formula><mml:math id="M290" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">kg</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>) and panel <bold>(b)</bold> is for <inline-formula><mml:math id="M291" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (corresponding to the first 30 <inline-formula><mml:math id="M292" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula>, units <inline-formula><mml:math id="M293" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>). In <bold>(b)</bold>, red is a source and blue is a sink.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f04.png"/>

      </fig>

      <p id="d2e6126">In these experiments, no a priori information about the features' positions is provided. The a priori (background) state for the initial conditions is a perturbed version of the truth found with <inline-formula><mml:math id="M294" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M295" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi></mml:mrow></mml:math></inline-formula> is a random vector in control space with elements drawn from <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. On the colour scale of Fig. <xref ref-type="fig" rid="F4"/>a, the perturbed field is barely distinguishable, so is not shown. The a priori state for the flux field is a zero field at each source time-step over the 100 <inline-formula><mml:math id="M297" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula> experiment, meaning that the system has no a priori information about the locations, making this an interesting and challenging test of the inverse problem (something that could happen in a real-world application if sources or sinks appear that are not accounted for in the a priori).</p>
      <p id="d2e6185">Two kinds of observations are separately assimilated, namely (i) total column amount (TCA) observations following an orbital track (see Table <xref ref-type="table" rid="T1"/> for the details), and (ii) surface in situ (SIS) observations at the same geographical positions. Even though this reflects a realistic observational situation for the TCA observations (such as those made from GOSAT <xref ref-type="bibr" rid="bib1.bibx68" id="altparen.45"/> allowing for screening), it is not for SIS observations, but we study the SIS observations along the orbital track so the impact of the two observation types can be directly compared. This is a similar design strategy to that used by <xref ref-type="bibr" rid="bib1.bibx10" id="text.46"/>. Here, each is taken as a point location in the horizontal, even though in reality the remotely-sensed observations can have a footprint of 10 <inline-formula><mml:math id="M298" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> of <inline-formula><mml:math id="M299" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">km</mml:mi></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx68" id="paren.47"/> Consequently, there is no need to account for representativess error <xref ref-type="bibr" rid="bib1.bibx32" id="paren.48"/> here as the observations have been prepared with random error only. Unlike for real-world studies, there is no need here to consider cloud screening.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Location experiments: “perfectly specified” assimilation results</title>
      <p id="d2e6226">The posterior (analysis) states that follow from a run of EnviFlux with near perfect specifications (meaning the <inline-formula><mml:math id="M300" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix is a near perfect reflection of the actual errors<fn id="Ch1.Footn2"><p id="d2e6236">Apart from the flux field due to the nature of this experiment.</p></fn>, the <inline-formula><mml:math id="M301" display="inline"><mml:mi mathvariant="bold">R</mml:mi></mml:math></inline-formula>-matrix is a perfect reflection of observation errors, there is no model error, and there are no explicit biases) are shown in Fig. <xref ref-type="fig" rid="F5"/>. In fact this Fig. shows the analysis increments: these allow the adjustments to the initial conditions to be shown clearly, and, given that the background flux field is zero, the flux increment field is the same as the flux analysis.</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e6251">Analysis increments, <inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (units <inline-formula><mml:math id="M303" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">kg</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>) and <inline-formula><mml:math id="M304" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (units <inline-formula><mml:math id="M305" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>), found by assimilating either TCA (top row) or SIS observations (bottom row) for the near perfect source/sink location detection experiments. Panels <bold>(a)</bold> and <bold>(c)</bold> are for <inline-formula><mml:math id="M306" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> at level 10, and panels <bold>(b)</bold> and <bold>(d)</bold> are for <inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. These plots should be compared to the true fields in Fig. <xref ref-type="fig" rid="F4"/>. Red increments are positive and blue increments are negative. When comparing panels <bold>(b)</bold> and <bold>(d)</bold> to Fig. <xref ref-type="fig" rid="F4"/>b, note the different colour scales.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f05.png"/>

        </fig>

      <p id="d2e6407">The increments to <inline-formula><mml:math id="M308" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are very similar between the two observation types TCA (a) and SIS (c) and there are no strong peaks/troughs in the increment fields at the two source/sink locations. If there were especially large positive increments at the source location and negative increments at the sink location, it would suggest that the system was treating the systematic lack/excess of tracer at these two respective locations (due to the <inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>) was partly due to errors in <inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. In fact, the analysis increment patterns in <inline-formula><mml:math id="M311" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> match those of the chosen background error field, <inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (not shown), but of opposite sign, indicating that the assimilation is doing a good job at adjusting <inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> towards the truth, despite the large errors in <inline-formula><mml:math id="M314" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e6530">The flux analyses after assimilating the two observation types TCA (b) and SIS (d) show features in the correct places, c.f. Fig. <xref ref-type="fig" rid="F4"/>b. This shows the ability of inverse modelling systems like EnviFlux to identify locations of fluxes that are not known to the a priori. There are, however, two major issues. One is the over-estimation of the geographical extent of the features and the other is the under-estimation of the peak fluxes (the analyses underestimate the peaks by more than a factor of 10). These findings are perhaps not surprising as an assimilation system naturally smooths-out information (see e.g. arguments about the resolution of inverse problems in <xref ref-type="bibr" rid="bib1.bibx58" id="altparen.49"/>), and the assimilation is constraining the flux to be as close to zero as possible to match the prior. These two findings are linked. Arguably it is the area integrated source and sink fields that are important rather than the peak values, so if the analysed flux features are spatially smoothed, the peak values need to be reduced to keep the area integrated values stable. We found by trial-and-error that the relatively small value of <inline-formula><mml:math id="M315" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.00002</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula> (see Table <xref ref-type="table" rid="T1"/>) keeps the integrated source and integrated sink values close to the true equivalents for the SIS observation system. Incidentally, significantly increasing the value of <inline-formula><mml:math id="M316" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> increases the analysed peak flux analysis values only marginally (not shown), supporting the argument that the assimilation constrains the integrated flux values more strongly than the specific peak values. This issue is studied more in the context of model error and observation bias in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>.</p>
      <p id="d2e6597">Interestingly, we find that TCA observations constrain the fluxes to a lesser degree than the SIS data can, despite the observing systems being set-up to have similar information coming from each (in the sense that the numbers of observations are the same and choosing <inline-formula><mml:math id="M317" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="normal">o</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> values of the same percentage (10 <inline-formula><mml:math id="M318" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula>) of the respective variabilities of the model's equivalents, see Table <xref ref-type="table" rid="T1"/>). This is an understandable result as a significant part of the TCA measurements originates away from the surface.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Location experiments: effect of model error</title>
      <p id="d2e6629">We now study the effect of model error on the results. It is already known that transport uncertainties in the assimilation can influence the position and strength of sources, <xref ref-type="bibr" rid="bib1.bibx69" id="text.50"/>, and we study this using the simple source/sink pair set-up. There are a number of ways of simulating model transport error, but it is simulated here by multiplying the vertical wind, <inline-formula><mml:math id="M319" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula>, in the assimilation by a number, <inline-formula><mml:math id="M320" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>, close to unity (0.9 and 1.1), while the observations assimilated are still generated from samples from a run using the true winds (actually they are identical to those experiments in Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>). Changing the vertical winds, but keeping the same horizontal winds, will not <italic>directly</italic> affect how the tracer is circulated around the globe, although there will be an indirect consequence, e.g. by affecting which levels (including jet levels) the tracer can reach. Maintaining the true horizontal winds though means that the tracer still has the same potential to reach distant points as the truth. This choice of scheme does, however, create anomalous sources and sinks in the atmosphere (Appendix <xref ref-type="sec" rid="App1.Ch1.S7"/>), so it could, e.g. represent an erroneous sub-grid transport parametrisation of convection, which the assimilation will compensate for by creating anomalous surface sources and sinks. The reason for choosing this particular method is that it is simple to implement, and vertical transport is likely to be an important deficiency of real-world models. No attempt has been made here to account for the model error (e.g. by inflating <inline-formula><mml:math id="M321" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="normal">o</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> as is done in other works, <xref ref-type="bibr" rid="bib1.bibx41 bib1.bibx18 bib1.bibx35" id="altparen.51"/>).</p>
      <p id="d2e6671">Figure <xref ref-type="fig" rid="F6"/> shows analysis increments of <inline-formula><mml:math id="M322" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (identical to the respective analysis fields in these experiments) with these two <inline-formula><mml:math id="M323" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> values for the two observation types. The impact of these (rather modest) changes to vertical motion is greater in the assimilation of TCA than SIS observations. For the TCA observations, the ability of the system to identify the positions of the two flux features is almost completely destroyed for <inline-formula><mml:math id="M324" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula> (panel a). We refer to the property of an inferred flux field having a localised source and sink, such as in Fig. <xref ref-type="fig" rid="F5"/>b as <italic>coherent</italic>; Fig. <xref ref-type="fig" rid="F6"/>a is an example of <italic>incoherence</italic> in this field. This may be due to a weakening of the coupling between the above-surface tracer contributions to the TCA measurements, thus meaning that this part of the TCA is attributed to a whole range of diffuse locations around the globe (thinking in terms of back-trajectories from points along the vertical columns associated with these observations). The source location remains well identified in the <inline-formula><mml:math id="M325" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.1</mml:mn></mml:mrow></mml:math></inline-formula> case (although shifted slightly south), but there is more than one sink location identified, although one is still in the right place (panel b). For the SIS observations, the ability of the assimilation to identify the two positions is more robust. The most noticeable effect is the shift of the centre of the source region eastwards by <inline-formula><mml:math id="M326" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> in panel c, and the interpretation of some other regions as weak sources and sinks, such as Kazakhstan (an anomalous sink in panel c) and Greenland (an anomalous sink in c and source in d). The better results for SIS are expected, as these observations are more closely/directly influenced by the fluxes than the TCA observations are, and so are less affected by model error.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e6746">Analysis increments, <inline-formula><mml:math id="M327" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (units <inline-formula><mml:math id="M328" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>), found by assimilating either TCA (top row) or SIS observations (bottom row) for the case when a proxy for model error is applied to the assimilation. Model error is simulated by multiplying the vertical wind, <inline-formula><mml:math id="M329" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula>, used in the assimilation by either <inline-formula><mml:math id="M330" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula> (panels <bold>a</bold> and <bold>c</bold>) or <inline-formula><mml:math id="M331" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.1</mml:mn></mml:mrow></mml:math></inline-formula> (panels <bold>b</bold> and <bold>d</bold>). These plots should be compared to the true field in Fig. <xref ref-type="fig" rid="F4"/>b, but note the different colour scales.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f06.png"/>

        </fig>

      <p id="d2e6849">We also studied the effect of observation bias on the flux analysis. The results proved that the inferred positions of the flux features is robust against observation bias in the ranges studied (for biases up to just over half the value of <inline-formula><mml:math id="M332" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> for each observation type, analysis maps not shown). The flux amounts though are influenced by the bias, which is studied in the next section.</p>
</sec>
<sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Location experiments: effect of model error on the peak source/sink locations and on flux values</title>
      <p id="d2e6870">A summary of the analysed fluxes found for the source/sink location experiments, while varying <inline-formula><mml:math id="M333" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> is shown in Fig. <xref ref-type="fig" rid="F7"/>. Panels (a) and (c) show how the global total and peak source/sink values vary with <inline-formula><mml:math id="M334" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> (see the caption for definitions of the total and peak values). Panel (a) assimilates TCA and (c) assimilates SIS observations. For <inline-formula><mml:math id="M335" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, there is a tendency for the global total and peak source amounts (red lines) to increase with <inline-formula><mml:math id="M336" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>. For sources, increasing <inline-formula><mml:math id="M337" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> generally distributes the sources to more distant points downstream and so prevents the build-up of tracer at geographical locations close to the emissions. Hence larger fluxes are required to match the observations, which is found in the results for <inline-formula><mml:math id="M338" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. A mirror argument may be made for the sinks (blue lines). It is harder to explain why the results show a strengthening of the total and peak sources and sinks as <inline-formula><mml:math id="M339" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> gets smaller than particular values that depend on the experiment, e.g. <inline-formula><mml:math id="M340" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula> in (a). A possible explanation is that the DA is compensating for the increasing relative importance of numerical diffusion in the SL transport scheme as the winds get weaker, although this is just a supposition.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e6949">Summary of the effect of model error (via <inline-formula><mml:math id="M341" display="inline"><mml:mrow><mml:mi>w</mml:mi><mml:mo>→</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mi>w</mml:mi></mml:mrow></mml:math></inline-formula>) in the assimilation experiments for the detection of the source/sink locations. Panels <bold>(a)</bold> and <bold>(c)</bold> measure the analysed global total source, <inline-formula><mml:math id="M342" display="inline"><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mi mathvariant="normal">d</mml:mi><mml:mi>A</mml:mi><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (red solid lines), total sink, <inline-formula><mml:math id="M343" display="inline"><mml:mrow><mml:mfenced close="|" open="|"><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mi mathvariant="normal">d</mml:mi><mml:mi>A</mml:mi><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> (blue solid lines), peak source, <inline-formula><mml:math id="M344" display="inline"><mml:mrow><mml:mo>max⁡</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (red dotted lines), and peak sink, <inline-formula><mml:math id="M345" display="inline"><mml:mrow><mml:mfenced close="|" open="|"><mml:mrow><mml:mo>min⁡</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> (blue dotted lines). All flux analyses have some negative values, so <inline-formula><mml:math id="M346" display="inline"><mml:mrow><mml:mo>min⁡</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is always negative and so detects the strongest sink. The true source and sink values are indicated by the horizontal lines (dashed for true global total and dot-dashed for peak). The units are: global total values <inline-formula><mml:math id="M347" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Tg</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">month</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and peak fluxes <inline-formula><mml:math id="M348" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. Panels <bold>(b)</bold> and <bold>(d)</bold> show the analysed positions of the peak source locations (red circles) and peak sink locations (blue circles). The numbers are values of <inline-formula><mml:math id="M349" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> for each assimilation run. The true peak locations are shown as squares. The top plots are for the TCA and the bottom plots are for the SIS observations.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f07.png"/>

        </fig>

      <p id="d2e7191">Further inspection of Fig. <xref ref-type="fig" rid="F7"/>a and c reveals the following. The variations of the flux values are smaller for the SIS than for the TCA observations, which is not surprising as the SIS observations are less influenced by the global circulation. The relative variations of the global total flux values are much greater than for the peak flux values (total and peak values have different units – see the caption – which is why we refer to relative variations). The analysed global total values are mostly larger than the true global total values (compare solid lines with dashed lines) with the exception of <inline-formula><mml:math id="M350" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> for the global total source (red solid line in a), but this will change with different values of <inline-formula><mml:math id="M351" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>. The analysed peak values are always smaller than the true peak values (compare dotted lines with dot-dashed lines).</p>
      <p id="d2e7222">A further robust finding of these experiments is that the posterior errors in the fluxes are always smaller than the prior errors. This is not surprising because the prior flux is a zero field. The posterior errors in the initial conditions, however, are larger than the prior errors, except when <inline-formula><mml:math id="M352" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> (not shown). This is an example of model error aliasing onto another component of the system, in this case the initial conditions.</p>
      <p id="d2e7237">Figure <xref ref-type="fig" rid="F7"/>b and d shows how the positions of the peak source (red dots) and sink (blue dots) change with <inline-formula><mml:math id="M353" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> for the TCA (b) and SIS (d) observations. The true positions of the source and sink are shown as squares. Even though maximum and minimum flux positions are always found in <inline-formula><mml:math id="M354" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the field patterns are not always coherent (e.g. compare Fig. <xref ref-type="fig" rid="F5"/>b with Fig. <xref ref-type="fig" rid="F6"/>a).</p>
      <p id="d2e7270">The inferred peak positions of the source form a “cloud” of locations inside SE Asia for both observation systems, with the <inline-formula><mml:math id="M355" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.95</mml:mn></mml:mrow></mml:math></inline-formula> and 1.0 being closest for both observation systems. Even though <inline-formula><mml:math id="M356" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for the <inline-formula><mml:math id="M357" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula> and TCA observations case loses its coherence (Fig. <xref ref-type="fig" rid="F6"/>a), the <inline-formula><mml:math id="M358" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.95</mml:mn></mml:mrow></mml:math></inline-formula> case (not shown) maintains a coherent a set of correctly positioned source and sink features. The positions inferred from the SIS observations are slightly more robust against deviations of <inline-formula><mml:math id="M359" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> from 1.0.</p>
      <p id="d2e7336">As <inline-formula><mml:math id="M360" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> deviates from unity, the inferred sink positions become more variable than the source positions. The <inline-formula><mml:math id="M361" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> sinks tend to be diagnosed at a more diverse range of locations, often on different continents to the true location. Often the analysed peak locations are close to the true locations, but these are usually just the strongest of many local peaks which the assimilation has constructed.</p>
</sec>
<sec id="Ch1.S4.SS4">
  <label>4.4</label><title>Location experiments: effect of observation bias on the source/sink locations and fluxes</title>
      <p id="d2e7371">Figure <xref ref-type="fig" rid="F8"/> shows how the global total, and the peak source and sink values vary with observation bias (there is no model error in these experiments). Panel (a) is for the TCA observations and (b) is for the SIS observations. Each different experiment assimilates similar observations discussed previously, but where an observation bias has been added. The amount of bias varies up to <inline-formula><mml:math id="M362" display="inline"><mml:mo>±</mml:mo></mml:math></inline-formula> just over half of the value of <inline-formula><mml:math id="M363" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> for each observation type (see bottom row, middle column of Table <xref ref-type="table" rid="T1"/>). The peak source and sink values (red and blue dotted lines) are almost completely insensitive to the observation bias, but the total source and sink fluxes (solid lines) do show variation in the way expected (i.e. the total source fluxes increase with the values of the biases, and the total sink values decrease).  This is a similar property of the system (mentioned but not shown in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>), that the analysed total flux values are sensitive to the choice of <inline-formula><mml:math id="M364" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Σ</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, but the analysed peak values are not. Further, the locations and coherency of the source and sink features are unaffected by the range of biases studied (not shown).</p>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e7413">As Fig. <xref ref-type="fig" rid="F7"/>a and c but for how the analysed global total, and the peak sources and sinks vary with observation bias. Panel <bold>(a)</bold> is for the TCA observations and <bold>(b)</bold> is for the SIS observations. The units are: global total values <inline-formula><mml:math id="M365" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Tg</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">month</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and peak fluxes <inline-formula><mml:math id="M366" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f08.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>A Bayesian example for a quasi-real-world situation</title>
      <p id="d2e7485">The localised flux experiments in Sect. <xref ref-type="sec" rid="Ch1.S4"/> are an interesting way to study some of the factors that affect the ability of a flux inversion system to infer positions and strengths of individual features without the full guidance of a priori information. In environmental science problems, the regions of strong sources and sinks are often multiple and more distributed, but the inversion has the benefit of more a priori information. The a priori information is a Gaussian PDF with a specified mean (the a priori state, <inline-formula><mml:math id="M367" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>) and covariance <inline-formula><mml:math id="M368" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>. We apply EnviFlux in a similar way to that in Sect. <xref ref-type="sec" rid="Ch1.S4"/>, but in a less idealised setting, and with an informative a priori.</p>
      <p id="d2e7510">The set-up for these experiments is described in the right column of Table <xref ref-type="table" rid="T1"/>, and a guide to the computational resources needed is provided in Appendix <xref ref-type="sec" rid="App1.Ch1.S5"/>. The main differences with the previous experiments are a different true state, a more informative prior state, prior error standard deviations that are dependent on the surface type (values 10 times smaller over the sea than over land), and a <inline-formula><mml:math id="M369" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> larger <inline-formula><mml:math id="M370" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> for TCA observations. The latter difference is made because in these experiments, the variability in the TCA observations is <inline-formula><mml:math id="M371" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> larger than for the previous experiments; the SIS observations have around the same variability as the previous experiments, so <inline-formula><mml:math id="M372" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> for SIS observations is kept the same.</p>
      <p id="d2e7566">The true state is shown in the top row of Fig. <xref ref-type="fig" rid="F9"/>, <inline-formula><mml:math id="M373" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (a) and <inline-formula><mml:math id="M374" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (b). The distribution of flux shown is typical of methane, e.g. <xref ref-type="bibr" rid="bib1.bibx45" id="text.52"/>, <xref ref-type="bibr" rid="bib1.bibx46" id="text.53"/>, <xref ref-type="bibr" rid="bib1.bibx56" id="text.54"/>, with sources over eastern China, northern India, Europe, equatorial Africa, north eastern US, and South America, but the values themselves are not real-world values. The a priori state (bottom row) has been generated from the truth by adding noise consistent with the <inline-formula><mml:math id="M375" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix, as specified in the right hand column of Table <xref ref-type="table" rid="T1"/>. Most of the perturbations to the flux (d) are over land, due to the much larger background error standard deviations there than over sea. Some parts, such as over Eastern Asia, north east Africa, eastern USA/Canada, western South America, and eastern Australasia have background errors that represent anomalous sources; other parts, such as Alaska, Brazil, north western and south Africa, Greenland, and Indonesia have anomalous sinks. The tracer background (c) is only subtly different to the truth as background errors in the tracer have been assigned small values. A different set of random perturbations would have given rise to a different background error pattern, but with the same lengthscales and magnitudes.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e7627">The true state (top row) and the a priori state (bottom row) chosen for the quasi-real experiments. The left column is for <inline-formula><mml:math id="M376" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> at level 10 (850 <inline-formula><mml:math id="M377" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> above the ground, units <inline-formula><mml:math id="M378" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">kg</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>) and the right column is for <inline-formula><mml:math id="M379" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (corresponding to the first 30 <inline-formula><mml:math id="M380" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula>, units <inline-formula><mml:math id="M381" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>). In <bold>(b)</bold> and <bold>(d)</bold>, red is a source and blue is a sink.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f09.png"/>

      </fig>

<sec id="Ch1.S5.SS1">
  <label>5.1</label><title>Quasi-real-world situation: perfectly specified assimilation results</title>
      <p id="d2e7741">Figure <xref ref-type="fig" rid="F10"/> shows analyses and analysis errors when the specifications of the DA system are perfect (i.e. the correct background and observation errors, no model error, and no observation biases). The assimilation of TCA and SIS observations each effectively correct the background errors, panels (a) and (c). On the colour scale of the plots, it is not possible to see differences between these experiments, so the analysis errors, <inline-formula><mml:math id="M382" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> have been plotted in panels (b) and (d). The analysis errors following the assimilation of the different observation types are comparable, with the SIS observations leading (marginally) to the lower errors, consistent with the findings of Sect. <xref ref-type="sec" rid="Ch1.S4"/>.</p>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e7780">Analyses, <inline-formula><mml:math id="M383" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (left column) and analysis errors (right column) for the quasi-real experiments (units <inline-formula><mml:math id="M384" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>). The top row is for TCA and the bottom row is for SIS observations.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f10.png"/>

        </fig>

</sec>
<sec id="Ch1.S5.SS2">
  <label>5.2</label><title>Quasi-real-world situation: the effect of model error</title>
      <p id="d2e7842">The effect of the model error proxy on these assimilation experiments is smaller than in the source/sink location experiments in Sect. <xref ref-type="sec" rid="Ch1.S4"/>. Figure <xref ref-type="fig" rid="F11"/> shows the effect of using <inline-formula><mml:math id="M385" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.7</mml:mn></mml:mrow></mml:math></inline-formula> and 1.3 in the DA. Compared to the <inline-formula><mml:math id="M386" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> values used in Fig. <xref ref-type="fig" rid="F6"/>, values of <inline-formula><mml:math id="M387" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> further from unity are required here to see noticeable effects in the analysis; this is probably because of the presence of the meaningful a priori state here. The first point to note is that all experiments are still able to reduce the error from the background despite the presence of model error. Assimilating SIS observations is more robust against model error than for TCA observations, and it is hard to see differences on the colour scale between the bottom rows of Figs. <xref ref-type="fig" rid="F11"/> and <xref ref-type="fig" rid="F10"/>c. The most noticeable exception is for <inline-formula><mml:math id="M388" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.7</mml:mn></mml:mrow></mml:math></inline-formula> in panel (c) where there is still some error in the sink field over Indonesia. This anomaly is also present for the <inline-formula><mml:math id="M389" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.7</mml:mn></mml:mrow></mml:math></inline-formula> TCA experiment, panel (a), but exists together with anomalous sinks over Patagonia, New Zealand, north central Russia, north western Canada, and Greenland. Some of these anomalies (e.g. over Patagonia) are not due to persistent background errors, but result from unaccounted for model error in the DA. The Patagonia anomaly changes sign from an anomalous sink for <inline-formula><mml:math id="M390" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.7</mml:mn></mml:mrow></mml:math></inline-formula> in (a) to a source for <inline-formula><mml:math id="M391" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.3</mml:mn></mml:mrow></mml:math></inline-formula> in (b).</p>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e7933">Analyses, <inline-formula><mml:math id="M392" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, for the quasi-real experiments found by assimilating either TCA (top row) or SIS observations (bottom row) for the case when a proxy for model error is applied in the assimilation. Model error is simulated by multiplying the vertical wind, <inline-formula><mml:math id="M393" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula>, used in the assimilation by either <inline-formula><mml:math id="M394" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.7</mml:mn></mml:mrow></mml:math></inline-formula> (panels <bold>a</bold> and <bold>c</bold>) or <inline-formula><mml:math id="M395" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.3</mml:mn></mml:mrow></mml:math></inline-formula> (panels <bold>b</bold> and <bold>d</bold>). These plots should be compared to the true field in Fig. <xref ref-type="fig" rid="F9"/>b (units <inline-formula><mml:math id="M396" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">µ</mml:mi><mml:mi mathvariant="normal">g</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>).</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f11.png"/>

        </fig>

</sec>
<sec id="Ch1.S5.SS3">
  <label>5.3</label><title>Quasi-real-world situation: effect of model error on the on fluxes and analysis errors</title>
      <p id="d2e8041">A systematic analysis of the way that model error affects the total flux amounts is shown in Fig. <xref ref-type="fig" rid="F12"/>a (TCA, solid lines; SIS dotted lines, truth dashed line; sources are red and sinks are blue). There is a general tendency of the analysed total fluxes to increase with <inline-formula><mml:math id="M397" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> for both observation systems (this is straightforward to see for the sources for <inline-formula><mml:math id="M398" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>; in the case of the sinks, the absolute value decreases with <inline-formula><mml:math id="M399" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> for <inline-formula><mml:math id="M400" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">1.2</mml:mn></mml:mrow></mml:math></inline-formula>, but the actual total sink is minus this value, which increases). This is consistent with the idea that, as the global circulation anomalously speeds up in the forward model used inside the DA (i.e. as <inline-formula><mml:math id="M401" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> increases), tracer can no longer accumulate near the surface (where the SIS observations are located, and where the highest contribution to the TCA observations is made) and so higher emissions are required to compensate.  As found in the flux location experiments (Sect. <xref ref-type="sec" rid="Ch1.S4"/>) and here, assimilating the SIS observations systematically gives results closer to the truth than for the TCA observations (this can be seen in panel (a) where the dotted red line (SIS) is closer to the dashed line (truth) than the solid red line (TCA), and the dotted blue line (SIS) is closer to zero (truth) than the solid blue line (TCA)).</p>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e8096">Summary of the effect of model error (via <inline-formula><mml:math id="M402" display="inline"><mml:mrow><mml:mi>w</mml:mi><mml:mo>→</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mi>w</mml:mi></mml:mrow></mml:math></inline-formula>) in the quasi-real assimilation experiments. Panel <bold>(a)</bold> shows the analysed global total source, <inline-formula><mml:math id="M403" display="inline"><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mi mathvariant="normal">d</mml:mi><mml:mi>A</mml:mi><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (red lines), total sink, <inline-formula><mml:math id="M404" display="inline"><mml:mrow><mml:mfenced close="|" open="|"><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mi mathvariant="normal">d</mml:mi><mml:mi>A</mml:mi><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> (blue lines) for the TCA (solid) and SIS (dotted) observation experiments. The true total source value is indicated by the dashed horizontal line (the true total sink is zero). Panel <bold>(b)</bold> shows the root mean square error in the analysed <inline-formula><mml:math id="M405" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (black) and <inline-formula><mml:math id="M406" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (green) for the TCA (solid) and SIS (dotted) observation experiments. The units are <inline-formula><mml:math id="M407" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Tg</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">month</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> for both panels. The units are: global total flux values and errors <inline-formula><mml:math id="M408" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Tg</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">month</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and tracer errors <inline-formula><mml:math id="M409" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Tg</mml:mi></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f12.png"/>

        </fig>

      <p id="d2e8284">Interestingly, this result appears to be the reverse of the findings of <xref ref-type="bibr" rid="bib1.bibx10" id="text.55"/>, who found that TCA observations over land allowed more robust flux analyses than in situ observations. Their explanation concerned unaccounted for convective transport of tracer, which could affect in situ observations more than TCA observations. This is a compelling argument, but it may also be due to any suboptimalities due to incorrectly assigned error characteristics of each observation network, e.g. by incorrectly assigning the representativeness error for in-situ observations. This issue is not studied further here, but could be by introducing scale mis-matches between the in-situ data and the assimilation (e.g. by generating SIS observations from a much higher resolution version of the model, but assimilating them with the lower resolution model).</p>
      <p id="d2e8291">The effect of model error on the root mean squared analysis errors (RMSEs) is quantified in Fig. <xref ref-type="fig" rid="F12"/>b. The RMSEs for flux (green lines) reassuringly minimise when <inline-formula><mml:math id="M410" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> and are smaller for the assimilated SIS observations (dotted line) than for the TCA observations (solid), consistent with previous results. The finding is different for the RMSEs for the initial tracer (black lines). Here the experiment with the smallest RMSE for the TCA observation network is at <inline-formula><mml:math id="M411" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.95</mml:mn></mml:mrow></mml:math></inline-formula> and for the SIS network is at <inline-formula><mml:math id="M412" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.05</mml:mn></mml:mrow></mml:math></inline-formula>. Further work would be required to decide if these deviations from <inline-formula><mml:math id="M413" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> are due to the particular background or set of observations.</p>
</sec>
<sec id="Ch1.S5.SS4">
  <label>5.4</label><title>Quasi-real-world situation: effect of observation biases on the on fluxes and analysis errors</title>
      <p id="d2e8352">The final results in this demonstration study shows how the total flux amounts and analysis errors in the quasi-real-world situation vary with observation bias. We find that the presence of bias in this well-observed system does not change the pattern of inferred fluxes from that of the unbiased observation system in the left panels of Fig. <xref ref-type="fig" rid="F10"/> (not shown), but does change the flux amounts.</p>
      <p id="d2e8357">A systematic analysis of the way that observation bias affects the total flux amounts is shown in Fig. <xref ref-type="fig" rid="F13"/> for TCA observations (a) and SIS observations (c), where solid lines are the analysed total fluxes (sources are red and sinks are blue), and the red dashed lines represent the true total source (the true total sink is zero in these experiments). The inferred total sources and sinks increase in value as the observation bias increases (the sinks need to be multiplied by <inline-formula><mml:math id="M414" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> to find the actual sink values). This is the same conclusion as for the location experiments in Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>. The absolute values of the total sources and sinks are overestimated in all experiments conducted, but as the amounts are found to increase with observation bias, the sources get further from the truth, but the sinks get closer to the truth (the true total sink is zero). This may not be a universal effect as it will probably change with different values of background error standard deviations. The effect on the TCA-observed system is larger than for the SIS-observed system. Recall that the observation biases are varied as a proportion of the random error up to <inline-formula><mml:math id="M415" display="inline"><mml:mo>±</mml:mo></mml:math></inline-formula> just over half of <inline-formula><mml:math id="M416" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> for each observation type, so it is a broadly fair comparison between the two observation networks.</p>

      <fig id="F13" specific-use="star"><label>Figure 13</label><caption><p id="d2e8393">As Fig. <xref ref-type="fig" rid="F12"/> but varying observation bias. Panels <bold>(a)</bold> and <bold>(b)</bold> are for the TCA observations and <bold>(c)</bold> and <bold>(d)</bold> are for the SIS observations. The points with the smallest RMSE values are indicated with arrows.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f13.png"/>

        </fig>

      <p id="d2e8417">The RMSE analysis errors in Fig. <xref ref-type="fig" rid="F13"/>(b) and (d) show minima at the observation bias values indicated with the arrows (these are added as an aid owing to the shallow curves on the logarithmic scale). With the exception of the black line in (b) (for <inline-formula><mml:math id="M417" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> errors for the TCA observations), the minima in the RMSEs do not align with zero bias. In the case of flux analysis errors, the “optimal” observation biases are negative. This has the effect of reducing the fluxes to values closer to the truth. This is an example of one type of error partially correcting for another (systematic biases compensating for the general overestimation of fluxes in the system), and can make the process of tuning such a DA system a complex task.</p>
</sec>
</sec>
<sec id="Ch1.S6" sec-type="conclusions">
  <label>6</label><title>Summary, conclusions, and further work</title>
<sec id="Ch1.S6.SS1">
  <label>6.1</label><title>Summary and conclusions</title>
      <p id="d2e8455">This paper introduces a simplified tool (EnviFlux), to allow investigations into inverse modelling techniques to infer surface fluxes. These techniques have difficulties and shortcomings, mainly because of the indirectness of the observations in order to estimate surface flux information. EnviFlux represents a “back to basics” approach to facilitate a deeper understand of the basic inverse problem without the complexities and expense of other systems, and with no need for high performance computing resources. The tool uses a semi-Lagrangian (SL) transport model, a spectrally modelled <inline-formula><mml:math id="M418" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix (which implies homogeneous background error correlations), and supports in situ tracer and flux, and total column amount observations. EnviFlux is a 4D-Var-based inverse model, which estimates the flux field on the same grid as the model, and it does this simultaneously with the initial tracer field. The tool can be used “as is” or can be expanded as required. The software is a suite of programs, mainly written in C++, with some Python visualisation tools. Due to its intentional simplicity, there are some issues that EnviFlux cannot currently explore, such as those specific to satellite measurements (such as cloud and aerosol effects), and with unresolved transport, but it is designed to look at the general problem of extracting information from indirect observations.</p>
      <p id="d2e8465">EnviFlux is demonstrated in “weakly Bayesian” (where there is missing a priori information, Sect. <xref ref-type="sec" rid="Ch1.S4"/>) and Bayesian (where the mean of the a priori PDF is specified, Sect. <xref ref-type="sec" rid="Ch1.S5"/>) scenarios. The weakly Bayesian scenario comprises tests to infer the locations and strengths of a source/sink pair at (a priori) unknown locations from a time sequence of observations of the tracer only. The observation network comprises either total column amount (TCA) or surface in situ (SIS) observations, each following the path of a polar orbiting satellite. The former observation network is meant to resemble an actual instrument such as GOSAT, and the latter is a control for comparison. As long as there is no model error (see below) in the data assimilation, the system can successfully determine the locations of the flux features, but with peak values that are too small, and a spatial extent that is too large (the latter property is likely due to the particular lengthscales used to model the <inline-formula><mml:math id="M419" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix, and the fundamental smoothing effect of the inversion).  A very simple proxy for model error is used by multiplying the vertical wind by a factor <inline-formula><mml:math id="M420" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> in the inverse system, where <inline-formula><mml:math id="M421" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> represents a perfect model. This first set of experiments is very sensitive to even small deviations of <inline-formula><mml:math id="M422" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> from unity (e.g. 0.9 and 1.1), where the ability of the tool to infer even the correct locations of the flux features is compromised. Even though the horizontal wind components are not multiplied by <inline-formula><mml:math id="M423" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>, the circulation of the tracer can be affected <italic>indirectly</italic> (the tracer may, e.g. be advected to vertical levels that are affected more or less by jet streams). Observation biases, however (in the ranges tested from <inline-formula><mml:math id="M424" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.57</mml:mn><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M425" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.57</mml:mn><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M426" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> is the observation error standard deviation in each set of experiments – itself set to be <inline-formula><mml:math id="M427" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> of the variability of the modelled observations in each case), do not affect the inferred locations, nor the peak values, but do affect the global total source and sink values. These results confirm other work that real-world inverse models need to have minimal imperfections in the forward model.</p>
      <p id="d2e8565">The Bayesian scenario (also referred to as the quasi-real-world case) uses similar observation networks, but uses methane-like spatial flux distributions as the observed true flux field. In the perfect model run, the choice of observation network has little effect on the ability of the assimilation to infer the correct qualitative structure of the true fluxes, but the in situ observations do offer advantages. Introducing model error gives rise to false sources and sinks. This becomes evident though at higher deviations from <inline-formula><mml:math id="M428" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> than for the weakly Bayesian experiments, probably owing to the a priori information available to the quasi-real case. Despite this, the assimilation still improves the flux estimates from the a priori. Model error does also quantitatively change the total tracer released and absorbed and for most of the <inline-formula><mml:math id="M429" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> values tested there is a tendency for the total sources and sinks to increase with <inline-formula><mml:math id="M430" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>, which is may be due to the assimilation compensating for the faster transport of tracer in space away from the places where the observation operators are most sensitive. Separately, introducing observation bias in the same way as for the weakly Bayesian experiments, has the same effect on the total source and sink. By varying the bias, we find that the lowest RMSE analyses are not found for the experiments when the biases are zero (negative observation biases give the best results). A compelling argument for this is that it is compensating for the total analysed sources, which are too high in these experiments.</p>
</sec>
<sec id="Ch1.S6.SS2">
  <label>6.2</label><title>Developments and further research suggestions</title>
      <p id="d2e8602">It is anticipated that this simplified system as a base can be used and developed further as a low-cost tool to test new ideas in inverse models for research projects and even for student projects. As it stands, EnviFlux is configured for global flux inversion, but could be modified to study regional flux inversion by constructing a suitable limited area grid, transport model, and <inline-formula><mml:math id="M431" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix, and introducing lateral boundary conditions, which could themselves become part of the state vector. It is also possible to swap the SL advection scheme with another, e.g. one that is designed to strictly conserve tracer amount, and to include some chemical processes, such as tropospheric hydroxyl sinks, e.g. <xref ref-type="bibr" rid="bib1.bibx49" id="text.56"/>, and stratospheric methane oxidation, e.g. <xref ref-type="bibr" rid="bib1.bibx59" id="text.57"/>. Where they are found to exist, correlations between observation errors can profoundly affect assimilation, e.g. <xref ref-type="bibr" rid="bib1.bibx65" id="text.58"/>, <xref ref-type="bibr" rid="bib1.bibx62" id="text.59"/>. By design, the observation networks used in this paper impose no such correlations, but these can be introduced into the observation generation and the <inline-formula><mml:math id="M432" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> matrices. Providing error correlations between observations within the same major time step only is easiest to consider as this would require least development effort in EnviFlux. The way the <inline-formula><mml:math id="M433" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix is modelled in this work dictates the horizontal grid to have dimensions <inline-formula><mml:math id="M434" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (see Appendices <xref ref-type="sec" rid="App1.Ch1.S1"/>–<xref ref-type="sec" rid="App1.Ch1.S3"/>). Other than that, the choice of <inline-formula><mml:math id="M435" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula>-matrix model in the cost function can be replaced with alternatives, via the square-root (control variable transform) formulation. As long as the resolution is relatively low, an explicit form of the horizontal forecast error covariances could be used, which could e.g. have different lengthscales over the land to ocean to study their effect.</p>
      <p id="d2e8685">EnviFlux can be simplified further (e.g. by reducing the horizontal and vertical resolution) to allow large ensembles of inversions for tuning purposes, or as mentioned previously, can be made more complex. Adding chemical loss and production would allow closer comparison with real observations (especially for short-lived tracer species and longer transport times), but would add cost, complexity, and potentially non-linearity. The problem would no longer be a pure transport inverse problem and parcel trajectories would be subject to modification of the mixing ratio, potentially dependent on sunlight, cloud cover, temperature, and concentration of other constituents. Should the chemical modification be erroneous, and where the process is observed (directly or downstream), the upstream surface fluxes in the model would likely be spuriously modified to compensate.</p>
      <p id="d2e8688">In addition to the issues related to the above developments, some ideas and research questions that EnviFlux can contribute to are as follows. How sparse can the observation network be to infer detailed information on the location of new sources and sinks? How can EnviFlux be used to understand which observations contribute to which surface regions (e.g. by estimating the singular vectors of the forward model; example observation footprints are shown in <xref ref-type="bibr" rid="bib1.bibx20" id="altparen.60"/>)? How well can an inverse model determine the timing of transient fluxes (e.g. <xref ref-type="bibr" rid="bib1.bibx42" id="altparen.61"/>)? How precise does the initial condition field need to be to effectively estimate fluxes (the expectation is that a precise initial condition field is needed for flux estimation to be effective <xref ref-type="bibr" rid="bib1.bibx5 bib1.bibx64" id="altparen.62"/>). How long does an experiment have to run to virtually lose memory of the initial conditions (e.g. <xref ref-type="bibr" rid="bib1.bibx54" id="altparen.63"/>)? How is it possible to tune the background error covariances in real-world cases when they are not well known (e.g. <xref ref-type="bibr" rid="bib1.bibx9" id="altparen.64"/>)? How can model error be accounted for by developing techniques such as inflating the observation error variances <xref ref-type="bibr" rid="bib1.bibx41 bib1.bibx18 bib1.bibx35" id="paren.65"/>, or by including a model error term throughout the atmosphere? How do different methods of estimating posterior error covariances compare, e.g. Lanczos or quasi-Newton-based, <xref ref-type="bibr" rid="bib1.bibx23" id="text.66"/>, <xref ref-type="bibr" rid="bib1.bibx47" id="text.67"/>, <xref ref-type="bibr" rid="bib1.bibx50" id="text.68"/>? Can the system be used to test the ability of machine learning-based tools to emulate the forward part of the problem (e.g. <xref ref-type="bibr" rid="bib1.bibx20" id="altparen.69"/>)? By adding a simple chemical or land surface processes parametrisation (e.g. <xref ref-type="bibr" rid="bib1.bibx70" id="altparen.70"/>), can the inversion be modified to estimate parameters in those models?</p>
</sec>
</sec>

      
      </body>
    <back><app-group>

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>The spectral transforms used to model background error covariances</title>
<sec id="App1.Ch1.S1.SS1">
  <label>A1</label><title>The forward spectral transform</title>
      <p id="d2e8744">The forward spectral transform, <inline-formula><mml:math id="M436" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, is a key part of EnviFlux's covariance model. This transform acts on a vector which is a field increment in the spectral representation (i.e. a function of two integer wavenumbers <inline-formula><mml:math id="M437" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M438" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula>, see below). The output is a vector in the real space representation (i.e. a function of longitude, <inline-formula><mml:math id="M439" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and co-latitude, <inline-formula><mml:math id="M440" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>). Co-latitude is zero at the north pole, and so is related to latitude, <inline-formula><mml:math id="M441" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula>, via <inline-formula><mml:math id="M442" display="inline"><mml:mrow><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">90</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi></mml:mrow></mml:math></inline-formula>. The basis functions of the spectral representation are the spherical harmonic functions, <inline-formula><mml:math id="M443" display="inline"><mml:mrow><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>:

                <disp-formula id="App1.Ch1.S1.E10" content-type="numbered"><label>A1</label><mml:math id="M444" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="cases" columnspacing="1em" rowspacing="0.2ex" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>)</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>m</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mfenced open="|" close="|"><mml:mi>m</mml:mi></mml:mfenced></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mfenced open="|" close="|"><mml:mi>m</mml:mi></mml:mfenced><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>m</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          Here <inline-formula><mml:math id="M445" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are the associated Legendre polynomials (ALPs) of degree <inline-formula><mml:math id="M446" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> and order <inline-formula><mml:math id="M447" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula>, and the bar notation on the <inline-formula><mml:math id="M448" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> indicates that they are “<inline-formula><mml:math id="M449" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:math></inline-formula> normalised” (other normalisations are possible). Let the representation in spectral space be <inline-formula><mml:math id="M450" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and in real space be <inline-formula><mml:math id="M451" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> (longitude <inline-formula><mml:math id="M452" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, co-latitude <inline-formula><mml:math id="M453" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>). We have omitted the <inline-formula><mml:math id="M454" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> prefixes here for brevity. These are related via the following linear combination:

                <disp-formula id="App1.Ch1.S1.E11" content-type="numbered"><label>A2</label><mml:math id="M455" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>l</mml:mi></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M456" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> is the chosen maximum degree. Equation (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E11"/>) is the mathematical form of the spectral transform. From the perspective of the transforms, the longitudes are best represented on a regularly spaced grid of <inline-formula><mml:math id="M457" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> points, and the latitudes on a Gaussian grid of <inline-formula><mml:math id="M458" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> points <xref ref-type="bibr" rid="bib1.bibx21 bib1.bibx66" id="paren.71"/>. This is the grid structure assumed here and is used by EnviFlux. The Gaussian grid enables exact quadrature (known as Gauss–Legendre quadrature, see Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS2"/>).</p>
      <p id="d2e9193">In order to translate Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E11"/>) onto a computer, specifically using standard libraries, we do some rewriting. Substituting Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E10"/>) into (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E11"/>), separating the <inline-formula><mml:math id="M459" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> summation into <inline-formula><mml:math id="M460" display="inline"><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M461" display="inline"><mml:mrow><mml:mi>l</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> parts, and further separating the <inline-formula><mml:math id="M462" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> summation into <inline-formula><mml:math id="M463" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M464" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M465" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi></mml:mrow></mml:math></inline-formula> parts:

                <disp-formula specific-use="align"><mml:math id="M466" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>x</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>v</mml:mi><mml:mn mathvariant="normal">00</mml:mn></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mn mathvariant="normal">00</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:mo mathsize="2.5em">[</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:munderover><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mo>|</mml:mo><mml:mi>m</mml:mi><mml:mo>|</mml:mo></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mfenced close="|" open="|"><mml:mi>m</mml:mi></mml:mfenced><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo mathsize="2.5em">]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mn mathvariant="normal">00</mml:mn></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mn mathvariant="normal">00</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:mo mathsize="2.5em">[</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mi>m</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo mathsize="2.5em">]</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          The first and third terms can be combined, as can the second and fourth terms:

                <disp-formula specific-use="align"><mml:math id="M467" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mi>m</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          Further, let <inline-formula><mml:math id="M468" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M469" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi></mml:mrow></mml:math></inline-formula>), and <inline-formula><mml:math id="M470" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mi>m</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M471" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi></mml:mrow></mml:math></inline-formula>):

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M472" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E12"><mml:mtd><mml:mtext>A3</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          This change of labelling means that we do not have to worry about negative wavenumber indices.</p>
      <p id="d2e10146">The double summation in Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E12"/>) first loops over <inline-formula><mml:math id="M473" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, and then loops over <inline-formula><mml:math id="M474" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> where the upper <inline-formula><mml:math id="M475" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> limit depends on <inline-formula><mml:math id="M476" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>. This is summation order 1 in Fig. <xref ref-type="fig" rid="FA1"/>a. In order to compute the above transform with standard software libraries, we first change the summations to the equivalent order 2 in Fig. <xref ref-type="fig" rid="FA1"/>b:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M477" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E13"><mml:mtd><mml:mtext>A4</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          This can then be split into a Legendre part and a Fourier part. First define the following:
          

                <disp-formula id="App1.Ch1.S1.E14" specific-use="align" content-type="subnumberedsingle"><mml:math id="M478" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S1.E14.15"><mml:mtd><mml:mtext>A5a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E14.16"><mml:mtd><mml:mtext>A5b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          which leaves the rest of the transform as

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M479" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E17"><mml:mtd><mml:mtext>A6</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:mfenced open="[" close="]"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          The inputs to this spectral transform are the sets of coefficients in <inline-formula><mml:math id="M480" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>l</mml:mi></mml:mrow></mml:math></inline-formula>-space <inline-formula><mml:math id="M481" display="inline"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M482" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M483" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>), and <inline-formula><mml:math id="M484" display="inline"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M485" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M486" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>). These are transformed to the intermediate sets of coefficients in <inline-formula><mml:math id="M487" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:math></inline-formula> space, <inline-formula><mml:math id="M488" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M489" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> using Eqs. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E14"/>) (the “tilde” variables are half in spectral space, half in real space). In the code, these summations are performed explicitly using tables of ALPs pre-calculated from <italic>SHTools</italic> <xref ref-type="bibr" rid="bib1.bibx66" id="paren.72"/>. The spectral transform is completed to <inline-formula><mml:math id="M490" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:math></inline-formula> space (complete real space) using the standard Fourier transform (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>), which is performed exactly by the routine <italic>rfft1b</italic> in the <italic>fftpack</italic> library <xref ref-type="bibr" rid="bib1.bibx61" id="paren.73"/>. Note that in data assimilation work, the transform from spectral to real space is part of the <italic>forward transform</italic> (since it is part of the string of operators that go from control space to observation space, <inline-formula><mml:math id="M491" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">HMB</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula> in Eq. <xref ref-type="disp-formula" rid="Ch1.E5"/>), although readers may be more familiar with the transforms (Eqs. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E14"/> and <xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>) being referred to an <italic>inverse transforms</italic>. This is an unfortunate clash of terminology. </p>

      <fig id="FA1"><label>Figure A1</label><caption><p id="d2e10942">Orders of summations in <inline-formula><mml:math id="M492" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M493" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> space as used in transforms (Eqs. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E12"/> and <xref ref-type="disp-formula" rid="App1.Ch1.S1.E13"/>). In order 1 (panel <bold>a</bold>), the sum over <inline-formula><mml:math id="M494" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> is done first, and in order 2 (panel <bold>b</bold>), the sum over <inline-formula><mml:math id="M495" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> is done first. Each order of summation is equivalent to the other as the same points are involved in the double summation.</p></caption>
          
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f14.png"/>

        </fig>

</sec>
<sec id="App1.Ch1.S1.SS2">
  <label>A2</label><title>The inverse spectral transform</title>
      <p id="d2e11000">The inverse spectral transform, <inline-formula><mml:math id="M496" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, changes the representation of a field increment from real space (a function of longitude, <inline-formula><mml:math id="M497" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and co-latitude, <inline-formula><mml:math id="M498" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) to spectral space (a function of the degree, <inline-formula><mml:math id="M499" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, and order, <inline-formula><mml:math id="M500" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula>). The inverse of Eqs. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E14"/>) and (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>) is done in reverse order. Firstly, the <inline-formula><mml:math id="M501" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M502" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> coefficients are found from standard Fourier transform formulae, which exploit the orthogonality of the sine and cosine functions:
          

                <disp-formula id="App1.Ch1.S1.E18" specific-use="align" content-type="subnumberedsingle"><mml:math id="M503" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S1.E18.19"><mml:mtd><mml:mtext>A7a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E18.20"><mml:mtd><mml:mtext>A7b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E18.21"><mml:mtd><mml:mtext>A7c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mi>sin⁡</mml:mi><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          This is the inverse of Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>) and is performed by the routine <italic>rfft1f</italic> in the <italic>fftpack</italic> library. Next the <inline-formula><mml:math id="M504" display="inline"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M505" display="inline"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> (fully spectral) coefficients are found from the formulae (derived below):
          

                <disp-formula id="App1.Ch1.S1.E22" specific-use="align" content-type="subnumberedsingle"><mml:math id="M506" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E22.23"><mml:mtd><mml:mtext>A8a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E22.24"><mml:mtd><mml:mtext>A8b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E22.25"><mml:mtd><mml:mtext>A8c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M507" display="inline"><mml:mrow><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are the Gaussian weights (GWs), which are found (together with the ALPs themselves) from the <italic>SHtools</italic> package. The make up the inverse of Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E14"/>). The GWs allow co-latitude integrals of the following type to be discretised when values <inline-formula><mml:math id="M508" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are on Gaussian latitude points <inline-formula><mml:math id="M509" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as shown:

                <disp-formula id="App1.Ch1.S1.E26" content-type="numbered"><label>A9</label><mml:math id="M510" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="italic">π</mml:mi></mml:munderover><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Equations (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E22"/>) are derived from Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E14"/>) via the following orthogonality property of ALPs:

                <disp-formula id="App1.Ch1.S1.E27" content-type="numbered"><label>A10</label><mml:math id="M511" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="italic">π</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which, using Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E26"/>), becomes

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M512" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E28"><mml:mtd><mml:mtext>A11</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Multiplying Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E14.15"/>) by <inline-formula><mml:math id="M513" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, summing over <inline-formula><mml:math id="M514" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula>, and then using Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E28"/>) gives

                <disp-formula specific-use="align"><mml:math id="M515" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mspace linebreak="nobreak" width="2em"/><mml:mtext>for </mml:mtext><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          When <inline-formula><mml:math id="M516" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> this gives Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E22.23"/>) and when <inline-formula><mml:math id="M517" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula> this gives Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E22.24"/>). Now multiplying Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E14.16"/>) by <inline-formula><mml:math id="M518" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, summing over <inline-formula><mml:math id="M519" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula>, and then using Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E28"/>) similarly gives

                <disp-formula specific-use="align"><mml:math id="M520" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mspace linebreak="nobreak" width="2em"/><mml:mtext>for </mml:mtext><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          The <inline-formula><mml:math id="M521" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> case is of no interest, which leaves only the cases when <inline-formula><mml:math id="M522" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>, which gives Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E22.25"/>).</p>
</sec>
<sec id="App1.Ch1.S1.SS3">
  <label>A3</label><title>The adjoint spectral transform</title>
      <p id="d2e12944">The adjoint of the spectral transform (which is part of <inline-formula><mml:math id="M523" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mo>⊺</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula>) is needed to compute implied covariances (<inline-formula><mml:math id="M524" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup><mml:msup><mml:mi mathvariant="bold">B</mml:mi><mml:mfrac><mml:mo>⊺</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msup></mml:mrow></mml:math></inline-formula>) and the gradient of the cost function (Eq. <xref ref-type="disp-formula" rid="Ch1.E6"/>). Given that the adjoint operator is mathematically equivalent to the operator that propagates gradients (in the reverse direction to the forward counterparts), we use this equivalence as a means of deriving the adjoint versions of Eqs. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>) and (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E14"/>). Let variables with a hat represent gradients (of some unspecified function) with respect to that variable, namely <inline-formula><mml:math id="M525" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>z</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e13011">We will start with Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>), and look at the gradient with respect to each input component (<inline-formula><mml:math id="M526" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M527" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M528" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>), and exploit the chain rule in each case. The first input component of the forward transform (Eq. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>) is <inline-formula><mml:math id="M529" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. The gradient with respect to this variable, <inline-formula><mml:math id="M530" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, is the output of the adjoint operation:

                <disp-formula id="App1.Ch1.S1.E29" content-type="numbered"><label>A12</label><mml:math id="M531" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi mathvariant="italic">χ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mover accent="true"><mml:mi>x</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</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:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>x</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</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:mrow></mml:math></disp-formula>

          where the partial derivative is found from Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>). The next group of input components to Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E17"/>) is <inline-formula><mml:math id="M532" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M533" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>). The gradient with respect to this variable, <inline-formula><mml:math id="M534" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, is another output of the adjoint operation and is calculated are a similar way:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M535" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mover accent="true"><mml:mi>x</mml:mi><mml:mo stretchy="false" 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:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>x</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E30"><mml:mtd><mml:mtext>A13</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          The final group of input components is <inline-formula><mml:math id="M536" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M537" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>) and are calculated in a similar way:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M538" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mover accent="true"><mml:mi>x</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</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:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>m</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>x</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E31"><mml:mtd><mml:mtext>A14</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Notice that the adjoint operators (Eqs. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E29"/>–<xref ref-type="disp-formula" rid="App1.Ch1.S1.E31"/>) are similar to the inverse Fourier formulae (Eqs. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E18.19"/>–<xref ref-type="disp-formula" rid="App1.Ch1.S1.E18.21"/>) respectively, but with no prefactors. This means that the <italic>rfft1f</italic> routine in the <italic>fftpack</italic> library can be used to perform the adjoint.</p>
      <p id="d2e13745">The next adjoint step is of Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E14"/>), and we will look at the gradient with respect to each input component (<inline-formula><mml:math id="M539" display="inline"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M540" display="inline"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>). The first group of input components of the forward transform (Eq. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E14"/>) is <inline-formula><mml:math id="M541" display="inline"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M542" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E32"><mml:mtd><mml:mtext>A15</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          The final group of input components is <inline-formula><mml:math id="M543" display="inline"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M544" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>m</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E33"><mml:mtd><mml:mtext>A16</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Notice that the adjoint operators (Eqs. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E32"/> and <xref ref-type="disp-formula" rid="App1.Ch1.S1.E33"/>) are similar to the inverse Legendre formulae (Eqs. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E22.24"/> and <xref ref-type="disp-formula" rid="App1.Ch1.S1.E22.25"/>) respectively, but with different scaling (specifically no prefactors and no Gaussian weights).</p>
      <p id="d2e14248">The above steps are needed to perform the adjoint of the spectral transform in terms of separate Fourier and Legendre steps. It is also possible to write the adjoint of the whole horizontal transform (Eq. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E11"/>) in one go:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M545" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>x</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S1.E34"><mml:mtd><mml:mtext>A17</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>-</mml:mo><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:mi>m</mml:mi><mml:mo>≤</mml:mo><mml:mi>l</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          which is useful for the calibration of the horizontal transform (Appendix <xref ref-type="sec" rid="App1.Ch1.S3.SS1"/>).</p>
</sec>
</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>The practical application of the operators in Eq. (<xref ref-type="disp-formula" rid="Ch1.E8"/>)</title>
<sec id="App1.Ch1.S2.SS1">
  <label>B1</label><title>Application of the horizontal transform</title>
      <p id="d2e14406">The initial condition (ic) part of the control vector for use with the upper left part of Eq. (<xref ref-type="disp-formula" rid="Ch1.E8"/>) is a field that is a function of <inline-formula><mml:math id="M546" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M547" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula>, and height <inline-formula><mml:math id="M548" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M549" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. The <inline-formula><mml:math id="M550" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> part of the CVT does the following. Let the <inline-formula><mml:math id="M551" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>th diagonal element of <inline-formula><mml:math id="M552" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> be <inline-formula><mml:math id="M553" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. The action of <inline-formula><mml:math id="M554" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> is to multiply <inline-formula><mml:math id="M555" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="bold-italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> by <inline-formula><mml:math id="M556" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi>c</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. The resulting fields then pass through the <inline-formula><mml:math id="M557" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> operator (separately for each <inline-formula><mml:math id="M558" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>) resulting in a function of <inline-formula><mml:math id="M559" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M560" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> outputs on a Gaussian grid with the meridional coordinate being co-latitude (see Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS1"/>). <inline-formula><mml:math id="M561" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> translates the co-latitudes, <inline-formula><mml:math id="M562" display="inline"><mml:mi mathvariant="italic">φ</mml:mi></mml:math></inline-formula>, to latitudes, <inline-formula><mml:math id="M563" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula>. In general applications the <inline-formula><mml:math id="M564" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> operator may be also used to interpolate from the Gaussian grid to a different grid. This is not necessary in EnviFlux as it uses a Gaussian grid.</p>
      <p id="d2e14704">The flux part of the control vector for use with the lower right part of Eq. (<xref ref-type="disp-formula" rid="Ch1.E8"/>) is a field that is a function of <inline-formula><mml:math id="M565" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M566" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula>, and time <inline-formula><mml:math id="M567" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M568" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. The <inline-formula><mml:math id="M569" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> part of the CVT does a similar thing as for the initial conditions, apart from acting on each <inline-formula><mml:math id="M570" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> separately, and so the result being a function of <inline-formula><mml:math id="M571" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
</sec>
<sec id="App1.Ch1.S2.SS2">
  <label>B2</label><title>Application of the vertical transform</title>
      <p id="d2e14813">Following on from the horizontal and reconfiguration transforms for the ic fields, the vertical transform, <inline-formula><mml:math id="M572" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:msubsup><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mo>⊺</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, acts on ic fields that are a function of <inline-formula><mml:math id="M573" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M574" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M575" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are each <inline-formula><mml:math id="M576" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> matrices and <inline-formula><mml:math id="M577" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is diagonal. <inline-formula><mml:math id="M578" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mo>⊺</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> projects onto vertical modes (the eigenvectors), <inline-formula><mml:math id="M579" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> scales the projections, and <inline-formula><mml:math id="M580" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> projects from the vertical modes back to <inline-formula><mml:math id="M581" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>. This is done for each horizontal position separately. In EnviFlux, <inline-formula><mml:math id="M582" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M583" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> are independent of longitude and latitude. The output of the vertical transform is also a function of <inline-formula><mml:math id="M584" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
</sec>
<sec id="App1.Ch1.S2.SS3">
  <label>B3</label><title>Application of the temporal transform</title>
      <p id="d2e15044">Following on from the horizontal and reconfiguration transforms for the flux fields, the temporal transform, <inline-formula><mml:math id="M585" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:msubsup><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mo>⊺</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, acts on fields that are a function of <inline-formula><mml:math id="M586" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M587" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M588" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are each <inline-formula><mml:math id="M589" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> matrices, and <inline-formula><mml:math id="M590" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is diagonal. <inline-formula><mml:math id="M591" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mo>⊺</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> projects onto temporal modes (the eigenvectors), <inline-formula><mml:math id="M592" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> scales the projections, and <inline-formula><mml:math id="M593" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> projects from the temporal modes back to <inline-formula><mml:math id="M594" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>. This is done for each horizontal position separately. The <inline-formula><mml:math id="M595" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> is the same for each horizontal position. The output of the temporal transform is also a function of <inline-formula><mml:math id="M596" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
</sec>
</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>Determining the transform matrices</title>
      <p id="d2e15272">Equation (<xref ref-type="disp-formula" rid="Ch1.E8"/>) is the form of the spectral-based control variable transform. The objects to be determined are the following: <inline-formula><mml:math id="M597" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M598" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M599" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M600" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M601" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M602" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. The calibration procedures for determining the above objects are described here.</p>
<sec id="App1.Ch1.S3.SS1">
  <label>C1</label><title>Determining the variance spectra of the horizontal transforms</title>
      <p id="d2e15369">The horizontal transforms for the ic and the flux fields are each described in the form <inline-formula><mml:math id="M603" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M604" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the spectral transform (spherical harmonics to longitude/co-latitude, Sect. <xref ref-type="sec" rid="App1.Ch1.S1.SS1"/>), <inline-formula><mml:math id="M605" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> for the ic, and <inline-formula><mml:math id="M606" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:math></inline-formula> for the flux. This section describes how <inline-formula><mml:math id="M607" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> can be determined given a prescribed form of the horizontal correlations.</p>
      <p id="d2e15480">The implied correlation is found by <inline-formula><mml:math id="M608" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>⊺</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mo>⊺</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>. Using the spectral transform (Eq. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E11"/>) and the adjoint (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E34"/>), the result of acting with <inline-formula><mml:math id="M609" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> on a field that is a function of longitude <inline-formula><mml:math id="M610" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and co-latitude <inline-formula><mml:math id="M611" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M612" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>), giving <inline-formula><mml:math id="M613" display="inline"><mml:mrow><mml:msup><mml:mi>f</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is

                <disp-formula specific-use="align"><mml:math id="M614" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mi>f</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>l</mml:mi></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mrow><mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:munder><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>,</mml:mo><mml:mi>m</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:munder><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          In this paper, <inline-formula><mml:math id="M615" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is function of <inline-formula><mml:math id="M616" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> only:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M617" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mi>f</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S3.E35"><mml:mtd><mml:mtext>C1</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>×</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>l</mml:mi></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          The addition theorem of spherical harmonics (see e.g. Appendix A3, Eq. (A9) of <xref ref-type="bibr" rid="bib1.bibx21" id="altparen.74"/>) is

                <disp-formula id="App1.Ch1.S3.E36" content-type="numbered"><label>C2</label><mml:math id="M618" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>l</mml:mi></mml:mrow><mml:mi>l</mml:mi></mml:munderover><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi>Y</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M619" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> is the great circle angular separation between positions <inline-formula><mml:math id="M620" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M621" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Substituting Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S3.E36"/>) into (<xref ref-type="disp-formula" rid="App1.Ch1.S3.E35"/>) gives the convolution,

                <disp-formula id="App1.Ch1.S3.Ex4"><mml:math id="M622" display="block"><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mi>f</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:munderover><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mtext>implied correlation matrix element</mml:mtext></mml:munder><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The implied correlation between <inline-formula><mml:math id="M623" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M624" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> due to this horizontal transformation is the kernel indicated above:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M625" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mrow><mml:msup><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:msup><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>;</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S3.E37"><mml:mtd><mml:mtext>C3</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Notice that the right hand side is a function only of the separation between the two positions, <inline-formula><mml:math id="M626" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, and not on their individual values nor their relative orientation. These properties are called homogeneity and isotropy respectively. Let <inline-formula><mml:math id="M627" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> be a prescribed function, e.g. the SOAR function <inline-formula><mml:math id="M628" display="inline"><mml:mrow><mml:mfenced close="}" open="{"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mfenced open="|" close="|"><mml:mrow><mml:mi>d</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="italic">ξ</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mi>exp⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:mfenced close="|" open="|"><mml:mrow><mml:mi>d</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="italic">ξ</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M629" display="inline"><mml:mrow><mml:mi>d</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="italic">π</mml:mi><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">180</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M630" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> is in degrees, <inline-formula><mml:math id="M631" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the radius of the Earth, and <inline-formula><mml:math id="M632" display="inline"><mml:mi mathvariant="italic">ξ</mml:mi></mml:math></inline-formula> is the chosen lengthscale of the correlation (specified in the same units as <inline-formula><mml:math id="M633" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>). Multiply each side of Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S3.E37"/>) by <inline-formula><mml:math id="M634" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:math></inline-formula>, and integrate over <inline-formula><mml:math id="M635" display="inline"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>:

                <disp-formula specific-use="align"><mml:math id="M636" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="italic">π</mml:mi></mml:munderover><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>×</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="italic">π</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          The orthogonality property (Eq. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E27"/>) is then used:

                <disp-formula specific-use="align"><mml:math id="M637" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="italic">π</mml:mi></mml:munderover><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:mi>l</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          The horizontal variance spectrum is then given below in continuous form and then in discrete form using Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E26"/>):

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M638" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi mathvariant="italic">π</mml:mi></mml:munderover><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="App1.Ch1.S3.E38"><mml:mtd><mml:mtext>C4</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:munderover><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mtext>GaussWt</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          It is important to ensure that <inline-formula><mml:math id="M639" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> (which may not be true due to numerical errors in the above procedure). Once <inline-formula><mml:math id="M640" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is computed with Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S3.E38"/>), <inline-formula><mml:math id="M641" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">h</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> is ensured by multiplying <inline-formula><mml:math id="M642" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> by <inline-formula><mml:math id="M643" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>L</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>l</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt><mml:msub><mml:mover accent="true"><mml:mi>P</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi>l</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>.</p>
</sec>
<sec id="App1.Ch1.S3.SS2">
  <label>C2</label><title>Determining the vertical transform for the initial concentration</title>
      <p id="d2e17441">The vertical transform is described by the <inline-formula><mml:math id="M644" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> matrices <inline-formula><mml:math id="M645" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M646" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> (see bullet point 2 of Sect. <xref ref-type="sec" rid="Ch1.S3.SS3.SSS1"/>), where <inline-formula><mml:math id="M647" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the number of vertical levels. In principle, there can be a different set of such vertical matrices for each horizontal position. For simplicity, we use just one set of eigenvectors (in <inline-formula><mml:math id="M648" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>) and eigenvalues (in <inline-formula><mml:math id="M649" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>), found from a global vertical correlation matrix (Fig. <xref ref-type="fig" rid="F3"/>).</p>
      <p id="d2e17534">The correlation matrices are formed from 10 <inline-formula><mml:math id="M650" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">years</mml:mi></mml:mrow></mml:math></inline-formula> (1995–2004) of twice-monthly methane forecasts, first detrended to correct for methane trends (even though there was little methane growth over this period, <xref ref-type="bibr" rid="bib1.bibx57" id="altparen.75"/>).</p>
</sec>
<sec id="App1.Ch1.S3.SS3">
  <label>C3</label><title>Determining the temporal transform for the flux</title>
      <p id="d2e17556">The temporal transform is described by the <inline-formula><mml:math id="M651" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> matrices <inline-formula><mml:math id="M652" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M653" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> (see bullet point 5 of Sect. <xref ref-type="sec" rid="Ch1.S3.SS3.SSS2"/>). First a <inline-formula><mml:math id="M654" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>×</mml:mo><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> correlation matrix <inline-formula><mml:math id="M655" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">C</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is formed with matrix elements determined from a SOAR function, <inline-formula><mml:math id="M656" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold">C</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mi mathvariant="normal">t</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mfenced close="}" open="{"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mfenced open="|" close="|"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>/</mml:mo><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mfenced><mml:mi>exp⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:mfenced open="|" close="|"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>/</mml:mo><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M657" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M658" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are times (in months), and <inline-formula><mml:math id="M659" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> is the timescale. <inline-formula><mml:math id="M660" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M661" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are, respectively, eigenvectors and eigenvalues of <inline-formula><mml:math id="M662" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">C</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>.</p>
</sec>
</app>

<app id="App1.Ch1.S4">
  <label>Appendix D</label><title>List of the software tools</title>
      <p id="d2e17801">The following is a list of the main modules available as part of the EnviFlux software. More details are documented in the user guide <xref ref-type="bibr" rid="bib1.bibx8" id="paren.76"/>. <list list-type="bullet"><list-item>
      <p id="d2e17809"><italic>Calibration.f90</italic> Constructs a control variable transform file required for the system to run.</p></list-item><list-item>
      <p id="d2e17815"><italic>Master_MakeWinds.cpp</italic> Makes suitable wind files from ERA5 winds to the format and resolution of EnviFlux. These drive the transport of the chosen tracer.</p></list-item><list-item>
      <p id="d2e17821"><italic>Master_MakeFields.cpp</italic> Generates initial conditions and surface flux fields for a run of the forward model.</p></list-item><list-item>
      <p id="d2e17827"><italic>Master_Invicat2EnviFlux.cpp</italic> Converts data from an INVICAT file to an EnviFlux file.</p></list-item><list-item>
      <p id="d2e17833"><italic>Master_ReplaceFirstField.cpp</italic> Makes a copy of an EnviFlux file, but replacing the initial conditions from another file.</p></list-item><list-item>
      <p id="d2e17839"><italic>Master_GenerateObs.cpp</italic> Outputs model observations from a given EnviFlux file.</p></list-item><list-item>
      <p id="d2e17845"><italic>Master_MakeBG.cpp</italic> makes a background state by perturbing a specified truth with a random perturbation.</p></list-item><list-item>
      <p id="d2e17851"><italic>Master_Assimilate.cpp</italic> runs 4DVar using a covariance file, a background file, and some observations to produce an analysis.</p></list-item><list-item>
      <p id="d2e17857"><italic>Master_CalcError.cpp</italic> calculates the difference metrics between two states.</p></list-item></list> The following is a list of auxiliary modules to test some of the system components. <list list-type="bullet"><list-item>
      <p id="d2e17865"><italic>Master_TestReadWrite.cpp</italic> Tests reading and writing of state and wind data.</p></list-item><list-item>
      <p id="d2e17871"><italic>Master_ForwardTraj.cpp</italic> Computes the trajectory of a particle advected by the prescribed winds. This is for testing the trajectory code before it is used in the semi-Lagrangian advection scheme.</p></list-item><list-item>
      <p id="d2e17877"><italic>Master_AdjointTests_CVT.cpp</italic> Tests the adjoints of the control variable transform components.</p></list-item><list-item>
      <p id="d2e17883"><italic>Master_AdjointTestsObObs.cpp</italic> Tests the adjoint of the observation operators.</p></list-item><list-item>
      <p id="d2e17889"><italic>Master_AdjointTests_SemiLagrangian.cpp</italic> Tests the adjoint of the semi-Lagrangian advection scheme.</p></list-item><list-item>
      <p id="d2e17895"><italic>Master_AdjointTests_SL+ObsOp.cpp</italic> Tests the adjoint of the combined semi-Lagrangian advection scheme and the observation operator.</p></list-item><list-item>
      <p id="d2e17901"><italic>Master_ImpliedCov.cpp</italic> Tests the control variable transform to give some implied covariances.</p></list-item><list-item>
      <p id="d2e17907"><italic>Master_GradTest.cpp</italic> Tests the gradient produced by the penalty-and-gradient routine in EnviFlux.</p></list-item></list> The following is an example Python program to process and visualise the output of EnviFlux. <list list-type="bullet"><list-item>
      <p id="d2e17915"><italic>Plot_PriorPostInc.py</italic> Takes information from a control variable transform file, observation files, truth, background, and analysis files to produce histograms, scatter plots, and diagnostic fields.</p></list-item></list></p>
</app>

<app id="App1.Ch1.S5">
  <label>Appendix E</label><title>Computational performance</title>
      <p id="d2e17928">The EnviFlux configuration used here needs relatively low computational resources as it is designed as a “toy” model with relatively low resolution. Most of the computational time demand is due to the integration of the equations of motion and their adjoint, which are needed for each variational iteration. Table <xref ref-type="table" rid="TE1"/> shows estimates of the computational burdens for the configuration used in this paper (Table <xref ref-type="table" rid="T1"/>), and projected values for a possible higher resolution system run for a longer time (one year). The numbers show that increasing the resolution can cancel-out the low-cost benefits of EnviFlux.</p>

<table-wrap id="TE1"><label>Table E1</label><caption><p id="d2e17939">Estimated time and memory demands for EnviFlux for the resolution and integration lengths used in this work (<inline-formula><mml:math id="M663" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">5.5</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5.5</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> grid boxes and 56 levels for a 100 <inline-formula><mml:math id="M664" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula> assimilation window, as specified in Table <xref ref-type="table" rid="T1"/>), and projected values based on the higher resolution of <inline-formula><mml:math id="M665" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.25</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">2.25</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> grid boxes and 56 levels for a year. The times given above are based on a 2012 Linux PC, Intel i5-3450 CPU, 1.8 <inline-formula><mml:math id="M666" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">GHz</mml:mi></mml:mrow></mml:math></inline-formula> with 4GB memory. The unboosted values relate to the semi-Lagrangian (SL) model where the departure points are calculated each time via an on-line back-trajectory calculation, while the boosted values relate to the departure points being read from a pre-calculated look-up table.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="justify" colwidth="2cm"/>
     <oasis:colspec colnum="3" colname="col3" align="justify" colwidth="2cm"/>
     <oasis:colspec colnum="4" colname="col4" align="justify" colwidth="2cm"/>
     <oasis:colspec colnum="5" colname="col5" align="justify" colwidth="2cm"/>
     <oasis:colspec colnum="6" colname="col6" align="justify" colwidth="2cm"/>
     <oasis:colspec colnum="7" colname="col7" align="justify" colwidth="2cm"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry namest="col2" nameend="col4" align="center"><inline-formula><mml:math id="M673" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">5.5</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5.5</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">56</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>levs</mml:mtext></mml:mrow></mml:math></inline-formula>, 100 <inline-formula><mml:math id="M674" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry namest="col5" nameend="col7" align="center"><inline-formula><mml:math id="M675" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">2.25</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">2.25</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">56</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>levs</mml:mtext></mml:mrow></mml:math></inline-formula>, 1 <inline-formula><mml:math id="M676" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">year</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Computational time (s)</oasis:entry>
         <oasis:entry colname="col3">Memory (MByte)</oasis:entry>
         <oasis:entry colname="col4">Disk (MByte)</oasis:entry>
         <oasis:entry colname="col5">Computational time (s)</oasis:entry>
         <oasis:entry colname="col6">Memory (MByte)</oasis:entry>
         <oasis:entry colname="col7">Disk (MByte)</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Tracer field</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">0.96</oasis:entry>
         <oasis:entry colname="col4">0.92</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
         <oasis:entry colname="col6">22</oasis:entry>
         <oasis:entry colname="col7">21</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Source field</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">0.07</oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
         <oasis:entry colname="col6">1.6</oasis:entry>
         <oasis:entry colname="col7">–</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">State vector</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">1.03</oasis:entry>
         <oasis:entry colname="col4">1.2</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
         <oasis:entry colname="col6">23</oasis:entry>
         <oasis:entry colname="col7">27</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">B-matrix coefficients</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">0.12</oasis:entry>
         <oasis:entry colname="col4">4</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
         <oasis:entry colname="col6">2.7</oasis:entry>
         <oasis:entry colname="col7">90</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Model integration (unboosted)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M677" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">520</mml:mn><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">10</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M678" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">186</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M679" display="inline"><mml:mrow><mml:mn mathvariant="normal">12</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mn mathvariant="normal">000</mml:mn><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6">211</oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M680" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">4200</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Adjoint model integration (unboosted)</oasis:entry>
         <oasis:entry namest="col2" nameend="col7" align="center">(adjoint model is never run unboosted) </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Forward model integration (boosted)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M681" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">85</mml:mn><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">8</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M682" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">186</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M683" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">1.890</mml:mn><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6">162</oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M684" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">4200</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Adjoint model integration (boosted)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M685" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">75</mml:mn><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">”</oasis:entry>
         <oasis:entry colname="col4">3.04</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M686" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">1665</mml:mn><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6">”</oasis:entry>
         <oasis:entry colname="col7">68</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind file archive</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">640</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
         <oasis:entry colname="col6">–</oasis:entry>
         <oasis:entry colname="col7"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Departure points file for SL boosting</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">825</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
         <oasis:entry colname="col6">–</oasis:entry>
         <oasis:entry colname="col7">18 307</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Forward observation operator (SIS)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M687" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">0.49</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M688" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">20</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M689" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">34</mml:mn><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M690" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">11</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M691" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">444</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M692" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">755</mml:mn><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Adjoint observation operator (SIS)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M693" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">0.51</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">”</oasis:entry>
         <oasis:entry colname="col4">”</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M694" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">12</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6">”</oasis:entry>
         <oasis:entry colname="col7">”</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Forward observation operator (TCA)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M695" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">0.53</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M696" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">20</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M697" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">31</mml:mn><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M698" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">12</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M699" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">444</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M700" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">688</mml:mn><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Adjoint observation operator (TCA)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M701" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">0.56</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">”</oasis:entry>
         <oasis:entry colname="col4">”</oasis:entry>
         <oasis:entry colname="col5">13</oasis:entry>
         <oasis:entry colname="col6">”</oasis:entry>
         <oasis:entry colname="col7">”</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Minimisation (boosted)</oasis:entry>
         <oasis:entry colname="col2">6800</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M702" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">40</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">110</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M703" display="inline"><mml:mrow><mml:mn mathvariant="normal">151</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">000</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M704" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">883</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7">2433</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><table-wrap-foot><p id="d2e17994"><sup>1</sup> model run with no diffusion; <sup>2</sup>  disk space assuming tracer output is made every major time step; <sup>3</sup>  figures are for 90 000 observations over 100 <inline-formula><mml:math id="M670" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula> or 328 500 observations over one year; <sup>4</sup>  this is the disk space to store these observations; <sup>5</sup>  assimilating SIS observations for 25 variational iterations.</p></table-wrap-foot></table-wrap>


</app>

<app id="App1.Ch1.S6">
  <label>Appendix F</label><title>The convergence of the cost function</title>
      <p id="d2e18818">Figure <xref ref-type="fig" rid="FF1"/> shows how the cost function is reduced for a selection of experiments (see the Fig. key and caption). The 4D-Var is always run with 25 iterations, which are found to be sufficient for near convergence.</p>

      <fig id="FF1"><label>Figure F1</label><caption><p id="d2e18825">Variation of the cost function, <inline-formula><mml:math id="M705" display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula>, Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>), with the 4D-Var loop number. Panel <bold>(a)</bold> is for a selection of experiments in the weakly Bayesian location regime (Sect. <xref ref-type="sec" rid="Ch1.S4"/>) and <bold>(b)</bold> in the Bayesian quasi-real-world regime (Sect. <xref ref-type="sec" rid="Ch1.S5"/>). The black lines are for the perfect experiments (no model error, no observation biases), the coloured continuous lines are for the model error experiments, and the dotted lines are for the observation bias experiments.</p></caption>
        
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/9751/2026/gmd-19-9751-2026-f15.png"/>

      </fig>

</app>

<app id="App1.Ch1.S7">
  <label>Appendix G</label><title>The model error scheme</title>
      <p id="d2e18864">The vertical wind scaling <inline-formula><mml:math id="M706" display="inline"><mml:mrow><mml:mi>w</mml:mi><mml:mo>→</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mi>w</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M707" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>∼</mml:mo><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> used in Sects. <xref ref-type="sec" rid="Ch1.S4.SS2"/>, <xref ref-type="sec" rid="Ch1.S4.SS3"/>, <xref ref-type="sec" rid="Ch1.S5.SS2"/>, and <xref ref-type="sec" rid="Ch1.S5.SS3"/> is meant to be a simple way of adding model error without <italic>directly</italic> affecting the global (horizontal) circulation of the tracer. Apart from slowing <inline-formula><mml:math id="M708" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> or quickening <inline-formula><mml:math id="M709" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> vertical transport, scaling only the vertical wind will lead to extra 3D sources and sinks appearing. For interest, this is briefly studied here. The (unmodified) prescribed winds and air density are assumed to be consistent with the standard mass continuity equation:

              <disp-formula id="App1.Ch1.S7.E39" content-type="numbered"><label>G1</label><mml:math id="M710" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        where <inline-formula><mml:math id="M711" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the air density, <inline-formula><mml:math id="M712" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the horizontal gradient operator, <inline-formula><mml:math id="M713" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the horizontal wind vector, <inline-formula><mml:math id="M714" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> is the vertical gradient operator, and <inline-formula><mml:math id="M715" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula> is the vertical wind. The scaling, <inline-formula><mml:math id="M716" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>, affects the tracer <inline-formula><mml:math id="M717" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> only, making its relevant transport equation as follows:

              <disp-formula id="App1.Ch1.S7.E40" content-type="numbered"><label>G2</label><mml:math id="M718" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mi>w</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        </p>
      <p id="d2e19159">where <inline-formula><mml:math id="M719" display="inline"><mml:mrow><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the surface flux term (Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>) and where diffusion has been ignored. Multiplying Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S7.E39"/>) by <inline-formula><mml:math id="M720" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>, multiplying Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S7.E40"/>) by <inline-formula><mml:math id="M721" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, adding the resulting equations, as well as adding and subtracting <inline-formula><mml:math id="M722" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi>w</mml:mi><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> gives

              <disp-formula specific-use="align"><mml:math id="M723" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mtext>combine</mml:mtext></mml:munder></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">χ</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi>w</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mtext>combine</mml:mtext></mml:munder></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>-</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi>w</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>w</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        By combining the terms indicated, this is equivalent to

              <disp-formula id="App1.Ch1.S7.E41" content-type="numbered"><label>G3</label><mml:math id="M724" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mfenced close="]" open="["><mml:mrow><mml:mi mathvariant="bold">S</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi>w</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>)</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        where <inline-formula><mml:math id="M725" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula> is the 3D wind field. Equation (<xref ref-type="disp-formula" rid="App1.Ch1.S7.E41"/>) is the continuity equation for <inline-formula><mml:math id="M726" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> when the vertical winds are scaled, which yields the “extra” 3D source term <inline-formula><mml:math id="M727" display="inline"><mml:mrow><mml:mi>w</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>)</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>, which the inverse model tries to compensate for by producing erroneous surface fluxes.</p>
</app>
  </app-group><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e19595">The EnviFlux v1.0 user guide and code are available from <ext-link xlink:href="https://doi.org/10.5281/zenodo.18803399" ext-link-type="DOI">10.5281/zenodo.18803399</ext-link> <xref ref-type="bibr" rid="bib1.bibx8" id="paren.77"/> under the Creative Commons Attribution 4.0 International licence, and the data used to produce the results in this paper are available from <ext-link xlink:href="https://doi.org/10.5281/zenodo.19630028" ext-link-type="DOI">10.5281/zenodo.19630028</ext-link> <xref ref-type="bibr" rid="bib1.bibx7" id="paren.78"/>.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e19613">The author wrote the EnviFlux code, designed and ran the experiments, and wrote the paper.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e19619">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="d2e19625">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="d2e19631">The author is grateful for financial support from the NERC National Centre for Earth Observation (contract number PR140015) and the Univ. of Reading Dept. of Meteorology, and computing facilities from the Univ. of Reading. The author acknowledges helpful correspondence with Chris Wilson (Univ. of Leeds) and Amos Lawless (Univ. of Reading).  The ERA-5 archive of meteorological reanalysis was used to create the driving winds. The author would like to thank four anonymous reviewers for their helpful comments.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e19636">This research has been supported by the National Centre for Earth Observation (grant no. PR140015).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e19643">This paper was edited by Yilong Wang and reviewed by four anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Agustí-Panareda et al.(2019)</label><mixed-citation>Agustí-Panareda, A., Diamantakis, M., Massart, S., Chevallier, F., Muñoz-Sabater, J., Barré, J., Curcoll, R., Engelen, R., Langerock, B., Law, R. M., Loh, Z., Morguí, J. A., Parrington, M., Peuch, V.-H., Ramonet, M., Roehl, C., Vermeulen, A. T., Warneke, T., and Wunch, D.: Modelling <inline-formula><mml:math id="M728" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> weather – why horizontal resolution matters, Atmos. Chem. Phys., 19, 7347–7376, <ext-link xlink:href="https://doi.org/10.5194/acp-19-7347-2019" ext-link-type="DOI">10.5194/acp-19-7347-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>An et al.(2012)</label><mixed-citation> An, X., Henne, S., Yao, B., Vollmer, M. K., Zhou, L., and Li, Y.: Estimating emissions of HCFC-22 and CFC-11 in China by atmospheric observations and inverse modeling, Sci. China Ser. C, 55, 2233–2241, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx3"><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. Meteor. Soc., 134, 1951–1970, <ext-link xlink:href="https://doi.org/10.1002/qj.339" ext-link-type="DOI">10.1002/qj.339</ext-link>, 2008a.</mixed-citation></ref>
      <ref id="bib1.bibx4"><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. Meteor. Soc., 134, 1971–1996, 2008b.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bannister(2011)</label><mixed-citation> Bannister, R. N.: Issues in the assimilation of the sources of a trace gas by inverse modelling, Comput. Fluids, 46, 106–112, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Bannister(2020)</label><mixed-citation>Bannister, R. N.: The ABC-DA system (v1.4): a variational data assimilation system for convective-scale assimilation research with a study of the impact of a balance constraint, Geosci. Model Dev., 13, 3789–3816, <ext-link xlink:href="https://doi.org/10.5194/gmd-13-3789-2020" ext-link-type="DOI">10.5194/gmd-13-3789-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Bannister(2026a)</label><mixed-citation>Bannister, R. N.: Data files for the manuscript “EnviFlux (v1.0): a simplified surface flux inversion tool based on four-dimensional variational data assimilation (4D-Var)”, Zenodo [data set], <ext-link xlink:href="https://doi.org/10.5281/zenodo.19630028" ext-link-type="DOI">10.5281/zenodo.19630028</ext-link>, 2026a.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Bannister(2026b)</label><mixed-citation>Bannister, R. N.: EnviFlux techincal and user guide, and code respository, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.18803399" ext-link-type="DOI">10.5281/zenodo.18803399</ext-link>, 2026b.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Bannister and Wilson(2024)</label><mixed-citation>Bannister, R. N. and Wilson, C.: Inverse modelling for surface methane flux estimation with 4DVar: impact of a computationally efficient representation of a non-diagonal B-matrix in INVICAT v4, EGUsphere [preprint], <ext-link xlink:href="https://doi.org/10.5194/egusphere-2024-655" ext-link-type="DOI">10.5194/egusphere-2024-655</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Basu et al.(2018)</label><mixed-citation>Basu, S., Baker, D. F., Chevallier, F., Patra, P. K., Liu, J., and Miller, J. B.: The impact of transport model differences on <inline-formula><mml:math id="M729" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> surface flux estimates from OCO-2 retrievals of column average <inline-formula><mml:math id="M730" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, Atmos. Chem. Phys., 18, 7189–7215, <ext-link xlink:href="https://doi.org/10.5194/acp-18-7189-2018" ext-link-type="DOI">10.5194/acp-18-7189-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Bey et al.(2001)</label><mixed-citation>Bey, I., Jacob, D. J., Yantosca, R. M., Logan, J. A., Field, B. D., Fiore, A. M., Li, Q., Liu, H. Y., Mickley, L. J., and Schultz, M. G.: Global modeling of tropospheric chemistry with assimilated meteorology: model description and evaluation, J. Geophys. Res.-Atmos., 106, 23073–23095, <ext-link xlink:href="https://doi.org/10.1029/2001JD000807" ext-link-type="DOI">10.1029/2001JD000807</ext-link>, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Bisht et al.(2023)</label><mixed-citation>Bisht, J. S. H., Patra, P. K., Takigawa, M., Sekiya, T., Kanaya, Y., Saitoh, N., and Miyazaki, K.: Estimation of <inline-formula><mml:math id="M731" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CH</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> emission based on an advanced 4D-LETKF assimilation system, Geosci. Model Dev., 16, 1823–1838, <ext-link xlink:href="https://doi.org/10.5194/gmd-16-1823-2023" ext-link-type="DOI">10.5194/gmd-16-1823-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Chandra et al.(2022)</label><mixed-citation>Chandra, N., Patra, P. K., Niwa, Y., Ito, A., Iida, Y., Goto, D., Morimoto, S., Kondo, M., Takigawa, M., Hajima, T., and Watanabe, M.: Estimated regional <inline-formula><mml:math id="M732" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> flux and uncertainty based on an ensemble of atmospheric <inline-formula><mml:math id="M733" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> inversions, Atmos. Chem. Phys., 22, 9215–9243, <ext-link xlink:href="https://doi.org/10.5194/acp-22-9215-2022" ext-link-type="DOI">10.5194/acp-22-9215-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Chen et al.(2019)</label><mixed-citation>Chen, H. W., Zhang, F., Lauvaux, T., Davis, K. J., Feng, S., Butler, M. P., and Alley, R. B.: Characterization of regional-scale <inline-formula><mml:math id="M734" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> transport uncertainties in an ensemble with flow-dependent transport errors, Geophys. Res. Lett., 46, 4049–4058, <ext-link xlink:href="https://doi.org/10.1029/2018GL081341" ext-link-type="DOI">10.1029/2018GL081341</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Chevallier et al.(2005a)</label><mixed-citation>Chevallier, F., Engelen, R. J., and Peylin, P.: The contribution of AIRS data to the estimation of <inline-formula><mml:math id="M735" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> sources and sinks, Geophys. Res. Lett., 32, <ext-link xlink:href="https://doi.org/10.1029/2005GL024229" ext-link-type="DOI">10.1029/2005GL024229</ext-link>, 2005a.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Chevallier et al.(2005b)</label><mixed-citation>Chevallier, F., Fisher, M., Peylin, P., Serrar, S., Bousquet, P., Bréon, F.-M., Chédin, A., and Ciais, P.: Inferring <inline-formula><mml:math id="M736" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> sources and sinks from satellite observations: method and application to TOVS data, J. Geophys. Res.-Atmos., 110, <ext-link xlink:href="https://doi.org/10.1029/2005JD006390" ext-link-type="DOI">10.1029/2005JD006390</ext-link>, 2005b.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Chevallier et al.(2007)</label><mixed-citation>Chevallier, F., Bréon, F.-M., and Rayner, P. J.: Contribution of the Orbiting Carbon Observatory to the estimation of <inline-formula><mml:math id="M737" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> sources and sinks: theoretical study in a variational data assimilation framework, J. Geophys. Res.-Atmos., 112, <ext-link xlink:href="https://doi.org/10.1029/2006JD007375" ext-link-type="DOI">10.1029/2006JD007375</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Chevallier et al.(2010)</label><mixed-citation>Chevallier, F., Feng, L., Bösch, H., Palmer, P. I., and Rayner, P. J.: On the impact of transport model errors for the estimation of <inline-formula><mml:math id="M738" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> surface fluxes from GOSAT observations, Geophys. Res. Lett., 37, 1–5, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Chipperfield(2006)</label><mixed-citation> Chipperfield, M.: New version of the TOMCAT/SLIMCAT off-line chemical transport model: intercomparison of stratospheric tracer experiments, Q. J. Roy. Meteor. Soc., 132, 1179–1203, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Dadheech and Turner(2026)</label><mixed-citation>Dadheech, N. and Turner, A. J.: Simulating out-of-sample atmospheric transport to enable flux inversions, Atmos. Chem. Phys., 26, 427–441, <ext-link xlink:href="https://doi.org/10.5194/acp-26-427-2026" ext-link-type="DOI">10.5194/acp-26-427-2026</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Errera and Ménard(2012)</label><mixed-citation>Errera, Q. and Ménard, R.: Technical Note: Spectral representation of spatial correlations in variational assimilation with grid point models and application to the Belgian Assimilation System for Chemical Observations (BASCOE), Atmos. Chem. Phys., 12, 10015–10031, <ext-link xlink:href="https://doi.org/10.5194/acp-12-10015-2012" ext-link-type="DOI">10.5194/acp-12-10015-2012</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Feng et al.(2009)</label><mixed-citation>Feng, L., Palmer, P. I., Bösch, H., and Dance, S.: Estimating surface <inline-formula><mml:math id="M739" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> fluxes from space-borne <inline-formula><mml:math id="M740" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> dry air mole fraction observations using an ensemble Kalman Filter, Atmos. Chem. Phys., 9, 2619–2633, <ext-link xlink:href="https://doi.org/10.5194/acp-9-2619-2009" ext-link-type="DOI">10.5194/acp-9-2619-2009</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Fisher and Courtier(1995)</label><mixed-citation>Fisher, M. and Courtier, P.: Estimating the covariance matrices of analysis and forecast error in variational data assimilation, ECMWF Technical Memorandum, 220, <ext-link xlink:href="https://doi.org/10.21957/1dxrasjit" ext-link-type="DOI">10.21957/1dxrasjit</ext-link>, 1995.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Fraser et al.(2013)</label><mixed-citation>Fraser, A., Palmer, P. I., Feng, L., Boesch, H., Cogan, A., Parker, R., Dlugokencky, E. J., Fraser, P. J., Krummel, P. B., Langenfelds, R. L., O'Doherty, S., Prinn, R. G., Steele, L. P., van der Schoot, M., and Weiss, R. F.: Estimating regional methane surface fluxes: the relative importance of surface and GOSAT mole fraction measurements, Atmos. Chem. Phys., 13, 5697–5713, <ext-link xlink:href="https://doi.org/10.5194/acp-13-5697-2013" ext-link-type="DOI">10.5194/acp-13-5697-2013</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Golub and Van Loan(1996)</label><mixed-citation> Golub, G. H. and Van Loan, C. F.: Matrix computations, Johns Hopkins University, Press, Baltimore, MD, USA, ISBN 978-0-8018-5414-9, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Gonzi et al.(2011)</label><mixed-citation>Gonzi, S., Palmer, P. I., Barkley, M. P., De Smedt, I., and van Roozendael, M.: Biomass burning emission estimates inferred from satellite column measurements of HCHO: sensitivity to co-emitted aerosol and injection height, Geophys. Res. Lett., 38, <ext-link xlink:href="https://doi.org/10.1029/2011GL047890" ext-link-type="DOI">10.1029/2011GL047890</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Grell et al.(2005)</label><mixed-citation>Grell, G. A., Peckham, S. E., Schmitz, R., McKeen, S. A., Frost, G., Skamarock, W. C., and Eder, B.: Fully coupled “online” chemistry within the WRF model, Atmos. Environ., 39, 6957–6975, <ext-link xlink:href="https://doi.org/10.1016/j.atmosenv.2005.04.027" ext-link-type="DOI">10.1016/j.atmosenv.2005.04.027</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Gurney et al.(2002)</label><mixed-citation>Gurney, K. R., Law, R. M., Denning, A. S., Rayner, P. J., Baker, D., Bousquet, P., Bruhwiler, L., Chen, Y.-H., Ciais, P., Fan, S., Fung, I. Y., Gloor, M., Heimann, M., Higuchi, K., John, J., Maki, T., Maksyutov, S., Masarie, K., Peylin, P., Prather, M., Pak, B. C., Randerson, J., Sarmiento, J., Taguchi, S., Takahashi, T., and Yuen, C.-W.: Towards robust regional estimates of <inline-formula><mml:math id="M741" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> sources and sinks using atmospheric transport models, Nature, 415, 626–630, <ext-link xlink:href="https://doi.org/10.1038/415626a" ext-link-type="DOI">10.1038/415626a</ext-link>,  2002.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Henze et al.(2007)</label><mixed-citation>Henze, D. K., Hakami, A., and Seinfeld, J. H.: Development of the adjoint of GEOS-Chem, Atmos. Chem. Phys., 7, 2413–2433, <ext-link xlink:href="https://doi.org/10.5194/acp-7-2413-2007" ext-link-type="DOI">10.5194/acp-7-2413-2007</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Hersbach et al.(2020)</label><mixed-citation>Hersbach, H., Bell, B., Berrisford, P., Hirahara, S., Horányi, A., Muñoz-Sabater, J., Nicolas, J., Peubey, C., Radu, R., Schepers, D., Simmons. A., Soci, C., Abdalla, S., Abellan, X., Balsamo, G., Bechtold, P., Biavati, G., Bidlot, J., Bonavita, M., De Chiara, G., Dahlgren, P., Dee, D., Diamantakis, M., Dragani, R., Flemming, J., Forbes, R., Fuentes, M., Geer, A., Haimberger, L., Healy, S., Hogan, R. J., Hólm, E., Janisková, M., Keeley, S., Laloyaux, P., Lopez, P., Lupu, C., Radnoti, G., de Rosnay, P., Rozum, I.,  Vamborg, F., Villaume, S., and Thépaut, J.-N.: The ERA5 global reanalysis, Q. J. Roy. Meteor. Soc., 146, 1999–2049, <ext-link xlink:href="https://doi.org/10.1002/qj.3803" ext-link-type="DOI">10.1002/qj.3803</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Hirsch et al.(2006)</label><mixed-citation>Hirsch, A., Michalak, A., Bruhwiler, L., Peters, W., Dlugokencky, E., and Tans, P.: Inverse modeling estimates of the global nitrous oxide surface flux from 1998–2001, Global Biogeochem. Cy., 20, <ext-link xlink:href="https://doi.org/10.1029/2004GB002443" ext-link-type="DOI">10.1029/2004GB002443</ext-link>,  2006.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Hodyss and Nichols(2015)</label><mixed-citation>Hodyss, D. and Nichols, N.: The error of representation: basic understanding, Tellus A, 67, 24822, <ext-link xlink:href="https://doi.org/10.3402/tellusa.v67.24822" ext-link-type="DOI">10.3402/tellusa.v67.24822</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Hourdin and Armengaud(1999)</label><mixed-citation>Hourdin, F. and Armengaud, A.: Test of a hierarchy of finite-volume schemes for transport of trace species in an atmospheric general circulation model, Mon. Wea. Rev, 127, 822–837, <ext-link xlink:href="https://doi.org/10.1175/1520-0493(1999)127&lt;0822:TUOFVM&gt;2.0.CO;2" ext-link-type="DOI">10.1175/1520-0493(1999)127&lt;0822:TUOFVM&gt;2.0.CO;2</ext-link>, 1999.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Houweling et al.(1999)</label><mixed-citation> Houweling, S., Kaminski, T., Dentener, F., Lelieveld, J., and Heimann, M.: Inverse modeling of methane sources and sinks using the adjoint of a global transport model, J. Geophys. Res.-Atmos., 104, 26137–26160, 1999.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Houweling et al.(2010)</label><mixed-citation>Houweling, S., Aben, I., Breon, F.-M., Chevallier, F., Deutscher, N., Engelen, R., Gerbig, C., Griffith, D., Hungershoefer, K., Macatangay, R., Marshall, J., Notholt, J., Peters, W., and Serrar, S.: The importance of transport model uncertainties for the estimation of <inline-formula><mml:math id="M742" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> sources and sinks using satellite measurements, Atmos. Chem. Phys., 10, 9981–9992, <ext-link xlink:href="https://doi.org/10.5194/acp-10-9981-2010" ext-link-type="DOI">10.5194/acp-10-9981-2010</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Houweling et al.(2017)</label><mixed-citation>Houweling, S., Bergamaschi, P., Chevallier, F., Heimann, M., Kaminski, T., Krol, M., Michalak, A. M., and Patra, P.: Global inverse modeling of <inline-formula><mml:math id="M743" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CH</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> sources and sinks: an overview of methods, Atmos. Chem. Phys., 17, 235–256, <ext-link xlink:href="https://doi.org/10.5194/acp-17-235-2017" ext-link-type="DOI">10.5194/acp-17-235-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Hu et al.(2023)</label><mixed-citation>Hu, Y., Li, Y., Ma, X., Liang, Y., You, W., Pan, X., and Zang, Z.: The optimization of SO2 emissions by the 4DVAR and EnKF methods and its application in WRF-Chem, Sci. Total Environ., 888, 163796, <ext-link xlink:href="https://doi.org/10.1016/j.scitotenv.2023.163796" ext-link-type="DOI">10.1016/j.scitotenv.2023.163796</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Jiang et al.(2013)</label><mixed-citation> Jiang, Z., Jones, D. B., Worden, H. M., Deeter, M. N., Henze, D. K., Worden, J., Bowman, K. W., Brenninkmeijer, C., and Schuck, T.: Impact of model errors in convective transport on CO source estimates inferred from MOPITT CO retrievals, J. Geophys. Res.-Atmos., 118, 2073–2083, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Krol et al.(2005)</label><mixed-citation>Krol, M., Houweling, S., Bregman, B., van den Broek, M., Segers, A., van Velthoven, P., Peters, W., Dentener, F., and Bergamaschi, P.: The two-way nested global chemistry-transport zoom model TM5: algorithm and applications, Atmos. Chem. Phys., 5, 417–432, <ext-link xlink:href="https://doi.org/10.5194/acp-5-417-2005" ext-link-type="DOI">10.5194/acp-5-417-2005</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Lewis et al.(2006)</label><mixed-citation> Lewis, J. M., Lakshmivarahan, S., and Dhall, S.: Dynamic data assimilation: a least squares approach, Vol. 13, Cambridge University Press, ISBN 978-0-521-85155-8, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Lin and Gerbig(2005)</label><mixed-citation>Lin, J. and Gerbig, C.: Accounting for the effect of transport errors on tracer inversions, Geophys. Res. Lett., 32, <ext-link xlink:href="https://doi.org/10.1029/2004GL021127" ext-link-type="DOI">10.1029/2004GL021127</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Lucas et al.(2017)</label><mixed-citation>Lucas, D. D., Simpson, M., Cameron-Smith, P., and Baskett, R. L.: Bayesian inverse modeling of the atmospheric transport and emissions of a controlled tracer release from a nuclear power plant, Atmos. Chem. Phys., 17, 13521–13543, <ext-link xlink:href="https://doi.org/10.5194/acp-17-13521-2017" ext-link-type="DOI">10.5194/acp-17-13521-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Lunt et al.(2019)</label><mixed-citation>Lunt, M. F., Palmer, P. I., Feng, L., Taylor, C. M., Boesch, H., and Parker, R. J.: An increase in methane emissions from tropical Africa between 2010 and 2016 inferred from satellite data, Atmos. Chem. Phys., 19, 14721–14740, <ext-link xlink:href="https://doi.org/10.5194/acp-19-14721-2019" ext-link-type="DOI">10.5194/acp-19-14721-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Ma et al.(2021)</label><mixed-citation>Ma, J., Kooijmans, L. M. J., Cho, A., Montzka, S. A., Glatthor, N., Worden, J. R., Kuai, L., Atlas, E. L., and Krol, M. C.: Inverse modelling of carbonyl sulfide: implementation, evaluation and implications for the global budget, Atmos. Chem. Phys., 21, 3507–3529, <ext-link xlink:href="https://doi.org/10.5194/acp-21-3507-2021" ext-link-type="DOI">10.5194/acp-21-3507-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Meirink et al.(2006)</label><mixed-citation>Meirink, J. F., Eskes, H. J., and Goede, A. P. H.: Sensitivity analysis of methane emissions derived from SCIAMACHY observations through inverse modelling, Atmos. Chem. Phys., 6, 1275–1292, <ext-link xlink:href="https://doi.org/10.5194/acp-6-1275-2006" ext-link-type="DOI">10.5194/acp-6-1275-2006</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Meirink et al.(2008a)</label><mixed-citation>Meirink, J. F., Bergamaschi, P., Frankenberg, C., d'Amelio, M. T., Dlugokencky, E. J., Gatti, L. V., Houweling, S., Miller, J. B., Röckmann, T., Villani, M. G., and Krol, M. C.: Four-dimensional variational data assimilation for inverse modeling of atmospheric methane emissions: analysis of SCIAMACHY observations, J. Geophys. Res.-Atmos., 113, <ext-link xlink:href="https://doi.org/10.1029/2007JD009740" ext-link-type="DOI">10.1029/2007JD009740</ext-link>, 2008a.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>Meirink et al.(2008b)</label><mixed-citation>Meirink, J. F., Bergamaschi, P., and Krol, M. C.: Four-dimensional variational data assimilation for inverse modelling of atmospheric methane emissions: method and comparison with synthesis inversion, Atmos. Chem. Phys., 8, 6341–6353, <ext-link xlink:href="https://doi.org/10.5194/acp-8-6341-2008" ext-link-type="DOI">10.5194/acp-8-6341-2008</ext-link>, 2008b.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Munassar et al.(2023)</label><mixed-citation>Munassar, S., Monteil, G., Scholze, M., Karstens, U., Rödenbeck, C., Koch, F.-T., Totsche, K. U., and Gerbig, C.: Why do inverse models disagree? A case study with two European <inline-formula><mml:math id="M744" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> inversions, Atmos. Chem. Phys., 23, 2813–2828, <ext-link xlink:href="https://doi.org/10.5194/acp-23-2813-2023" ext-link-type="DOI">10.5194/acp-23-2813-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Nicely et al.(2018)</label><mixed-citation>Nicely, J. M., Canty, T. P., Manyin, M., Oman, L. D., Salawitch, R. J., Steenrod, S. D., Strahan, S. E., and Strode, S. A.: Changes in global tropospheric OH expected as a result of climate change over the last several decades, J. Geophys. Res.-Atmos., 123, 10–774, <ext-link xlink:href="https://doi.org/10.1029/2018JD028388" ext-link-type="DOI">10.1029/2018JD028388</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>Niwa and Fujii(2020)</label><mixed-citation>Niwa, Y. and Fujii, Y.: A conjugate BFGS method for accurate estimation of a posterior error covariance matrix in a linear inverse problem, Q. J. Roy. Meteor. Soc., 146, 3118–3143, <ext-link xlink:href="https://doi.org/10.1002/qj.3838" ext-link-type="DOI">10.1002/qj.3838</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>Palmer et al.(2003)</label><mixed-citation>Palmer, P. I., Jacob, D. J., Jones, D., Heald, C. L., Yantosca, R. M., Logan, J. A., Sachse, G. W., and Streets, D. G.: Inverting for emissions of carbon monoxide from Asia using aircraft observations over the western Pacific, J. Geophys. Res.-Atmos., 108, <ext-link xlink:href="https://doi.org/10.1029/2003JD003397" ext-link-type="DOI">10.1029/2003JD003397</ext-link>, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>Palmer et al.(2006)</label><mixed-citation>Palmer, P. I., Abbot, D. S., Fu, T.-M., Jacob, D. J., Chance, K., Kurosu, T. P., Guenther, A., Wiedinmyer, C., Stanton, J. C., Pilling, M. J., Pressley, S. N., Lamb, B., and Sumner, A. L.: Quantifying the seasonal and interannual variability of North American isoprene emissions using satellite observations of the formaldehyde column, J. Geophys. Res.-Atmos., 111, <ext-link xlink:href="https://doi.org/10.1029/2005JD006689" ext-link-type="DOI">10.1029/2005JD006689</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>Pendergrass et al.(2023)</label><mixed-citation>Pendergrass, D. C., Jacob, D. J., Nesser, H., Varon, D. J., Sulprizio, M., Miyazaki, K., and Bowman, K. W.: CHEEREIO 1.0: a versatile and user-friendly ensemble-based chemical data assimilation and emissions inversion platform for the GEOS-Chem chemical transport model, Geosci. Model Dev., 16, 4793–4810, <ext-link xlink:href="https://doi.org/10.5194/gmd-16-4793-2023" ext-link-type="DOI">10.5194/gmd-16-4793-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Peylin et al.(2005)</label><mixed-citation>Peylin, P., Rayner, P. J., Bousquet, P., Carouge, C., Hourdin, F., Heinrich, P., Ciais, P., and AEROCARB contributors: Daily <inline-formula><mml:math id="M745" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> flux estimates over Europe from continuous atmospheric measurements: 1, inverse methodology, Atmos. Chem. Phys., 5, 3173–3186, <ext-link xlink:href="https://doi.org/10.5194/acp-5-3173-2005" ext-link-type="DOI">10.5194/acp-5-3173-2005</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>Press et al.(2007)</label><mixed-citation> Press, W., Teukolsky, S., Vetterling, W., and Flannery, B.: Numerical Recipes 3rd Edition: The Art of Scientific Computing, Cambridge University Press, Cambridge, UK, ISBN  978-0-521-88068-8, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx56"><label>Qu et al.(2021)</label><mixed-citation>Qu, Z., Jacob, D. J., Shen, L., Lu, X., Zhang, Y., Scarpelli, T. R., Nesser, H., Sulprizio, M. P., Maasakkers, J. D., Bloom, A. A., Worden, J. R., Parker, R. J., and Delgado, A. L.: Global distribution of methane emissions: a comparative inverse analysis of observations from the TROPOMI and GOSAT satellite instruments, Atmos. Chem. Phys., 21, 14159–14175, <ext-link xlink:href="https://doi.org/10.5194/acp-21-14159-2021" ext-link-type="DOI">10.5194/acp-21-14159-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx57"><label>Rigby et al.(2008)</label><mixed-citation>Rigby, M., Prinn, R. G., Fraser, P. J., Simmonds, P. G., Langenfelds, R., Huang, J., Cunnold, D. M., Steele, L. P., Krummel, P. B., Weiss, R. F., O'Doherty, S., Salameh, P. K., Wang, H. J., Harth, C. M., Mühle, J., and Porter, L. W.: Renewed growth of atmospheric methane, Geophys. Res. Lett., 35, <ext-link xlink:href="https://doi.org/10.1029/2008GL036037" ext-link-type="DOI">10.1029/2008GL036037</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx58"><label>Rodgers(2000)</label><mixed-citation> Rodgers, C. D.: Inverse Methods for Atmospheric Sounding: Theory and Practice, Vol. 2, World Scientific, ISBN 978-9810227401, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx59"><label>Rohs et al.(2006)</label><mixed-citation>Rohs, S., Schiller, C., Riese, M., Engel, A., Schmidt, U., Wetter, T., Levin, I., Nakazawa, T., and Aoki, S.: Long-term changes of methane and hydrogen in the stratosphere in the period 1978–2003 and their impact on the abundance of stratospheric water vapor, J. Geophys. Res.-Atmos., 111, <ext-link xlink:href="https://doi.org/10.1029/2005JD006877" ext-link-type="DOI">10.1029/2005JD006877</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx60"><label>Schuh et al.(2019)</label><mixed-citation>Schuh, A. E., Jacobson, A. R., Basu, S., Weir, B., Baker, D., Bowman, K., Chevallier, F., Crowell, S., Davis, K. J., Deng, F., Denning, S., Feng, L., Jones, D., Liu, J., and Palmer, P. I.: Quantifying the impact of atmospheric transport uncertainty on <inline-formula><mml:math id="M746" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> surface flux estimates, Global Biogeochem. Cy., 33, 484–500, <ext-link xlink:href="https://doi.org/10.1029/2018GB006086" ext-link-type="DOI">10.1029/2018GB006086</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx61"><label>Swarztrauber et al.(2016)</label><mixed-citation>Swarztrauber, P., Valent, R., and Burkardt, J.: FFTPack module for Fortran, <uri>https://github.com/keurfonluu/FFTPack/blob/master/src/fftpack5.f90</uri> (last access: 31 January 2023), 2016.</mixed-citation></ref>
      <ref id="bib1.bibx62"><label>Tandeo et al.(2020)</label><mixed-citation> Tandeo, P., Ailliot, P., Bocquet, M., Carrassi, A., Miyoshi, T., Pulido, M., and Zhen, Y.: A review of innovation-based methods to jointly estimate model and observation error covariance matrices in ensemble data assimilation, Mon. Weather Rev., 148, 3973–3994, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx63"><label>Thompson et al.(2019)</label><mixed-citation>Thompson, R. L., Lassaletta, L., Patra, P. K., Wilson, C., Wells, K. C., Gressent, A., Koffi, E. N., Chipperfield, M. P., Winiwarter, W., Davidson, E. A., Tian, H., and Canadell, J. G.: Acceleration of global <inline-formula><mml:math id="M747" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">N</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi mathvariant="normal">O</mml:mi></mml:mrow></mml:math></inline-formula> emissions seen from two decades of atmospheric inversion, Nat. Clim. Change, 9, 993–998, <ext-link xlink:href="https://doi.org/10.1038/s41558-019-0613-7" ext-link-type="DOI">10.1038/s41558-019-0613-7</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx64"><label>Voshtani et al.(2023)</label><mixed-citation>Voshtani, S., Ménard, R., Walker, T. W., and Hakami, A.: Use of assimilation analysis in 4D-Var source inversion: Observing System Simulation Experiments (OSSEs) with GOSAT methane and hemispheric CMAQ, Atmosphere-Basel, 14, 758, <ext-link xlink:href="https://doi.org/10.3390/atmos14040758" ext-link-type="DOI">10.3390/atmos14040758</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx65"><label>Waller et al.(2016)</label><mixed-citation>Waller, J. A., Dance, S. L., and Nichols, N. K.: Theoretical insight into diagnosing observation error correlations using observation-minus-background and observation-minus-analysis statistics, Q. J. Roy. Meteor. Soc., 142, 418–431, <ext-link xlink:href="https://doi.org/10.1002/qj.2661" ext-link-type="DOI">10.1002/qj.2661</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx66"><label>Wieczorek et al.(2018)</label><mixed-citation>Wieczorek, M. A., Meschede, M., Sales de Andrade, E., Oshchepkov, I., Xu, B., Leinweber, K., and Walker, A.: SHTOOLS: Version 4.4, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.2350781" ext-link-type="DOI">10.5281/zenodo.2350781</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx67"><label>Wilson et al.(2014)</label><mixed-citation>Wilson, C., Chipperfield, M. P., Gloor, M., and Chevallier, F.: Development of a variational flux inversion system (INVICAT v1.0) using the TOMCAT chemical transport model, Geosci. Model Dev., 7, 2485–2500, <ext-link xlink:href="https://doi.org/10.5194/gmd-7-2485-2014" ext-link-type="DOI">10.5194/gmd-7-2485-2014</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx68"><label>Yokota et al.(2009)</label><mixed-citation>Yokota, T., Yoshida, Y., Eguchi, N., Ota, Y., Tanaka, T., Watanabe, H., and Maksyutov, S.: Global concentrations of <inline-formula><mml:math id="M748" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M749" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CH</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> retrieved from GOSAT: first preliminary results, Sola, 5, 160–163, <ext-link xlink:href="https://doi.org/10.2151/sola.2009-041" ext-link-type="DOI">10.2151/sola.2009-041</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx69"><label>Yu et al.(2021)</label><mixed-citation>Yu, X., Millet, D. B., and Henze, D. K.: How well can inverse analyses of high-resolution satellite data resolve heterogeneous methane fluxes? Observing system simulation experiments with the GEOS-Chem adjoint model (v35), Geosci. Model Dev., 14, 7775–7793, <ext-link xlink:href="https://doi.org/10.5194/gmd-14-7775-2021" ext-link-type="DOI">10.5194/gmd-14-7775-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx70"><label>Zhang et al.(2017)</label><mixed-citation>Zhang, H., Hendricks Franssen, H.-J., Han, X., Vrugt, J. A., and Vereecken, H.: State and parameter estimation of two land surface models using the ensemble Kalman filter and the particle filter, Hydrol. Earth Syst. Sci., 21, 4927–4958, <ext-link xlink:href="https://doi.org/10.5194/hess-21-4927-2017" ext-link-type="DOI">10.5194/hess-21-4927-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx71"><label>Zhuravlev et al.(2013)</label><mixed-citation>Zhuravlev, R., Ganshin, A., Maksyutov, S. S., Oshchepkov, S., and Khattatov, B.: Estimation of global <inline-formula><mml:math id="M750" display="inline"><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> fluxes using ground-based and satellite (GOSAT) observation data with empirical orthogonal functions, Atmospheric and Oceanic Optics, 26, 507–516, <ext-link xlink:href="https://doi.org/10.1134/S1024856013060158" ext-link-type="DOI">10.1134/S1024856013060158</ext-link>, 2013.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>EnviFlux (v1.0): a simplified surface flux inversion tool based on four-dimensional variational data assimilation (4D-Var)</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Agustí-Panareda et al.(2019)</label><mixed-citation>
       Agustí-Panareda, A., Diamantakis, M., Massart, S., Chevallier, F., Muñoz-Sabater, J., Barré, J., Curcoll, R., Engelen, R., Langerock, B., Law, R. M., Loh, Z., Morguí, J. A., Parrington, M., Peuch, V.-H., Ramonet, M., Roehl, C., Vermeulen, A. T., Warneke, T., and Wunch, D.: Modelling CO<sub>2</sub> weather – why horizontal resolution matters, Atmos. Chem. Phys., 19, 7347–7376, <a href="https://doi.org/10.5194/acp-19-7347-2019" target="_blank">https://doi.org/10.5194/acp-19-7347-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>An et al.(2012)</label><mixed-citation>
       An, X., Henne, S., Yao, B., Vollmer, M. K., Zhou, L., and Li, Y.: Estimating emissions of HCFC-22 and CFC-11 in China by atmospheric observations and inverse modeling, Sci. China Ser. C, 55, 2233–2241, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><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. Meteor. Soc., 134, 1951–1970, <a href="https://doi.org/10.1002/qj.339" target="_blank">https://doi.org/10.1002/qj.339</a>, 2008a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><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. Meteor. Soc., 134, 1971–1996, 2008b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bannister(2011)</label><mixed-citation>
       Bannister, R. N.: Issues in the assimilation of the sources of a trace gas by inverse modelling, Comput. Fluids, 46, 106–112, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Bannister(2020)</label><mixed-citation>
       Bannister, R. N.: The ABC-DA system (v1.4): a variational data assimilation system for convective-scale assimilation research with a study of the impact of a balance constraint, Geosci. Model Dev., 13, 3789–3816, <a href="https://doi.org/10.5194/gmd-13-3789-2020" target="_blank">https://doi.org/10.5194/gmd-13-3789-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Bannister(2026a)</label><mixed-citation>
       Bannister, R. N.: Data files for the manuscript “EnviFlux (v1.0): a simplified surface flux inversion tool based on four-dimensional variational data assimilation (4D-Var)”, Zenodo [data set], <a href="https://doi.org/10.5281/zenodo.19630028" target="_blank">https://doi.org/10.5281/zenodo.19630028</a>, 2026a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Bannister(2026b)</label><mixed-citation>
       Bannister, R. N.: EnviFlux techincal and user guide, and code respository, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.18803399" target="_blank">https://doi.org/10.5281/zenodo.18803399</a>, 2026b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Bannister and Wilson(2024)</label><mixed-citation>
       Bannister, R. N. and Wilson, C.: Inverse modelling for surface methane flux estimation with 4DVar: impact of a computationally efficient representation of a non-diagonal B-matrix in INVICAT v4, EGUsphere [preprint], <a href="https://doi.org/10.5194/egusphere-2024-655" target="_blank">https://doi.org/10.5194/egusphere-2024-655</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Basu et al.(2018)</label><mixed-citation>
       Basu, S., Baker, D. F., Chevallier, F., Patra, P. K., Liu, J., and Miller, J. B.: The impact of transport model differences on CO<sub>2</sub> surface flux estimates from OCO-2 retrievals of column average CO<sub>2</sub>, Atmos. Chem. Phys., 18, 7189–7215, <a href="https://doi.org/10.5194/acp-18-7189-2018" target="_blank">https://doi.org/10.5194/acp-18-7189-2018</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Bey et al.(2001)</label><mixed-citation>
       Bey, I., Jacob, D. J., Yantosca, R. M., Logan, J. A., Field, B. D., Fiore, A. M., Li, Q., Liu, H. Y., Mickley, L. J., and Schultz, M. G.: Global modeling of tropospheric chemistry with assimilated meteorology: model description and evaluation, J. Geophys. Res.-Atmos., 106, 23073–23095, <a href="https://doi.org/10.1029/2001JD000807" target="_blank">https://doi.org/10.1029/2001JD000807</a>, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Bisht et al.(2023)</label><mixed-citation>
       Bisht, J. S. H., Patra, P. K., Takigawa, M., Sekiya, T., Kanaya, Y., Saitoh, N., and Miyazaki, K.: Estimation of CH<sub>4</sub> emission based on an advanced 4D-LETKF assimilation system, Geosci. Model Dev., 16, 1823–1838, <a href="https://doi.org/10.5194/gmd-16-1823-2023" target="_blank">https://doi.org/10.5194/gmd-16-1823-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Chandra et al.(2022)</label><mixed-citation>
       Chandra, N., Patra, P. K., Niwa, Y., Ito, A., Iida, Y., Goto, D., Morimoto, S., Kondo, M., Takigawa, M., Hajima, T., and Watanabe, M.: Estimated regional CO<sub>2</sub> flux and uncertainty based on an ensemble of atmospheric CO<sub>2</sub> inversions, Atmos. Chem. Phys., 22, 9215–9243, <a href="https://doi.org/10.5194/acp-22-9215-2022" target="_blank">https://doi.org/10.5194/acp-22-9215-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Chen et al.(2019)</label><mixed-citation>
       Chen, H. W., Zhang, F., Lauvaux, T., Davis, K. J., Feng, S., Butler, M. P., and Alley, R. B.: Characterization of regional-scale CO<sub>2</sub> transport uncertainties in an ensemble with flow-dependent transport errors, Geophys. Res. Lett., 46, 4049–4058, <a href="https://doi.org/10.1029/2018GL081341" target="_blank">https://doi.org/10.1029/2018GL081341</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Chevallier et al.(2005a)</label><mixed-citation>
       Chevallier, F., Engelen, R. J., and Peylin, P.: The contribution of AIRS data to the estimation of CO<sub>2</sub> sources and sinks, Geophys. Res. Lett., 32, <a href="https://doi.org/10.1029/2005GL024229" target="_blank">https://doi.org/10.1029/2005GL024229</a>, 2005a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Chevallier et al.(2005b)</label><mixed-citation>
       Chevallier, F., Fisher, M., Peylin, P., Serrar, S., Bousquet, P., Bréon, F.-M., Chédin, A., and Ciais, P.: Inferring CO<sub>2</sub> sources and sinks from satellite observations: method and application to TOVS data, J. Geophys. Res.-Atmos., 110, <a href="https://doi.org/10.1029/2005JD006390" target="_blank">https://doi.org/10.1029/2005JD006390</a>, 2005b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Chevallier et al.(2007)</label><mixed-citation>
       Chevallier, F., Bréon, F.-M., and Rayner, P. J.: Contribution of the Orbiting Carbon Observatory to the estimation of CO<sub>2</sub> sources and sinks: theoretical study in a variational data assimilation framework, J. Geophys. Res.-Atmos., 112, <a href="https://doi.org/10.1029/2006JD007375" target="_blank">https://doi.org/10.1029/2006JD007375</a>, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Chevallier et al.(2010)</label><mixed-citation>
       Chevallier, F., Feng, L., Bösch, H., Palmer, P. I., and Rayner, P. J.: On the impact of transport model errors for the estimation of CO<sub>2</sub> surface fluxes from GOSAT observations, Geophys. Res. Lett., 37, 1–5, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Chipperfield(2006)</label><mixed-citation>
       Chipperfield, M.: New version of the TOMCAT/SLIMCAT off-line chemical transport model: intercomparison of stratospheric tracer experiments, Q. J. Roy. Meteor. Soc., 132, 1179–1203, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Dadheech and Turner(2026)</label><mixed-citation>
       Dadheech, N. and Turner, A. J.: Simulating out-of-sample atmospheric transport to enable flux inversions, Atmos. Chem. Phys., 26, 427–441, <a href="https://doi.org/10.5194/acp-26-427-2026" target="_blank">https://doi.org/10.5194/acp-26-427-2026</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Errera and Ménard(2012)</label><mixed-citation>
       Errera, Q. and Ménard, R.: Technical Note: Spectral representation of spatial correlations in variational assimilation with grid point models and application to the Belgian Assimilation System for Chemical Observations (BASCOE), Atmos. Chem. Phys., 12, 10015–10031, <a href="https://doi.org/10.5194/acp-12-10015-2012" target="_blank">https://doi.org/10.5194/acp-12-10015-2012</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Feng et al.(2009)</label><mixed-citation>
       Feng, L., Palmer, P. I., Bösch, H., and Dance, S.: Estimating surface CO<sub>2</sub> fluxes from space-borne CO<sub>2</sub> dry air mole fraction observations using an ensemble Kalman Filter, Atmos. Chem. Phys., 9, 2619–2633, <a href="https://doi.org/10.5194/acp-9-2619-2009" target="_blank">https://doi.org/10.5194/acp-9-2619-2009</a>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Fisher and Courtier(1995)</label><mixed-citation>
       Fisher, M. and Courtier, P.: Estimating the covariance matrices of analysis and forecast error in variational data assimilation, ECMWF Technical Memorandum, 220, <a href="https://doi.org/10.21957/1dxrasjit" target="_blank">https://doi.org/10.21957/1dxrasjit</a>, 1995.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Fraser et al.(2013)</label><mixed-citation>
       Fraser, A., Palmer, P. I., Feng, L., Boesch, H., Cogan, A., Parker, R., Dlugokencky, E. J., Fraser, P. J., Krummel, P. B., Langenfelds, R. L., O'Doherty, S., Prinn, R. G., Steele, L. P., van der Schoot, M., and Weiss, R. F.: Estimating regional methane surface fluxes: the relative importance of surface and GOSAT mole fraction measurements, Atmos. Chem. Phys., 13, 5697–5713, <a href="https://doi.org/10.5194/acp-13-5697-2013" target="_blank">https://doi.org/10.5194/acp-13-5697-2013</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Golub and Van Loan(1996)</label><mixed-citation>
       Golub, G. H. and Van Loan, C. F.: Matrix computations, Johns Hopkins University, Press, Baltimore, MD, USA, ISBN 978-0-8018-5414-9, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Gonzi et al.(2011)</label><mixed-citation>
       Gonzi, S., Palmer, P. I., Barkley, M. P., De Smedt, I., and van Roozendael, M.: Biomass burning emission estimates inferred from satellite column measurements of HCHO: sensitivity to co-emitted aerosol and injection height, Geophys. Res. Lett., 38, <a href="https://doi.org/10.1029/2011GL047890" target="_blank">https://doi.org/10.1029/2011GL047890</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Grell et al.(2005)</label><mixed-citation>
       Grell, G. A., Peckham, S. E., Schmitz, R., McKeen, S. A., Frost, G., Skamarock, W. C., and Eder, B.: Fully coupled “online” chemistry within the WRF model, Atmos. Environ., 39, 6957–6975, <a href="https://doi.org/10.1016/j.atmosenv.2005.04.027" target="_blank">https://doi.org/10.1016/j.atmosenv.2005.04.027</a>, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Gurney et al.(2002)</label><mixed-citation>
       Gurney, K. R., Law, R. M., Denning, A. S., Rayner, P. J., Baker, D., Bousquet, P., Bruhwiler, L., Chen, Y.-H., Ciais, P., Fan, S., Fung, I. Y., Gloor, M., Heimann, M., Higuchi, K., John, J., Maki, T., Maksyutov, S., Masarie, K., Peylin, P., Prather, M., Pak, B. C., Randerson, J., Sarmiento, J., Taguchi, S., Takahashi, T., and Yuen, C.-W.: Towards robust regional estimates of CO<sub>2</sub> sources and sinks using atmospheric transport models, Nature, 415, 626–630, <a href="https://doi.org/10.1038/415626a" target="_blank">https://doi.org/10.1038/415626a</a>,  2002.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Henze et al.(2007)</label><mixed-citation>
       Henze, D. K., Hakami, A., and Seinfeld, J. H.: Development of the adjoint of GEOS-Chem, Atmos. Chem. Phys., 7, 2413–2433, <a href="https://doi.org/10.5194/acp-7-2413-2007" target="_blank">https://doi.org/10.5194/acp-7-2413-2007</a>, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Hersbach et al.(2020)</label><mixed-citation>
       Hersbach, H., Bell, B., Berrisford, P., Hirahara, S., Horányi, A., Muñoz-Sabater, J., Nicolas, J., Peubey, C., Radu, R., Schepers, D., Simmons. A., Soci, C., Abdalla, S., Abellan, X., Balsamo, G., Bechtold, P., Biavati, G., Bidlot, J., Bonavita, M., De Chiara, G., Dahlgren, P., Dee, D., Diamantakis, M., Dragani, R., Flemming, J., Forbes, R., Fuentes, M., Geer, A., Haimberger, L., Healy, S., Hogan, R. J., Hólm, E., Janisková, M., Keeley, S., Laloyaux, P., Lopez, P., Lupu, C., Radnoti, G., de Rosnay, P., Rozum, I.,  Vamborg, F., Villaume, S., and Thépaut, J.-N.: The ERA5 global reanalysis, Q. J. Roy. Meteor. Soc., 146, 1999–2049, <a href="https://doi.org/10.1002/qj.3803" target="_blank">https://doi.org/10.1002/qj.3803</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Hirsch et al.(2006)</label><mixed-citation>
       Hirsch, A., Michalak, A., Bruhwiler, L., Peters, W., Dlugokencky, E., and Tans, P.: Inverse modeling estimates of the global nitrous oxide surface flux from 1998–2001, Global Biogeochem. Cy., 20, <a href="https://doi.org/10.1029/2004GB002443" target="_blank">https://doi.org/10.1029/2004GB002443</a>,  2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Hodyss and Nichols(2015)</label><mixed-citation>
       Hodyss, D. and Nichols, N.: The error of representation: basic understanding, Tellus A, 67, 24822, <a href="https://doi.org/10.3402/tellusa.v67.24822" target="_blank">https://doi.org/10.3402/tellusa.v67.24822</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Hourdin and Armengaud(1999)</label><mixed-citation>
       Hourdin, F. and Armengaud, A.: Test of a hierarchy of finite-volume schemes for transport of trace species in an atmospheric general circulation model, Mon. Wea. Rev, 127, 822–837, <a href="https://doi.org/10.1175/1520-0493(1999)127&lt;0822:TUOFVM&gt;2.0.CO;2" target="_blank">https://doi.org/10.1175/1520-0493(1999)127&lt;0822:TUOFVM&gt;2.0.CO;2</a>, 1999.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Houweling et al.(1999)</label><mixed-citation>
       Houweling, S., Kaminski, T., Dentener, F., Lelieveld, J., and Heimann, M.: Inverse modeling of methane sources and sinks using the adjoint of a global transport model, J. Geophys. Res.-Atmos., 104, 26137–26160, 1999.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Houweling et al.(2010)</label><mixed-citation>
       Houweling, S., Aben, I., Breon, F.-M., Chevallier, F., Deutscher, N., Engelen, R., Gerbig, C., Griffith, D., Hungershoefer, K., Macatangay, R., Marshall, J., Notholt, J., Peters, W., and Serrar, S.: The importance of transport model uncertainties for the estimation of CO<sub>2</sub> sources and sinks using satellite measurements, Atmos. Chem. Phys., 10, 9981–9992, <a href="https://doi.org/10.5194/acp-10-9981-2010" target="_blank">https://doi.org/10.5194/acp-10-9981-2010</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Houweling et al.(2017)</label><mixed-citation>
       Houweling, S., Bergamaschi, P., Chevallier, F., Heimann, M., Kaminski, T., Krol, M., Michalak, A. M., and Patra, P.: Global inverse modeling of CH<sub>4</sub> sources and sinks: an overview of methods, Atmos. Chem. Phys., 17, 235–256, <a href="https://doi.org/10.5194/acp-17-235-2017" target="_blank">https://doi.org/10.5194/acp-17-235-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Hu et al.(2023)</label><mixed-citation>
       Hu, Y., Li, Y., Ma, X., Liang, Y., You, W., Pan, X., and Zang, Z.: The optimization of SO2 emissions by the 4DVAR and EnKF methods and its application in WRF-Chem, Sci. Total Environ., 888, 163796, <a href="https://doi.org/10.1016/j.scitotenv.2023.163796" target="_blank">https://doi.org/10.1016/j.scitotenv.2023.163796</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Jiang et al.(2013)</label><mixed-citation>
       Jiang, Z., Jones, D. B., Worden, H. M., Deeter, M. N., Henze, D. K., Worden, J., Bowman, K. W., Brenninkmeijer, C., and Schuck, T.: Impact of model errors in convective transport on CO source estimates inferred from MOPITT CO retrievals, J. Geophys. Res.-Atmos., 118, 2073–2083, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Krol et al.(2005)</label><mixed-citation>
       Krol, M., Houweling, S., Bregman, B., van den Broek, M., Segers, A., van Velthoven, P., Peters, W., Dentener, F., and Bergamaschi, P.: The two-way nested global chemistry-transport zoom model TM5: algorithm and applications, Atmos. Chem. Phys., 5, 417–432, <a href="https://doi.org/10.5194/acp-5-417-2005" target="_blank">https://doi.org/10.5194/acp-5-417-2005</a>, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Lewis et al.(2006)</label><mixed-citation>
       Lewis, J. M., Lakshmivarahan, S., and Dhall, S.: Dynamic data assimilation: a least squares approach, Vol. 13, Cambridge University Press, ISBN 978-0-521-85155-8, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Lin and Gerbig(2005)</label><mixed-citation>
       Lin, J. and Gerbig, C.: Accounting for the effect of transport errors on tracer inversions, Geophys. Res. Lett., 32, <a href="https://doi.org/10.1029/2004GL021127" target="_blank">https://doi.org/10.1029/2004GL021127</a>, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Lucas et al.(2017)</label><mixed-citation>
       Lucas, D. D., Simpson, M., Cameron-Smith, P., and Baskett, R. L.: Bayesian inverse modeling of the atmospheric transport and emissions of a controlled tracer release from a nuclear power plant, Atmos. Chem. Phys., 17, 13521–13543, <a href="https://doi.org/10.5194/acp-17-13521-2017" target="_blank">https://doi.org/10.5194/acp-17-13521-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Lunt et al.(2019)</label><mixed-citation>
       Lunt, M. F., Palmer, P. I., Feng, L., Taylor, C. M., Boesch, H., and Parker, R. J.: An increase in methane emissions from tropical Africa between 2010 and 2016 inferred from satellite data, Atmos. Chem. Phys., 19, 14721–14740, <a href="https://doi.org/10.5194/acp-19-14721-2019" target="_blank">https://doi.org/10.5194/acp-19-14721-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Ma et al.(2021)</label><mixed-citation>
       Ma, J., Kooijmans, L. M. J., Cho, A., Montzka, S. A., Glatthor, N., Worden, J. R., Kuai, L., Atlas, E. L., and Krol, M. C.: Inverse modelling of carbonyl sulfide: implementation, evaluation and implications for the global budget, Atmos. Chem. Phys., 21, 3507–3529, <a href="https://doi.org/10.5194/acp-21-3507-2021" target="_blank">https://doi.org/10.5194/acp-21-3507-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Meirink et al.(2006)</label><mixed-citation>
       Meirink, J. F., Eskes, H. J., and Goede, A. P. H.: Sensitivity analysis of methane emissions derived from SCIAMACHY observations through inverse modelling, Atmos. Chem. Phys., 6, 1275–1292, <a href="https://doi.org/10.5194/acp-6-1275-2006" target="_blank">https://doi.org/10.5194/acp-6-1275-2006</a>, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Meirink et al.(2008a)</label><mixed-citation>
       Meirink, J. F., Bergamaschi, P., Frankenberg, C., d'Amelio, M. T., Dlugokencky, E. J., Gatti, L. V., Houweling, S., Miller, J. B., Röckmann, T., Villani, M. G., and Krol, M. C.: Four-dimensional variational data assimilation for inverse modeling of atmospheric methane emissions: analysis of SCIAMACHY observations, J. Geophys. Res.-Atmos., 113, <a href="https://doi.org/10.1029/2007JD009740" target="_blank">https://doi.org/10.1029/2007JD009740</a>, 2008a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Meirink et al.(2008b)</label><mixed-citation>
       Meirink, J. F., Bergamaschi, P., and Krol, M. C.: Four-dimensional variational data assimilation for inverse modelling of atmospheric methane emissions: method and comparison with synthesis inversion, Atmos. Chem. Phys., 8, 6341–6353, <a href="https://doi.org/10.5194/acp-8-6341-2008" target="_blank">https://doi.org/10.5194/acp-8-6341-2008</a>, 2008b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Munassar et al.(2023)</label><mixed-citation>
       Munassar, S., Monteil, G., Scholze, M., Karstens, U., Rödenbeck, C., Koch, F.-T., Totsche, K. U., and Gerbig, C.: Why do inverse models disagree? A case study with two European CO<sub>2</sub> inversions, Atmos. Chem. Phys., 23, 2813–2828, <a href="https://doi.org/10.5194/acp-23-2813-2023" target="_blank">https://doi.org/10.5194/acp-23-2813-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Nicely et al.(2018)</label><mixed-citation>
       Nicely, J. M., Canty, T. P., Manyin, M., Oman, L. D., Salawitch, R. J., Steenrod, S. D., Strahan, S. E., and Strode, S. A.: Changes in global tropospheric OH expected as a result of climate change over the last several decades, J. Geophys. Res.-Atmos., 123, 10–774, <a href="https://doi.org/10.1029/2018JD028388" target="_blank">https://doi.org/10.1029/2018JD028388</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Niwa and Fujii(2020)</label><mixed-citation>
       Niwa, Y. and Fujii, Y.: A conjugate BFGS method for accurate estimation of a posterior error covariance matrix in a linear inverse problem, Q. J. Roy. Meteor. Soc., 146, 3118–3143, <a href="https://doi.org/10.1002/qj.3838" target="_blank">https://doi.org/10.1002/qj.3838</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Palmer et al.(2003)</label><mixed-citation>
       Palmer, P. I., Jacob, D. J., Jones, D., Heald, C. L., Yantosca, R. M., Logan, J. A., Sachse, G. W., and Streets, D. G.: Inverting for emissions of carbon monoxide from Asia using aircraft observations over the western Pacific, J. Geophys. Res.-Atmos., 108, <a href="https://doi.org/10.1029/2003JD003397" target="_blank">https://doi.org/10.1029/2003JD003397</a>, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>Palmer et al.(2006)</label><mixed-citation>
       Palmer, P. I., Abbot, D. S., Fu, T.-M., Jacob, D. J., Chance, K., Kurosu, T. P., Guenther, A., Wiedinmyer, C., Stanton, J. C., Pilling, M. J., Pressley, S. N., Lamb, B., and Sumner, A. L.: Quantifying the seasonal and interannual variability of North American isoprene emissions using satellite observations of the formaldehyde column, J. Geophys. Res.-Atmos., 111, <a href="https://doi.org/10.1029/2005JD006689" target="_blank">https://doi.org/10.1029/2005JD006689</a>, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Pendergrass et al.(2023)</label><mixed-citation>
       Pendergrass, D. C., Jacob, D. J., Nesser, H., Varon, D. J., Sulprizio, M., Miyazaki, K., and Bowman, K. W.: CHEEREIO 1.0: a versatile and user-friendly ensemble-based chemical data assimilation and emissions inversion platform for the GEOS-Chem chemical transport model, Geosci. Model Dev., 16, 4793–4810, <a href="https://doi.org/10.5194/gmd-16-4793-2023" target="_blank">https://doi.org/10.5194/gmd-16-4793-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Peylin et al.(2005)</label><mixed-citation>
       Peylin, P., Rayner, P. J., Bousquet, P., Carouge, C., Hourdin, F., Heinrich, P., Ciais, P., and AEROCARB contributors: Daily CO<sub>2</sub> flux estimates over Europe from continuous atmospheric measurements: 1, inverse methodology, Atmos. Chem. Phys., 5, 3173–3186, <a href="https://doi.org/10.5194/acp-5-3173-2005" target="_blank">https://doi.org/10.5194/acp-5-3173-2005</a>, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>Press et al.(2007)</label><mixed-citation>
       Press, W., Teukolsky, S., Vetterling, W., and Flannery, B.: Numerical Recipes 3rd Edition: The Art of Scientific Computing, Cambridge University Press, Cambridge, UK, ISBN  978-0-521-88068-8, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Qu et al.(2021)</label><mixed-citation>
       Qu, Z., Jacob, D. J., Shen, L., Lu, X., Zhang, Y., Scarpelli, T. R., Nesser, H., Sulprizio, M. P., Maasakkers, J. D., Bloom, A. A., Worden, J. R., Parker, R. J., and Delgado, A. L.: Global distribution of methane emissions: a comparative inverse analysis of observations from the TROPOMI and GOSAT satellite instruments, Atmos. Chem. Phys., 21, 14159–14175, <a href="https://doi.org/10.5194/acp-21-14159-2021" target="_blank">https://doi.org/10.5194/acp-21-14159-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib57"><label>Rigby et al.(2008)</label><mixed-citation>
       Rigby, M., Prinn, R. G., Fraser, P. J., Simmonds, P. G., Langenfelds, R., Huang, J., Cunnold, D. M., Steele, L. P., Krummel, P. B., Weiss, R. F., O'Doherty, S., Salameh, P. K., Wang, H. J., Harth, C. M., Mühle, J., and Porter, L. W.: Renewed growth of atmospheric methane, Geophys. Res. Lett., 35, <a href="https://doi.org/10.1029/2008GL036037" target="_blank">https://doi.org/10.1029/2008GL036037</a>, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib58"><label>Rodgers(2000)</label><mixed-citation>
       Rodgers, C. D.: Inverse Methods for Atmospheric Sounding: Theory and Practice, Vol. 2, World Scientific, ISBN 978-9810227401, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib59"><label>Rohs et al.(2006)</label><mixed-citation>
       Rohs, S., Schiller, C., Riese, M., Engel, A., Schmidt, U., Wetter, T., Levin, I., Nakazawa, T., and Aoki, S.: Long-term changes of methane and hydrogen in the stratosphere in the period 1978–2003 and their impact on the abundance of stratospheric water vapor, J. Geophys. Res.-Atmos., 111, <a href="https://doi.org/10.1029/2005JD006877" target="_blank">https://doi.org/10.1029/2005JD006877</a>, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib60"><label>Schuh et al.(2019)</label><mixed-citation>
       Schuh, A. E., Jacobson, A. R., Basu, S., Weir, B., Baker, D., Bowman, K., Chevallier, F., Crowell, S., Davis, K. J., Deng, F., Denning, S., Feng, L., Jones, D., Liu, J., and Palmer, P. I.: Quantifying the impact of atmospheric transport uncertainty on CO<sub>2</sub> surface flux estimates, Global Biogeochem. Cy., 33, 484–500, <a href="https://doi.org/10.1029/2018GB006086" target="_blank">https://doi.org/10.1029/2018GB006086</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib61"><label>Swarztrauber et al.(2016)</label><mixed-citation>
       Swarztrauber, P., Valent, R., and Burkardt, J.: FFTPack module for Fortran, <a href="https://github.com/keurfonluu/FFTPack/blob/master/src/fftpack5.f90" target="_blank"/> (last access: 31 January 2023), 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib62"><label>Tandeo et al.(2020)</label><mixed-citation>
       Tandeo, P., Ailliot, P., Bocquet, M., Carrassi, A., Miyoshi, T., Pulido, M., and Zhen, Y.: A review of innovation-based methods to jointly estimate model and observation error covariance matrices in ensemble data assimilation, Mon. Weather Rev., 148, 3973–3994, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib63"><label>Thompson et al.(2019)</label><mixed-citation>
       Thompson, R. L., Lassaletta, L., Patra, P. K., Wilson, C., Wells, K. C., Gressent, A., Koffi, E. N., Chipperfield, M. P., Winiwarter, W., Davidson, E. A., Tian, H., and Canadell, J. G.: Acceleration of global N<sub>2</sub>O emissions seen from two decades of atmospheric inversion, Nat. Clim. Change, 9, 993–998, <a href="https://doi.org/10.1038/s41558-019-0613-7" target="_blank">https://doi.org/10.1038/s41558-019-0613-7</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib64"><label>Voshtani et al.(2023)</label><mixed-citation>
       Voshtani, S., Ménard, R., Walker, T. W., and Hakami, A.: Use of assimilation analysis in 4D-Var source inversion: Observing System Simulation Experiments (OSSEs) with GOSAT methane and hemispheric CMAQ, Atmosphere-Basel, 14, 758, <a href="https://doi.org/10.3390/atmos14040758" target="_blank">https://doi.org/10.3390/atmos14040758</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib65"><label>Waller et al.(2016)</label><mixed-citation>
       Waller, J. A., Dance, S. L., and Nichols, N. K.: Theoretical insight into diagnosing observation error correlations using observation-minus-background and observation-minus-analysis statistics, Q. J. Roy. Meteor. Soc., 142, 418–431, <a href="https://doi.org/10.1002/qj.2661" target="_blank">https://doi.org/10.1002/qj.2661</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib66"><label>Wieczorek et al.(2018)</label><mixed-citation>
       Wieczorek, M. A., Meschede, M., Sales de Andrade, E., Oshchepkov, I., Xu, B., Leinweber, K., and Walker, A.: SHTOOLS: Version 4.4, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.2350781" target="_blank">https://doi.org/10.5281/zenodo.2350781</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib67"><label>Wilson et al.(2014)</label><mixed-citation>
       Wilson, C., Chipperfield, M. P., Gloor, M., and Chevallier, F.: Development of a variational flux inversion system (INVICAT v1.0) using the TOMCAT chemical transport model, Geosci. Model Dev., 7, 2485–2500, <a href="https://doi.org/10.5194/gmd-7-2485-2014" target="_blank">https://doi.org/10.5194/gmd-7-2485-2014</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib68"><label>Yokota et al.(2009)</label><mixed-citation>
       Yokota, T., Yoshida, Y., Eguchi, N., Ota, Y., Tanaka, T., Watanabe, H., and Maksyutov, S.: Global concentrations of CO<sub>2</sub> and CH<sub>4</sub> retrieved from GOSAT: first preliminary results, Sola, 5, 160–163, <a href="https://doi.org/10.2151/sola.2009-041" target="_blank">https://doi.org/10.2151/sola.2009-041</a>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib69"><label>Yu et al.(2021)</label><mixed-citation>
       Yu, X., Millet, D. B., and Henze, D. K.: How well can inverse analyses of high-resolution satellite data resolve heterogeneous methane fluxes? Observing system simulation experiments with the GEOS-Chem adjoint model (v35), Geosci. Model Dev., 14, 7775–7793, <a href="https://doi.org/10.5194/gmd-14-7775-2021" target="_blank">https://doi.org/10.5194/gmd-14-7775-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib70"><label>Zhang et al.(2017)</label><mixed-citation>
       Zhang, H., Hendricks Franssen, H.-J., Han, X., Vrugt, J. A., and Vereecken, H.: State and parameter estimation of two land surface models using the ensemble Kalman filter and the particle filter, Hydrol. Earth Syst. Sci., 21, 4927–4958, <a href="https://doi.org/10.5194/hess-21-4927-2017" target="_blank">https://doi.org/10.5194/hess-21-4927-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib71"><label>Zhuravlev et al.(2013)</label><mixed-citation>
       Zhuravlev, R., Ganshin, A., Maksyutov, S. S., Oshchepkov, S., and Khattatov, B.: Estimation of global CO<sub>2</sub> fluxes using ground-based and satellite (GOSAT) observation data with empirical orthogonal functions, Atmospheric and Oceanic Optics, 26, 507–516, <a href="https://doi.org/10.1134/S1024856013060158" target="_blank">https://doi.org/10.1134/S1024856013060158</a>, 2013.

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