<?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-8233-2026</article-id><title-group><article-title>GWSWEX v1.0: a dual-solver 1D unsaturated zone model for mass-conservative groundwater recharge and runoff computation in distributed hydrological modelling</article-title><alt-title>GWSWEX v1.0: a dual-solver 1D UZ model</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Kootanoor Sheshadrivasan</surname><given-names>Veethahavya</given-names></name>
          <email>veethahavya@natur.cuni.cz</email>
        <ext-link>https://orcid.org/0000-0002-2709-2967</ext-link></contrib>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Langhammer</surname><given-names>Jakub</given-names></name>
          <email>jakub.langhammer@natur.cuni.cz</email>
        </contrib>
        <aff id="aff1"><label>1</label><institution>Department of Physical Geography and Geoecology, Faculty of Science, Charles University, Prague, Czech Republic</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Veethahavya Kootanoor Sheshadrivasan (veethahavya@natur.cuni.cz) and Jakub Langhammer (jakub.langhammer@natur.cuni.cz)</corresp></author-notes><pub-date><day>7</day><month>September</month><year>2026</year></pub-date>
      
      <volume>19</volume>
      <issue>17</issue>
      <fpage>8233</fpage><lpage>8267</lpage>
      <history>
        <date date-type="received"><day>21</day><month>May</month><year>2026</year></date>
           <date date-type="rev-request"><day>1</day><month>June</month><year>2026</year></date>
           <date date-type="rev-recd"><day>28</day><month>July</month><year>2026</year></date>
           <date date-type="accepted"><day>25</day><month>August</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Veethahavya Kootanoor Sheshadrivasan</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/8233/2026/gmd-19-8233-2026.html">This article is available from https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e91">Faithful numerical representation of the coupled groundwater (GW)–unsaturated-zone (UZ)–surface-water (SW) dynamics at regional scales is constrained by the structural extremes currently available: fully three-dimensional Richards-equation solvers resolve variably saturated flow rigorously but at a per-evaluation cost that forecloses ensemble calibration and multi-decadal projection, whereas conceptual bucket schemes cannot track a moving groundwater head, represent capillary rise, or impose a soil-moisture-dependent evapotranspiration (ET) stress. This study introduces GWSWEX (Groundwater–Surface Water EXchange), a vertically resolved, process-based UZ model designed to sit between an external GW model and an external SW model within an integrated modelling chain. Its principal innovations are two interchangeable solvers behind a single unified API: an explicit operator-split bucket-sequence solver with CFL-adaptive sub-stepping and an implicit mixed-form Richards solver with Picard linearisation, sharing the same Mualem–van Genuchten constitutive relations and piecewise-linear drainable-volume function for a freely moving groundwater head; the per-step storage budget closes to floating-point tolerance in the explicit solver and to a small, well-characterised residual in the implicit solver, enabling a coupled GW–UZ–SW iteration to converge without under-relaxation. Verification against HYDRUS-1D across six soil profiles under two contrasting forcing scenarios shows sub-centimetre to near-centimetre groundwater-head accuracy under smooth daily forcing, with eleven of twelve basic-scenario cases attaining an RMSE at or below the 2 cm discretisation step and a wet-phase mean RMSE of approximately 4 cm (implicit) and 8 cm (explicit) under intensive hourly forcing; an iterated one-at-a-time sensitivity analysis characterises the empirical parameters and the structural limits of the layered-bucket abstraction, while a parallel-ensemble benchmark shows both solvers completing a thousand-column ensemble six to twelve times faster than parallelised HYDRUS-1D, at sub-linear run-time scaling exponents of approximately 0.92–0.93 that render ensemble-grade calibration and multi-decadal projection tractable on mainstream consumer-grade hardware.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Grantová Agentura, Univerzita Karlova</funding-source>
<award-id>3300-246623</award-id>
</award-group>
<award-group id="gs2">
<funding-source>European Commission</funding-source>
<award-id>CZ.02.01.01/00/22_008/0004605</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="d2e103">The integrated representation of GW, UZ, and SW dynamics has been a recurring requirement of regional-scale hydrology since at least the foundational studies of <xref ref-type="bibr" rid="bib1.bibx36" id="text.1"/>, and is now embedded in regulatory frameworks such as the EU Water Framework Directive <xref ref-type="bibr" rid="bib1.bibx6 bib1.bibx4" id="paren.2"/>. Within this continuum the unsaturated zone occupies a distinctive position: it partitions precipitation between infiltration and runoff, governs the timing and magnitude of groundwater recharge, and controls the soil-moisture state on which actual evapotranspiration depends, thereby regulating both drought and flood signals as they propagate between the atmosphere, the river network and the aquifer <xref ref-type="bibr" rid="bib1.bibx11 bib1.bibx20 bib1.bibx5 bib1.bibx56 bib1.bibx3 bib1.bibx58 bib1.bibx77" id="paren.3"/>. Despite this central role, reviews of process representations in regional and Earth-system models continue to report the lower UZ–GW boundary as free or restricted drainage and the GW–SW exchange as poorly represented <xref ref-type="bibr" rid="bib1.bibx74 bib1.bibx20 bib1.bibx31 bib1.bibx37" id="paren.4"/>.</p>
      <p id="d2e118">Two structurally distinct families of models bracket the present landscape. At one end, fully integrated 3-D Richards-class models <xref ref-type="bibr" rid="bib1.bibx47 bib1.bibx15 bib1.bibx64 bib1.bibx55" id="paren.5"/> resolve the variably saturated subsurface rigorously, but at a per-evaluation cost that, even with massive parallelism <xref ref-type="bibr" rid="bib1.bibx45" id="paren.6"/>, precludes the multi-decadal simulation, the Bayesian calibration, projection ensembles, and sensitivity studies that are routine elsewhere in the geosciences <xref ref-type="bibr" rid="bib1.bibx28 bib1.bibx32" id="paren.7"/>; <xref ref-type="bibr" rid="bib1.bibx9" id="text.8"/>, building on observations dating to <xref ref-type="bibr" rid="bib1.bibx8" id="text.9"/>, further argues that, in many regional-scale contexts, the Richards equation is at once too detailed (over-weighting capillary forces) and not detailed enough (ignoring preferential and non-equilibrium flow; see also <xref ref-type="bibr" rid="bib1.bibx10" id="altparen.10"/>). At the other end, the layered-bucket and conceptual schemes that underpin most regional integrated hydrological models achieve tractability at the cost of the vertical structure that faithful GW–UZ–SW coupling requires; they cannot represent a freely moving groundwater head as a prognostic state, capillary rise from a shallow water table into a depleting root zone, or an ET stress that responds to the local soil-moisture profile rather than a column average. The classification offered by <xref ref-type="bibr" rid="bib1.bibx43" id="text.11"/> is a useful frame here: the requirement is for a process-based middle of the modelling spectrum, neither so reductive as to reduce to a calibrated water balance, nor so universal as to carry the full computational burden of a 3-D Richards solver.</p>
      <p id="d2e143">A growing middle-ground literature <xref ref-type="bibr" rid="bib1.bibx12 bib1.bibx13 bib1.bibx16 bib1.bibx14 bib1.bibx63" id="paren.12"/> and recent reviews of the GW–SW exchange landscape <xref ref-type="bibr" rid="bib1.bibx40 bib1.bibx3 bib1.bibx82 bib1.bibx1" id="paren.13"/> confirm that the gap between integrated 3-D models and bucket-style conceptual models has narrowed but not closed; the reduced-order semi-continuum approaches now being explored for the unsaturated zone <xref ref-type="bibr" rid="bib1.bibx46" id="paren.14"/> remain some distance from the integrated-modelling chains in which they would operate. What remains largely missing is an openly available, vertically resolved, process-based UZ component that simultaneously: (i) tracks a freely moving groundwater head within a layered, heterogeneous column and exposes it as a prognostic state to an external GW model; (ii) couples GW, UZ, and SW within a single mass-conservative framework; (iii) relies on physically interpretable constitutive relations rather than empirical surrogates; (iv) absorbs sharp atmospheric forcing without operator intervention through adaptive or unconditionally stable time-stepping; and (v) is element-parallel and computationally frugal enough for multi-decadal simulations, ensemble-grade calibration, projection, and sensitivity analyses. A second, equally consequential but less technical gap concerns reproducibility: barriers to source-code sharing and fragmented developer communities continue to limit the cumulative growth of the field <xref ref-type="bibr" rid="bib1.bibx23" id="paren.15"/>; as <xref ref-type="bibr" rid="bib1.bibx29" id="text.16"/> illustrate, the community consequently struggles to explain why two well-regarded models diverge in their projections.</p>
      <p id="d2e161">The reduced-order couplers closest to the present work occupy the same intermediate position, yet each stops short of the combination that GWSWEX assembles: conceptual unsaturated storages coupled to a saturated-zone solver under a hydrostatic-equilibrium assumption <xref ref-type="bibr" rid="bib1.bibx12 bib1.bibx13" id="paren.17"/>, a methodological 1-D Richards–Boussinesq coupling in an interpreted language <xref ref-type="bibr" rid="bib1.bibx14" id="paren.18"/>, an empirical drainage lower boundary calibrated against a 2-D reference <xref ref-type="bibr" rid="bib1.bibx63" id="paren.19"/>, and the conceptual soil storage of an openly released regional and global model <xref ref-type="bibr" rid="bib1.bibx16" id="paren.20"/>. A capability comparison against these couplers and against representative unsaturated-zone, integrated, and conceptual models (Table <xref ref-type="table" rid="T1"/>) situates the position that GWSWEX is designed to occupy, the detailed model-by-model assessment being deferred to Sect. <xref ref-type="sec" rid="Ch1.S4.SS6"/>.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e185">Capability comparison of GWSWEX with representative unsaturated-zone, integrated, and conceptual models.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="justify" colwidth="3cm"/>
     <oasis:colspec colnum="2" colname="col2" align="justify" colwidth="1.7cm"/>
     <oasis:colspec colnum="3" colname="col3" align="justify" colwidth="2.2cm"/>
     <oasis:colspec colnum="4" colname="col4" align="justify" colwidth="1.7cm"/>
     <oasis:colspec colnum="5" colname="col5" align="justify" colwidth="2.2cm"/>
     <oasis:colspec colnum="6" colname="col6" align="justify" colwidth="1.7cm"/>
     <oasis:colspec colnum="7" colname="col7" align="justify" colwidth="1.7cm"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Capability</oasis:entry>
         <oasis:entry colname="col2" align="left">GWSWEX</oasis:entry>
         <oasis:entry colname="col3" align="left">HYDRUS-1D</oasis:entry>
         <oasis:entry colname="col4" align="left">MODFLOW–UZF1</oasis:entry>
         <oasis:entry colname="col5" align="left">MIKE SHE</oasis:entry>
         <oasis:entry colname="col6" align="left">ParFlow</oasis:entry>
         <oasis:entry colname="col7" align="left">Bucket/conceptual</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Subsurface dimensionality</oasis:entry>
         <oasis:entry colname="col2" align="left">1-D (layered)</oasis:entry>
         <oasis:entry colname="col3" align="left">1-D</oasis:entry>
         <oasis:entry colname="col4" align="left">1-D (kinematic)</oasis:entry>
         <oasis:entry colname="col5" align="left">1-D UZ <inline-formula><mml:math id="M3" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> 3-D GW</oasis:entry>
         <oasis:entry colname="col6" align="left">3-D</oasis:entry>
         <oasis:entry colname="col7" align="left">lumped</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Resolved matric-potential gradient</oasis:entry>
         <oasis:entry colname="col2" align="left">yes</oasis:entry>
         <oasis:entry colname="col3" align="left">yes</oasis:entry>
         <oasis:entry colname="col4" align="left">no</oasis:entry>
         <oasis:entry colname="col5" align="left">yes (Richards opt.)</oasis:entry>
         <oasis:entry colname="col6" align="left">yes</oasis:entry>
         <oasis:entry colname="col7" align="left">no</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Prognostic moving GW head</oasis:entry>
         <oasis:entry colname="col2" align="left">yes</oasis:entry>
         <oasis:entry colname="col3" align="left">implicit</oasis:entry>
         <oasis:entry colname="col4" align="left">yes (GW solver)</oasis:entry>
         <oasis:entry colname="col5" align="left">yes</oasis:entry>
         <oasis:entry colname="col6" align="left">emergent</oasis:entry>
         <oasis:entry colname="col7" align="left">no</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Capillary rise (upward flux)</oasis:entry>
         <oasis:entry colname="col2" align="left">yes</oasis:entry>
         <oasis:entry colname="col3" align="left">yes</oasis:entry>
         <oasis:entry colname="col4" align="left">no</oasis:entry>
         <oasis:entry colname="col5" align="left">yes</oasis:entry>
         <oasis:entry colname="col6" align="left">yes</oasis:entry>
         <oasis:entry colname="col7" align="left">parameterised</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Constitutive law</oasis:entry>
         <oasis:entry colname="col2" align="left">Mualem–vG</oasis:entry>
         <oasis:entry colname="col3" align="left">Mualem–vG</oasis:entry>
         <oasis:entry colname="col4" align="left">Brooks–Corey</oasis:entry>
         <oasis:entry colname="col5" align="left">Mualem–vG</oasis:entry>
         <oasis:entry colname="col6" align="left">Mualem–vG</oasis:entry>
         <oasis:entry colname="col7" align="left">empirical</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Per-step mass conservation</oasis:entry>
         <oasis:entry colname="col2" align="left">yes</oasis:entry>
         <oasis:entry colname="col3" align="left">yes<sup>*</sup></oasis:entry>
         <oasis:entry colname="col4" align="left">yes</oasis:entry>
         <oasis:entry colname="col5" align="left">yes</oasis:entry>
         <oasis:entry colname="col6" align="left">yes</oasis:entry>
         <oasis:entry colname="col7" align="left">yes</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Ensemble/regional reach</oasis:entry>
         <oasis:entry colname="col2" align="left">high</oasis:entry>
         <oasis:entry colname="col3" align="left">low</oasis:entry>
         <oasis:entry colname="col4" align="left">high</oasis:entry>
         <oasis:entry colname="col5" align="left">moderate</oasis:entry>
         <oasis:entry colname="col6" align="left">low–mod.</oasis:entry>
         <oasis:entry colname="col7" align="left">very high</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1" align="left">Two-way GW–UZ–SW coupling</oasis:entry>
         <oasis:entry colname="col2" align="left">via interface</oasis:entry>
         <oasis:entry colname="col3" align="left">via MODFLOW pkg</oasis:entry>
         <oasis:entry colname="col4" align="left">partial</oasis:entry>
         <oasis:entry colname="col5" align="left">full</oasis:entry>
         <oasis:entry colname="col6" align="left">full</oasis:entry>
         <oasis:entry colname="col7" align="left">conceptual</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1" align="left">Open source</oasis:entry>
         <oasis:entry colname="col2" align="left">yes</oasis:entry>
         <oasis:entry colname="col3" align="left">freeware</oasis:entry>
         <oasis:entry colname="col4" align="left">yes</oasis:entry>
         <oasis:entry colname="col5" align="left">no</oasis:entry>
         <oasis:entry colname="col6" align="left">yes</oasis:entry>
         <oasis:entry colname="col7" align="left">varies</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><table-wrap-foot><p id="d2e188"><sup>*</sup> HYDRUS-1D conserves mass at converged Picard iterates but convergence is fragile in low-<inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> ponded columns.</p></table-wrap-foot></table-wrap>

      <p id="d2e504">This paper introduces GWSWEX (Groundwater–Surface Water EXchange), a vertically resolved, dual-solver UZ coupler designed to address both gaps. Section <xref ref-type="sec" rid="Ch1.S2"/> presents the model concept and the verification, sensitivity, and performance methodology; Sect. <xref ref-type="sec" rid="Ch1.S3"/> reports the results; Sect. <xref ref-type="sec" rid="Ch1.S4"/> discusses them; Sect. <xref ref-type="sec" rid="Ch1.S5"/> draws inferences from the findings. Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/> carries the full model-physics; Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/> the software architecture. The complete model code, input files, experiment-definition, and analysis notebooks are available in the open-source repository <xref ref-type="bibr" rid="bib1.bibx49" id="paren.21"/>.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Methodology</title>
<sec id="Ch1.S2.SSx1" specific-use="unnumbered">
  <title>GWSWEX Model description</title>
      <p id="d2e536">GWSWEX (Groundwater–Surface Water EXchange) is a vertically resolved, process-based UZ coupler. Its design philosophy is deliberately one of controlled compromise: rather than competing with fully three-dimensional Richards-class solvers on vertical-flux fidelity, it retains the matric-potential gradient and a prognostic moving groundwater head that conceptual bucket schemes discard, while preserving the per-element computational frugality, the physical interpretability of its constitutive relations, and the numerical robustness across forcing regimes that ensemble-grade regional application demands. Each model element is represented as a layered 1-D soil column with three prognostic storages: GW head, per-layer UZ storage, and SW (ponding) depth. The model is intended to sit between an external GW model and an external SW model in an integrated modelling chain, receiving lateral GW and SW exchange fluxes from those models as boundary conditions; all vertical fluxes (infiltration, gravity drainage, capillary redistribution, soil evaporation, root water uptake, recharge to GW, exfiltration to SW) are resolved internally and mass-conservatively at each step; Fig. <xref ref-type="fig" rid="F1"/> illustrates the column structure, the prognostic storage hierarchy, and the principal vertical and lateral flux pathways.</p>

      <fig id="F1" specific-use="star"><label>Figure 1</label><caption><p id="d2e543">Column-element architecture of GWSWEX. Centre: layered UZ column (simulation domain). Top and bottom: prognostic SW and GW boundary storages. Dashed lines: prognostic SW head <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>SW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and GW head <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. Internal arrows: infiltration, recharge, capillary rise, surface evaporation <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>act</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and root-zone transpiration <inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>act</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> (inter-layer gravity drainage and capillary redistribution omitted for clarity). Bidirectional outer arrows: aggregate column–storage exchange. Solid outward arrows from the storage boxes: prescribed SW and GW fluxes to coupled external models. Dashed arrows from the left: lateral SW and GW inputs.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f01.png"/>

        </fig>

      <p id="d2e596">The principal design choices are:</p>
      <p id="d2e599"><list list-type="bullet">
            <list-item>

      <p id="d2e604">Two interchangeable solvers behind a single API. The hydrological regime space encountered in a regional coupled domain is too broad for any single 1-D solver to cover with uniform fidelity: infiltration-dominated wet phases with sharp wetting fronts and surface ponding demand a numerically robust scheme under near-saturated conditions, while extended drought and deep-water-table recession phases demand a scheme that can advance over long time steps without instability. An explicit operator-split bucket-sequence solver with CFL-adaptive sub-stepping addresses the former; an implicit mixed-form Richards solver with Picard linearisation and Thomas-algorithm tridiagonal inversion addresses the latter. Both are offered as peers behind a single model API, share the same vertical discretisation, the same Mualem–van Genuchten constitutive relations <xref ref-type="bibr" rid="bib1.bibx60 bib1.bibx79" id="paren.22"/>, and the same coupling interface; the complete numerical formulations are in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>. </p>
            </list-item>
            <list-item>

      <p id="d2e616">Freely moving groundwater head in a layered, heterogeneous column. Each element is discretised into an arbitrary number of layers, each with its own van Genuchten parameters, and the groundwater head is recovered from a piecewise-linear drainable-volume function that integrates layer-specific yield across material boundaries, permitting full vertical heterogeneity in a mass-conservative and analytically invertible formulation.</p>
            </list-item>
            <list-item>

      <p id="d2e622">Soil-moisture-dependent ET partitioning. Both solvers apply a Laio-type four-saturation-threshold stress function <xref ref-type="bibr" rid="bib1.bibx51" id="paren.23"/> to partition potential evaporation and transpiration into actual fluxes at each step. The implicit solver evaluates the actual demand at each Picard iterate, so that the sink responds to the head profile being solved for; the explicit solver evaluates it after gravity drainage but before capillary redistribution, reflecting the timescales at which these processes operate.</p>
            </list-item>
            <list-item>

      <p id="d2e631">Strict per-step mass conservation for robust iterative coupling. The per-step storage budget closes to floating-point tolerance in the explicit solver and to a small, well-characterised residual in the implicit solver, so that the outer GW–UZ–SW coupling iteration can converge without additional under-relaxation. </p>
            </list-item>
            <list-item>

      <p id="d2e638">Modular Modern Fortran kernel with a Python API. The per-element independence of the column physics is exploited via OpenMP work-sharing across elements; the user-facing layer is a Python package that provides Pydantic-validated configuration, NetCDF I/O, checkpointing, and the lateral coupling interface (Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>).</p>
            </list-item>
          </list></p>
      <p id="d2e646">GWSWEX targets the class of regional integrated modelling problems in which the UZ must be represented faithfully, with vertically resolved storage, a moving groundwater head, and mass-conservative flux accounting, at a per-element computational cost low enough for ensemble calibration, sensitivity studies, and multi-decadal projections on consumer-grade hardware. Fully integrated 3-D Richards-class models retain their structural advantage wherever the three-dimensional transient solution is the governing concern; the gap they leave at the regional-ensemble end of the spectrum is the design space GWSWEX is built to fill. </p>
</sec>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Groundwater head and soil moisture simulation accuracy</title>
      <p id="d2e658">The evaluation reported here is a code-to-code verification rather than a field validation: it isolates the numerical fidelity and per-step mass conservation of the two solvers under controlled synthetic forcing with perfectly known parameters and boundary conditions, thereby separating the behaviour of the numerical schemes from the atmospheric, parameter, and boundary uncertainties that a field comparison would introduce; a verification against measured field data is the natural successor experiment, as discussed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>.</p>
      <p id="d2e663">The verification compares the explicit and implicit GWSWEX solvers against HYDRUS-1D <xref ref-type="bibr" rid="bib1.bibx72" id="paren.24"/> as a representative iterative implicit Richards-equation reference for vertical 1-D variably saturated flow at the column scale. HYDRUS-1D is configured through the <monospace>phydrus</monospace> Python wrapper <xref ref-type="bibr" rid="bib1.bibx24" id="paren.25"/> (v0.2.0, modified for Python 3.9 onwards; <uri>https://github.com/veethahavya-CU-cz/phydrus</uri>, last access: 2 September 2026) with its native Feddes ET stress function <xref ref-type="bibr" rid="bib1.bibx34" id="paren.26"/>; per-case input files, experiment definitions and comparison notebooks accompany the open-source repository <xref ref-type="bibr" rid="bib1.bibx49" id="paren.27"/>.</p>
      <p id="d2e685">The choice of HYDRUS-1D over a saturated-zone model with a UZ package (e.g. MODFLOW–UZF, MODFLOW–SWB) or a fully integrated model (e.g. MIKE SHE, ParFlow) follows from the scope: since GWSWEX is introduced here as a 1-D UZ component intended for coupling to external GW and SW models rather than as an integrated solver, the verification must isolate per-column physics from any particular saturated-zone formulation. HYDRUS-1D is the natural reference for both GWSWEX solvers. For the implicit solver the case is direct: HYDRUS-1D is a standalone column code solving the same 1-D mixed-form Richards equation under the same Mualem–van Genuchten constitutive relations, making it a like-for-like reference for constitutive physics, ET partitioning and capillary-rise representation. For the explicit solver the two GWSWEX solvers share the same constitutive relations, column geometry and layering, forcing, and boundary-condition specification, so the explicit solver is benchmarked against the same physically faithful column reference as its implicit peer, the residual isolating the cascade abstraction rather than any constitutive mismatch; and HYDRUS-1D is the most widely used and widely cited software for unsaturated-zone modelling, with a long and proven track record as the community reference standard against which new UZ schemes are routinely compared. A downstream coupled-modelling demonstration against an integrated GW–UZ–SW reference is the natural successor experiment and is signalled in Sect. <xref ref-type="sec" rid="Ch1.S4.SS5"/>.</p>
      <p id="d2e690">Two forcing setups probe complementary regimes, each acting as a stress-test intended for evaluating the models. The basic setup is a 65 d, daily-interval experiment with a 5 d warmup, 30 d wet phase and 30 d dry phase on a 3 m column (<inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">150</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.02</mml:mn></mml:mrow></mml:math></inline-formula> m), groundwater head initialised at 1.5 m depth and a root zone growing linearly from 0.05 to 0.60 m. Wet-phase precipitation is tuned per soil to raise the groundwater head substantially without surface ponding, probing the slow-recharge, deep-GWH, capillary-fringe regime that dominates field-scale water budgets and exercising the gravity-drainage and ET-driven capillary-recession behaviour of both solvers under smooth daily forcing. The intensive setup is a 32 d, hourly-interval experiment with warmup/wet/dry/cooldown windows of 72/240/288/168 h on a 1.5 m column (<inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">150</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.01</mml:mn></mml:mrow></mml:math></inline-formula> m), groundwater head initialised at 1.20 m depth and a fixed 0.60 m root zone. Wet-phase precipitation is just high enough to drive the groundwater head to the surface and produce ponding, probing the saturation-excess regime <xref ref-type="bibr" rid="bib1.bibx30" id="paren.28"/> in which sustained recharge raises a shallow water table to meet the surface rather than the infiltration-excess mechanism <xref ref-type="bibr" rid="bib1.bibx42" id="paren.29"/> of a deep water table under rainfall exceeding surface <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> (confirmed mechanistically in Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>), and exercising the dynamic top-boundary switching of the implicit solver and the saturated-column branch of the explicit solver. For this setup, HYDRUS-1D is likewise run with the atmospheric boundary condition's surface-reservoir option enabled, so that ponded water accumulates there as a genuine state variable rather than being shed as runoff, making its peak-ponding and ponded-duration diagnostics directly comparable to GWSWEX's explicit SW store; the basic setup instead uses the runoff-shedding option, which is immaterial there because ponding does not occur by construction.</p>
      <p id="d2e772">Each setup is run on six soil profiles drawn from the <xref ref-type="bibr" rid="bib1.bibx18" id="text.30"/> catalogue: the three single-material columns sand, loam, and clay; and the three layered profiles sand-over-loam, sand-over-clay, and loam-over-clay. Per-soil precipitation and reference-ET rates are scaled so that the nominal GWH amplitude is comparable across soils despite the order-of-magnitude differences in <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> between the catalogue endpoints. The clay van Genuchten parameters are relaxed slightly toward loam (Table <xref ref-type="table" rid="T2"/>, originals in parentheses) because the catalogue defaults render basic-clay unresponsive on a 65 d horizon; the relaxed clay remains the lowest-<inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> soil in the catalogue by an order of magnitude, and the relaxation is applied uniformly to both solvers. The full configuration is summarised in Tables <xref ref-type="table" rid="T2"/>, <xref ref-type="table" rid="T3"/>, and <xref ref-type="table" rid="T4"/>.</p>

<table-wrap id="T2" specific-use="star"><label>Table 2</label><caption><p id="d2e812">van Genuchten–Mualem hydraulic parameters of the three constituent soils. The clay row carries the relaxation toward the loam end of the catalogue described in the text; the original Carsel–Parrish values are given in parentheses for the three relaxed parameters. The Mualem pore-connectivity parameter <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn></mml:mrow></mml:math></inline-formula> for all three soils.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="6">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Soil</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M17" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M19" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M20" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">[m<sup>3</sup> m<sup>−3</sup>]</oasis:entry>
         <oasis:entry colname="col3">[m<sup>3</sup> m<sup>−3</sup>]</oasis:entry>
         <oasis:entry colname="col4">[m<sup>−1</sup>]</oasis:entry>
         <oasis:entry colname="col5">[–]</oasis:entry>
         <oasis:entry colname="col6">[m d<sup>−1</sup>]</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">sand</oasis:entry>
         <oasis:entry colname="col2">0.045</oasis:entry>
         <oasis:entry colname="col3">0.430</oasis:entry>
         <oasis:entry colname="col4">14.5</oasis:entry>
         <oasis:entry colname="col5">2.68</oasis:entry>
         <oasis:entry colname="col6">7.128</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">loam</oasis:entry>
         <oasis:entry colname="col2">0.078</oasis:entry>
         <oasis:entry colname="col3">0.430</oasis:entry>
         <oasis:entry colname="col4">3.6</oasis:entry>
         <oasis:entry colname="col5">1.56</oasis:entry>
         <oasis:entry colname="col6">0.2496</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">clay</oasis:entry>
         <oasis:entry colname="col2">0.068</oasis:entry>
         <oasis:entry colname="col3">0.380</oasis:entry>
         <oasis:entry colname="col4">1.2 (0.8)</oasis:entry>
         <oasis:entry colname="col5">1.15 (1.09)</oasis:entry>
         <oasis:entry colname="col6">0.10 (0.048)</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e1063">The two layered profiles partition the column from the surface downward as follows: sand-over-loam carries sand over the upper one third and loam below; sand-over-clay carries sand over the upper two thirds and clay below; loam-over-clay carries loam over the upper two thirds and clay below.</p>

<table-wrap id="T3"><label>Table 3</label><caption><p id="d2e1069">Spatial domain, vertical discretisation, groundwater-head initialisation, root-zone schedule and phase windows of the basic and intensive setups.</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="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Setting</oasis:entry>
         <oasis:entry colname="col2">Basic</oasis:entry>
         <oasis:entry colname="col3">Intensive</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Column depth <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:msub><mml:mi>Z</mml:mi><mml:mtext>top</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> [m]</oasis:entry>
         <oasis:entry colname="col2">3.0</oasis:entry>
         <oasis:entry colname="col3">1.5</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Layers <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">150</oasis:entry>
         <oasis:entry colname="col3">150</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Layer thickness <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> [m]</oasis:entry>
         <oasis:entry colname="col2">0.02</oasis:entry>
         <oasis:entry colname="col3">0.01</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Initial GWH [m]</oasis:entry>
         <oasis:entry colname="col2">1.5</oasis:entry>
         <oasis:entry colname="col3">1.20</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Root depth</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.05</mml:mn><mml:mo>→</mml:mo><mml:mn mathvariant="normal">0.60</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.60</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">(initial <inline-formula><mml:math id="M32" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> final) [m]</oasis:entry>
         <oasis:entry colname="col2">(linear)</oasis:entry>
         <oasis:entry colname="col3">(fixed)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Forcing interval</oasis:entry>
         <oasis:entry colname="col2">daily</oasis:entry>
         <oasis:entry colname="col3">hourly</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Run length</oasis:entry>
         <oasis:entry colname="col2">65 d</oasis:entry>
         <oasis:entry colname="col3">768 h (<inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">32</mml:mn></mml:mrow></mml:math></inline-formula> d)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Warmup window</oasis:entry>
         <oasis:entry colname="col2">[0, 5] d</oasis:entry>
         <oasis:entry colname="col3">[0, 72] h</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wet window</oasis:entry>
         <oasis:entry colname="col2">[5, 35] d</oasis:entry>
         <oasis:entry colname="col3">[72, 312] h</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Dry window</oasis:entry>
         <oasis:entry colname="col2">[35, 65] d</oasis:entry>
         <oasis:entry colname="col3">[312, 600] h</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Cooldown window</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">[600, 768] h</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="T4"><label>Table 4</label><caption><p id="d2e1309">Per-soil constant atmospheric forcing rates (precipitation <inline-formula><mml:math id="M34" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula>, potential bare-soil evaporation <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, potential transpiration <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) imposed in the wet and dry windows of each setup. Basic-setup rates are in cm d<sup>−1</sup>; intensive-setup rates are in mm h<sup>−1</sup>.</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="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right" colsep="1"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col4" align="center" colsep="1">Wet window </oasis:entry>
         <oasis:entry rowsep="1" namest="col5" nameend="col7" align="center">Dry window </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Soil</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M39" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M42" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col7">Basic (cm d<sup>−1</sup>) </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">sand</oasis:entry>
         <oasis:entry colname="col2">0.60</oasis:entry>
         <oasis:entry colname="col3">0.05</oasis:entry>
         <oasis:entry colname="col4">0.00</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.20</oasis:entry>
         <oasis:entry colname="col7">0.10</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">loam</oasis:entry>
         <oasis:entry colname="col2">0.42</oasis:entry>
         <oasis:entry colname="col3">0.03</oasis:entry>
         <oasis:entry colname="col4">0.00</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.15</oasis:entry>
         <oasis:entry colname="col7">0.07</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">clay</oasis:entry>
         <oasis:entry colname="col2">0.05</oasis:entry>
         <oasis:entry colname="col3">0.02</oasis:entry>
         <oasis:entry colname="col4">0.00</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.08</oasis:entry>
         <oasis:entry colname="col7">0.04</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">sand-over-loam</oasis:entry>
         <oasis:entry colname="col2">0.45</oasis:entry>
         <oasis:entry colname="col3">0.03</oasis:entry>
         <oasis:entry colname="col4">0.00</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.15</oasis:entry>
         <oasis:entry colname="col7">0.07</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">sand-over-clay</oasis:entry>
         <oasis:entry colname="col2">0.08</oasis:entry>
         <oasis:entry colname="col3">0.02</oasis:entry>
         <oasis:entry colname="col4">0.00</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.08</oasis:entry>
         <oasis:entry colname="col7">0.04</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">loam-over-clay</oasis:entry>
         <oasis:entry colname="col2">0.10</oasis:entry>
         <oasis:entry colname="col3">0.02</oasis:entry>
         <oasis:entry colname="col4">0.00</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.08</oasis:entry>
         <oasis:entry colname="col7">0.05</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col7">Intensive (mm h<sup>−1</sup>) </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">sand</oasis:entry>
         <oasis:entry colname="col2">3.00</oasis:entry>
         <oasis:entry colname="col3">0.30</oasis:entry>
         <oasis:entry colname="col4">0.15</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.60</oasis:entry>
         <oasis:entry colname="col7">0.40</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">loam</oasis:entry>
         <oasis:entry colname="col2">1.25</oasis:entry>
         <oasis:entry colname="col3">0.20</oasis:entry>
         <oasis:entry colname="col4">0.10</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.40</oasis:entry>
         <oasis:entry colname="col7">0.30</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">clay</oasis:entry>
         <oasis:entry colname="col2">0.20</oasis:entry>
         <oasis:entry colname="col3">0.10</oasis:entry>
         <oasis:entry colname="col4">0.05</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.20</oasis:entry>
         <oasis:entry colname="col7">0.15</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">sand-over-loam</oasis:entry>
         <oasis:entry colname="col2">1.50</oasis:entry>
         <oasis:entry colname="col3">0.20</oasis:entry>
         <oasis:entry colname="col4">0.10</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.40</oasis:entry>
         <oasis:entry colname="col7">0.30</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">sand-over-clay</oasis:entry>
         <oasis:entry colname="col2">0.30</oasis:entry>
         <oasis:entry colname="col3">0.12</oasis:entry>
         <oasis:entry colname="col4">0.06</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.25</oasis:entry>
         <oasis:entry colname="col7">0.18</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">loam-over-clay</oasis:entry>
         <oasis:entry colname="col2">0.40</oasis:entry>
         <oasis:entry colname="col3">0.12</oasis:entry>
         <oasis:entry colname="col4">0.06</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.22</oasis:entry>
         <oasis:entry colname="col7">0.16</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e1811">For each of the twenty-four (soil <inline-formula><mml:math id="M47" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> setup <inline-formula><mml:math id="M48" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> solver) cases, the comparison notebooks produce the GWH time series and its residual against HYDRUS-1D; zone-averaged saturation in four physically meaningful depth intervals (root zone, transmission zone, capillary fringe, and full UZ); soil-moisture profile snapshots at the phase transition times; cumulative actual evaporation and transpiration; cumulative precipitation, infiltration, and runoff; and the cumulative intrinsic mass-balance residual. The primary scalar score is the GWH RMSE against HYDRUS-1D over the full simulation horizon, with the Nash–Sutcliffe efficiency <xref ref-type="bibr" rid="bib1.bibx61" id="paren.31"/> reported as a secondary score. The same RMSE and NSE are also computed separately for the wet and dry phases of each setup (basic: wet [5, 35] d, dry [35, 65] d; intensive: wet [72, 312] h, dry [312, 600] h, warmup and cooldown excluded), so that the gravity-drainage and the ET/capillary-rise branches of the model can be diagnosed independently. HYDRUS-1D returns NaN for the GWH diagnostic during ponded sub-intervals (no sign change in the head profile inside the column) and is clipped at the surface (<inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> cm) before any comparison; these timesteps are masked from all RMSE and NSE computations. GWSWEX folds ponded water into surface storage rather than into the GWH diagnostic, so its GWH trajectory is physically defined throughout and is likewise clipped at the surface for visual consistency.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Sensitivity analysis</title>
      <p id="d2e1849">The sensitivity of the GWSWEX groundwater-head trajectory to the empirical parameters of the two solvers was investigated through an iterated one-at-a-time (OAT) coordinate-descent calibration carried out for every (soil, setup, solver) cell. An OAT design is an axis-aligned local screening protocol whose strengths and limits relative to variance-based global designs are well established <xref ref-type="bibr" rid="bib1.bibx69 bib1.bibx67 bib1.bibx65" id="paren.32"/>; it is adopted here for its physical interpretability across twenty-four cells and its tractable per-cell budget, with the inferential constraints discussed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>. The full per-case calibrated configurations and supporting discussion are provided with the open-source repository.</p>
      <p id="d2e1857">For each of the twenty-four cells, the parameters of Table <xref ref-type="table" rid="T5"/> were varied independently through a discrete grid whose levels were chosen by physical bracketing rather than uniform sub-division.</p>

<table-wrap id="T5" specific-use="star"><label>Table 5</label><caption><p id="d2e1865">OAT parameter sweep grid. Green–Ampt and ET-stress parameters apply to both solvers; remaining parameters are solver-specific. Scoring: wet, dry, dry <inline-formula><mml:math id="M50" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> cool are phase-windowed GWH RMSE; overall is full-run RMSE (physical rationale in the text). Laio thresholds satisfy <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Family</oasis:entry>
         <oasis:entry colname="col2">Parameter</oasis:entry>
         <oasis:entry colname="col3">Levels</oasis:entry>
         <oasis:entry colname="col4">Scoring</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Green–Ampt</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> [m]</oasis:entry>
         <oasis:entry colname="col3">0.005, 0.01, 0.05, 0.09, 0.15, 0.20</oasis:entry>
         <oasis:entry colname="col4">wet</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Green–Ampt</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> [m]</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">wet</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Infiltration</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:msub><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.05, 0.10, 0.20, 0.30, 0.42, 0.50, 0.60</oasis:entry>
         <oasis:entry colname="col4">wet</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">ET stress</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.3, 0.4, 0.5, 0.6, 0.7</oasis:entry>
         <oasis:entry colname="col4">dry</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">ET stress</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.05, 0.10, 0.15, 0.20</oasis:entry>
         <oasis:entry colname="col4">dry</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">ET stress</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.02, 0.05, 0.08</oasis:entry>
         <oasis:entry colname="col4">dry</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">ET stress</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.20, 0.30, 0.40, 0.50, 0.60</oasis:entry>
         <oasis:entry colname="col4">dry</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Explicit</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.30, 0.50, 0.70, 0.85, 0.90, 0.95</oasis:entry>
         <oasis:entry colname="col4">overall</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Explicit</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>trapz</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">5, 10, 15, 20, 30, 40</oasis:entry>
         <oasis:entry colname="col4">overall</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Explicit</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mtext>hyst</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.70, 0.85, 0.90, 1.00</oasis:entry>
         <oasis:entry colname="col4">dry <inline-formula><mml:math id="M63" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> cool</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Implicit</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> [m]</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><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="col4">overall</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Implicit</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">300 (<inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub><mml:mo>&lt;</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>); 150</oasis:entry>
         <oasis:entry colname="col4">overall</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e2352">The model parameters fall into three classes that the user should treat differently in practice. The constitutive parameters of the Mualem–van Genuchten relations and the rooting depth are physically based, and are measured or transferred from soil and vegetation surveys rather than tuned; the infiltration, inter-layer-connectivity, ET-stress and hysteresis parameters are empirical or semi-physical parameters whose plausible ranges are bracketed by the retention curve and whose optima are mildly soil-dependent; the Courant safety factor, the equilibrium-storage quadrature resolution, and the Picard convergence controls are purely numerical, set for stability and computational cost rather than to represent a physical process. Table <xref ref-type="table" rid="T6"/> summarises this classification together with a typical range and a calibration note for each parameter.</p>

<table-wrap id="T6" specific-use="star"><label>Table 6</label><caption><p id="d2e2360">Classification of GWSWEX parameters with typical ranges and calibration guidance.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Parameter</oasis:entry>
         <oasis:entry colname="col2">Class</oasis:entry>
         <oasis:entry colname="col3">Typical range</oasis:entry>
         <oasis:entry colname="col4">Source/calibration guidance</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">physical</oasis:entry>
         <oasis:entry colname="col3">soil-specific</oasis:entry>
         <oasis:entry colname="col4">soil survey/lab; not tuned</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Rooting depth (root mask)</oasis:entry>
         <oasis:entry colname="col2">physical</oasis:entry>
         <oasis:entry colname="col3">vegetation-specific</oasis:entry>
         <oasis:entry colname="col4">land-cover/phenology</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (Green–Ampt suction)</oasis:entry>
         <oasis:entry colname="col2">empirical (semi-phys.)</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M70" display="inline"><mml:mn mathvariant="normal">0.005</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M71" display="inline"><mml:mn mathvariant="normal">0.20</mml:mn></mml:math></inline-formula> m (<inline-formula><mml:math id="M72" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col4">wet-phase; bracket from retention curve</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> (GA floor)</oasis:entry>
         <oasis:entry colname="col2">numerical/empirical</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>–<inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> m</oasis:entry>
         <oasis:entry colname="col4">prevents capacity singularity; soil-insensitive</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msub><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">empirical</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M77" display="inline"><mml:mn mathvariant="normal">0.05</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M78" display="inline"><mml:mn mathvariant="normal">0.60</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">low for clay-rich, high for sand; wet-phase</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (Laio)</oasis:entry>
         <oasis:entry colname="col2">empirical (semi-phys.)</oasis:entry>
         <oasis:entry colname="col3">see Table <xref ref-type="table" rid="T5"/></oasis:entry>
         <oasis:entry colname="col4">estimate from retention curve; refine on dry phase</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mtext>hyst</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">empirical</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M81" display="inline"><mml:mn mathvariant="normal">0.70</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M82" display="inline"><mml:mn mathvariant="normal">1.00</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">desorption/wetting offset; recession-phase</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (Courant factor)</oasis:entry>
         <oasis:entry colname="col2">numerical</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M84" display="inline"><mml:mn mathvariant="normal">0.30</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M85" display="inline"><mml:mn mathvariant="normal">0.95</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">stability/cost trade-off (explicit)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>trapz</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">numerical</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M87" display="inline"><mml:mn mathvariant="normal">5</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M88" display="inline"><mml:mn mathvariant="normal">40</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">equilibrium-storage quadrature (explicit)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">numerical</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>–<inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> m</oasis:entry>
         <oasis:entry colname="col4">Picard tolerance (implicit)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">numerical</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M93" display="inline"><mml:mn mathvariant="normal">150</mml:mn></mml:math></inline-formula>–<inline-formula><mml:math id="M94" display="inline"><mml:mn mathvariant="normal">300</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">iteration cap; co-vary with <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">numerical</oasis:entry>
         <oasis:entry colname="col3">application-set</oasis:entry>
         <oasis:entry colname="col4">discretisation; finer near surface/GWH</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e2894">Acceptance in the coordinate-descent procedure is evaluated against a phase-targeted metric rather than a single whole-run RMSE: each parameter family is active in a specific portion of the simulation, and is therefore scored against the phase RMSE that exercises it (Table <xref ref-type="table" rid="T5"/>, rightmost column). The Green–Ampt and inter-layer connectivity parameters govern infiltration and wetting-front propagation and are scored against wet-phase RMSE; the Laio thresholds govern dry-phase ET partitioning and capillary rise and are scored against dry-phase RMSE; the explicit hysteresis blend <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mtext>hyst</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> modulates the desorption branch traversed during recession and is scored against the combined dry-plus-cooldown RMSE; the Picard convergence controls, the Courant safety factor <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the equilibrium-storage quadrature resolution <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>trapz</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> act throughout and are scored against full-run RMSE. Convergence termination always uses overall RMSE: descent terminates when the overall RMSE does not improve by at least 0.5 % within a pass or after a maximum of three passes. The per-parameter acceptance threshold is <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mtext>accept</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.02</mml:mn></mml:mrow></mml:math></inline-formula> for the basic setup and <inline-formula><mml:math id="M101" display="inline"><mml:mn mathvariant="normal">0.05</mml:mn></mml:math></inline-formula> for the intensive setup, expressed as a fraction of the current best value of the targeted phase metric; the asymmetric margin reflects the larger trial-to-trial variance in the intensive case driven by sharper GWH movement and surface ponding events.</p>
      <p id="d2e2955">The constitutive functions, the form of the ET stress function (Laio for GWSWEX, Feddes for HYDRUS-1D, neither tuned), the root-growth schedule, and the spatial and temporal discretisations are held fixed across the entire study. The Laio thresholds <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> are treated as calibratable parameters because they are practically dependent on the nature of soil and vegetation. The limitations of the iterated OAT design itself are discussed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Computational performance benchmark</title>
      <p id="d2e3004">The benchmark addresses how the run-time of each code grows with the number of independent catchment elements. Four ensemble sizes are tested, <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, with each element an independent 1-D column under identical geometry, materials, initial conditions and forcing.</p>
      <p id="d2e3044">HYDRUS-1D simulates one column at a time <xref ref-type="bibr" rid="bib1.bibx72" id="paren.33"/>, so for <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> the columns are distributed across 8 worker processes from a shared queue. GWSWEX runs all <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> columns simultaneously across 8 cores via OpenMP. Both configurations use the same 8 high-performance cores of an Apple M1 Pro (the 2 remaining low-power cores are excluded because mixing them into a tightly synchronised parallel loop introduces idle waiting at each synchronisation point). The full machine configuration is summarised in Table <xref ref-type="table" rid="T7"/>.</p>

<table-wrap id="T7"><label>Table 7</label><caption><p id="d2e3081">Hardware and software environment for the computational performance benchmark.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Item</oasis:entry>
         <oasis:entry colname="col2">Value</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">CPU model</oasis:entry>
         <oasis:entry colname="col2">Apple M1 Pro</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Processor cores used</oasis:entry>
         <oasis:entry colname="col2">8 (high-performance)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">RAM</oasis:entry>
         <oasis:entry colname="col2">16.0 GiB</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">OS</oasis:entry>
         <oasis:entry colname="col2">Darwin 25.4.0 (arm64)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Fortran compiler</oasis:entry>
         <oasis:entry colname="col2">GNU Fortran 15.2.0</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">(conda-forge gcc 15.2.0-18)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Python version</oasis:entry>
         <oasis:entry colname="col2">CPython 3.14.3 (conda-forge)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">HYDRUS-1D version</oasis:entry>
         <oasis:entry colname="col2">4.0.8</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX version</oasis:entry>
         <oasis:entry colname="col2">1.0.0</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e3190">The benchmark uses the intensive-sand-loam profile (Table <xref ref-type="table" rid="T2"/>), 32 simulated days at hourly macro-step (<inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">768</mml:mn></mml:mrow></mml:math></inline-formula> steps), with the same forcing as the verification experiment <xref ref-type="bibr" rid="bib1.bibx49" id="paren.34"/>. The profile choice preserves direct continuity with the single-element accuracy comparison in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/> and exercises both material layers in physically distinct regimes: the sand upper layer drives rapid gravity drainage, while the loam lower layer presents the slower capillary dynamics that govern GWH recession.</p>
      <p id="d2e3212">The measured time covers initialisation, time-stepping and output for each code. For each (<inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, code) combination, three independent trials were executed; the reported time is the median elapsed run-time, with the inter-trial range reflecting trial-to-trial variability. Recorded metrics are: total elapsed run-time <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>e</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> [s]; total processor time summed across cores [s]; peak working memory [MiB]; and total output written [MiB]. An empirical scaling exponent <inline-formula><mml:math id="M109" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> is estimated from a log–log fit, <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mi>log⁡</mml:mi><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mi>log⁡</mml:mi><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi>log⁡</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula>, over <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>; <inline-formula><mml:math id="M112" 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> indicates run-time proportional to ensemble size, <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:mi mathvariant="italic">β</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> that each additional column costs proportionally less than the last as the fixed parallel-setup cost is shared across more columns. Benchmark scripts accompany the open-source repository.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Results</title>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Groundwater head and soil moisture simulation accuracy</title>
      <p id="d2e3333">Groundwater-head accuracy. Table <xref ref-type="table" rid="T8"/> reports the GWH RMSE and NSE of GWSWEX against HYDRUS-1D for each of the twenty-four (soil <inline-formula><mml:math id="M114" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> scenario <inline-formula><mml:math id="M115" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> solver) simulations, and Figs. <xref ref-type="fig" rid="F2"/> and <xref ref-type="fig" rid="F3"/> plot the corresponding trajectories, demonstrating GWH rise under wet-phase gravity drainage and recession under dry-phase evapotranspiration and capillary-rise feedback across contrasting soil hydraulic regimes. Across the basic scenario, eleven of twelve simulations attain GWH RMSE <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> cm and NSE <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0.85</mml:mn></mml:mrow></mml:math></inline-formula>, capturing the daily-interval trajectory to within the discretisation step (<inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> cm). The intensive-scenario residuals are larger and concentrated in the simulations dominated by a low-<inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> clay layer; the intensive-sand and intensive-sand-over-loam HYDRUS-1D references additionally truncate prematurely under solver nonconvergence, with the corresponding dry-phase entries in Fig. <xref ref-type="fig" rid="F5"/> marked “n/a”. The physical and numerical origins of these residuals and truncations are examined in Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>.</p>

<table-wrap id="T8" specific-use="star"><label>Table 8</label><caption><p id="d2e3409">End-to-end GWH RMSE [cm] and NSE of GWSWEX against HYDRUS-1D, full simulation horizon.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="6">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Scenario</oasis:entry>
         <oasis:entry colname="col2">Soil</oasis:entry>
         <oasis:entry colname="col3">Impl. RMSE</oasis:entry>
         <oasis:entry colname="col4">Impl. NSE</oasis:entry>
         <oasis:entry colname="col5">Expl. RMSE</oasis:entry>
         <oasis:entry colname="col6">Expl. NSE</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">basic</oasis:entry>
         <oasis:entry colname="col2">loam</oasis:entry>
         <oasis:entry colname="col3">0.67</oasis:entry>
         <oasis:entry colname="col4">1.000</oasis:entry>
         <oasis:entry colname="col5">1.56</oasis:entry>
         <oasis:entry colname="col6">0.990</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">basic</oasis:entry>
         <oasis:entry colname="col2">sand</oasis:entry>
         <oasis:entry colname="col3">0.66</oasis:entry>
         <oasis:entry colname="col4">1.000</oasis:entry>
         <oasis:entry colname="col5">0.29</oasis:entry>
         <oasis:entry colname="col6">1.000</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">basic</oasis:entry>
         <oasis:entry colname="col2">clay</oasis:entry>
         <oasis:entry colname="col3">0.86</oasis:entry>
         <oasis:entry colname="col4">0.990</oasis:entry>
         <oasis:entry colname="col5">3.96</oasis:entry>
         <oasis:entry colname="col6">0.890</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">basic</oasis:entry>
         <oasis:entry colname="col2">sand-over-loam</oasis:entry>
         <oasis:entry colname="col3">0.13</oasis:entry>
         <oasis:entry colname="col4">1.000</oasis:entry>
         <oasis:entry colname="col5">0.58</oasis:entry>
         <oasis:entry colname="col6">1.000</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">basic</oasis:entry>
         <oasis:entry colname="col2">sand-over-clay</oasis:entry>
         <oasis:entry colname="col3">0.55</oasis:entry>
         <oasis:entry colname="col4">1.000</oasis:entry>
         <oasis:entry colname="col5">0.35</oasis:entry>
         <oasis:entry colname="col6">1.000</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">basic</oasis:entry>
         <oasis:entry colname="col2">loam-over-clay</oasis:entry>
         <oasis:entry colname="col3">0.33</oasis:entry>
         <oasis:entry colname="col4">1.000</oasis:entry>
         <oasis:entry colname="col5">1.39</oasis:entry>
         <oasis:entry colname="col6">0.970</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">intensive</oasis:entry>
         <oasis:entry colname="col2">loam</oasis:entry>
         <oasis:entry colname="col3">16.45</oasis:entry>
         <oasis:entry colname="col4">0.800</oasis:entry>
         <oasis:entry colname="col5">16.00</oasis:entry>
         <oasis:entry colname="col6">0.810</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">intensive</oasis:entry>
         <oasis:entry colname="col2">sand</oasis:entry>
         <oasis:entry colname="col3">14.11</oasis:entry>
         <oasis:entry colname="col4">0.910</oasis:entry>
         <oasis:entry colname="col5">12.66</oasis:entry>
         <oasis:entry colname="col6">0.930</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">intensive</oasis:entry>
         <oasis:entry colname="col2">clay</oasis:entry>
         <oasis:entry colname="col3">37.59</oasis:entry>
         <oasis:entry colname="col4">0.250</oasis:entry>
         <oasis:entry colname="col5">41.65</oasis:entry>
         <oasis:entry colname="col6">0.080</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">intensive</oasis:entry>
         <oasis:entry colname="col2">sand-over-loam</oasis:entry>
         <oasis:entry colname="col3">19.00</oasis:entry>
         <oasis:entry colname="col4">0.840</oasis:entry>
         <oasis:entry colname="col5">22.77</oasis:entry>
         <oasis:entry colname="col6">0.770</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">intensive</oasis:entry>
         <oasis:entry colname="col2">sand-over-clay</oasis:entry>
         <oasis:entry colname="col3">11.51</oasis:entry>
         <oasis:entry colname="col4">0.920</oasis:entry>
         <oasis:entry colname="col5">11.18</oasis:entry>
         <oasis:entry colname="col6">0.920</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">intensive</oasis:entry>
         <oasis:entry colname="col2">loam-over-clay</oasis:entry>
         <oasis:entry colname="col3">6.14</oasis:entry>
         <oasis:entry colname="col4">0.960</oasis:entry>
         <oasis:entry colname="col5">5.70</oasis:entry>
         <oasis:entry colname="col6">0.970</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e3726">Simulated GWH trajectories for the basic scenario (daily, 65 d); one row per soil. HYDRUS-1D reference overplotted with GWSWEX implicit and explicit traces; shading marks warmup, wet, and dry phases; depth axis inverted. The wet-phase rise tracks the gravity-drainage mass partition and the dry-phase recession the ET-driven capillary demand on the saturated zone, the two solvers bracketing the HYDRUS-1D reference across the soil-hydraulic range.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f02.png"/>

        </fig>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e3738">Simulated GWH trajectories for the intensive scenario (hourly, 768 h); one row per soil. HYDRUS-1D reference overplotted with GWSWEX implicit and explicit traces; shading marks warmup, wet, dry, and cooldown phases; depth axis inverted. The wet-phase rise tracks the gravity-drainage mass partition and the dry-phase recession the ET-driven capillary demand on the saturated zone, the two solvers bracketing the HYDRUS-1D reference across the soil-hydraulic range.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f03.png"/>

        </fig>

      <p id="d2e3747">The per-step internal mass-balance residual closes to floating-point tolerance for the explicit solver away from cap events. For the implicit solver the cumulative residual is small: of order 0.2 cm on the basic-loam reference (per-step maximum approximately 0.5 cm), comparable to HYDRUS-1D itself and arising principally from the start-of-step evaluation of boundary fluxes.</p>
      <p id="d2e3750">Hydrological process metrics. Figure <xref ref-type="fig" rid="F4"/> resolves each (soil, scenario, source) simulation into three process-level metrics (wet-phase GWH rise with lag-to-peak in the intensive scenario; peak surface ponding and ponded duration; signed dry-phase GWH recession rate), and Fig. <xref ref-type="fig" rid="F5"/> splits each simulation's GWH-RMSE between the wet phase, the dry phase and the full horizon excluding warmup and cooldown. The wet-phase rise agrees across all twenty-four simulations to within or close to the discretisation step. In the intensive scenario, both GWSWEX solvers report higher peak ponding and longer ponded duration than HYDRUS-1D in the four simulations where HYDRUS completes the full horizon (loam, clay, sand-over-clay, loam-over-clay); this difference is a structural consequence of how the two codes partition the post-saturation net atmospheric flux between surface-storage accumulation and continued surface infiltration feeding the internal evapotranspiration sinks, as analysed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>. For intensive-sand and intensive-sand-over-loam the HYDRUS reference terminates mid-run, so the apparent ponded-duration excess in those panels reflects coverage rather than a model difference. The dry-phase recession matches HYDRUS to tenths of <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:mi mathvariant="normal">cm</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula> across the basic scenario but is under-estimated by GWSWEX by approximately 25 %–30 % in the most demanding clay-bearing intensive simulations. The mechanisms behind these patterns are discussed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>.</p>

      <fig id="F4" specific-use="star"><label>Figure 4</label><caption><p id="d2e3775">Per-simulation hydrological-process metrics; rows: basic (top) and intensive (bottom); columns: wet-phase GWH rise (left), peak surface ponding (middle), signed dry-phase GWH recession rate (right, positive <inline-formula><mml:math id="M121" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> deepening). Bars per soil compare HYDRUS-1D, GWSWEX implicit, and GWSWEX explicit. Annotations: mean lag-to-peak (intensive wet-rise), mean ponded duration above 0.1 cm (intensive ponding), and mean signed dry-phase GWH change (recession). The ranking of wet-phase rise reads off the soil-hydraulic structure, while the dry-phase recession is positive (deepening) only where wet-phase moisture is retained in the upper zones and met by capillary rise from the groundwater head, as in clay.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f04.png"/>

        </fig>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e3793">Phase-resolved GWH RMSE [cm] of GWSWEX against HYDRUS-1D by soil profile; rows: wet phase (top), dry phase (bottom); columns: basic scenario (left), intensive scenario (right). Cells marked “n/a” denote HYDRUS-1D truncation under nonconvergence. The wet-phase errors are uniformly small, locating the principal GWSWEX–HYDRUS divergence in the dry-phase ET and capillary-rise branch of the low-<inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> intensive profiles.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f05.png"/>

        </fig>

      <p id="d2e3814">Vertical soil moisture distribution. Figures <xref ref-type="fig" rid="F6"/> and <xref ref-type="fig" rid="F7"/> report zone-averaged volumetric water content for each scenario. Figure <xref ref-type="fig" rid="F6"/> traces the downward propagation of infiltrated water through each depth zone and the response of the capillary fringe to GWH dynamics across the wet and dry phases; Fig. <xref ref-type="fig" rid="F7"/> contrasts the rapid wetting–drying cycles in the root zone with the slower transmission-zone response that mirrors the GWH trajectory, and the column-mean trace therein confirms storage conservation on the macro-step scale. By design, the basic forcing briefly saturates the UZ at the onset of the dry phase without sustained ponding, while the intensive forcing produces episodic ponding in the lower-<inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> profiles; both GWSWEX solvers reproduce this regime separation. The largest GWSWEX–HYDRUS departures concentrate in the deeper zones of the low-<inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> intensive simulations (intensive-clay, intensive-loam-over-clay, intensive-sand-over-clay), where the cascade reproduces the wet-phase saturation of the deeper zone but recedes more slowly through the dry phase. Column-internal mechanisms behind these signatures are interpreted in Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e3852">Zone-averaged volumetric water content <inline-formula><mml:math id="M125" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> (m<sup>3</sup> m<sup>−3</sup>) for the basic scenario; rows: six soil profiles; columns: root zone (0–50 cm), transmission zone (50–100 cm), capillary fringe (100–150 cm), full-UZ mean (0–150 cm). Shading marks warmup, wet, and dry phases. The root zone tracks the daily forcing pulses, the transmission zone responds with a one- to three-day delay, the physical origin of the negative basic-scenario dry-phase recession rates, and the capillary fringe carries the slow monotone groundwater-head signal.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f06.png"/>

        </fig>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e3891">Zone-averaged <inline-formula><mml:math id="M128" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> (m<sup>3</sup> m<sup>−3</sup>) for the intensive scenario; columns: top root zone (0–30 cm), root base (30–60 cm), transmission zone (60–100 cm), full-UZ mean (0–150 cm). Shading as in Fig. <xref ref-type="fig" rid="F6"/>. The upper zones cycle hourly with the forcing while the deeper transmission zone follows the groundwater head; the largest GWSWEX–HYDRUS departures concentrate in the deeper zones of the low-<inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> profiles, localising the residual to the saturated–unsaturated capillary coupling, and the full-UZ mean confirms storage conservation on the macro-step scale.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f07.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Sensitivity of groundwater head dynamics to process parameterisation</title>
      <p id="d2e3949">Figure <xref ref-type="fig" rid="F8"/> summarises the per-parameter outcome of the OAT campaign as a heatmap of per-axis improvement in overall GWH RMSE for each simulation, expressed as a percentage of the pre-tuning baseline and ordered by sweep acceptance. Parameters are grouped left-to-right into wet-targeted (<inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msub><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>), dry-targeted (<inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mtext>hyst</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>) and numerical (<inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>trapz</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>) families; rows are ordered solver <inline-formula><mml:math id="M144" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> soil with the implicit block above the explicit block. Blank entries were either swept and rejected or are outside the solver-specific parameter set. The phase-targeted attribution is best read against Fig. <xref ref-type="fig" rid="F5"/>; the per-family interpretation, the physical role of each parameter, and the inferential constraints of the OAT design are deferred to Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>.</p>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e4101">Per-parameter percentage reduction in overall GWH RMSE attributable to each accepted OAT adjustment. Columns: basic (left), intensive (right). Rows: solver <inline-formula><mml:math id="M145" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> soil, implicit block above explicit block. Parameter groups (left to right, white dividers): wet-phase-active controls (infiltration, inter-layer connectivity), dry-phase-active controls (ET stress thresholds, hysteresis), numerical controls. Blank entries: swept-and-rejected or outside the solver-specific parameter set.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f08.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Computational performance</title>
      <p id="d2e4125">The benchmark protocol of Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/> is applied across four ensemble sizes <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> for HYDRUS-1D and both GWSWEX solvers, each using 8 parallel cores. Median elapsed run-time, peak RAM and total disk output are reported in Table <xref ref-type="table" rid="T9"/>, and the corresponding scaling curves in Fig. <xref ref-type="fig" rid="F9"/>.</p>

<table-wrap id="T9" specific-use="star"><label>Table 9</label><caption><p id="d2e4174">Median elapsed run-time <inline-formula><mml:math id="M147" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> [s] (three trials; range <inline-formula><mml:math id="M148" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> min..max), total processor time [s] (summed across all cores), peak working memory (RAM) [MiB] and total output written to disk [MiB] for each code and ensemble size <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</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="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Model</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M151" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> [s]</oasis:entry>
         <oasis:entry colname="col4">range [s]</oasis:entry>
         <oasis:entry colname="col5">total CPU [s]</oasis:entry>
         <oasis:entry colname="col6">peak RAM [MiB]</oasis:entry>
         <oasis:entry colname="col7">disk output [MiB]</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">HYDRUS-1D</oasis:entry>
         <oasis:entry colname="col2">1</oasis:entry>
         <oasis:entry colname="col3">1.76</oasis:entry>
         <oasis:entry colname="col4">1.740..1.764</oasis:entry>
         <oasis:entry colname="col5">0.92</oasis:entry>
         <oasis:entry colname="col6">192.3</oasis:entry>
         <oasis:entry colname="col7">13.64</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">HYDRUS-1D</oasis:entry>
         <oasis:entry colname="col2">10</oasis:entry>
         <oasis:entry colname="col3">11.28</oasis:entry>
         <oasis:entry colname="col4">10.231..11.497</oasis:entry>
         <oasis:entry colname="col5">67.37</oasis:entry>
         <oasis:entry colname="col6">192.3</oasis:entry>
         <oasis:entry colname="col7">143.70</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">HYDRUS-1D</oasis:entry>
         <oasis:entry colname="col2">100</oasis:entry>
         <oasis:entry colname="col3">102.26</oasis:entry>
         <oasis:entry colname="col4">101.330..103.556</oasis:entry>
         <oasis:entry colname="col5">748.56</oasis:entry>
         <oasis:entry colname="col6">192.3</oasis:entry>
         <oasis:entry colname="col7">2223.17</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">HYDRUS-1D</oasis:entry>
         <oasis:entry colname="col2">1000</oasis:entry>
         <oasis:entry colname="col3">1054.11</oasis:entry>
         <oasis:entry colname="col4">987.558..1141.080</oasis:entry>
         <oasis:entry colname="col5">7591.13</oasis:entry>
         <oasis:entry colname="col6">192.3</oasis:entry>
         <oasis:entry colname="col7">18783.57</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX implicit</oasis:entry>
         <oasis:entry colname="col2">1</oasis:entry>
         <oasis:entry colname="col3">0.49</oasis:entry>
         <oasis:entry colname="col4">0.484..0.493</oasis:entry>
         <oasis:entry colname="col5">0.47</oasis:entry>
         <oasis:entry colname="col6">170.4</oasis:entry>
         <oasis:entry colname="col7">0.00</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX implicit</oasis:entry>
         <oasis:entry colname="col2">10</oasis:entry>
         <oasis:entry colname="col3">1.23</oasis:entry>
         <oasis:entry colname="col4">1.226..1.274</oasis:entry>
         <oasis:entry colname="col5">4.43</oasis:entry>
         <oasis:entry colname="col6">170.4</oasis:entry>
         <oasis:entry colname="col7">0.04</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX implicit</oasis:entry>
         <oasis:entry colname="col2">100</oasis:entry>
         <oasis:entry colname="col3">9.04</oasis:entry>
         <oasis:entry colname="col4">9.039..9.180</oasis:entry>
         <oasis:entry colname="col5">44.30</oasis:entry>
         <oasis:entry colname="col6">170.4</oasis:entry>
         <oasis:entry colname="col7">3.52</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX implicit</oasis:entry>
         <oasis:entry colname="col2">1000</oasis:entry>
         <oasis:entry colname="col3">87.51</oasis:entry>
         <oasis:entry colname="col4">86.730..87.583</oasis:entry>
         <oasis:entry colname="col5">442.16</oasis:entry>
         <oasis:entry colname="col6">170.4</oasis:entry>
         <oasis:entry colname="col7">34.36</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX explicit</oasis:entry>
         <oasis:entry colname="col2">1</oasis:entry>
         <oasis:entry colname="col3">0.98</oasis:entry>
         <oasis:entry colname="col4">0.978..1.031</oasis:entry>
         <oasis:entry colname="col5">0.96</oasis:entry>
         <oasis:entry colname="col6">67.2</oasis:entry>
         <oasis:entry colname="col7">0.02</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX explicit</oasis:entry>
         <oasis:entry colname="col2">10</oasis:entry>
         <oasis:entry colname="col3">2.45</oasis:entry>
         <oasis:entry colname="col4">2.429..3.663</oasis:entry>
         <oasis:entry colname="col5">10.20</oasis:entry>
         <oasis:entry colname="col6">68.4</oasis:entry>
         <oasis:entry colname="col7">0.53</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX explicit</oasis:entry>
         <oasis:entry colname="col2">100</oasis:entry>
         <oasis:entry colname="col3">17.42</oasis:entry>
         <oasis:entry colname="col4">16.580..30.053</oasis:entry>
         <oasis:entry colname="col5">99.61</oasis:entry>
         <oasis:entry colname="col6">68.4</oasis:entry>
         <oasis:entry colname="col7">68.26</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX explicit</oasis:entry>
         <oasis:entry colname="col2">1000</oasis:entry>
         <oasis:entry colname="col3">167.13</oasis:entry>
         <oasis:entry colname="col4">160.800..188.722</oasis:entry>
         <oasis:entry colname="col5">983.42</oasis:entry>
         <oasis:entry colname="col6">169.4</oasis:entry>
         <oasis:entry colname="col7">1299.14</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F9"><label>Figure 9</label><caption><p id="d2e4572">Total elapsed run-time <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> on log–log axes for HYDRUS-1D (8 parallel workers) and the GWSWEX solvers (8 parallel cores) on the intensive-sand-loam profile. Points: trial medians; shaded bands: trial min–max. Dashed annotations: power-law scaling exponent <inline-formula><mml:math id="M153" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> fitted over <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f09.png"/>

        </fig>

      <p id="d2e4621">At the single-column scale both GWSWEX solvers complete the 32 d, 768-step intensive sand-loam run faster than HYDRUS-1D, and at the largest tested ensemble (<inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1000</mml:mn></mml:mrow></mml:math></inline-formula>) the contrast widens by an order of magnitude. HYDRUS-1D's run-time at large <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is dominated not by physics computation but by text-format output: at <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1000</mml:mn></mml:mrow></mml:math></inline-formula> the 8 parallel workers collectively produce approximately 18.4 GiB of plain-text result files and queue behind each other for disk access, so total run-time climbs roughly five-fold relative to the single-column case even though physics computation itself scales sub-linearly. GWSWEX holds intermediate state in working memory and writes output two to three orders of magnitude more compactly, so its run-time scales with physics rather than disk throughput. The explicit-to-implicit run-time ratio of approximately 1.9 reflects the additional sub-steps the CFL stability criterion forces in the sand layer. All three configurations make near-full use of their cores (utilisation approximately 90 %, 63 % and 73 % for HYDRUS-1D, GWSWEX implicit and GWSWEX explicit respectively); working memory is modest throughout.</p>
      <p id="d2e4665">The run-time scaling exponents from log–log power-law fits over <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1000</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> are reported in Table <xref ref-type="table" rid="T10"/>. All three are below 1; HYDRUS-1D's exponent of 0.985 is indistinguishable from linear because its disk-output volume grows in direct proportion to <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and is not absorbed by the parallelism, whereas the GWSWEX exponents (0.926 implicit, 0.917 explicit) are meaningfully lower. Extrapolating to <inline-formula><mml:math id="M160" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> elements, representative of a moderately discretised regional catchment, gives approximately <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.0</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> s for HYDRUS-1D against <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:mn mathvariant="normal">7.4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> s for GWSWEX implicit and <inline-formula><mml:math id="M163" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> s for GWSWEX explicit, a factor of roughly 7–14 in favour of GWSWEX. The operational implications are taken up in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>.</p>

<table-wrap id="T10"><label>Table 10</label><caption><p id="d2e4777">Power-law run-time scaling exponents <inline-formula><mml:math id="M164" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> fitted by log-log regression over <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1000</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M166" 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> would indicate run-time growing in direct proportion to ensemble size; <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:mi mathvariant="italic">β</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> means run-time grows more slowly than linearly, so each additional column costs proportionally less as the ensemble grows.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Code</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M168" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> (<inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>)</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">HYDRUS-1D</oasis:entry>
         <oasis:entry colname="col2">0.985</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX implicit</oasis:entry>
         <oasis:entry colname="col2">0.926</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GWSWEX explicit (8 threads, <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>trapz</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2">0.917</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Discussion</title>
      <p id="d2e4934">Before turning to the individual process representations, it is instructive to connect the principal design choices of GWSWEX to the quantitative outcomes they produce. The compact in-memory handling of state and output, in place of per-step text files, is what allows run-time to scale with the physics rather than with disk throughput, yielding the sub-linear scaling exponents of approximately 0.92 to 0.93 reported in Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/> against the effectively linear exponent of the file-bound reference. The provision of two interchangeable solvers behind a shared state is what permits a regime-matched accuracy, the implicit scheme being the closer match under smooth, deep-water-table forcing and the explicit cascade under sharp wetting fronts, as the phase-resolved errors of Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/> make explicit. The strict per-step storage closure is what potentially allows the outer GW–UZ–SW coupling iteration to proceed without under-relaxation, while the piecewise-linear drainable-volume function recovers a moving groundwater head across material boundaries without recourse to a dynamic specific-yield closure. These linkages are developed in the subsections that follow.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Hydrological process representations</title>
      <p id="d2e4948">The phase-resolved metrics of Figs. <xref ref-type="fig" rid="F4"/> and <xref ref-type="fig" rid="F5"/> localise where GWSWEX matches HYDRUS-1D and which physical mechanisms drive the residual deviations.</p>
      <p id="d2e4955">Wet phase. In the basic scenario, the GWH rises monotonically over the 30 d window and the ranking of total rise reads off the soil-hydraulic structure: layered profiles combining a permeable upper layer with a high-storage substrate (sand-over-loam) deliver the most water to the saturated zone, while profiles with a low-<inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> retarder between the rooting zone and the GWH (loam-over-clay) deliver the least, and all three models agree to within the discretisation step. In the intensive scenario, every column saturates to the surface within the wet window, so the GWH-rise metric collapses onto the column depth and differentiation is carried by time to saturation. Clay floods fastest despite its low <inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and the layered loam-over-clay and sand-over-clay are the slowest. The mechanism is saturation-excess <xref ref-type="bibr" rid="bib1.bibx30" id="paren.35"/> rather than infiltration-excess <xref ref-type="bibr" rid="bib1.bibx42" id="paren.36"/>: precipitation sits well below <inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> in every simulation by design, so Hortonian overland flow is ruled out and saturation is reached by filling the pore-air deficit ahead of the wetting front. The clay retention curve (<inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">1.15</mml:mn></mml:mrow></mml:math></inline-formula>) concentrates moisture close to <inline-formula><mml:math id="M175" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> at hydrostatic equilibrium, leaving a small deficit, whereas the layered profiles must first fill the much larger deficit of the upper sand or loam layer. Both solvers match HYDRUS-1D to within a few hours in every simulation except explicit-clay, where the cascade's CFL-driven sub-stepping slows resolution of the steep wetting front. The wet-phase fidelity establishes that the gravity-flow branch of GWSWEX captures the wet-phase mass partition correctly across the catalogue, irrespective of layering.</p>
      <p id="d2e5021">Surface ponding. Ponding is absent by construction in the basic scenario. In the intensive scenario, the comparison is meaningful only for the four simulations in which HYDRUS completes the full horizon (loam, clay, sand-over-clay, loam-over-clay): in each, both GWSWEX solvers report higher peak ponding and longer ponded duration than HYDRUS-1D, with the discrepancy largest in the low-<inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> profiles. Both codes retain a genuine surface reservoir here (HYDRUS-1D is run with its surface-layer atmospheric boundary condition enabled for this setup, precisely so that ponded water accumulates rather than being shed as runoff), so the discrepancy is not one of storage versus loss. The discrepancy reduces to a structural difference in how the two codes handle evapotranspiration once the column saturates. Per-step mass-balance accounting on the intensive-loam saturated window – where the soil column is at <inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, the bottom boundary is effectively no-flow, and no runoff occurs – shows the following. GWSWEX takes evaporation and transpiration at the full prescribed potentials (<inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>), keeps the column at <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> throughout (no UZ or GW storage change), and routes exactly the residual <inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>act</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> into the surface-water store – the only mass-conservative outcome once the soil pore space is full and surface storage is the only remaining outlet. HYDRUS-1D, by contrast, withdraws water from its soil-column evapotranspiration sink at a rate substantially in excess of its prescribed potential transpiration once the column is saturated (approximately <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mn mathvariant="normal">8.4</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> larger on intensive-loam); this excess internal withdrawal is fed by continued surface infiltration at the same rate, so only a small residual raises the surface head and the HYDRUS-1D peak ponding stays at <inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">16</mml:mn></mml:mrow></mml:math></inline-formula> mm against GWSWEX's <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">75</mml:mn></mml:mrow></mml:math></inline-formula> mm. The peak-ponding gap therefore tracks how much of the post-saturation net atmospheric flux each code routes through surface storage versus through continued surface infiltration feeding the internal evapotranspiration sink. The observed ratio of actual to prescribed root-water uptake in HYDRUS-1D over the intensive-loam saturated window is approximately <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mtext>Root</mml:mtext></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">8.4</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>r</mml:mi><mml:mtext>Root</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> (against <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>pot</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> on the GWSWEX side). We examined the HYDRUS-1D user manual, the <monospace>SINK.FOR</monospace> source code, and the root-uptake literature <xref ref-type="bibr" rid="bib1.bibx34 bib1.bibx72" id="paren.37"/> in an effort to identify the code path or model feature responsible for this excess; the standard Feddes stress function bounds the reduction factor <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, so <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>≤</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>pot</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> by construction, and the textbook Feddes model does not predict uptake in excess of the prescribed potential. Our investigation did not yield a definitive explanation for the observed behaviour, which we therefore report as an empirical observation rather than attribute to a specific mechanism. On the GWSWEX side both solvers are mass-conservative, and their surface-water output correctly represents the post-saturation <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>act</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> residual. The practical implication is that any application coupling GWSWEX's surface-water output directly to an external routing or runoff model should expect the native-macro-step ponding-depth series to read persistently higher and hold longer than a HYDRUS-1D reference in the saturated-column regime, and any column-water-balance comparison that uses peak-ponding magnitude or ponded duration as a diagnostic should bear this in mind. More broadly, the unresolved HYDRUS-1D-side behaviour above underscores that the present code-to-code verification, while apt to present the model's workings and its per-column mass-conservation properties, is not in itself an adequate benchmark of GWSWEX: a full-fledged validation against an integrated or coupled hydrological model under real-world field conditions is required to properly benchmark the surface-water and evapotranspiration partition, and is the natural successor experiment signalled in Sect. <xref ref-type="sec" rid="Ch1.S4.SS5"/> and <xref ref-type="sec" rid="Ch1.S4.SS4"/>.</p>
      <p id="d2e5255">Dry-phase recession. The dry phase is governed by capillary rise from the GWH, root-zone ET extraction, and slow capillary-fringe relaxation, and is where the two models diverge most consequentially. Two structural mechanisms drive the residual. First, the ET-stress closures are asymmetric: the Feddes parameterisation <xref ref-type="bibr" rid="bib1.bibx34" id="paren.38"/> used by HYDRUS-1D is a function of the matric pressure head <inline-formula><mml:math id="M190" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> at every node along the rooting profile, weighted by a prescribed root-density distribution and integrated up to the potential transpiration; the Laio closure <xref ref-type="bibr" rid="bib1.bibx51" id="paren.39"/> used by GWSWEX is a function of the zone-averaged effective saturation <inline-formula><mml:math id="M191" display="inline"><mml:mi>s</mml:mi></mml:math></inline-formula> over the rooted zone treated as a single reservoir. Although <inline-formula><mml:math id="M192" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M193" display="inline"><mml:mi>s</mml:mi></mml:math></inline-formula> are in principle one-to-one through the van Genuchten retention, the zone averaging discards vertical structure, and in clay-rich profiles the Feddes wilting head <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msub><mml:mo>≈</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.5</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> cm corresponds to a saturation well below Laio's <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, so HYDRUS continues to extract transpiration into a regime where Laio has already throttled it; the dry-phase capillary demand on the saturated zone is therefore larger in HYDRUS than in GWSWEX. Both closures are empirical, and neither is a gold standard. Second, capillary rise from the GWH to the root zone is mediated in the cascade through the inter-layer connectivity ratio and the equilibrium-storage quadrature, both coarser than the node-based head-gradient computation in HYDRUS-1D, and the difference accumulates over the recession horizon when the GWH is far from the root zone.</p>
      <p id="d2e5329">These two mechanisms account for the recession patterns visible in Fig. <xref ref-type="fig" rid="F4"/>. In the basic scenario, only clay exhibits a positive (deepening) recession because it alone retains wet-phase moisture in the upper zones against gravity drainage and so satisfies the dry-phase ET demand by capillary rise from the GWH; the cascade and the Richards solver agree on this depletion to tenths of <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:mi mathvariant="normal">cm</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="normal">d</mml:mi></mml:mrow></mml:math></inline-formula>, while the other five simulations show negative recession rates as wet-phase recharge that has not yet reached the saturated zone continues to propagate downward. In the intensive scenario, GWSWEX under-estimates the HYDRUS recession by approximately 30 % on intensive-clay and by smaller amounts on loam-over-clay and intensive-loam, the joint signature of the closure asymmetry and the cascade's coarser saturated-to-unsaturated upward-flux representation. Part of the dry-phase residual in clay-bearing intensive simulations also reflects HYDRUS-1D's own numerical limitations in low-<inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> columns under hourly forcing (see Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>) rather than a one-sided GWSWEX defect. Intensive-sand and intensive-sand-over-loam report no usable dry-phase recession against HYDRUS because the modified-Picard solver terminates during the dry phase under sustained low-<inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> ponding.</p>
      <p id="d2e5370">The zone-resolved saturation traces of Figs. <xref ref-type="fig" rid="F6"/> and <xref ref-type="fig" rid="F7"/> corroborate this picture: in the basic scenario the root-zone trace tracks the daily forcing pulses, the transmission zone responds with a 1–3 d delay (the physical origin of the negative basic-dry-phase recession rates), and the capillary-fringe trace carries the slow monotone GWH signal; in the intensive scenario the upper two zones cycle hourly with the forcing while the deeper transmission zone responds to the GWH, and the column-mean trace confirms storage conservation on the macro-step scale. The largest GWSWEX–HYDRUS departures concentrate in the deeper zones of the low-<inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> intensive simulations, localising the residual intensive-clay GWH error to the saturated–unsaturated capillary coupling in the lower column.</p>
      <p id="d2e5388">The verification also confirms that the implicit and explicit solvers are best understood as peers whose strengths emerge across different forcing–soil regimes. The implicit Picard scheme is the more accurate match wherever the GWH trajectory is smooth and the gravity-drainage CFL constraint of the explicit cascade would force inefficiently small sub-steps (the loam, clay, and loam-over-clay basic simulations and the intensive loam-over-clay simulation). The explicit cascade is the more accurate match wherever the response is dominated by a sharp wetting front that the implicit macro-step under-resolves (principally the basic sand-bearing profiles). The case for offering both solvers is therefore not a default-and-fallback hierarchy but a recognition that the regime space encountered by a regional integrated model is too broad for any single 1-D scheme to cover with uniform fidelity.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Physical interpretation of process-parameter sensitivity</title>
      <p id="d2e5399">The per-family discussion of the OAT outcomes summarised in Fig. <xref ref-type="fig" rid="F8"/> is best read alongside the phase-resolved RMSEs of Fig. <xref ref-type="fig" rid="F5"/>.</p>
      <p id="d2e5406">Wet-phase controls: infiltration and inter-layer connectivity. During the wet phase the dominant process is downward propagation of the wetting front, and the parameters governing its speed and mass partition are the most influential wet-phase controls. The inter-layer connectivity floor <inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:msub><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the dominant wet-phase lever for the explicit cascade, and its optimum is strongly soil-dependent: clay-rich profiles benefit from low floors because the cascade must not over-couple adjacent layers across a low-<inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> medium that physically supports steep moisture gradients, while loam and loam-bearing layered profiles prefer high floors so that redistribution tracks the daily forcing. The implicit solver does not enter <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:msub><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> into its Picard residual, and the OAT sweeps confirm this empirically. The Courant safety factor <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is scored against overall RMSE but its physical effect is concentrated in the wet phase: the intensive loam-over-clay simulation, where successive <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:msub><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> moves account for the campaign's largest single per-simulation RMSE reduction, illustrates the mechanism most clearly. The Green–Ampt suction head <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and floor <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> are effectively inert across the grid because the experimental design avoids regimes in which precipitation exceeds <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e5509">Dry-phase controls: ET partitioning and capillary recession. In the dry phase the GWH falls under combined drainage and ET-driven capillary rise, and the Laio thresholds that partition <inline-formula><mml:math id="M209" display="inline"><mml:mi mathvariant="normal">PE</mml:mi></mml:math></inline-formula> between transpiration and bare-soil evaporation become the dominant controls. The thresholds <inline-formula><mml:math id="M210" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> are case-sensitive and do not collapse to a single best value across soils, reflecting that the effective saturation at which plants begin to stress is a joint function of retention curve and root architecture, neither prescribed by the van Genuchten parameterisation alone. The OAT campaign consistently finds 5 %–30 % dry-phase RMSE reductions by adjusting these thresholds, with no meaningful solver asymmetry. The explicit hysteresis blend <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mtext>hyst</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is effectively insensitive because the cascade does not track a full scanning loop at the module level.</p>
      <p id="d2e5566">Solver-specific implicit parameter: Picard convergence. The Picard tolerance <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the only meaningful implicit parameter in field-scale runs. Tightening from <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> closes a small late-recession bias in most basic-scenario simulations because a looser tolerance allows slow accumulation of head error during long dry-phase capillary drainage. The intensive clay and sand-over-clay cases prefer a deliberately looser tolerance (<inline-formula><mml:math id="M214" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>): tighter tolerances drive the iteration count to the cap and trigger non-converged Picard exits that perturb the head trajectory more than a converged-but-loose solution does. This is a known failure mode of iterative Richards solvers in low-<inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> ponded settings and is the principal reason for the bounded <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> default; the cap is co-varied with <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> so a tightened residual criterion can be met within the allocated iteration budget.</p>
      <p id="d2e5643">The iterated OAT design is a deliberate compromise between interpretability and tractability across twenty-four simulations. The parameter responses it probes are, moreover, markedly nonlinear and mutually interacting, in that the influence of any one parameter on the groundwater-head error depends jointly on the soil, the forcing regime, and the values already assigned to the other parameters. Three caveats apply: OAT is blind to parameter interactions, the coordinate-descent acceptance is greedy, and per-parameter credit is sweep-order dependent. The basic-clay-explicit simulation illustrates the ordering effect directly: <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> delivers a large RMSE reduction only after <inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:msub><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> has been reduced to its low-<inline-formula><mml:math id="M220" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> value. A variance-based global campaign <xref ref-type="bibr" rid="bib1.bibx59 bib1.bibx73" id="paren.40"/> would partition variance more honestly between main effects and interactions <xref ref-type="bibr" rid="bib1.bibx69 bib1.bibx65" id="paren.41"/> at a compute cost outside the scope of an introductory verification. The structural ceilings in Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/> are robust to search method because they are bounded by physical-discretisation arguments rather than by the optimiser; the per-parameter attributions reported here are evidence-of-relevance rather than a global ranking.</p>
</sec>
<sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Operational implications for regional integrated modelling</title>
      <p id="d2e5692">Three operational implications follow from the performance results. First, the GWSWEX speed advantage is present even at the single-column scale, and the divergence from HYDRUS-1D in Fig. <xref ref-type="fig" rid="F9"/> reflects a structural difference in how the two models handle output, not an artefact of the parallelisation strategy. Second, the scaling exponents in Table <xref ref-type="table" rid="T10"/> show the advantage compounds with domain size: HYDRUS-1D's exponent of 0.985 is indistinguishable from linear scaling because its disk-output volume grows in direct proportion to <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and that I/O cost is not absorbed by parallelism, whereas the GWSWEX exponents of 0.926 (implicit) and 0.917 (explicit) are meaningfully lower; at <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, representative of a moderately discretised regional catchment, the gap corresponds to a factor of roughly 7–14 in run-time. Third, the strict per-step water-balance closure of both solvers is directly relevant to coupled modelling: in a regional GW–UZ–SW coupling the UZ module is called repeatedly within each coupling step as the groundwater head and surface-water levels are iterated to mutual consistency, and a UZ solver with a large mass-balance residual would inject spurious recharge or capillary-rise fluxes at each call, either destabilising the outer iteration or requiring under-relaxation at the cost of slower convergence. The small per-step residual of GWSWEX avoids this and allows the coupling iteration to converge without additional damping.</p>
</sec>
<sec id="Ch1.S4.SS4">
  <label>4.4</label><title>Limitations</title>
      <p id="d2e5737">Three classes of limitation bound the present results: limits of the verification design, structural ceilings of the GWSWEX abstraction, and modelling extensions still to be added.</p>
      <p id="d2e5740">Limits of the verification design. HYDRUS-1D is a defensible reference for vertical 1-D variably saturated flow on a single column but is not a gold standard for plot-scale hydrology. Its mixed-form Richards equation inherits the known limitations of the Richards model <xref ref-type="bibr" rid="bib1.bibx39" id="paren.42"/> (single matric-potential continuum, no preferential or macropore flow), the Feddes ET closure shares the empirical character of Laio, and lateral redistribution and bidirectional UZ–SZ coupling at the field scale are outside its representation. The modified-Picard discretisation is known to converge poorly in clay-rich columns under ponded conditions <xref ref-type="bibr" rid="bib1.bibx80 bib1.bibx32 bib1.bibx84" id="paren.43"/>, so the GWSWEX–HYDRUS gap in the intensive-clay, intensive-sand and intensive-sand-over-loam cells reflects the joint uncertainty of two structurally limited solvers rather than a one-sided GWSWEX deficit. The intensive-sand and intensive-sand-over-loam HYDRUS runs terminate at <inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">16.7</mml:mn></mml:mrow></mml:math></inline-formula> d and <inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">13.3</mml:mn></mml:mrow></mml:math></inline-formula> d: with <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, once the column saturates the Darcy head gradient demanded by the flux collapses to near zero, the Picard mass-matrix diagonal <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:msup><mml:mi>C</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>/</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> vanishes simultaneously across the column, and convergence fails for any admissible time-step <xref ref-type="bibr" rid="bib1.bibx57 bib1.bibx72 bib1.bibx32" id="paren.44"/>. Loam and clay-bearing intensive runs survive because their lower <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> keeps <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:mi>P</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> non-trivial (approximately <inline-formula><mml:math id="M229" display="inline"><mml:mn mathvariant="normal">0.09</mml:mn></mml:math></inline-formula> for intensive-loam) and the Picard diagonal retains structure throughout. The available HYDRUS workarounds (run-off boundary, <inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mtext>CritS</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> cap, free-drainage lower boundary) each suppress rather than resolve the regime, motivating the structural alternatives pursued by fully-integrated surface-subsurface models <xref ref-type="bibr" rid="bib1.bibx47 bib1.bibx15" id="paren.45"/> and successive updates to the HYDRUS-for-MODFLOW coupling <xref ref-type="bibr" rid="bib1.bibx78 bib1.bibx7 bib1.bibx83" id="paren.46"/>. HYDRUS-1D's diagnostic output declares “Hydrus-1D Simulation Successful” through the <monospace>phydrus</monospace> interface even when the engine has issued “the numerical solution has not converged” to its native run information; the truncations were detected by inspecting the final time stamp in the engine's node-information output and are reflected here, but a comparison relying solely on the wrapper-reported success flag would silently include HYDRUS values for time intervals the solver never simulated.</p>
      <p id="d2e5877">The intensive-clay reference is also affected by a less obvious HYDRUS-1D artefact that shapes how the largest GWSWEX–HYDRUS GWH residual should be read. The relaxed clay parameters carry a van Genuchten exponent <inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.15</mml:mn></mml:mrow></mml:math></inline-formula>, hence <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0.13</mml:mn></mml:mrow></mml:math></inline-formula>, producing a near-flat retention curve close to saturation and a specific moisture capacity <inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:math></inline-formula> roughly two orders of magnitude smaller than in loam in the wet-phase saturation range. The HYDRUS-1D modified-Picard scheme converges on the water-content tolerance <monospace>tolth</monospace> (default <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mtext>m</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mtext>m</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>); with <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mtext>m</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> in the wet-phase clay column the implied head precision is <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>h</mml:mi><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">0.25</mml:mn></mml:mrow></mml:math></inline-formula> m. The relaxed-clay air-entry value (<inline-formula><mml:math id="M237" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0.83</mml:mn></mml:mrow></mml:math></inline-formula> m) places the entire unsaturated column inside the capillary fringe, so <inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is in this near-flat regime at every node. The HYDRUS-1D GWH is recovered from the topmost <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> sign change in the head profile; a head field mass-balanced in <inline-formula><mml:math id="M240" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> but underdetermined in <inline-formula><mml:math id="M241" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> then produces apparent GWH jumps of order 5–15 cm between consecutive hourly outputs. The GWSWEX GWH is recovered from integrated drainable volumes and does not exhibit this artefact; a meaningful share of the apparent intensive-clay GWH RMSE is therefore an artefact of HYDRUS-1D's head inference under low <inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and the zone-averaged water content (Fig. <xref ref-type="fig" rid="F7"/>), which matches GWSWEX implicit to within the discretisation step, is the more reliable diagnostic in this regime.</p>
      <p id="d2e6087">The synthetic verification design is also intrinsically limited: a design that holds forcing, soil parameters and boundary conditions perfectly known tests only the consistency of two numerical implementations of an idealised conceptual model, not its real-world adequacy; a campaign against measured field data, isolating the additional uncertainties of atmospheric forcing, parameter estimation and lateral boundary conditions, is the natural successor experiment and is next the focus of ongoing work.</p>
      <p id="d2e6091">Structural ceilings of GWSWEX. Three simulation regimes resist further tuning improvements and bound the OAT campaign rather than reflecting calibration deficits. The intensive-clay regime is the most decisive: HYDRUS-1D attempts to resolve the strong matric-potential gradient that builds up against a slow infiltration front in low-<inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> media, while a layered-bucket cascade cannot represent a head gradient sharper than its layer thickness, and the rapid GWH cycling repeatedly excites the very mode the cascade cannot resolve. The intensive-loam and intensive-sand-over-loam regimes exhibit the same mechanism under prolonged surface ponding. A small additional structural difference is that GWSWEX applies <inline-formula><mml:math id="M244" display="inline"><mml:mi mathvariant="normal">PE</mml:mi></mml:math></inline-formula> uniformly through the wet phase while HYDRUS-1D suppresses it whenever a precipitation flux is present (an implicit canopy-interception assumption), contributing a <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> cm cumulative-AE difference but too small to dominate the GWH RMSE. Candidate physical fixes for the discretisation gap (per-module <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> refresh, harmonic-mean inter-layer conductivity, sub-layer head reconstruction) are enumerated in the open-issues note provided with the repository <xref ref-type="bibr" rid="bib1.bibx49" id="paren.47"/>; each trades structural fidelity for one of the cascade's principal virtues (frozen-coefficient simplicity, mass-conservative monotone fluxes, robustness in ponded settings) and belongs to a subsequent revision.</p>
      <p id="d2e6136">Model extensions. The current model treats each element as an independent 1-D column and does not represent lateral UZ flow, retention-curve hysteresis, snow accumulation and melt, canopy interception, or non-equilibrium and preferential flow. The two priority process-physics extensions are: a richer ET partitioning module, motivated by the OAT campaign's consistent 5 %–30 % dry-phase RMSE reductions from Laio-threshold tuning indicating that the dry-phase residual is ET-dominated; and improved capillary-rise representation, where the inter-layer connectivity ratio and equilibrium-storage quadrature degrade under sharp wetting fronts in low-<inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> media. A retention-curve hysteresis module <xref ref-type="bibr" rid="bib1.bibx48" id="paren.48"/> would relieve <inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mtext>hyst</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> of its surrogate role; lateral UZ flow is partly mitigated by the lateral source/sink interface; snow and preferential-flow modules are second-tier extensions for cold-region and strongly macroporous settings. The corresponding methodological extensions are a guided UZ-discretisation utility, a variance-based global sensitivity campaign, and a measured-field-data verification campaign. A longer-horizon architectural consideration is the porting of the model kernel to the Kokkos heterogeneous-compute framework, which would enable GPU and accelerator execution while preserving per-element modularity and the dual-solver architecture, and would position GWSWEX for large-scale regional coupling and large ensemble uncertainty-quantification campaigns using advanced hardware.</p>
</sec>
<sec id="Ch1.S4.SS5">
  <label>4.5</label><title>Implications for coupling</title>
      <p id="d2e6172">The intended use of GWSWEX is as a per-element UZ coupler between GW and SW models, exchanging recharge, capillary rise and net surface fluxes through the lateral source/sink interface at each macro-step. Three consequences of the present results bear on that use case. First, the dual-solver architecture maps onto the temporal regime heterogeneity any coupled simulation encounters: the explicit solver is the natural choice during ponding-prone, high-frequency-forcing windows where CFL-adaptive sub-stepping is required, and the implicit solver during smooth, deep-GWH windows where unconditional stability permits long macro-steps. The interface described in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/> performs this transition in-place, preserving the full model state, so the coupled system does not need to restart. This temporal flexibility is not available in single-solver couplers. Second, the per-step mass-balance closure of both solvers means the iterative coupling protocol enabled by the lateral source/sink interface can proceed without the additional under-relaxation that lossier schemes would demand. Third, GWSWEX accepts a variable number of UZ layers and a variable per-layer thickness on a per-element basis: the same coupled domain can carry a fine stack near the surface, around the climatological GWH range, or at elements interacting with surface-water bodies, alongside a coarser stack in low-activity elements. This places vertical- and temporal-discretisation design decisions in the user's hands that fixed-stack, single-solver couplers do not require but also do not permit.</p>
</sec>
<sec id="Ch1.S4.SS6">
  <label>4.6</label><title>Comparison with related work</title>
      <p id="d2e6185">GWSWEX occupies an intentional position in the spectrum between fully integrated 3-D models such as <xref ref-type="bibr" rid="bib1.bibx47 bib1.bibx17 bib1.bibx15 bib1.bibx50 bib1.bibx53" id="text.49"/> and conceptual or water-balance bucket models such as <xref ref-type="bibr" rid="bib1.bibx75 bib1.bibx16" id="text.50"/>: a process-based, vertically resolved 1-D UZ representation that retains the physical interpretability of the constitutive relations while remaining computationally light enough to run per-element in a regional outer iteration. The trade-off taxonomy of <xref ref-type="bibr" rid="bib1.bibx33" id="text.51"/>, between fidelity, parameter identifiability, computational cost and operational reach, captures the design space, and the choices made here, namely vertical 1-D physics, two interchangeable solvers behind a shared kernel state and a single user-facing API, per-element OpenMP, a lateral source/sink interface, and an openly released code base, prioritise per-element cost and parameter interpretability over the full three-dimensional fidelity of the more complex models, while retaining the matric-potential gradient and the prognostic groundwater head that conceptual bucket schemes do not represent.  Comparable mid-spectrum 1-D efforts adopt similar architectural compromises for similar reasons but stop short of the combination of openness, modularity, and flexibility that GWSWEX assembles. <xref ref-type="bibr" rid="bib1.bibx12" id="text.52"/> couple a conceptual UZ in MOBIDIC to MODFLOW with a hydrostatic-equilibrium soil-moisture assumption and a power-type recharge closure; the scheme is fast and gives a useful baseline for shallow water tables, but the hydrostatic assumption forecloses on the matric-potential gradient and the moving wetting front by construction, and the implementation is presented as a conceptual modification rather than as a released, reusable code base. <xref ref-type="bibr" rid="bib1.bibx14" id="text.53"/> provide an explicit comparison of iterative and non-iterative coupling between a 1-D mixed-form Richards UZ and a 2-D Boussinesq aquifer in MATLAB together with a dynamic specific-yield closure, with code on Zenodo; the conceptual proximity to the present design is high, but the model is a methodological vehicle in an interpreted language rather than a usable model. <xref ref-type="bibr" rid="bib1.bibx63" id="text.54"/> test quadratic and linear drainage bottom boundary conditions in HYDRUS-1D against a 2-D HydroGeoSphere reference and show that a 1-D vertical model can reproduce horizontal-aquifer-induced GWH fluctuations once the drainage BC is calibrated; the demonstration is valuable, but the approach substitutes an empirical drainage parameterisation for an explicit GW solver whereas GWSWEX exposes the lateral exchange directly to an external GW solver through the source/sink interface and so neither requires nor calibrates a drainage closure of its own.</p>
      <p id="d2e6209">Several GW–UZ–SW couplers in the same architectural family warrant specific mention. GSFLOW <xref ref-type="bibr" rid="bib1.bibx68" id="paren.55"/> couples the PRMS soil-zone module to MODFLOW with a daily time step and a Hortonian-plus-Dunnean infiltration partition; the code is openly distributed by the U.S. Geological Survey, but the UZ representation is reservoir-based per HRU and does not resolve the matric-potential gradient, and the daily step precludes the sub-daily ponding-prone forcing regimes the GWSWEX explicit solver is designed for. MIKE-SHE <xref ref-type="bibr" rid="bib1.bibx44 bib1.bibx27" id="paren.56"/> offers either a 2-layer simplified UZ or a 1-D Richards UZ on each cell coupled to a 3-D GW solver; its 1-D Richards option is the closest functional analogue to the GWSWEX implicit solver, but the closed-source commercial distribution forecloses on community contributions, on reproducibility of published results from source, and on the ensemble-grade calibration that motivates the present design. The HYDRUS-package-for-MODFLOW lineage <xref ref-type="bibr" rid="bib1.bibx7 bib1.bibx83" id="paren.57"/> delivers a 1-D Richards UZ coupled to MODFLOW with iteratively updated specific yield; the model physics is notable and the academic version is widely used, but the GUI-and-binary distribution model and the convergence fragility of the underlying Picard iteration under wet-then-rapid drying forcings, also documented in the present HYDRUS-1D runs (Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>), together limit its applicability to large ensemble sizes. Within MODFLOW itself, the UZF1 package <xref ref-type="bibr" rid="bib1.bibx62" id="paren.58"/> solves a kinematic-wave approximation of vertical unsaturated flow by the method of characteristics with Brooks–Corey conductivity, omitting the matric-potential gradient and therefore upward capillary fluxes by construction; this is appropriate for deep, freely draining settings but is restrictive for the shallow-water-table regimes for which GWSWEX is designed, where capillary rise is a quantitatively important term of the ET-and-GWH balance. The companion SWB code <xref ref-type="bibr" rid="bib1.bibx81" id="paren.59"/> provides a daily Thornthwaite–Mather soil-water-balance preprocessor for MODFLOW recharge inputs; it is a useful complement upstream of a MODFLOW simulation but does not perform two-way GW–UZ–SW coupling and does not track a prognostic groundwater head.</p>
      <p id="d2e6230">Beyond the MODFLOW family, an adjacent group of openly released models pursues modularity and performance portability on areas similar to the one GWSWEX prioritises. The Simulator for Hydrologic Unstructured Domains <xref ref-type="bibr" rid="bib1.bibx71" id="paren.60"/> couples 1-D unsaturated flow, 2-D groundwater flow and a finite-volume overland and channel network on unstructured meshes; like GWSWEX it builds regional capability on a vertically 1-D unsaturated representation, but it solves the integrated surface–subsurface system directly rather than serving as a per-element unsaturated-zone coupler to external GW and SW solvers. ParFlow <xref ref-type="bibr" rid="bib1.bibx47 bib1.bibx50" id="paren.61"/> solves the full 3-D variably saturated Richards equation with multigrid-preconditioned Krylov methods and scales to thousands of cores, setting the reference standard for the integrated 3-D class; its per-evaluation cost rules out ensemble-grade calibration in the regional regimes targeted here, and it offers no reduced-order option for the long smooth-forcing windows of a regional simulation. The recently released SERGHEI-RE <xref ref-type="bibr" rid="bib1.bibx53" id="paren.62"/> provides interchangeable iterative (modified Picard) and non-iterative (predictor–corrector) Richards schemes within a Kokkos-based performance-portable C<inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> framework, confirming that the dual-solver design choice is a converging trend; it differs from GWSWEX in that it solves the full 3-D Richards equation and its two schemes span the same physical fidelity rather than an explicit-cascade–implicit-Richards continuum, and its integration with the broader SERGHEI surface-flow framework is staged rather than complete in this release. The modular-process philosophy of SUMMA <xref ref-type="bibr" rid="bib1.bibx21 bib1.bibx22" id="paren.63"/> and the multi-scale parameter regionalisation of mHM <xref ref-type="bibr" rid="bib1.bibx70" id="paren.64"/> target the flux-parameterisation and parameter-regionalisation axes rather than the time-discretisation axis, and their UZ representations do not resolve the matric-potential gradient. CWatM <xref ref-type="bibr" rid="bib1.bibx16" id="paren.65"/> and PCR-GLOBWB <xref ref-type="bibr" rid="bib1.bibx75" id="paren.66"/> exemplify the open, modular, Python-based global hydrology stack whose software-engineering practices map directly onto the practices adopted here; their UZ representations remain conceptual storages without a moving prognostic groundwater head, and they target coarser resolutions and different policy questions.</p>
      <p id="d2e6265">GWSWEX therefore differs from these adjacent efforts in the combination it assembles: a dual-solver kernel that spans the explicit-cascade–implicit-Richards continuum behind a shared state and a single user-facing API, an OpenMP-parallel modern-Fortran core exposed to Python through <monospace>f2py</monospace> behind a strongly-typed configuration layer and a documented NetCDF I/O schema, a prognostic groundwater head recovered as a piecewise-linear drainable-volume integral that lets the iterative coupling proceed without a dynamic specific-yield closure, and a lateral source/sink interface that lets the same model be driven by external GW and/or SW solvers without modification of the kernel while preserving per-step mass-balance closure. The model description in this paper, together with the openly archived code release and the verification artefacts, is intended to make each of these matters inspectable and reproducible at the level of the source.</p>
      <p id="d2e6272">The fully coupled 3-D solvers retain a structural advantage no reduced-order coupler can reproduce: they admit lateral capillary and saturated-zone flow inside the variably saturated continuum, resolve perched and seasonal saturated zones from local topography and material contrasts without operator intervention, and close the GW–UZ–SW mass budget without an outer iteration. The cost of these advantages is the per-evaluation expense documented in Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/> and discussed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/> and the parameter-identifiability burden discussed by <xref ref-type="bibr" rid="bib1.bibx33" id="text.67"/> and <xref ref-type="bibr" rid="bib1.bibx20" id="text.68"/>. The class of problems for which GWSWEX is the natural instrument, namely ensemble simulation and calibration, multi-decadal projection, and sensitivity studies across large spatial domains, is precisely the class for which the per-evaluation cost and identifiability burden of fully coupled 3-D models are prohibitive.</p>
</sec>
</sec>
<sec id="Ch1.S5" sec-type="conclusions">
  <label>5</label><title>Conclusions</title>
      <p id="d2e6295">GWSWEX has been introduced as a vertically resolved, dual-solver, process-based unsaturated-zone coupler addressing the gap between fully integrated 3-D models that resolve the entire variably-saturated subsurface at considerable computational cost and conceptual or water-balance bucket models that omit the vertical UZ physics altogether. It was verified against HYDRUS-1D on twenty-four (soil <inline-formula><mml:math id="M250" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> scenario <inline-formula><mml:math id="M251" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> solver) simulations drawn from the Carsel–Parrish catalogue <xref ref-type="bibr" rid="bib1.bibx18" id="paren.69"/> under two contrasting forcing scenarios, and the sensitivity of its empirical parameters was characterised through an iterated one-at-a-time coordinate-descent campaign across the same cases. The results support five headline conclusions.</p>
      <p id="d2e6315">First, GWSWEX faithfully reproduces gravity-driven UZ–GWH physics. Both solvers match HYDRUS-1D to within or close to the discretisation step in every basic simulation (RMSE <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> cm in eleven of twelve), and the wet-phase agreement in the intensive scenario is uniformly tight (mean GWH-RMSE 4.0 cm implicit and 8.0 cm explicit against absolute GWH excursions of order 1 m). The wet-phase performance, where gravity drainage and infiltration dominate, is essentially HYDRUS-equivalent across the entire catalogue.</p>
      <p id="d2e6328">Second, the dual-solver architecture is justified on physical grounds. The implicit and explicit solvers are not a default and a fallback: each is the more accurate match to HYDRUS-1D in the regime for which it is designed, namely the implicit Picard scheme for smooth forcing and deep groundwater heads, and the explicit CFL-adaptive cascade for sharp wetting fronts and ponded surfaces. Carrying both behind a single API at no run-time cost for the unused path lets a coupled-modelling user honour the regime heterogeneity of a regional domain at no architectural cost.</p>
      <p id="d2e6331">Third, the limits of the model are characterised. The structural ceilings in the clay-bearing intensive simulations are inherent to a layered-bucket abstraction that cannot resolve matric-potential gradients steeper than the layer thickness; the OAT campaign provides the evidence that further empirical tuning would be over-fitting. A separate share of the intensive-clay residual is attributable to the modified-Picard solver in HYDRUS-1D itself, known to converge poorly in low-<inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> columns under sharp wetting fronts <xref ref-type="bibr" rid="bib1.bibx32 bib1.bibx80" id="paren.70"/>, so the 40 cm GWSWEX–HYDRUS gap reflects the combined limitations of both solvers, not a one-sided GWSWEX deficit. The dry-phase residual arises partly from the ET closure (where neither code is a gold standard) and partly from the cascade's capillary-flux representation; both are addressed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>.</p>
      <p id="d2e6351">Fourth, the model is computationally tractable at regional ensemble scales. At <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> both solvers complete the 32 d intensive benchmark 6–12 times faster than parallelised HYDRUS-1D on the same core count; extrapolating the fitted scaling to <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> gives a factor of 7–14 in wall time. The advantage arises from element-parallel OpenMP execution and compact in-memory output that eliminates the disk-throughput bottleneck dominating HYDRUS-1D's run-time at large ensembles. Sub-linear exponents (<inline-formula><mml:math id="M256" display="inline"><mml:mrow><mml:mi mathvariant="italic">β</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0.92</mml:mn></mml:mrow></mml:math></inline-formula>–<inline-formula><mml:math id="M257" display="inline"><mml:mn mathvariant="normal">0.93</mml:mn></mml:math></inline-formula> for GWSWEX against 0.99 for HYDRUS-1D) confirm the per-column cost decreases with ensemble size, the property that makes ensemble-grade calibration and multi-decadal projection feasible at the regional scale.</p>
      <p id="d2e6409">Fifth, the path forward is clear and tractable. Closing the dry-phase residual calls for a structural revision of the inter-layer capillary flux representation and a richer ET closure with diurnal cycle and canopy interception. Closing the structural ceilings in low-<inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> ponded regimes calls for one of the candidate fixes enumerated in Sect. <xref ref-type="sec" rid="Ch1.S4.SS4"/>. Beyond those, lateral UZ flow, retention-curve hysteresis, snow, and interception, and full coupling demonstrators with MODFLOW and Delft3D Flexible Mesh are the natural next steps. The verification campaign should be extended in parallel to a measured-field-data benchmark and a second 1-D Richards reference, lifting the principal limitations of the present synthetic-only design.</p>
      <p id="d2e6425">GWSWEX provides a credible, physically interpretable, and computationally tractable UZ component for regional integrated modelling, at a per-element computational effort low enough for ensemble-grade calibration, projection, and sensitivity studies on consumer-grade computers. The dual-solver design, the strict mass-conservation discipline, and the open-source release of code and verification campaign are intended to make it a reusable starting point for both UZ-component research and downstream coupled-modelling applications.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Model physical description</title>
      <p id="d2e6439">The complete governing equations, spatial and temporal discretisations, solver formulations, and per-process flux derivations for both the explicit and implicit solvers are provided in this appendix. The complete per-module pseudocode and full derivations are also carried in the open-source repository accompanying the paper; notation, equation numbering, and module conventions are consistent throughout.</p>
<sec id="App1.Ch1.S1.SS1">
  <label>A1</label><title>Overview</title>
      <p id="d2e6449">GWSWEX is a vertically resolved, dual-solver hydrological model that couples GW, UZ, and SW dynamics in independent layered soil columns at plot scale and above (see Fig. <xref ref-type="fig" rid="F1"/> for the storage and flux architecture of a single column element). Each model element represents a single column and is solved in isolation; lateral interactions between elements are not internal to GWSWEX but are prescribed by the external GW and SW models with which GWSWEX is coupled, and are passed in as element-wise lateral source/sink rates.</p>
      <p id="d2e6454">The model evolves three storage variables, all expressed in depth units <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mi>L</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>:</p>
      <p id="d2e6469"><list list-type="bullet">
            <list-item>

      <p id="d2e6474"><inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:msup><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, the volumetric water content per unit area of unsaturated layer <inline-formula><mml:math id="M261" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, which is the primary prognostic quantity of the explicit solver;</p>
            </list-item>
            <list-item>

      <p id="d2e6502">GW, the elevation of the groundwater head within the column, which is the lower boundary condition for the UZ and the prognostic for any externally coupled GW model;</p>
            </list-item>
            <list-item>

      <p id="d2e6508">SW, the depth of ponded water at the surface, which is the upper boundary condition and the prognostic for any externally coupled SW model.</p>
            </list-item>
          </list></p>
      <p id="d2e6513">The implicit solver evolves the matric pressure head <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> at each layer centroid and recovers <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:msup><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, GW, and SW from the converged head profile at the end of each step. Both solvers share the same spatial discretisation and the same boundary-condition specification.</p>
      <p id="d2e6549">The model is unit-agnostic: the kernel never assumes any particular system of units and treats every quantity as a dimensionless number. The user is free to assign whatever length and time units are convenient, provided that those units are applied consistently to every input, namely to layer geometry, hydraulic parameters, forcing rates, lateral source/sink rates, and reported diagnostics alike. The Python layer carries a pair of declared units along with the model and uses them only for input validation, plotting, and output labelling; no internal conversion is performed and no internal SI representation is assumed. The model is also spatially agnostic in the sense that no element-to-element communication is implemented in the kernel; the embarrassingly parallel structure of the per-element solve is exploited via OpenMP.</p>
</sec>
<sec id="App1.Ch1.S1.SS2">
  <label>A2</label><title>Shared spatial framework</title>
<sec id="App1.Ch1.S1.SS2.SSS1">
  <label>A2.1</label><title>Vertical discretisation</title>
      <p id="d2e6567">Each element is discretised into <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> layers between the ground surface <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> alias <inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and the domain bottom <inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, which is typically the top of the first confining unit i.e. the bottom of the model domain is impervious; any pervious or semi-pervious nature needs to be handled via the GW model. Layers are numbered top-down (layer 1 is the uppermost) and each is assigned a single soil material from a user-defined material library that fixes its van Genuchten parameters <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and saturated hydraulic conductivity <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, together with the Mualem pore-connectivity exponent <inline-formula><mml:math id="M270" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula>. The unconfined specific yield is taken as <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, the drainable porosity at the groundwater head.</p>
      <p id="d2e6726">At any time the GW elevation partitions the column into saturated layers below and unsaturated layers above. The GW boundary layer <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the shallowest layer whose bottom lies at or below the current groundwater head:

              <disp-formula id="App1.Ch1.S1.E1" content-type="numbered"><label>A1</label><mml:math id="M273" display="block"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mfenced close=")" open="("><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">…</mml:mi><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>:</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>≤</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            The active (unsaturated) thickness of each layer is

              <disp-formula id="App1.Ch1.S1.E2" content-type="numbered"><label>A2</label><mml:math id="M274" display="block"><mml:mrow><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfenced close="" open="{"><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>l</mml:mi><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>l</mml:mi><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            and the corresponding effective pore volume is <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>. Layers below <inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> contribute zero to the unsaturated bookkeeping.</p>
</sec>
<sec id="App1.Ch1.S1.SS2.SSS2">
  <label>A2.2</label><title>Drainable-volume function</title>
      <p id="d2e6978">Because <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> may differ across layers, converting between a GW elevation and the corresponding drainable water volume requires explicit integration through the layers the groundwater head traverses. The drainable GW volume per unit area below an elevation <inline-formula><mml:math id="M278" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> is

              <disp-formula id="App1.Ch1.S1.E3" content-type="numbered"><label>A3</label><mml:math id="M279" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><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:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo mathsize="1.1em">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            a piecewise-linear function whose inverse <inline-formula><mml:math id="M280" display="inline"><mml:mrow><mml:msubsup><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>V</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is well defined within each layer and is used throughout the solver to update the groundwater head whenever a volume change is applied:

              <disp-formula id="App1.Ch1.S1.E4" content-type="numbered"><label>A4</label><mml:math id="M281" display="block"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>±</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>V</mml:mi><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            Using <inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:msubsup><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> rather than a single-layer specific yield is essential for vertically heterogeneous columns: a volume change large enough to push the groundwater head across a material boundary must account for the different specific yields of the layers traversed, and a single-layer approximation cannot self-correct for the resulting bias.</p>
</sec>
<sec id="App1.Ch1.S1.SS2.SSS3">
  <label>A2.3</label><title>Constitutive relations</title>
      <p id="d2e7271">Both solvers use the <xref ref-type="bibr" rid="bib1.bibx79" id="text.71"/> retention curve,

              <disp-formula id="App1.Ch1.S1.E5" content-type="numbered"><label>A5</label><mml:math id="M284" display="block"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:msup><mml:mo>)</mml:mo><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:mfenced><mml:mi>m</mml:mi></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            and the Mualem capillary-bundle conductivity expression <xref ref-type="bibr" rid="bib1.bibx60" id="paren.72"/>,

              <disp-formula id="App1.Ch1.S1.E6" content-type="numbered"><label>A6</label><mml:math id="M285" display="block"><mml:mrow><mml:mi>K</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext></mml:msub><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">e</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:msubsup><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:msup><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">e</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi>m</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mi>m</mml:mi></mml:msup></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><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 width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi>S</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> in the unsaturated zone and the GW surface as the zero-potential datum.</p>
</sec>
</sec>
<sec id="App1.Ch1.S1.SS3">
  <label>A3</label><title>Explicit solver: operator-split bucket sequence</title>
      <p id="d2e7497">The explicit solver advances the model state through a sequence of single-process flux modules. Within each effective time step the modules are executed one after the other, each operating on the storage state left behind by its predecessor and ordered by physical response timescale (gravity drainage on minutes to hours, evapotranspiration on hours, capillary redistribution on hours to days). This is sequential-state, or Lie–Trotter/Godunov, operator splitting <xref ref-type="bibr" rid="bib1.bibx76 bib1.bibx38" id="paren.73"/>: the splitting error is first-order in the (sub-)step duration <inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> and is directly controlled by the adaptive sub-stepping introduced below. All forcings enter the kernel as rates <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mi>L</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>T</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> and are integrated over <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> inside the relevant module, so the total volume delivered over a macro-step is preserved exactly regardless of how the macro-step is sub-divided.</p>
<sec id="App1.Ch1.S1.SS3.SSS1">
  <label>A3.1</label><title>CFL adaptive sub-stepping</title>
      <p id="d2e7551">The forward-Euler treatment of the inter-layer drainage flux is conditionally stable. The Courant–Friedrichs–Lewy condition <xref ref-type="bibr" rid="bib1.bibx26" id="paren.74"/> requires that the volume drained from any layer in a single (sub-)step does not exceed a Courant-number fraction of that layer's pore capacity; otherwise the layer storage overshoots its physical bounds, an artefact familiar from explicit advection schemes <xref ref-type="bibr" rid="bib1.bibx52" id="paren.75"/>. When adaptive sub-stepping is enabled, the macro step <inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> is divided into a sequence of variable-length sub-steps <inline-formula><mml:math id="M291" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> such that <inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:msub><mml:mo>∑</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi>i</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> exactly, with <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> chosen at the start of each sub-step from the current moisture and geometry state.</p>
      <p id="d2e7621">The dominant constraint is the gravity-drainage CFL on each active layer,

              <disp-formula id="App1.Ch1.S1.E7" content-type="numbered"><label>A7</label><mml:math id="M294" display="block"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msubsup><mml:mi>t</mml:mi><mml:mtext>CFL</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:mi>l</mml:mi><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:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>∈</mml:mo><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:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M295" display="inline"><mml:mrow><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is the effective pore volume of the active part of layer <inline-formula><mml:math id="M296" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> is its current unsaturated conductivity, and <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a user-specified Courant safety factor (default <inline-formula><mml:math id="M299" display="inline"><mml:mn mathvariant="normal">0.9</mml:mn></mml:math></inline-formula>). A dry layer with <inline-formula><mml:math id="M300" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>→</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> is non-constraining; a near-saturated layer drives sub-stepping. Two further mechanisms may shorten the sub-step independently of gravity drainage: an intense surface flux can over-fill the top layer in a single step,

              <disp-formula id="App1.Ch1.S1.E8" content-type="numbered"><label>A8</label><mml:math id="M301" display="block"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msubsup><mml:mi>t</mml:mi><mml:mi mathvariant="normal">P</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>max⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathsize="1.1em">)</mml:mo></mml:mrow><mml:mrow><mml:mo>max⁡</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:msub><mml:mi>P</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            and a strongly negative lateral GW withdrawal can drive GW to the domain bottom,

              <disp-formula id="App1.Ch1.S1.E9" content-type="numbered"><label>A9</label><mml:math id="M302" display="block"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mtext>lat</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>max⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathsize="1.1em">)</mml:mo></mml:mrow><mml:mrow><mml:mo>max⁡</mml:mo><mml:mo>(</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mtext>lateral</mml:mtext></mml:msub><mml:mo>|</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:msub><mml:mtext>GW</mml:mtext><mml:mtext>lateral</mml:mtext></mml:msub><mml:mo>&lt;</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="M303" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> is a small floor preventing division by near-zero. The safe sub-step duration is the minimum across all applicable constraints,

              <disp-formula id="App1.Ch1.S1.E10" content-type="numbered"><label>A10</label><mml:math id="M304" display="block"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msubsup><mml:mi>t</mml:mi><mml:mtext>CFL</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.5em">(</mml:mo><mml:munder><mml:mo movablelimits="false">min⁡</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>:</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:munder><mml:mi mathvariant="italic">δ</mml:mi><mml:msubsup><mml:mi>t</mml:mi><mml:mtext>CFL</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:msubsup><mml:mi>t</mml:mi><mml:mi mathvariant="normal">P</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mtext>lat</mml:mtext></mml:msub><mml:mo mathsize="1.5em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            clipped to a user-defined floor <inline-formula><mml:math id="M305" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and to the remaining macro-step interval <inline-formula><mml:math id="M306" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mtext>rem</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>,

              <disp-formula id="App1.Ch1.S1.E11" content-type="numbered"><label>A11</label><mml:math id="M307" display="block"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:msubsup><mml:mi>t</mml:mi><mml:mtext>CFL</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mtext>rem</mml:mtext></mml:msub><mml:mo mathsize="1.1em">)</mml:mo><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:msub><mml:mi>t</mml:mi><mml:mtext>rem</mml:mtext></mml:msub><mml:mo>←</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mtext>rem</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            Re-evaluating the CFL at the start of every sub-step is preferable to pre-computing a fixed sub-division: as drainage proceeds and <inline-formula><mml:math id="M308" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> falls, longer sub-steps are admitted automatically, and the cost of sub-stepping concentrates in the wet phases where it is needed.</p>
      <p id="d2e8223">In what follows, <inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> denotes the effective step duration: the full macro-step when sub-stepping is disabled, or the current sub-step <inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> when it is enabled. The solver sequence below is executed once per (sub-)step.</p>
</sec>
<sec id="App1.Ch1.S1.SS3.SSS2">
  <label>A3.2</label><title>Geometry freeze and frozen-coefficient approximation</title>
      <p id="d2e8257">To eliminate the circular dependency between the per-process flux modules and the evolving groundwater head, all geometry-derived quantities (<inline-formula><mml:math id="M311" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M314" display="inline"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>) are held fixed from the start of precipitation partitioning through to the end of capillary redistribution. Only <inline-formula><mml:math id="M315" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> accumulates changes in place during this window. The geometry is recomputed once at the geometry-resolution step at the end of each (sub-)step. The mismatch between the frozen geometry and the evolving <inline-formula><mml:math id="M316" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is first-order in <inline-formula><mml:math id="M317" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> and is fully resolved at geometry resolution; the frozen-coefficient error in <inline-formula><mml:math id="M318" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is similarly localised to one <inline-formula><mml:math id="M319" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e8380">Two targeted departures from a strict frozen-coefficient scheme are retained: in the gravity-drainage module, when a layer receives inflow during active infiltration, <inline-formula><mml:math id="M320" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> is re-evaluated from the post-inflow moisture state and the effective conductivity is taken as the arithmetic mean of the pre- and post-inflow values, which removes a flux-blocking artefact at fine layer resolution where a previously dry layer would otherwise transmit almost nothing; and in the capillary-redistribution module, donor conductivities are re-evaluated between Gauss–Seidel sweeps so that layers wetted by an earlier sweep can supply water more effectively in subsequent ones.</p>
</sec>
<sec id="App1.Ch1.S1.SS3.SSS3">
  <label>A3.3</label><title>Sequence</title>
      <p id="d2e8409">The per-process sequence executed within a (sub-)step is summarised in Fig. <xref ref-type="fig" rid="FA1"/> and described step by step below. All updates are performed in place; the storage state passed to step <inline-formula><mml:math id="M321" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> is the state left by step <inline-formula><mml:math id="M322" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. The notation matches that of the previous subsections; deferred edge cases and diagnostic-output equations are documented in the source repository. The CFL adaptive sub-step evaluation, the optional lateral-flux injection, and the geometry update at the start of the (sub-)step gate the entry into either of two branches: a UZ-active branch, in which precipitation partitioning, gravity drainage, the optional ET sinks, capillary redistribution and a final geometry resolution are executed in order; and a saturated-column branch, in which a top-cap flux to surface storage is applied and surface inputs interact directly with the saturated zone, with a re-activation gate that returns control to a partial UZ cascade as soon as the groundwater head drops below the surface.</p>

      <fig id="FA1" specific-use="star"><label>Figure A1</label><caption><p id="d2e8435">Per-(sub-)step control flow of the explicit operator-split bucket-sequence solver. After CFL adaptive sub-stepping and the optional lateral-flux injection, the saturation gate selects either the UZ-active branch (precipitation partitioning, gravity drainage, optional ET sinks, capillary redistribution, geometry resolution) or the saturated-column branch (top-cap to SW, surface-input rerouting, re-activation gate). Optional modules are dashed; an asterisk marks modules that are skipped when the corresponding forcing channel is disabled.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/8233/2026/gmd-19-8233-2026-f10.png"/>

          </fig>

      <p id="d2e8444">Lateral fluxes. Any prescribed lateral SW and GW source/sink rates are applied first, before any vertical flux is computed. Lateral fluxes are the coupling channel through which an external SW model and an external GW model communicate with GWSWEX, and are treated as instantaneous source/sink terms acting on the SW and GW storages respectively:

              <disp-formula id="App1.Ch1.S1.E12" content-type="numbered"><label>A12</label><mml:math id="M323" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mtext>SW</mml:mtext><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mtext>SW</mml:mtext><mml:mtext>lateral</mml:mtext></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mtext>lateral</mml:mtext></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M324" display="inline"><mml:mrow><mml:msub><mml:mtext>SW</mml:mtext><mml:mtext>lateral</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M325" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mtext>lateral</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M326" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mi>L</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>T</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> are the net lateral rates (positive into the column). When this module is disabled, <inline-formula><mml:math id="M327" display="inline"><mml:mrow><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mtext>SW</mml:mtext><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M328" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e8643">Geometry update. The GW boundary layer index, the active layer thicknesses, the effective pore volumes and the per-layer hydrostatic-equilibrium storage are recomputed from the current <inline-formula><mml:math id="M329" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The boundary layer is the shallowest layer whose bottom lies at or below the groundwater head,

              <disp-formula id="App1.Ch1.S1.E13" content-type="numbered"><label>A13</label><mml:math id="M330" display="block"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:mi>l</mml:mi><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:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>:</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>≤</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            and the active thickness and effective pore volume of each layer follow as

              <disp-formula id="App1.Ch1.S1.E14" content-type="numbered"><label>A14</label><mml:math id="M331" display="block"><mml:mrow><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfenced close="" open="{"><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>l</mml:mi><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>l</mml:mi><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            The hydrostatic-equilibrium storage <inline-formula><mml:math id="M332" display="inline"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> is the integral of the van Genuchten retention curve over the active depth of the layer, taken with the GW surface as the zero-potential datum. Letting <inline-formula><mml:math id="M333" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ψ</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mtext>top</mml:mtext></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> and, for <inline-formula><mml:math id="M334" display="inline"><mml:mrow><mml:mi>l</mml:mi><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M335" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ψ</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mtext>bot</mml:mtext></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> (and <inline-formula><mml:math id="M336" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ψ</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mtext>bot</mml:mtext></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), the equilibrium storage is

              <disp-formula id="App1.Ch1.S1.E15" content-type="numbered"><label>A15</label><mml:math id="M337" display="block"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ψ</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mtext>bot</mml:mtext></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">ψ</mml:mi><mml:mrow><mml:mi>m</mml:mi><mml:mo>,</mml:mo><mml:mtext>top</mml:mtext></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:munderover><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M338" display="inline"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> given by the van Genuchten retention curve from the previous subsection, and <inline-formula><mml:math id="M339" display="inline"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> for <inline-formula><mml:math id="M340" display="inline"><mml:mrow><mml:mi>l</mml:mi><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. The integral is evaluated by composite trapezoidal quadrature with a user-controlled number of sub-intervals <inline-formula><mml:math id="M341" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>trapz</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. When lateral fluxes are disabled and the previous step's geometry resolution did not change <inline-formula><mml:math id="M342" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, this update is exact-equal to the carried-forward geometry and is skipped as an optimisation.</p>
      <p id="d2e9202">Precipitation partitioning. Existing surface water and incident precipitation are combined as the total water available at the surface,

              <disp-formula id="App1.Ch1.S1.E16" content-type="numbered"><label>A16</label><mml:math id="M343" display="block"><mml:mrow><mml:mi>P</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:msub><mml:mtext>SW</mml:mtext><mml:mtext>avail</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi>P</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            and the infiltration capacity is computed from a Green–Ampt expression <xref ref-type="bibr" rid="bib1.bibx2 bib1.bibx54" id="paren.76"/>,

              <disp-formula id="App1.Ch1.S1.E17" content-type="numbered"><label>A17</label><mml:math id="M344" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:msub><mml:mi>f</mml:mi><mml:mtext>cap</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow><mml:mi>F</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M345" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M346" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mi>L</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> a calibratable suction-head parameter (approximately <inline-formula><mml:math id="M347" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:msup><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> from the van Genuchten curve), <inline-formula><mml:math id="M348" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow></mml:math></inline-formula> the saturation deficit of the top layer, and <inline-formula><mml:math id="M349" display="inline"><mml:mi>F</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M350" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mi>L</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> a cumulative-infiltration tracker maintained across steps as a proxy for the wetting-front depth. The actual infiltration over the step is bounded by the capacity, by the available surface water, and by the column sink capacity,

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M351" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S1.E18"><mml:mtd><mml:mtext>A18</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mtext>infiltration</mml:mtext></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>cap</mml:mtext></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mtext>SW</mml:mtext><mml:mtext>avail</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E19"><mml:mtd><mml:mtext>A19</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mtext>SW</mml:mtext><mml:mtext>avail</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:mtext>infiltration</mml:mtext><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            The third bound is the total unsaturated-zone storage deficit, the unsaturated pore space in the top layer plus the column-wide GW storage capacity, and ensures that ponded water can infiltrate even when the top-layer pore space is already filled by the capillary fringe. The infiltrated volume enters the gravity-drainage module as the inflow to the top layer.</p>
      <p id="d2e9564">Gravity drainage. Gravity-driven vertical flow is solved sequentially from the top layer downward. For each active layer <inline-formula><mml:math id="M352" 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:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, the inflow is either the surface infiltration (<inline-formula><mml:math id="M353" 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>) or the exfiltration from the layer above. The unsaturated conductivity is initially evaluated at the pre-inflow moisture state through the Mualem–van Genuchten relation,

              <disp-formula id="App1.Ch1.S1.E20" content-type="numbered"><label>A20</label><mml:math id="M354" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">e</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>/</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>unsat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">e</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:msup><mml:mo>)</mml:mo><mml:mi mathvariant="italic">λ</mml:mi></mml:msup><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mo mathsize="1.1em">(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">e</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:msup><mml:mi>m</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msup><mml:msup><mml:mo mathsize="1.1em">)</mml:mo><mml:mrow><mml:msup><mml:mi>m</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            If the layer receives nonzero inflow during active surface infiltration, <inline-formula><mml:math id="M355" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> is re-evaluated at the post-inflow state and the effective conductivity is taken as the arithmetic mean of the two estimates,

              <disp-formula id="App1.Ch1.S1.E21" content-type="numbered"><label>A21</label><mml:math id="M356" display="block"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>eff</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>pre</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>post</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:msup><mml:mtext>TC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>eff</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            otherwise <inline-formula><mml:math id="M357" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>eff</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>pre</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>. The transfer capacity <inline-formula><mml:math id="M358" display="inline"><mml:mrow><mml:msup><mml:mtext>TC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is the maximum volume per unit area that conductivity alone permits to drain from layer <inline-formula><mml:math id="M359" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> during the step.</p>
      <p id="d2e9976">A dynamic inter-layer connectivity ratio <inline-formula><mml:math id="M360" display="inline"><mml:mrow><mml:msup><mml:mtext>ICratio</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:msubsup><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> modulates the effective drainage rate by tracking the fraction of the layer depth reached by the wetting front. Its underlying state is an infiltration-front tracker <inline-formula><mml:math id="M361" display="inline"><mml:mrow><mml:msup><mml:mtext>IC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> that advances or retreats by one transfer capacity per (sub-)step depending on whether the layer is receiving inflow:

              <disp-formula id="App1.Ch1.S1.E22" content-type="numbered"><label>A22</label><mml:math id="M362" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mtext>IC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mfenced open="{" close=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>min⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msup><mml:mtext>IC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mtext>TC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msup><mml:mtext>inflow</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>&gt;</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:mo>max⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msup><mml:mtext>IC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mtext>TC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>otherwise</mml:mtext><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mtext>ICratio</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.5em">(</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mtext>IC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:msubsup><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo mathsize="1.5em">)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            The floor <inline-formula><mml:math id="M363" display="inline"><mml:mrow><mml:msubsup><mml:mtext>ICratio</mml:mtext><mml:mtext>min</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> represents the structural macropore connectivity that persists in the absence of recent wetting and is one of the principal calibration parameters of the explicit solver.</p>
      <p id="d2e10251">The intermediate UZ state after inflow is <inline-formula><mml:math id="M364" display="inline"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msup><mml:mtext>inflow</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. Only the storage above hydrostatic equilibrium is allowed to drain (capillary water is held), and the exfiltration is bounded by the transfer capacity, by the free water above equilibrium, and by the connectivity ratio,

              <disp-formula id="App1.Ch1.S1.E23" content-type="numbered"><label>A23</label><mml:math id="M365" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>free</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:msup><mml:mtext>exfiltration</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msup><mml:mtext>TC</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>free</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>⋅</mml:mo><mml:msup><mml:mtext>ICratio</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            The intermediate state of the upper layers is then <inline-formula><mml:math id="M366" display="inline"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mtext>exfiltration</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> for <inline-formula><mml:math id="M367" 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:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, and the exfiltration from the boundary layer recharges GW directly,

              <disp-formula id="App1.Ch1.S1.E24" content-type="numbered"><label>A24</label><mml:math id="M368" display="block"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msup><mml:mtext>exfiltration</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            The Green–Ampt cumulative infiltration tracker is updated for the next step,

              <disp-formula id="App1.Ch1.S1.E25" content-type="numbered"><label>A25</label><mml:math id="M369" display="block"><mml:mrow><mml:mi>F</mml:mi><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>min⁡</mml:mo><mml:mo>(</mml:mo><mml:mi>F</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mtext>infiltration</mml:mtext><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mtext>SW</mml:mtext><mml:mtext>avail</mml:mtext></mml:msub><mml:mo>&gt;</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:mo>min⁡</mml:mo><mml:mo>(</mml:mo><mml:mi>F</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mtext>exfiltration</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>otherwise</mml:mtext><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M370" display="inline"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mtext>min</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M371" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mi>L</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> is a small floor that prevents the singularity in <inline-formula><mml:math id="M372" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mtext>cap</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> at the start of an event.</p>
      <p id="d2e10673">Soil evaporation. When evaporation is enabled, the potential demand <inline-formula><mml:math id="M373" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>pot</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> is applied first to the surface storage, without stress limitation,

              <disp-formula id="App1.Ch1.S1.E26" content-type="numbered"><label>A26</label><mml:math id="M374" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>SW</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>pot</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>SW</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>residual</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>pot</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>SW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            and then to the top UZ layer with a Laio-type stress function <xref ref-type="bibr" rid="bib1.bibx51" id="paren.77"/> in the saturation <inline-formula><mml:math id="M375" display="inline"><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>/</mml:mo><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>,

              <disp-formula id="App1.Ch1.S1.E27" content-type="numbered"><label>A27</label><mml:math id="M376" display="block"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>lim</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>≤</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>residual</mml:mtext></mml:msub><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>≤</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>residual</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M377" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the hygroscopic-point saturation (below which water is bound too tightly to the matrix to evaporate) and <inline-formula><mml:math id="M378" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> a capillary-continuity threshold (below which liquid continuity from the soil to the surface is disrupted). Both can be estimated from the retention curve as <inline-formula><mml:math id="M379" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>≈</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>/</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M380" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>≈</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>/</mml:mo><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, with user override retained for soils whose retention curve does not adequately represent these thresholds. The actual UZ evaporation is then bounded by the water above residual,

              <disp-formula id="App1.Ch1.S1.E28" content-type="numbered"><label>A28</label><mml:math id="M381" display="block"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>UZ</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>lim</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo mathsize="1.1em">)</mml:mo><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:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>UZ</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            and the actual evaporation reported for the step is <inline-formula><mml:math id="M382" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>SW</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>UZ</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e11197">Transpiration. When transpiration is enabled, the potential demand <inline-formula><mml:math id="M383" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>pot</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> is partitioned uniformly across the rooted layers of the element. Each model element carries a binary root mask <inline-formula><mml:math id="M384" display="inline"><mml:mrow><mml:msubsup><mml:mn mathvariant="normal">1</mml:mn><mml:mtext>root</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, set at initialisation by intersecting the per-vegetation-type rooting depth with the layer geometry, and re-evaluated whenever a dynamic root-growth schedule is supplied. Writing <inline-formula><mml:math id="M385" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>root</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mo>∑</mml:mo><mml:mi>l</mml:mi></mml:msub><mml:msubsup><mml:mn mathvariant="normal">1</mml:mn><mml:mtext>root</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> for the number of rooted layers, the per-layer demand is <inline-formula><mml:math id="M386" display="inline"><mml:mrow><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>pot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>pot</mml:mtext></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mtext>root</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> for each rooted layer <inline-formula><mml:math id="M387" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> with <inline-formula><mml:math id="M388" display="inline"><mml:mrow><mml:mi>l</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. The uniform partition reflects the resolution at which the root system is represented: the model knows the rooting depth but not the within-zone root-density profile, and any non-uniform weighting at that level of detail would be unsupported by the input it carries. Each layer's demand is reduced by a Laio stress function in <inline-formula><mml:math id="M389" display="inline"><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>,

              <disp-formula id="App1.Ch1.S1.E29" content-type="numbered"><label>A29</label><mml:math id="M390" display="block"><mml:mrow><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>lim</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>≤</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>pot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>≤</mml:mo><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>pot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>&gt;</mml:mo><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M391" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the wilting-point saturation and <inline-formula><mml:math id="M392" display="inline"><mml:mrow><mml:msup><mml:mi>s</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> the saturation at incipient stomatal closure. Each layer's actual UZ extraction is bounded by the water above residual,

              <disp-formula id="App1.Ch1.S1.E30" content-type="numbered"><label>A30</label><mml:math id="M393" display="block"><mml:mrow><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>lim</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            If the root system extends into the saturated zone, the demand from those layers is taken directly from GW and bounded by the available drainable volume,

              <disp-formula id="App1.Ch1.S1.E31" content-type="numbered"><label>A31</label><mml:math id="M394" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.5em">(</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>pot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo mathsize="1.5em">)</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            and the actual transpiration is <inline-formula><mml:math id="M395" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mo>∑</mml:mo><mml:mi>l</mml:mi></mml:msub><mml:msubsup><mml:mi>T</mml:mi><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e11823">Capillary redistribution. When net surface infiltration in the current (sub-)step is below a small threshold (<inline-formula><mml:math id="M396" display="inline"><mml:mrow><mml:mtext>infiltration</mml:mtext><mml:mo>&lt;</mml:mo><mml:mi mathvariant="italic">ϵ</mml:mi></mml:mrow></mml:math></inline-formula>), the model performs a multi-sweep, conductivity-limited capillary redistribution that relaxes the storage profile toward <inline-formula><mml:math id="M397" display="inline"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> and represents capillary rise from the GW into the depleted UZ. The module is gated off during active infiltration to prevent the simultaneous downward percolation and upward capillary pull from producing numerical oscillations.</p>
      <p id="d2e11856">Each sweep proceeds upward from the boundary layer <inline-formula><mml:math id="M398" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> to layer 1 and uses Gauss–Seidel ordering: each updated storage is immediately visible to subsequent moves. At the start of each sweep the current capillary deficit of each layer is recomputed,

              <disp-formula id="App1.Ch1.S1.E32" content-type="numbered"><label>A32</label><mml:math id="M399" display="block"><mml:mrow><mml:msup><mml:mtext>cap_deficit</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mtext>hyst</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M400" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mtext>hyst</mml:mtext></mml:msub><mml:mo>∈</mml:mo><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> a hysteresis damping factor that scales the equilibrium target to account for the difference between the desorption curve (on which <inline-formula><mml:math id="M401" display="inline"><mml:mrow><mml:msub><mml:mtext>UZ</mml:mtext><mml:mtext>eq</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is built) and the wetting curve being followed during capillary rise. For the boundary layer the supply comes from GW and is bounded only by the deficit and the available drainable volume,

              <disp-formula id="App1.Ch1.S1.E33" content-type="numbered"><label>A33</label><mml:math id="M402" display="block"><mml:mrow><mml:msup><mml:mtext>cap_flux</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msup><mml:mtext>cap_deficit</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M403" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M404" display="inline"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> updated in place. For each upper layer the donor is the layer immediately below; the donor's conductivity is re-evaluated from its current moisture state, the conductivity-limited transfer capacity is <inline-formula><mml:math id="M405" display="inline"><mml:mrow><mml:msubsup><mml:mtext>TC</mml:mtext><mml:mtext>cap</mml:mtext><mml:mrow><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:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>cap</mml:mtext><mml:mrow><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:msubsup><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, and the capillary flux is

              <disp-formula id="App1.Ch1.S1.E34" content-type="numbered"><label>A34</label><mml:math id="M406" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mtext>cap_flux</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msup><mml:mtext>cap_deficit</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msubsup><mml:mtext>TC</mml:mtext><mml:mtext>cap</mml:mtext><mml:mrow><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:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><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:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><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:msubsup><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><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:msubsup><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            with the recipient gaining and the donor losing the same amount. Repeated sweeps allow water to propagate upward through several layers within a single (sub-)step, acting as a Picard-like relaxation of the upward Darcy flow under the frozen geometry.</p>
      <p id="d2e12226">Geometry resolution. After all flux modules have executed, the geometry is recomputed from the updated <inline-formula><mml:math id="M407" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. If the groundwater head has reached or risen above the surface, the above-surface drainable volume is routed to SW and the column is fully saturated,

              <disp-formula id="App1.Ch1.S1.E35" content-type="numbered"><label>A35</label><mml:math id="M408" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mtext>If GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>:</mml:mo><mml:mspace width="1em" linebreak="nobreak"/></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><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 boundary layer index, the active thicknesses, the effective pore volumes, and the equilibrium storages are recomputed under the procedure of the geometry-update step. Layers newly exposed by a falling groundwater head (i.e. <inline-formula><mml:math id="M409" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> has increased over the (sub-)step) are initialised at residual moisture,

              <disp-formula id="App1.Ch1.S1.E36" content-type="numbered"><label>A36</label><mml:math id="M410" display="block"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW,prev</mml:mtext></mml:msub><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:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            which is the physically consistent, mass-conservative value: the drainable fraction <inline-formula><mml:math id="M411" display="inline"><mml:mrow><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> has already been removed from GW by the process that drove the drop, and only the irreducible <inline-formula><mml:math id="M412" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> remains in the now-exposed pore space. Layers newly submerged by a rising groundwater head (<inline-formula><mml:math id="M413" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> has decreased) have their drainable contribution returned to GW,

              <disp-formula id="App1.Ch1.S1.E37" content-type="numbered"><label>A37</label><mml:math id="M414" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mtext>sub</mml:mtext></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:msub><mml:mi>l</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mtext>GW,prev</mml:mtext></mml:msub></mml:mrow></mml:munderover><mml:mo movablelimits="false">max⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>bot</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mn mathvariant="normal">0</mml:mn><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mtext>sub</mml:mtext></mml:msub><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            with their UZ entries cleared to zero. Finally, any over-saturation accumulated by the sequence of flux operations is capped by transferring the excess to GW,

              <disp-formula id="App1.Ch1.S1.E38" content-type="numbered"><label>A38</label><mml:math id="M415" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mtext>If UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>&gt;</mml:mo><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>:</mml:mo><mml:mspace linebreak="nobreak" width="1em"/></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mtext>UZ</mml:mtext><mml:mi>t</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            This safety net catches residual numerical overshoot from sequential flux accumulation and is the only post-hoc mass redistribution in the sequence; all other flux limits are structural and embedded in the per-module formulae through <inline-formula><mml:math id="M416" display="inline"><mml:mo>min⁡</mml:mo></mml:math></inline-formula> and <inline-formula><mml:math id="M417" display="inline"><mml:mo>max⁡</mml:mo></mml:math></inline-formula> operators.</p>
      <p id="d2e12831">Output and per-step storage budget. At the end of each macro-step the storage changes are compared with the accumulated boundary fluxes to produce per-step diagnostics: GW recharge <inline-formula><mml:math id="M418" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msubsup><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext><mml:mtext>int</mml:mtext></mml:msubsup><mml:mo>/</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> from the internal GW volume change net of any lateral exchange, SW runoff <inline-formula><mml:math id="M419" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mtext>SW</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo>max⁡</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mtext>SW</mml:mtext><mml:mtext>int</mml:mtext></mml:msup><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:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, and a mass-balance residual

              <disp-formula id="App1.Ch1.S1.E39" content-type="numbered"><label>A39</label><mml:math id="M420" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mtext>MB</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mi>P</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mtext>act</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msubsup><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext><mml:mtext>int</mml:mtext></mml:msubsup><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mtext>SW</mml:mtext><mml:mtext>int</mml:mtext></mml:msup><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>UZ</mml:mtext><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M421" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>UZ</mml:mtext></mml:mrow></mml:math></inline-formula> includes a residual-saturated-zone correction that returns the <inline-formula><mml:math id="M422" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mtext>sat</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> water held in fully saturated layers (which sits outside both <inline-formula><mml:math id="M423" display="inline"><mml:mrow><mml:msub><mml:mo>∑</mml:mo><mml:mi>l</mml:mi></mml:msub><mml:msup><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M424" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>) to the storage-change accounting. With the correction in place, the column budget <inline-formula><mml:math id="M425" display="inline"><mml:mrow><mml:mtext>total</mml:mtext><mml:mo>=</mml:mo><mml:msub><mml:mo>∑</mml:mo><mml:mi>l</mml:mi></mml:msub><mml:msup><mml:mtext>UZ</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mtext>GW</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:mtext>SW</mml:mtext><mml:mo>+</mml:mo><mml:msub><mml:mo>∑</mml:mo><mml:mi>l</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>sat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> closes at every macro-step, and <inline-formula><mml:math id="M426" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mtext>MB</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is at floating-point tolerance away from any cap event.</p>
</sec>
<sec id="App1.Ch1.S1.SS3.SSS4">
  <label>A3.4</label><title>Saturated-column branch</title>
      <p id="d2e13108">Whenever the column is fully saturated at the start of the step (<inline-formula><mml:math id="M427" display="inline"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mi>t</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>top</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> after lateral fluxes), the per-process sequence above cannot execute because all <inline-formula><mml:math id="M428" display="inline"><mml:mrow><mml:msup><mml:mtext>ePV</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. A reduced branch is taken instead. Any GW volume above the surface is first capped to SW at <inline-formula><mml:math id="M429" display="inline"><mml:mrow><mml:msubsup><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>. All precipitation is then added to SW directly; evaporation is drawn from SW first and from GW as the residual; transpiration is drawn from GW (bounded by <inline-formula><mml:math id="M430" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>sat</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, the maximum extraction rate the surface can sustain), since the roots are submerged. A re-activation gate then checks whether transpiration has lowered the groundwater head below the surface; if so, Phase B's precipitation deposit is reversed (otherwise it would be double-counted), all newly exposed layers are initialised at residual moisture, and a partial sequence (precipitation partitioning, gravity drainage, capillary redistribution, geometry resolution) resumes for the remainder of the (sub-)step.</p>
</sec>
</sec>
<sec id="App1.Ch1.S1.SS4">
  <label>A4</label><title>Implicit solver: mixed-form Richards equation</title>
      <p id="d2e13208">The implicit solver replaces the operator-split sequence with a single, unconditionally stable solve of the one-dimensional mixed-form Richards equation <xref ref-type="bibr" rid="bib1.bibx19" id="paren.78"/>,

            <disp-formula id="App1.Ch1.S1.E40" content-type="numbered"><label>A40</label><mml:math id="M431" display="block"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>h</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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mfenced close="]" open="["><mml:mrow><mml:mi>K</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mfenced close=")" open="("><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>h</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">1</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>-</mml:mo><mml:mi>S</mml:mi><mml:mo>(</mml:mo><mml:mi>z</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>

          where <inline-formula><mml:math id="M432" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> is the matric pressure head (negative in the UZ, non-negative below the groundwater head), <inline-formula><mml:math id="M433" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:math></inline-formula> is the specific moisture capacity (the analytic derivative of the VG retention curve), <inline-formula><mml:math id="M434" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the Mualem–van Genuchten conductivity, and <inline-formula><mml:math id="M435" display="inline"><mml:mrow><mml:mi>S</mml:mi><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is a distributed sink representing soil evaporation and root water uptake. In the saturated zone the unconfined drainable porosity <inline-formula><mml:math id="M436" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> replaces <inline-formula><mml:math id="M437" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to regularise the linear system; this is the physically correct groundwater-head storage capacity for unconfined conditions and supersedes earlier formulations that used a small specific storativity for numerical regularisation alone.</p>
<sec id="App1.Ch1.S1.SS4.SSS1">
  <label>A4.1</label><title>Spatial and temporal discretisation</title>
      <p id="d2e13410">Each layer is represented by its centroid <inline-formula><mml:math id="M438" display="inline"><mml:mrow><mml:msubsup><mml:mi>z</mml:mi><mml:mi mathvariant="normal">c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>; head, water content, conductivity, and capacity are all evaluated at the centroid. The Darcy flux between adjacent centroids <inline-formula><mml:math id="M439" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M440" 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> uses an upstream (donor-cell) weighting of the per-node conductivities <xref ref-type="bibr" rid="bib1.bibx35" id="paren.79"/>,

              <disp-formula id="App1.Ch1.S1.E41" content-type="numbered"><label>A41</label><mml:math id="M441" display="block"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mrow><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:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi>K</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mrow><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:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>(</mml:mo><mml:mtext>downward flow</mml:mtext><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi>K</mml:mi><mml:mrow><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:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mrow><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:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>(</mml:mo><mml:mtext>upward flow</mml:mtext><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            where the flow direction is taken from the previous Picard iterate. Upstream weighting is preferred over the more familiar thickness-weighted harmonic mean <xref ref-type="bibr" rid="bib1.bibx41" id="paren.80"/> because the harmonic mean stalls wetting fronts entering a dry layer: when one of the two adjacent conductivities is small, the harmonic mean collapses with it and the interface becomes effectively impermeable, even though the upstream (wet) layer is fully able to deliver water. Donor-cell weighting picks the conductivity of whichever cell is supplying the flux, which is monotone, conservative, and consistent with the physical picture of a wetting front advancing into dry soil. The temporal scheme is fully implicit (backward Euler), so the discretisation is unconditionally A-stable and admits arbitrarily large macro-steps; the only stability constraint is on Picard convergence, not on the time step.</p>
</sec>
<sec id="App1.Ch1.S1.SS4.SSS2">
  <label>A4.2</label><title>Picard linearisation and TDMA</title>
      <p id="d2e13602">The nonlinearity in <inline-formula><mml:math id="M442" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M443" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is removed by Picard iteration <xref ref-type="bibr" rid="bib1.bibx66" id="paren.81"/>. At each iteration <inline-formula><mml:math id="M444" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M445" display="inline"><mml:mrow><mml:msup><mml:mi>K</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M446" display="inline"><mml:mrow><mml:msup><mml:mi>C</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M447" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> are evaluated at the current head iterate <inline-formula><mml:math id="M448" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>; the mixed-form linearisation of <xref ref-type="bibr" rid="bib1.bibx19" id="text.82"/> then approximates the accumulation term as

              <disp-formula id="App1.Ch1.S1.E42" content-type="numbered"><label>A42</label><mml:math id="M449" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>n</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>≈</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>C</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>n</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            in which the second term is a mass-balance correction that carries the residual of the previous Picard iterate forward; once the iterate has converged (<inline-formula><mml:math id="M450" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>→</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and so <inline-formula><mml:math id="M451" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>→</mml:mo><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>), the accumulation reduces exactly to <inline-formula><mml:math id="M452" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>n</mml:mi></mml:msup><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> regardless of how many Picard iterations were taken. This is what gives the mixed-form formulation its mass-conservation guarantee at the converged iterate, in contrast to the strictly head-based form which can lose mass at coarse step sizes <xref ref-type="bibr" rid="bib1.bibx19" id="paren.83"/>.</p>
      <p id="d2e13865">Substituting the upstream-weighted discretisation of the Darcy flux into the mixed-form Richards equation gives, for each interior layer <inline-formula><mml:math id="M453" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, a tridiagonal equation

              <disp-formula id="App1.Ch1.S1.E43" content-type="numbered"><label>A43</label><mml:math id="M454" display="block"><mml:mrow><mml:msup><mml:mi>a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mi>h</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: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:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>b</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mi>h</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:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mi>h</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: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:msup><mml:mo>=</mml:mo><mml:msup><mml:mi>d</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with coefficients

              <disp-formula id="App1.Ch1.S1.E44" content-type="numbered"><label>A44</label><mml:math id="M455" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mi>a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mrow><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:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>z</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>up</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="2em" linebreak="nobreak"/><mml:msup><mml:mi>c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mrow><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:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>z</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>dn</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mi>b</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mfenced open="(" close=")"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>C</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msup><mml:mi>a</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>C</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>,</mml:mo><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="2em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mrow><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:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mrow><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:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>z</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msup><mml:mi>S</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M456" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>up</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi mathvariant="normal">c</mml:mi><mml:mrow><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:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi mathvariant="normal">c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M457" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msubsup><mml:mi>z</mml:mi><mml:mtext>dn</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi mathvariant="normal">c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi mathvariant="normal">c</mml:mi><mml:mrow><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:msubsup></mml:mrow></mml:math></inline-formula> are the centroid-to-centroid distances above and below layer <inline-formula><mml:math id="M458" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, and the constant <inline-formula><mml:math id="M459" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> in the gravity term of the Richards equation produces the inter-layer conductivity difference in <inline-formula><mml:math id="M460" display="inline"><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> (downward gravity flow is the difference between the conductivities of the two interfaces bracketing the layer, divided by the layer thickness). The boundary rows are modified to carry the prescribed top and bottom fluxes (or heads) as detailed in the next subsection. The resulting tridiagonal system is solved in <inline-formula><mml:math id="M461" display="inline"><mml:mrow><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> operations per iteration by the Thomas algorithm <xref ref-type="bibr" rid="bib1.bibx25" id="paren.84"/>.</p>
      <p id="d2e14552">Iteration is terminated when <inline-formula><mml:math id="M462" display="inline"><mml:mrow><mml:msub><mml:mo>max⁡</mml:mo><mml:mi>l</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:msup><mml:mi>h</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:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>|</mml:mo><mml:mo>&lt;</mml:mo><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, with a user-controlled cap <inline-formula><mml:math id="M463" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> on the number of iterations to guard against pathological forcings. Typical values are <inline-formula><mml:math id="M464" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> m and <inline-formula><mml:math id="M465" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula>; in practice convergence is reached in 3 to 8 iterations under the warm-start strategy described below.</p>
</sec>
<sec id="App1.Ch1.S1.SS4.SSS3">
  <label>A4.3</label><title>Boundary conditions and groundwater-head determination</title>
      <p id="d2e14666">The top boundary switches dynamically between Neumann (prescribed flux) and Dirichlet (prescribed head) modes within each macro-step. While the surface is unsaturated, the top boundary carries a Neumann flux equal to the net atmospheric forcing plus any re-infiltration from the previous step's surface ponding,

              <disp-formula id="App1.Ch1.S1.E45" content-type="numbered"><label>A45</label><mml:math id="M466" display="block"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mtext>top</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>n</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            so that ponded water from the previous macro-step can re-infiltrate at the maximum rate the soil can accept. If the Picard iterate would otherwise drive <inline-formula><mml:math id="M467" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> (i.e. the surface saturates), the boundary is switched to Dirichlet <inline-formula><mml:math id="M468" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and the iteration is restarted; the actual infiltration <inline-formula><mml:math id="M469" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>actual</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is then recovered from the layer-1 mass balance at convergence. The post-step surface storage and runoff diagnostic follow as

              <disp-formula id="App1.Ch1.S1.E46" content-type="numbered"><label>A46</label><mml:math id="M470" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mtext>SW</mml:mtext><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mtext>SW</mml:mtext><mml:mi>n</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>actual</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mtext>SW</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>rate</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>actual</mml:mtext></mml:msub><mml:mo>/</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            with the runoff rate clipped to <inline-formula><mml:math id="M471" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mtext>SW</mml:mtext></mml:msub><mml:mo>≤</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>rate</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> so that no precipitation is lost or invented in the boundary diagnostic. The explicit and implicit solvers report runoff on the same convention. The bottom boundary is a no-flux Neumann condition representing an impermeable base.</p>
      <p id="d2e14902">The groundwater head is not prescribed: it is recovered after each macro step by scanning the converged head profile from the column base upward to find the shallowest layer <inline-formula><mml:math id="M472" display="inline"><mml:mrow><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> such that <inline-formula><mml:math id="M473" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> for all <inline-formula><mml:math id="M474" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>l</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (i.e. the top of the contiguous saturation propagating up from the base). If <inline-formula><mml:math id="M475" display="inline"><mml:mrow><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> the entire column is saturated and the groundwater head elevation is set to the top of layer 1; otherwise it is obtained by linear interpolation of <inline-formula><mml:math id="M476" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> across the unsaturated–saturated interface between the unsaturated centroid <inline-formula><mml:math id="M477" display="inline"><mml:mrow><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> above and the saturated centroid <inline-formula><mml:math id="M478" display="inline"><mml:mrow><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> below,

              <disp-formula id="App1.Ch1.S1.E47" content-type="numbered"><label>A47</label><mml:math id="M479" display="block"><mml:mrow><mml:msub><mml:mtext>GW</mml:mtext><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi mathvariant="normal">c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="1.1em">(</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi mathvariant="normal">c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>z</mml:mi><mml:mi mathvariant="normal">c</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:msup><mml:mi>k</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>]</mml:mo></mml:mrow></mml:msubsup><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            The contiguous-from-bottom requirement is essential because the top node can carry <inline-formula><mml:math id="M480" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> either because the table has reached the surface or because the Dirichlet boundary has imposed surface ponding on an otherwise unsaturated column; treating <inline-formula><mml:math id="M481" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> as a unique indicator of full saturation would snap GW to the surface elevation the first time the top layer ponds and would destroy the UZ–GW partition.</p>
</sec>
<sec id="App1.Ch1.S1.SS4.SSS4">
  <label>A4.4</label><title>Evapotranspiration as distributed sinks</title>
      <p id="d2e15186">In the implicit solver, soil evaporation and transpiration enter the Richards equation as the distributed sink term <inline-formula><mml:math id="M482" display="inline"><mml:mrow><mml:mi>S</mml:mi><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, with evaporation acting on the surface layer and transpiration distributed uniformly across the rooted layers using the same binary root mask <inline-formula><mml:math id="M483" display="inline"><mml:mrow><mml:msubsup><mml:mn mathvariant="normal">1</mml:mn><mml:mtext>root</mml:mtext><mml:mrow><mml:mo>[</mml:mo><mml:mi>l</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> described for the explicit solver. It must be noted that the same Laio-type four-saturation-threshold function used in the explicit solver is evaluated at each Picard iterate against the current head profile, so that the actual sink applied to the linear system is consistent with the head being solved for rather than lagged from the previous macro-step. The two solvers therefore use one and the same constitutive description of root-zone water stress; the difference is purely numerical (per-process reduction of the potential demand in the explicit solver versus per-iterate reduction inside the implicit solve) and the residual difference between the two ET trajectories is itself a useful diagnostic of how strongly the soil-water dynamics deviate from local equilibrium.</p>
</sec>
<sec id="App1.Ch1.S1.SS4.SSS5">
  <label>A4.5</label><title>Warm-start, mass conservation, and step-size choice</title>
      <p id="d2e15233">The converged head profile of step <inline-formula><mml:math id="M484" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> is used as the initial Picard iterate for step <inline-formula><mml:math id="M485" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, which substantially reduces the iteration count when forcing varies smoothly. The mixed-form linearisation is mass-conservative at converged Picard iterates; residual mass-balance errors arise principally from the start-of-step evaluation of boundary fluxes (which freezes the atmospheric and lateral rates over each macro-step rather than re-evaluating them inside the iteration). Because the scheme is unconditionally stable, the macro step is bounded only by the required temporal fidelity of the application and by the user's tolerance for that boundary-flux splitting error; in practice the implicit solver is run at step sizes that are an order of magnitude larger than the explicit-solver sub-steps without loss of accuracy.</p>
</sec>
</sec>
</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Software architecture</title>
      <p id="d2e15265">The implementation is laid out as four loosely coupled layers, each with a single concern. The intent is that an end user can drive the model entirely from the topmost layer with no Fortran knowledge, and that a developer can extend the model by adding modules within one layer without touching the others. The full module-by-module architecture is documented in the open-source repository accompanying the paper; the user- and developer-facing aspects of the design are described below.</p>
<sec id="App1.Ch1.S2.SS1">
  <label>B1</label><title>Layered structure</title>
      <p id="d2e15275"><list list-type="custom">
            <list-item><label> </label>

      <p id="d2e15280">Layer 1: Model kernel. A modern Fortran 2008/18 module that owns the global model singleton (a derived type aggregating all per-element state, parameter, and accumulator arrays), provides the macro-step entry point, and dispatches per element to either the explicit or implicit solver based on a single integer field set at initialisation. The per-element loop is parallelised with OpenMP; the work-sharing schedule is configurable and the unit of parallelism is the element column, which is the natural granularity given that the per-element solver work (CFL sub-step count under the explicit solver, Picard iteration count under the implicit solver) varies markedly across the domain. The kernel is the only module visible to the f2py wrapper; everything else is internal.</p>
            </list-item>
            <list-item><label> </label>

      <p id="d2e15286">Layer 2: Physics and process modules. Small, single-concern Fortran modules with a strictly acyclic dependency graph. The shared modules host the constitutive relations (van Genuchten retention, Mualem conductivity, specific moisture capacity <inline-formula><mml:math id="M486" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>), the geometry computations, and the mass-balance accumulators; the inter-node conductivity used inside the implicit Picard loop follows the upstream donor-cell weighting described in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>. The solver-specific modules implement the operator-split sequence and CFL sub-stepping for the explicit solver, and the Richards assembly, TDMA, Picard iteration, ET sink and groundwater-head location for the implicit solver. Pure and elemental procedures are used wherever possible to enable vectorisation and OpenMP worksharing.</p>
            </list-item>
            <list-item><label> </label>

      <p id="d2e15308">Layer 3: f2py wrapper. A thin Fortran translation layer that exposes scalar and array arguments which f2py can marshal to and from Python. No derived types cross the boundary. Each setter is dimension-free on the Python side (f2py infers element, layer, and material counts from array shapes) and accepts only the user-supplied parameters: derived quantities such as <inline-formula><mml:math id="M487" display="inline"><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M488" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi mathvariant="normal">y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are computed inside the kernel and are never user inputs.</p>
            </list-item>
            <list-item><label> </label>

      <p id="d2e15359">Layer 4: Python user-facing API. A <monospace>GWSWEXmodel</monospace> class manages the full lifecycle: configuration construction and validation through Pydantic models, input pre-processing and broadcasting, the macro-step loop, NetCDF I/O, checkpointing, and restart, and post-processing utilities. Configuration is built up incrementally through <monospace>init_*</monospace>, <monospace>add_*</monospace>, <monospace>set_*</monospace> calls and is committed by a single <monospace>init()</monospace> call, which validates the cross-references between the spatial, temporal, initial-condition, solver, and parameter components, derives any quantities the kernel needs (such as the binary root mask from the per-vegetation rooting depth), allocates the kernel and pushes the resolved configuration across the f2py boundary. On successful return from <monospace>init()</monospace> the underlying Pydantic objects are frozen (further mutation raises <monospace>AttributeError</monospace>); a failure inside <monospace>init()</monospace> leaves the configuration objects mutable so that the user can correct the offending input and retry without rebuilding the entire model. Defaults for every empirical parameter live exclusively in the Pydantic models; the Fortran kernel declares no defaults of its own and accepts only explicitly supplied values, ensuring that all parameter choices are traceable in Python source. The Python layer carries the user's chosen length and time units along with the model and uses them for input validation, plotting, and output labelling, but does not perform any internal unit conversion; the kernel works in whatever consistent unit system the user supplies.</p>
            </list-item>
          </list></p>
</sec>
<sec id="App1.Ch1.S2.SS2">
  <label>B2</label><title>End-user workflow</title>
      <p id="d2e15397">The minimal end-user entry point is the demonstration script included in the repository; a complete simulation fits in roughly 50 lines. The pattern is always the same:</p>
      <p id="d2e15400">(1) construct <monospace>GWSWEXmodel(name, T, L)</monospace> with the chosen length and time units; (2) build the spatial domain (<monospace>init_space</monospace>, <monospace>add_material</monospace>, <monospace>add_vegetation</monospace>); (3) build the temporal domain (<monospace>init_time</monospace>); (4) set initial conditions (<monospace>set_initial_conditions</monospace>); (5) choose the solver and parameters (<monospace>set_solver(solver=“explicit” <inline-formula><mml:math id="M489" display="inline"><mml:mo mathvariant="normal">|</mml:mo></mml:math></inline-formula> “implicit”, ...)</monospace>, <monospace>set_model_params(...)</monospace>); (6) provide the forcing series (<monospace>set_forcing(precip, pet, ptt, lat_gw, lat_sw)</monospace>); (7) allocate the kernel (<monospace>init</monospace>, which performs all cross-component validation, derives the binary root mask, freezes the configuration and pushes it across the f2py boundary), step it (<monospace>run</monospace> for the full sweep, or <monospace>run_step(t)</monospace> inside a user loop for fine-grained control), and tear it down (<monospace>deinit</monospace>).</p>
      <p id="d2e15451">State and diagnostics are retrieved through <monospace>get_state()</monospace> (per-element GWH, GWV, SW, UZ and <inline-formula><mml:math id="M490" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> in user units) and <monospace>get_mass_balance()</monospace>/<monospace>mass_balance_history</monospace> (per-step accumulators in the same user units). Built-in CF-1.8 NetCDF output is enabled by default and can be disabled by passing <monospace>write_output=False</monospace>. Checkpointing is provided through <monospace>save_checkpoint(filepath)</monospace> and <monospace>load_checkpoint(filepath)</monospace>, which round-trip every kernel state field needed to resume a run with arbitrary new forcings under either solver, including (for the implicit solver) the converged head profile required for the Picard warm-start.</p>
      <p id="d2e15480">The choice of solver is a single keyword argument to <monospace>set_solver</monospace>. All other configuration (geometry, materials, vegetation, ICs, forcing, lateral exchange) is solver-agnostic; in particular, any analysis, post-processing, plotting, or coupling utility built against the Python API works identically for both solvers. The solver can also be changed mid-simulation, on an initialised kernel, through a single <monospace>switch_solver</monospace> call: storage state and accumulators are preserved across the boundary, and the kernel internally translates between the implicit head profile and the explicit unsaturated-storage convention so that the destination solver resumes from the same physical state. This in-place switching mechanism makes per-cell or per-phase solver assignment in a coupled regional model possible without tearing down and rebuilding the kernel; the alternative full-reconfigure path (<monospace>deinit()</monospace> followed by a new <monospace>init()</monospace> with the alternative <monospace>set_solver</monospace> call) remains available for cases that require a different domain or set of materials alongside the solver change.</p>
</sec>
<sec id="App1.Ch1.S2.SS3">
  <label>B3</label><title>Extension points</title>
      <p id="d2e15506">The layered structure places the typical extension entry points predictably:</p>
      <p id="d2e15509">Adding a new soil constitutive law (e.g. an alternative retention curve): add a pure function to the shared physics module, add a selector field and the corresponding parameter group to the Pydantic configuration, and dispatch on the selector inside the constitutive evaluation calls in the relevant solver module(s). No other module changes are required.</p>
      <p id="d2e15512">Adding a new ET stress function (e.g. <xref ref-type="bibr" rid="bib1.bibx34" id="altparen.85"/> alongside <xref ref-type="bibr" rid="bib1.bibx51" id="altparen.86"/>): add the function to the shared physics module, add a <monospace>stress_model</monospace> selector to the corresponding Pydantic parameter model, and dispatch on the selector inside the explicit-solver evaporation/transpiration routines and the implicit-solver ET-sink routine.</p>
      <p id="d2e15524">Adding a new flux module to the explicit sequence (e.g. preferential flow, snowmelt routing): create a new Fortran module under the explicit-solver directory, expose any new state through the shared types module and the f2py wrapper, insert a single call at the appropriate point in the explicit solver driver, and add a Pydantic model and Python <monospace>set_*</monospace> method for the new parameters. The CFL evaluator should be extended with any new stability constraint the new module introduces.</p>
      <p id="d2e15531">Extending the implicit solver (e.g. an alternative inter-node conductivity weighting, a different Picard relaxation strategy, or an additional sink term in the Richards assembly): modify the relevant pure procedure inside the implicit-solver module (constitutive evaluation, TDMA assembly, or sink injection), expose any new control parameter through the shared types module, the f2py wrapper, and the corresponding Pydantic model, and update the warm-start logic only if the new feature changes the shape of the carry-over head profile. The Picard outer loop, the convergence test <inline-formula><mml:math id="M491" display="inline"><mml:mrow><mml:mo>‖</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>h</mml:mi><mml:msub><mml:mo>‖</mml:mo><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mtext>tol</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and the post-step groundwater-head recovery routine are insulated from these changes.</p>
      <p id="d2e15558">External coupling (e.g. to an external SW model and an external GW model that exchange fluxes with GWSWEX at different intervals): use <monospace>set_lateral(gw, sw)</monospace> immediately before each <monospace>run_step(t)</monospace> to inject the externally computed lateral rates, and read GWSWEX's reciprocal accumulators (<monospace>acc_recharge</monospace>, <monospace>acc_runoff</monospace>, <monospace>acc_lat_gw</monospace>, <monospace>acc_lat_sw</monospace>) from <monospace>get_mass_balance()</monospace> after each step. The Python layer treats lateral fluxes purely as configurable per-step inputs, so the coupling protocol, whether explicit, iterative, or operator-split, is decided by the driving framework rather than by GWSWEX itself.</p>
</sec>
<sec id="App1.Ch1.S2.SS4">
  <label>B4</label><title>Build and reproducibility</title>
      <p id="d2e15592">The build system is Meson with <monospace>meson-python</monospace> for PEP-517 wheels and f2py for the Fortran–Python bridge. The compilation order is set by the acyclic module dependency graph: shared modules first (constants, types, physics, geometry, mass balance), then the explicit-solver and implicit-solver modules in either order, then the kernel, all linked into a static library; f2py then compiles the wrapper against that library to produce the Python extension module imported by the user-facing API. Both solvers are linked into the same artefact and dispatched at run time, so unused code paths incur no runtime cost. The OpenMP element loop is the only source of parallelism inside the kernel; the thread count is controlled either by the standard <monospace>OMP_NUM_THREADS</monospace> environment variable, by passing <monospace>omp_threads=N</monospace> to <monospace>set_solver</monospace>, or by <monospace>GWSWEXmodel.set_omp_threads(N)</monospace> at any point in the model lifecycle (the call routes through to <monospace>omp_set_num_threads</monospace> after <monospace>init</monospace>, and is recorded in the solver configuration before it). The accompanying pytest suite exercises both solvers end-to-end and includes regression tests for the long-run per-step storage budget.</p>
</sec>
</app>
  </app-group><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e15622">The complete GWSWEX source code, the verification notebooks, the HYDRUS-1D input files, the OAT sensitivity-analysis harness and the performance-benchmark scripts are released under the open-source copyleft licence given in the repository, archived on Zenodo at <ext-link xlink:href="https://doi.org/10.5281/zenodo.20268583" ext-link-type="DOI">10.5281/zenodo.20268583</ext-link> <xref ref-type="bibr" rid="bib1.bibx49" id="paren.87"/>; the development repository is also maintained at <uri>https://github.com/veethahavya-CU-cz/gwswex</uri> (last access: 2 September 2026). The released archive contains the exact model version (v1.0.0) used to produce the results reported in this paper, alongside the input-data files and the configuration of every experiment.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e15637">VKS designed and implemented the GWSWEX kernel, both numerical solvers, the Python user-facing API, and the verification, sensitivity-analysis and performance-benchmark campaigns; VKS prepared the manuscript and figures. JL supervised the project, contributed to the experimental design and the framing of the model in the regional integrated-modelling context, and reviewed the manuscript.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

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

      <p id="d2e15649">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="d2e15655">Computational resources were provided by the Faculty of Science, Charles University. The authors acknowledge the support of Lukáš Vlček and Václav Šípek from the Institute of Hydrology of the Czech Academy of Sciences for their help with the HYDRUS-1D reference runs and for their feedback on the preliminary versions of the model.</p><p id="d2e15657">The authors further acknowledge the constructive feedback received from the broader hydrological-modelling community during successive presentations of preliminary versions of this work at the EGU General Assembly, which shaped the verification design and the framing of the dual-solver architecture.</p><p id="d2e15659">The authors also thank the developers and maintainers of HYDRUS-1D and <monospace>phydrus</monospace>, whose freely available reference implementation made the verification campaign reported here possible.</p><p id="d2e15664">The authors acknowledge the use of GitHub Copilot (Anthropic Claude Sonnet and Opus models) as an AI-assisted development tool during the preparation of the model codebase; its contributions spanned code review, iterative improvement of the Fortran and Python implementation, and generation of code documentation.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e15669">This research was co-funded by the European Union under the Operational Programme Jan Amos Komenský (OP JAK/P JAC) (grant no. CZ.02.01.01/00/22_008/0004605), Natural and anthropogenic georisks, and by the Grant Agency of Charles University (GAUK) (grant no. 3300-246623).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

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

      <ref id="bib1.bibx1"><label>Ahmadi(2024)</label><mixed-citation>Ahmadi, H.: Modeling of groundwater–surface water interactions: a review of integration strategies, ISH Journal of Hydraulic Engineering, <ext-link xlink:href="https://doi.org/10.1080/09715010.2023.2263434" ext-link-type="DOI">10.1080/09715010.2023.2263434</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Ampt and Green(1911)</label><mixed-citation>Ampt, G. A. and Green, W. H.: Studies on Soil Phyics, J. Agr. Sci., 4, 1–24, <ext-link xlink:href="https://doi.org/10.1017/S0021859600001441" ext-link-type="DOI">10.1017/S0021859600001441</ext-link>, 1911.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Banerjee and Ganguly(2023)</label><mixed-citation>Banerjee, D. and Ganguly, S.: A Review on the Research Advances in Groundwater–Surface Water Interaction with an Overview of the Phenomenon, Water, 15, 1552, <ext-link xlink:href="https://doi.org/10.3390/w15081552" ext-link-type="DOI">10.3390/w15081552</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Barthel(2014)</label><mixed-citation>Barthel, R.: HESS Opinions “Integration of groundwater and surface water research: an interdisciplinary problem?”, Hydrol. Earth Syst. Sci., 18, 2615–2628, <ext-link xlink:href="https://doi.org/10.5194/hess-18-2615-2014" ext-link-type="DOI">10.5194/hess-18-2615-2014</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Barthel and Banzhaf(2016)</label><mixed-citation>Barthel, R. and Banzhaf, S.: Groundwater and Surface Water Interaction at the Regional-scale – A Review with Focus on Regional Integrated Models, Water Resour. Manag., 30, 1–32, <ext-link xlink:href="https://doi.org/10.1007/s11269-015-1163-z" ext-link-type="DOI">10.1007/s11269-015-1163-z</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Bates et al.(2008)Bates, Kundzewicz, and IPCC</label><mixed-citation> Bates, B., Kundzewicz, Z. W., and IPCC (Eds.): Climate Change and Water, IPCC Technical Paper, 6, IPCC Secretariat, Geneva, Switzerland, ISBN 978-92-9169-123-4, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Beegum et al.(2018)Beegum, Šimůnek, Szymkiewicz, Sudheer, and Nambi</label><mixed-citation>Beegum, S., Šimůnek, J., Szymkiewicz, A., Sudheer, K. P., and Nambi, I. M.: Updating the Coupling Algorithm between HYDRUS and MODFLOW in the HYDRUS Package for MODFLOW, Vadose Zone J., 17, 1–8, <ext-link xlink:href="https://doi.org/10.2136/vzj2018.02.0034" ext-link-type="DOI">10.2136/vzj2018.02.0034</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Beven(1989)</label><mixed-citation>Beven, K.: Changing Ideas in Hydrology – The Case of Physically-Based Models, J. Hydrol., 105, 157–172, <ext-link xlink:href="https://doi.org/10.1016/0022-1694(89)90101-7" ext-link-type="DOI">10.1016/0022-1694(89)90101-7</ext-link>, 1989.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Beven(2019)</label><mixed-citation>Beven, K.: How to Make Advances in Hydrological Modelling, Hydrology Res., 50, 1481–1494, <ext-link xlink:href="https://doi.org/10.2166/nh.2019.134" ext-link-type="DOI">10.2166/nh.2019.134</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Beven and Germann(2013)</label><mixed-citation>Beven, K. and Germann, P.: Macropores and Water Flow in Soils Revisited: REVIEW, Water Resour. Res., 49, 3071–3092, <ext-link xlink:href="https://doi.org/10.1002/wrcr.20156" ext-link-type="DOI">10.1002/wrcr.20156</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Beven(2012)</label><mixed-citation> Beven, K. J.: Rainfall-Runoff Modelling: The Primer, Wiley-Blackwell, 2nd edn., ISBN 978-0-470-71459-1, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Bizhanimanzar et al.(2019)Bizhanimanzar, Leconte, and Nuth</label><mixed-citation>Bizhanimanzar, M., Leconte, R., and Nuth, M.: Modelling of shallow water table dynamics using conceptual and physically based integrated surface-water–groundwater hydrologic models, Hydrol. Earth Syst. Sci., 23, 2245–2260, <ext-link xlink:href="https://doi.org/10.5194/hess-23-2245-2019" ext-link-type="DOI">10.5194/hess-23-2245-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Bizhanimanzar et al.(2020)Bizhanimanzar, Leconte, and Nuth</label><mixed-citation>Bizhanimanzar, M., Leconte, R., and Nuth, M.: Catchment-Scale Integrated Surface Water-Groundwater Hydrologic Modelling Using Conceptual and Physically Based Models: A Model Comparison Study, Water, 12, 363, <ext-link xlink:href="https://doi.org/10.3390/w12020363" ext-link-type="DOI">10.3390/w12020363</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Brandhorst et al.(2021)Brandhorst, Erdal, and Neuweiler</label><mixed-citation>Brandhorst, N., Erdal, D., and Neuweiler, I.: Coupling saturated and unsaturated flow: comparing the iterative and the non-iterative approach, Hydrol. Earth Syst. Sci., 25, 4041–4059, <ext-link xlink:href="https://doi.org/10.5194/hess-25-4041-2021" ext-link-type="DOI">10.5194/hess-25-4041-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Brunner and Simmons(2012)</label><mixed-citation>Brunner, P. and Simmons, C. T.: HydroGeoSphere: A Fully Integrated, Physically Based Hydrological Model, Ground Water, 50, 170–176, <ext-link xlink:href="https://doi.org/10.1111/j.1745-6584.2011.00882.x" ext-link-type="DOI">10.1111/j.1745-6584.2011.00882.x</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Burek et al.(2020)Burek, Satoh, Kahil, Tang, Greve, Smilovic, Guillaumot, Zhao, and Wada</label><mixed-citation>Burek, P., Satoh, Y., Kahil, T., Tang, T., Greve, P., Smilovic, M., Guillaumot, L., Zhao, F., and Wada, Y.: Development of the Community Water Model (CWatM v1.04) – a high-resolution hydrological model for global and regional assessment of integrated water resources management, Geosci. Model Dev., 13, 3267–3298, <ext-link xlink:href="https://doi.org/10.5194/gmd-13-3267-2020" ext-link-type="DOI">10.5194/gmd-13-3267-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Camporese et al.(2010)Camporese, Paniconi, Putti, and Orlandini</label><mixed-citation>Camporese, M., Paniconi, C., Putti, M., and Orlandini, S.: Surface-Subsurface Flow Modeling with Path-Based Runoff Routing, Boundary Condition-Based Coupling, and Assimilation of Multisource Observation Data: Surface-Subsurface Flow Modeling, Water Resour. Res., 46, <ext-link xlink:href="https://doi.org/10.1029/2008WR007536" ext-link-type="DOI">10.1029/2008WR007536</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Carsel and Parrish(1988)</label><mixed-citation>Carsel, R. F. and Parrish, R. S.: Developing Joint Probability Distributions of Soil Water Retention Characteristics, Water Resour. Res., 24, 755–769, <ext-link xlink:href="https://doi.org/10.1029/WR024i005p00755" ext-link-type="DOI">10.1029/WR024i005p00755</ext-link>, 1988.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Celia et al.(1990)Celia, Bouloutas, and Zarba</label><mixed-citation>Celia, M. A., Bouloutas, E. T., and Zarba, R. L.: A general mass-conservative numerical solution for the unsaturated flow equation, Water Resour. Res., 26, 1483–1496, <ext-link xlink:href="https://doi.org/10.1029/WR026i007p01483" ext-link-type="DOI">10.1029/WR026i007p01483</ext-link>, 1990.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Clark et al.(2015a)Clark, Fan, Lawrence, Adam, Bolster, Gochis, Hooper, Kumar, Leung, Mackay, Maxwell, Shen, Swenson, and Zeng</label><mixed-citation>Clark, M. P., Fan, Y., Lawrence, D. M., Adam, J. C., Bolster, D., Gochis, D. J., Hooper, R. P., Kumar, M., Leung, L. R., Mackay, D. S., Maxwell, R. M., Shen, C., Swenson, S. C., and Zeng, X.: Improving the Representation of Hydrologic Processes in Earth System Models: Representing Hydrologic Processes in Earth System Models, Water Resour. Res., 51, 5929–5956, <ext-link xlink:href="https://doi.org/10.1002/2015WR017096" ext-link-type="DOI">10.1002/2015WR017096</ext-link>, 2015a.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Clark et al.(2015b)Clark, Nijssen, Lundquist, Kavetski, Rupp, Woods, Freer, Gutmann, Wood, Brekke, Arnold, Gochis, and Rasmussen</label><mixed-citation>Clark, M. P., Nijssen, B., Lundquist, J. D., Kavetski, D., Rupp, D. E., Woods, R. A., Freer, J. E., Gutmann, E. D., Wood, A. W., Brekke, L. D., Arnold, J. R., Gochis, D. J., and Rasmussen, R. M.: A Unified Approach for Process‐based Hydrologic Modeling: 1. Modeling Concept, Water Resour. Res., 51, 2498–2514, <ext-link xlink:href="https://doi.org/10.1002/2015WR017198" ext-link-type="DOI">10.1002/2015WR017198</ext-link>, 2015b.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Clark et al.(2015c)Clark, Nijssen, Lundquist, Kavetski, Rupp, Woods, Freer, Gutmann, Wood, Gochis, Rasmussen, Tarboton, Mahat, Flerchinger, and Marks</label><mixed-citation>Clark, M. P., Nijssen, B., Lundquist, J. D., Kavetski, D., Rupp, D. E., Woods, R. A., Freer, J. E., Gutmann, E. D., Wood, A. W., Gochis, D. J., Rasmussen, R. M., Tarboton, D. G., Mahat, V., Flerchinger, G. N., and Marks, D. G.: A Unified Approach for Process‐based Hydrologic Modeling: 2. Model Implementation and Case Studies, Water Resour. Res., 51, 2515–2542, <ext-link xlink:href="https://doi.org/10.1002/2015WR017200" ext-link-type="DOI">10.1002/2015WR017200</ext-link>, 2015c.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Clark et al.(2017)Clark, Bierkens, Samaniego, Woods, Uijlenhoet, Bennett, Pauwels, Cai, Wood, and Peters-Lidard</label><mixed-citation>Clark, M. P., Bierkens, M. F. P., Samaniego, L., Woods, R. A., Uijlenhoet, R., Bennett, K. E., Pauwels, V. R. N., Cai, X., Wood, A. W., and Peters-Lidard, C. D.: The evolution of process-based hydrologic models: historical challenges and the collective quest for physical realism, Hydrol. Earth Syst. Sci., 21, 3427–3440, <ext-link xlink:href="https://doi.org/10.5194/hess-21-3427-2017" ext-link-type="DOI">10.5194/hess-21-3427-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Collenteur et al.(2021)Collenteur, Brunetti, and Vremec</label><mixed-citation>Collenteur, R. A., Brunetti, G., and Vremec, M.: phydrus: A Python implementation of the HYDRUS-1D unsaturated zone model, Software, version 0.2.0, <uri>https://github.com/phydrus/phydrus</uri> (last access: 2 September 2026), 2021.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Conte and de Boor(1980)</label><mixed-citation> Conte, S. D. and de Boor, C.: Elementary Numerical Analysis: An Algorithmic Approach, 3rd Edn., McGraw-Hill, New York, ISBN 978-0-07-012447-9, 1980.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Courant et al.(1928)Courant, Friedrichs, and Lewy</label><mixed-citation>Courant, R., Friedrichs, K., and Lewy, H.: Über die partiellen Differenzengleichungen der mathematischen Physik, Math. Ann., 100, 32–74, <ext-link xlink:href="https://doi.org/10.1007/bf01448839" ext-link-type="DOI">10.1007/bf01448839</ext-link>, 1928.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>DHI(2024)</label><mixed-citation>DHI: MIKE SHE, DHI A/S, Hørsholm, Denmark, <uri>https://www.mikepoweredbydhi.com/products/mike-she</uri> (last access: 2 September 2026), 2024.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Dogan and Motz(2005)</label><mixed-citation>Dogan, A. and Motz, L. H.: Saturated-Unsaturated 3D Groundwater Model. I: Development, J. Hydrol. Eng., 10, 492–504, <ext-link xlink:href="https://doi.org/10.1061/(ASCE)1084-0699(2005)10:6(492)" ext-link-type="DOI">10.1061/(ASCE)1084-0699(2005)10:6(492)</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Duethmann et al.(2020)Duethmann, Blöschl, and Parajka</label><mixed-citation>Duethmann, D., Blöschl, G., and Parajka, J.: Why does a conceptual hydrological model fail to correctly predict discharge changes in response to climate change?, Hydrol. Earth Syst. Sci., 24, 3493–3511, <ext-link xlink:href="https://doi.org/10.5194/hess-24-3493-2020" ext-link-type="DOI">10.5194/hess-24-3493-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Dunne and Black(1970)</label><mixed-citation>Dunne, T. and Black, R. D.: Partial Area Contributions to Storm Runoff in a Small New England Watershed, Water Resour. Res., 6, 1296–1311, <ext-link xlink:href="https://doi.org/10.1029/WR006i005p01296" ext-link-type="DOI">10.1029/WR006i005p01296</ext-link>, 1970.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Fan et al.(2019)Fan, Clark, Lawrence, Swenson, Band, Brantley, Brooks, Dietrich, Flores, Grant, Kirchner, Mackay, McDonnell, Milly, Sullivan, Tague, Ajami, Chaney, Hartmann, Hazenberg, McNamara, Pelletier, Perket, Rouholahnejad-Freund, Wagener, Zeng, Beighley, Buzan, Huang, Livneh, Mohanty, Nijssen, Safeeq, Shen, van Verseveld, Volk, and Yamazaki</label><mixed-citation>Fan, Y., Clark, M., Lawrence, D. M., Swenson, S., Band, L. E., Brantley, S. L., Brooks, P. D., Dietrich, W. E., Flores, A., Grant, G., Kirchner, J. W., Mackay, D. S., McDonnell, J. J., Milly, P. C. D., Sullivan, P. L., Tague, C., Ajami, H., Chaney, N., Hartmann, A., Hazenberg, P., McNamara, J., Pelletier, J., Perket, J., Rouholahnejad-Freund, E., Wagener, T., Zeng, X., Beighley, E., Buzan, J., Huang, M., Livneh, B., Mohanty, B. P., Nijssen, B., Safeeq, M., Shen, C., van Verseveld, W., Volk, J., and Yamazaki, D.: Hillslope hydrology in global change research and Earth system modeling, Water Resour. Res., 55, 1737–1772, <ext-link xlink:href="https://doi.org/10.1029/2018WR023903" ext-link-type="DOI">10.1029/2018WR023903</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Farthing and Ogden(2017)</label><mixed-citation>Farthing, M. W. and Ogden, F. L.: Numerical Solution of Richards' Equation: A Review of Advances and Challenges, Soil Sci. Soc. Am. J., 81, 1257–1269, <ext-link xlink:href="https://doi.org/10.2136/sssaj2017.02.0058" ext-link-type="DOI">10.2136/sssaj2017.02.0058</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Fatichi et al.(2016)Fatichi, Vivoni, Ogden, Ivanov, Mirus, Gochis, Downer, Camporese, Davison, Ebel, Jones, Kim, Mascaro, Niswonger, Restrepo, Rigon, Shen, Sulis, and Tarboton</label><mixed-citation>Fatichi, S., Vivoni, E. R., Ogden, F. L., Ivanov, V. Y., Mirus, B., Gochis, D., Downer, C. W., Camporese, M., Davison, J. H., Ebel, B., Jones, N., Kim, J., Mascaro, G., Niswonger, R., Restrepo, P., Rigon, R., Shen, C., Sulis, M., and Tarboton, D.: An overview of current applications, challenges, and future trends in distributed process-based models in hydrology, J. Hydrol., 537, 45–60, <ext-link xlink:href="https://doi.org/10.1016/j.jhydrol.2016.03.026" ext-link-type="DOI">10.1016/j.jhydrol.2016.03.026</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Feddes et al.(1978)Feddes, Kowalik, and Zaradny</label><mixed-citation> Feddes, R. A., Kowalik, P. J., and Zaradny, H.: Simulation of Field Water Use and Crop Yield, Simulation Monographs, John Wiley &amp; Sons, New York, pudoc, Wageningen/Wiley, New York, Original source of the Feddes piecewise-linear root water uptake reduction function, ISBN 978-0-470-26345-0, 1978.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Forsyth and Kropinski(1997)</label><mixed-citation>Forsyth, P. A. and Kropinski, M. C.: Monotonicity Considerations for Saturated–Unsaturated Subsurface Flow, SIAM J. Sci. Comput., 18, 1328–1354, <ext-link xlink:href="https://doi.org/10.1137/S1064827594265824" ext-link-type="DOI">10.1137/S1064827594265824</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Freeze(1972)</label><mixed-citation>Freeze, R. A.: Role of Subsurface Flow in Generating Surface Runoff: 1. Base Flow Contributions to Channel Flow, Water Resour. Res., 8, 609–623, <ext-link xlink:href="https://doi.org/10.1029/WR008i003p00609" ext-link-type="DOI">10.1029/WR008i003p00609</ext-link>, 1972.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Gleeson et al.(2021)Gleeson, Wagener, Döll, Zipper, West, Wada, Taylor, Scanlon, Rosolem, Rahman, Oshinlaja, Maxwell, Lo, Kim, Hill, Hartmann, Fogg, Famiglietti, Ducharne, de Graaf, Cuthbert, Condon, Bresciani, and Bierkens</label><mixed-citation>Gleeson, T., Wagener, T., Döll, P., Zipper, S. C., West, C., Wada, Y., Taylor, R., Scanlon, B., Rosolem, R., Rahman, S., Oshinlaja, N., Maxwell, R., Lo, M.-H., Kim, H., Hill, M., Hartmann, A., Fogg, G., Famiglietti, J. S., Ducharne, A., de Graaf, I., Cuthbert, M., Condon, L., Bresciani, E., and Bierkens, M. F. P.: GMD perspective: The quest to improve the evaluation of groundwater representation in continental- to global-scale models, Geosci. Model Dev., 14, 7545–7571, <ext-link xlink:href="https://doi.org/10.5194/gmd-14-7545-2021" ext-link-type="DOI">10.5194/gmd-14-7545-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Godunov(1959)</label><mixed-citation>Godunov, S. K.: A Difference Method for Numerical Calculation of Discontinuous Solutions of the Equations of Hydrodynamics, english exposition in LeVeque (1992), Matematicheskii Sbornik (Novaya Seriya), 47, 271–306, <uri>https://www.mathnet.ru/eng/sm4873</uri> (last access: 2 September 2026), 1959.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Gray and Hassanizadeh(1991)</label><mixed-citation>Gray, W. G. and Hassanizadeh, S. M.: Paradoxes and Realities in Unsaturated Flow Theory, Water Resour. Res., 27, 1847–1854, <ext-link xlink:href="https://doi.org/10.1029/91WR01259" ext-link-type="DOI">10.1029/91WR01259</ext-link>, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Gupta and Kumar Sharma(2023)</label><mixed-citation>Gupta, R. and Kumar Sharma, P.: A Review of Groundwater-Surface Water Interaction Studies in India, J. Hydrol., 621, 129592, <ext-link xlink:href="https://doi.org/10.1016/j.jhydrol.2023.129592" ext-link-type="DOI">10.1016/j.jhydrol.2023.129592</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Haverkamp and Vauclin(1979)</label><mixed-citation>Haverkamp, R. and Vauclin, M.: A note on estimating finite difference interblock hydraulic conductivity values for transient unsaturated flow problems, Water Resour. Res., 15, 181–187, <ext-link xlink:href="https://doi.org/10.1029/WR015i001p00181" ext-link-type="DOI">10.1029/WR015i001p00181</ext-link>, 1979.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Horton(1933)</label><mixed-citation>Horton, R. E.: The Role of Infiltration in the Hydrologic Cycle, Eos Trans. AGU, 14, 446–460, <ext-link xlink:href="https://doi.org/10.1029/TR014i001p00446" ext-link-type="DOI">10.1029/TR014i001p00446</ext-link>, 1933.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Hrachowitz and Clark(2017)</label><mixed-citation>Hrachowitz, M. and Clark, M. P.: HESS Opinions: The complementary merits of competing modelling philosophies in hydrology, Hydrol. Earth Syst. Sci., 21, 3953–3973, <ext-link xlink:href="https://doi.org/10.5194/hess-21-3953-2017" ext-link-type="DOI">10.5194/hess-21-3953-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Hughes and Liu(2008)</label><mixed-citation>Hughes, J. D. and Liu, J.: MIKE SHE: Software for Integrated Surface Water/Ground Water Modeling, Ground Water, 46, 797–802, <ext-link xlink:href="https://doi.org/10.1111/j.1745-6584.2008.00500.x" ext-link-type="DOI">10.1111/j.1745-6584.2008.00500.x</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Hwang et al.(2014)Hwang, Park, Sudicky, and Forsyth</label><mixed-citation>Hwang, H.-T., Park, Y.-J., Sudicky, E., and Forsyth, P.: A Parallel Computational Framework to Solve Flow and Transport in Integrated Surface–Subsurface Hydrologic Systems, Environ. Modell. Softw., 61, 39–58, <ext-link xlink:href="https://doi.org/10.1016/j.envsoft.2014.06.024" ext-link-type="DOI">10.1016/j.envsoft.2014.06.024</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Kmec et al.(2023)Kmec, Šír, Fürst, and Vodák</label><mixed-citation>Kmec, J., Šír, M., Fürst, T., and Vodák, R.: Semi-continuum modeling of unsaturated porous media flow to explain Bauters' paradox, Hydrol. Earth Syst. Sci., 27, 1279–1300, <ext-link xlink:href="https://doi.org/10.5194/hess-27-1279-2023" ext-link-type="DOI">10.5194/hess-27-1279-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>Kollet and Maxwell(2006)</label><mixed-citation>Kollet, S. J. and Maxwell, R. M.: Integrated Surface–Groundwater Flow Modeling: A Free-Surface Overland Flow Boundary Condition in a Parallel Groundwater Flow Model, Adv. Water Resour., 29, 945–958, <ext-link xlink:href="https://doi.org/10.1016/j.advwatres.2005.08.006" ext-link-type="DOI">10.1016/j.advwatres.2005.08.006</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Kool and Parker(1987)</label><mixed-citation>Kool, J. B. and Parker, J. C.: Development and evaluation of closed-form expressions for hysteretic soil hydraulic properties, Water Resour. Res., 23, 105–114, <ext-link xlink:href="https://doi.org/10.1029/WR023i001p00105" ext-link-type="DOI">10.1029/WR023i001p00105</ext-link>, 1987.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Kootanoor Sheshadrivasan(2026)</label><mixed-citation>Kootanoor Sheshadrivasan, V.: GWSWEX: a process-based, dual-solver groundwater–surface water exchange coupler for the unsaturated zone, Zenodo, v1.0.0, <ext-link xlink:href="https://doi.org/10.5281/zenodo.20268583" ext-link-type="DOI">10.5281/zenodo.20268583</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>Kuffour et al.(2020)Kuffour, Engdahl, Woodward, Condon, Kollet, and Maxwell</label><mixed-citation>Kuffour, B. N. O., Engdahl, N. B., Woodward, C. S., Condon, L. E., Kollet, S., and Maxwell, R. M.: Simulating coupled surface–subsurface flows with ParFlow v3.5.0: capabilities, applications, and ongoing development of an open-source, massively parallel, integrated hydrologic model, Geosci. Model Dev., 13, 1373–1397, <ext-link xlink:href="https://doi.org/10.5194/gmd-13-1373-2020" ext-link-type="DOI">10.5194/gmd-13-1373-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>Laio et al.(2001)Laio, Porporato, Fernandez-Illescas, and Rodriguez-Iturbe</label><mixed-citation>Laio, F., Porporato, A., Fernandez-Illescas, C., and Rodriguez-Iturbe, I.: Plants in water-controlled ecosystems: active role in hydrologic processes and response to water stress: IV. Discussion of real cases, Adv. Water Resour., 24, 745–762, <ext-link xlink:href="https://doi.org/10.1016/S0309-1708(01)00007-0" ext-link-type="DOI">10.1016/S0309-1708(01)00007-0</ext-link>, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>LeVeque(1992)</label><mixed-citation> LeVeque, R. J.: Numerical Methods for Conservation Laws, Birkhäuser, 2 edn., ISBN 978-3-7643-2723-1, 1992.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>Li et al.(2025)Li, Rickert, Zheng, Zhang, Özgen-Xian, and Caviedes-Voullième</label><mixed-citation>Li, Z., Rickert, G., Zheng, N., Zhang, Z., Özgen-Xian, I., and Caviedes-Voullième, D.: SERGHEI v2.0: introducing a performance-portable, high-performance, three-dimensional variably saturated subsurface flow solver (SERGHEI-RE), Geosci. Model Dev., 18, 547–562, <ext-link xlink:href="https://doi.org/10.5194/gmd-18-547-2025" ext-link-type="DOI">10.5194/gmd-18-547-2025</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Ma et al.(2023)Ma, Wu, Liu, and Zhang</label><mixed-citation>Ma, D. H., Wu, S. C., Liu, Z. P., and Zhang, J. B.: A novel analytical solution for ponded infiltration with consideration of a developing saturated zone, Water Resour. Res., 59, <ext-link xlink:href="https://doi.org/10.1029/2022WR034228" ext-link-type="DOI">10.1029/2022WR034228</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>Maxwell et al.(2015)Maxwell, Condon, and Kollet</label><mixed-citation>Maxwell, R. M., Condon, L. E., and Kollet, S. J.: A high-resolution simulation of groundwater and surface water over most of the continental US with the integrated hydrologic model ParFlow v3, Geosci. Model Dev., 8, 923–937, <ext-link xlink:href="https://doi.org/10.5194/gmd-8-923-2015" ext-link-type="DOI">10.5194/gmd-8-923-2015</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx56"><label>Mensah et al.(2022)Mensah, Ofosu, Yidana, Akpoti, and Kabo-bah</label><mixed-citation>Mensah, J. K., Ofosu, E. A., Yidana, S. M., Akpoti, K., and Kabo-bah, A. T.: Integrated Modeling of Hydrological Processes and Groundwater Recharge Based on Land Use Land Cover, and Climate Changes: A Systematic Review, Environmental Advances, 8, 100224, <ext-link xlink:href="https://doi.org/10.1016/j.envadv.2022.100224" ext-link-type="DOI">10.1016/j.envadv.2022.100224</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx57"><label>Miller et al.(1998)Miller, Williams, Kelley, and Tocci</label><mixed-citation>Miller, C. T., Williams, G. A., Kelley, C. T., and Tocci, M. D.: Robust Solution of Richards' Equation for Nonuniform Porous Media, Water Resour. Res., 34, 2599–2610, <ext-link xlink:href="https://doi.org/10.1029/98WR01673" ext-link-type="DOI">10.1029/98WR01673</ext-link>, 1998.</mixed-citation></ref>
      <ref id="bib1.bibx58"><label>Moeck et al.(2024)Moeck, Collenteur, and Berghuijs</label><mixed-citation>Moeck, C., Collenteur, R. A., and Berghuijs, W. R.: A global assessment of groundwater recharge response to infiltration variability at monthly to decadal timescales, Water Resour. Res., <ext-link xlink:href="https://doi.org/10.1029/2023WR035828" ext-link-type="DOI">10.1029/2023WR035828</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx59"><label>Morris(1991)</label><mixed-citation>Morris, M. D.: Factorial sampling plans for preliminary computational experiments, Technometrics, 33, 161–174, <ext-link xlink:href="https://doi.org/10.1080/00401706.1991.10484804" ext-link-type="DOI">10.1080/00401706.1991.10484804</ext-link>, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx60"><label>Mualem(1976)</label><mixed-citation>Mualem, Y.: A New Model for Predicting the Hydraulic Conductivity of Unsaturated Porous Media, Water Resour. Res., 12, 513–522, <ext-link xlink:href="https://doi.org/10.1029/WR012i003p00513" ext-link-type="DOI">10.1029/WR012i003p00513</ext-link>, 1976.</mixed-citation></ref>
      <ref id="bib1.bibx61"><label>Nash and Sutcliffe(1970)</label><mixed-citation>Nash, J. E. and Sutcliffe, J. V.: River Flow Forecasting through Conceptual Models Part I – A Discussion of Principles, J. Hydrol., 10, 282–290, <ext-link xlink:href="https://doi.org/10.1016/0022-1694(70)90255-6" ext-link-type="DOI">10.1016/0022-1694(70)90255-6</ext-link>, 1970.</mixed-citation></ref>
      <ref id="bib1.bibx62"><label>Niswonger et al.(2006)Niswonger, Prudic, and Regan</label><mixed-citation>Niswonger, R. G., Prudic, D. E., and Regan, R. S.: Documentation of the Unsaturated-Zone Flow (UZF1) Package for modeling unsaturated flow between the land surface and the water table with MODFLOW-2005, Techniques and Methods 6-A19, U.S. Geological Survey, <uri>https://pubs.usgs.gov/tm/2006/tm6a19/</uri> (last access: 2 September 2026), 2006.</mixed-citation></ref>
      <ref id="bib1.bibx63"><label>Oad et al.(2025)Oad, Szymkiewicz, and Berezowski</label><mixed-citation>Oad, V. K., Szymkiewicz, A., and Berezowski, T.: Incorporation of horizontal aquifer flow into a vertical vadose zone model to simulate natural groundwater table fluctuations, Water, 17, 2046, <ext-link xlink:href="https://doi.org/10.3390/w17142046" ext-link-type="DOI">10.3390/w17142046</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx64"><label>Paniconi and Putti(2015)</label><mixed-citation>Paniconi, C. and Putti, M.: Physically Based Modeling in Catchment Hydrology at 50: Survey and Outlook, Water Resour. Res., 51, 7090–7129, <ext-link xlink:href="https://doi.org/10.1002/2015WR017780" ext-link-type="DOI">10.1002/2015WR017780</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx65"><label>Pianosi et al.(2016)Pianosi, Beven, Freer, Hall, Rougier, Stephenson, and Wagener</label><mixed-citation>Pianosi, F., Beven, K., Freer, J., Hall, J. W., Rougier, J., Stephenson, D. B., and Wagener, T.: Sensitivity analysis of environmental models: A systematic review with practical workflow guidance, Environ. Modell. Softw., 79, 214–232, <ext-link xlink:href="https://doi.org/10.1016/j.envsoft.2016.02.008" ext-link-type="DOI">10.1016/j.envsoft.2016.02.008</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx66"><label>Picard(1890)</label><mixed-citation>Picard, É.: Mémoire sur la théorie des équations aux dérivées partielles et la méthode des approximations successives, Journal de Mathématiques Pures et Appliquées, 6, 145–210, <uri>http://www.numdam.org/item/JMPA_1890_4_6__145_0/</uri> (last access: 2 September 2026), 1890.</mixed-citation></ref>
      <ref id="bib1.bibx67"><label>Razavi and Gupta(2015)</label><mixed-citation>Razavi, S. and Gupta, H. V.: What do we mean by sensitivity analysis? The need for comprehensive characterization of “global” sensitivity in Earth and Environmental Systems Models, Water Resour. Res., 51, 3070–3092, <ext-link xlink:href="https://doi.org/10.1002/2014WR016527" ext-link-type="DOI">10.1002/2014WR016527</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx68"><label>Regan and Niswonger(2021)</label><mixed-citation>Regan, R. S. and Niswonger, R.: GSFLOW: Coupled Groundwater and Surface-Water Flow Model, Version 2.2.1, U.S. Geological Survey software release, <ext-link xlink:href="https://doi.org/10.5066/P9NI0E6M" ext-link-type="DOI">10.5066/P9NI0E6M</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx69"><label>Saltelli and Annoni(2010)</label><mixed-citation>Saltelli, A. and Annoni, P.: How to avoid a perfunctory sensitivity analysis, Environ. Modell. Softw., 25, 1508–1517, <ext-link xlink:href="https://doi.org/10.1016/j.envsoft.2010.04.012" ext-link-type="DOI">10.1016/j.envsoft.2010.04.012</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx70"><label>Samaniego et al.(2017)Samaniego, Kumar, Thober, Rakovec, Zink, Wanders, Eisner, Müller Schmied, Sutanudjaja, Warrach-Sagi, and Attinger</label><mixed-citation>Samaniego, L., Kumar, R., Thober, S., Rakovec, O., Zink, M., Wanders, N., Eisner, S., Müller Schmied, H., Sutanudjaja, E. H., Warrach-Sagi, K., and Attinger, S.: Toward seamless hydrologic predictions across spatial scales, Hydrol. Earth Syst. Sci., 21, 4323–4346, <ext-link xlink:href="https://doi.org/10.5194/hess-21-4323-2017" ext-link-type="DOI">10.5194/hess-21-4323-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx71"><label>Shu et al.(2020)Shu, Ullrich, and Duffy</label><mixed-citation>Shu, L., Ullrich, P. A., and Duffy, C. J.: Simulator for Hydrologic Unstructured Domains (SHUD v1.0): numerical modeling of watershed hydrology with the finite volume method, Geosci. Model Dev., 13, 2743–2762, <ext-link xlink:href="https://doi.org/10.5194/gmd-13-2743-2020" ext-link-type="DOI">10.5194/gmd-13-2743-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx72"><label>Šimůnek et al.(2008)Šimůnek, Šejna, Saito, Sakai, and van Genuchten</label><mixed-citation>Šimůnek, J., Šejna, M., Saito, H., Sakai, M., and van Genuchten, M. T.: The HYDRUS-1D Software Package for Simulating the One-Dimensional Movement of Water, Heat, and Multiple Solutes in Variably Saturated Media, Version 4.0, Hydrus software series 3, Department of Environmental Sciences, University of California Riverside, Riverside, California, <uri>https://www.pc-progress.com/Downloads/Pgm_hydrus1D/HYDRUS1D-4.08.pdf</uri> (last access: 2 September 2026), 2008.</mixed-citation></ref>
      <ref id="bib1.bibx73"><label>Sobol'(2001)</label><mixed-citation>Sobol', I. M.: Global sensitivity indices for nonlinear mathematical models and their Monte Carlo estimates, Math. Comput. Simulat., 55, 271–280, <ext-link xlink:href="https://doi.org/10.1016/S0378-4754(00)00270-6" ext-link-type="DOI">10.1016/S0378-4754(00)00270-6</ext-link>, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx74"><label>Sophocleous(2002)</label><mixed-citation>Sophocleous, M.: Interactions between Groundwater and Surface Water: The State of the Science, Hydrogeol. J., 10, 52–67, <ext-link xlink:href="https://doi.org/10.1007/s10040-001-0170-8" ext-link-type="DOI">10.1007/s10040-001-0170-8</ext-link>, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx75"><label>Sutanudjaja et al.(2018)Sutanudjaja, Van Beek, Wanders, Wada, Bosmans, Drost, Van Der Ent, De Graaf, Hoch, De Jong, Karssenberg, López López, Peßenteiner, Schmitz, Straatsma, Vannametee, Wisser, and Bierkens</label><mixed-citation>Sutanudjaja, E. H., van Beek, R., Wanders, N., Wada, Y., Bosmans, J. H. C., Drost, N., van der Ent, R. J., de Graaf, I. E. M., Hoch, J. M., de Jong, K., Karssenberg, D., López López, P., Peßenteiner, S., Schmitz, O., Straatsma, M. W., Vannametee, E., Wisser, D., and Bierkens, M. F. P.: PCR-GLOBWB 2: a 5 arcmin global hydrological and water resources model, Geosci. Model Dev., 11, 2429–2453, <ext-link xlink:href="https://doi.org/10.5194/gmd-11-2429-2018" ext-link-type="DOI">10.5194/gmd-11-2429-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx76"><label>Trotter(1959)</label><mixed-citation>Trotter, H. F.: On the Product of Semi-Groups of Operators, P. Am. Math. Soc., 10, 545–551, <ext-link xlink:href="https://doi.org/10.1090/S0002-9939-1959-0108732-6" ext-link-type="DOI">10.1090/S0002-9939-1959-0108732-6</ext-link>, 1959.</mixed-citation></ref>
      <ref id="bib1.bibx77"><label>Tsypin et al.(2025)Tsypin, Cacace, Guse, Lischeid, and Güntner</label><mixed-citation>Tsypin, M., Cacace, M., Guse, B., Lischeid, G., and Güntner, A.: Damped groundwater response to recharge: From spectral analysis to regional modeling, J. Hydrol., <ext-link xlink:href="https://doi.org/10.1016/j.jhydrol.2025.132851" ext-link-type="DOI">10.1016/j.jhydrol.2025.132851</ext-link>, 2025. </mixed-citation></ref>
      <ref id="bib1.bibx78"><label>Twarakavi et al.(2008)Twarakavi, Šimůnek, and Seo</label><mixed-citation>Twarakavi, N. K. C., Šimůnek, J., and Seo, S.: Evaluating Interactions between Groundwater and Vadose Zone Using the HYDRUS-Based Flow Package for MODFLOW, Vadose Zone J., 7, 757–768, <ext-link xlink:href="https://doi.org/10.2136/vzj2007.0082" ext-link-type="DOI">10.2136/vzj2007.0082</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx79"><label>van Genuchten(1980)</label><mixed-citation>van Genuchten, M. Th.: A Closed-form Equation for Predicting the Hydraulic Conductivity of Unsaturated Soils, Soil Sci. Soc. Am. J., 44, 892–898, <ext-link xlink:href="https://doi.org/10.2136/sssaj1980.03615995004400050002x" ext-link-type="DOI">10.2136/sssaj1980.03615995004400050002x</ext-link>, 1980.</mixed-citation></ref>
      <ref id="bib1.bibx80"><label>Vogel and Ippisch(2008)</label><mixed-citation>Vogel, T. and Ippisch, O.: Estimation of a critical spatial discretization limit for solving Richards' equation at large scales, Vadose Zone J., 7, 112–114, <ext-link xlink:href="https://doi.org/10.2136/vzj2006.0182" ext-link-type="DOI">10.2136/vzj2006.0182</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx81"><label>Westenbroek et al.(2018)Westenbroek, Engott, Kelson, and Hunt</label><mixed-citation>Westenbroek, S. M., Engott, J. A., Kelson, V. A., and Hunt, R. J.: SWB Version 2.0 – A soil-water-balance code for estimating net infiltration and other water-budget components, Techniques and Methods 6-A59, U.S. Geological Survey, <ext-link xlink:href="https://doi.org/10.3133/tm6A59" ext-link-type="DOI">10.3133/tm6A59</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx82"><label>Woessner(2023)</label><mixed-citation> Woessner, W. W.: Groundwater-Surface Water Exchange, The Groundwater Project, ISBN 978-1-77705-415-1, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx83"><label>Zeng et al.(2019)Zeng, Yang, Zha, and Shi</label><mixed-citation>Zeng, J., Yang, J., Zha, Y., and Shi, L.: Capturing soil-water and groundwater interactions with an iterative feedback coupling scheme: new HYDRUS package for MODFLOW, Hydrol. Earth Syst. Sci., 23, 637–655, <ext-link xlink:href="https://doi.org/10.5194/hess-23-637-2019" ext-link-type="DOI">10.5194/hess-23-637-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx84"><label>Zha et al.(2019)Zha, Yang, Zeng, Tso, Zeng, and Shi</label><mixed-citation>Zha, Y., Yang, J., Zeng, J., Tso, C. M., Zeng, W., and Shi, L.: Review of Numerical Solution of Richardson–Richards Equation for Variably Saturated Flow in Soils, WIREs Water, 6, <ext-link xlink:href="https://doi.org/10.1002/wat2.1364" ext-link-type="DOI">10.1002/wat2.1364</ext-link>, 2019.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>GWSWEX v1.0: a dual-solver 1D unsaturated zone model for mass-conservative groundwater recharge and runoff computation in distributed hydrological modelling</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Ahmadi(2024)</label><mixed-citation>
      
Ahmadi, H.: Modeling of groundwater–surface water interactions: a review of
integration strategies, ISH Journal of Hydraulic Engineering,
<a href="https://doi.org/10.1080/09715010.2023.2263434" target="_blank">https://doi.org/10.1080/09715010.2023.2263434</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Ampt and Green(1911)</label><mixed-citation>
      
Ampt, G. A. and Green, W. H.: Studies on Soil Phyics, J. Agr. Sci., 4, 1–24, <a href="https://doi.org/10.1017/S0021859600001441" target="_blank">https://doi.org/10.1017/S0021859600001441</a>, 1911.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Banerjee and Ganguly(2023)</label><mixed-citation>
      
Banerjee, D. and Ganguly, S.: A Review on the Research Advances in
Groundwater–Surface Water Interaction with an Overview of the
Phenomenon, Water, 15, 1552, <a href="https://doi.org/10.3390/w15081552" target="_blank">https://doi.org/10.3390/w15081552</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Barthel(2014)</label><mixed-citation>
      
Barthel, R.: HESS Opinions “Integration of groundwater and surface water research: an interdisciplinary problem?”, Hydrol. Earth Syst. Sci., 18, 2615–2628, <a href="https://doi.org/10.5194/hess-18-2615-2014" target="_blank">https://doi.org/10.5194/hess-18-2615-2014</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Barthel and Banzhaf(2016)</label><mixed-citation>
      
Barthel, R. and Banzhaf, S.: Groundwater and Surface Water Interaction at
the Regional-scale – A Review with Focus on Regional
Integrated Models, Water Resour. Manag., 30, 1–32,
<a href="https://doi.org/10.1007/s11269-015-1163-z" target="_blank">https://doi.org/10.1007/s11269-015-1163-z</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Bates et al.(2008)Bates, Kundzewicz, and
IPCC</label><mixed-citation>
      
Bates, B., Kundzewicz, Z. W., and IPCC (Eds.): Climate Change and Water, IPCC
Technical Paper, 6, IPCC Secretariat, Geneva, Switzerland, ISBN
978-92-9169-123-4, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Beegum et al.(2018)Beegum, Šimůnek, Szymkiewicz, Sudheer, and
Nambi</label><mixed-citation>
      
Beegum, S., Šimůnek, J., Szymkiewicz, A., Sudheer, K. P., and Nambi, I. M.:
Updating the Coupling Algorithm between HYDRUS and MODFLOW in the
HYDRUS Package for MODFLOW, Vadose Zone J., 17, 1–8,
<a href="https://doi.org/10.2136/vzj2018.02.0034" target="_blank">https://doi.org/10.2136/vzj2018.02.0034</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Beven(1989)</label><mixed-citation>
      
Beven, K.: Changing Ideas in Hydrology – The Case of Physically-Based
Models, J. Hydrol., 105, 157–172,
<a href="https://doi.org/10.1016/0022-1694(89)90101-7" target="_blank">https://doi.org/10.1016/0022-1694(89)90101-7</a>, 1989.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Beven(2019)</label><mixed-citation>
      
Beven, K.: How to Make Advances in Hydrological Modelling, Hydrology Res.,
50, 1481–1494, <a href="https://doi.org/10.2166/nh.2019.134" target="_blank">https://doi.org/10.2166/nh.2019.134</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Beven and Germann(2013)</label><mixed-citation>
      
Beven, K. and Germann, P.: Macropores and Water Flow in Soils Revisited:
REVIEW, Water Resour. Res., 49, 3071–3092, <a href="https://doi.org/10.1002/wrcr.20156" target="_blank">https://doi.org/10.1002/wrcr.20156</a>,
2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Beven(2012)</label><mixed-citation>
      
Beven, K. J.: Rainfall-Runoff Modelling: The Primer, Wiley-Blackwell, 2nd edn.,
ISBN 978-0-470-71459-1, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Bizhanimanzar et al.(2019)Bizhanimanzar, Leconte, and
Nuth</label><mixed-citation>
      
Bizhanimanzar, M., Leconte, R., and Nuth, M.: Modelling of shallow water table dynamics using conceptual and physically based integrated surface-water–groundwater hydrologic models, Hydrol. Earth Syst. Sci., 23, 2245–2260, <a href="https://doi.org/10.5194/hess-23-2245-2019" target="_blank">https://doi.org/10.5194/hess-23-2245-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Bizhanimanzar et al.(2020)Bizhanimanzar, Leconte, and
Nuth</label><mixed-citation>
      
Bizhanimanzar, M., Leconte, R., and Nuth, M.: Catchment-Scale Integrated
Surface Water-Groundwater Hydrologic Modelling Using Conceptual and
Physically Based Models: A Model Comparison Study, Water, 12, 363,
<a href="https://doi.org/10.3390/w12020363" target="_blank">https://doi.org/10.3390/w12020363</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Brandhorst et al.(2021)Brandhorst, Erdal, and
Neuweiler</label><mixed-citation>
      
Brandhorst, N., Erdal, D., and Neuweiler, I.: Coupling saturated and unsaturated flow: comparing the iterative and the non-iterative approach, Hydrol. Earth Syst. Sci., 25, 4041–4059, <a href="https://doi.org/10.5194/hess-25-4041-2021" target="_blank">https://doi.org/10.5194/hess-25-4041-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Brunner and Simmons(2012)</label><mixed-citation>
      
Brunner, P. and Simmons, C. T.: HydroGeoSphere: A Fully Integrated,
Physically Based Hydrological Model, Ground Water, 50, 170–176,
<a href="https://doi.org/10.1111/j.1745-6584.2011.00882.x" target="_blank">https://doi.org/10.1111/j.1745-6584.2011.00882.x</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Burek et al.(2020)Burek, Satoh, Kahil, Tang, Greve, Smilovic,
Guillaumot, Zhao, and Wada</label><mixed-citation>
      
Burek, P., Satoh, Y., Kahil, T., Tang, T., Greve, P., Smilovic, M., Guillaumot, L., Zhao, F., and Wada, Y.: Development of the Community Water Model (CWatM v1.04) – a high-resolution hydrological model for global and regional assessment of integrated water resources management, Geosci. Model Dev., 13, 3267–3298, <a href="https://doi.org/10.5194/gmd-13-3267-2020" target="_blank">https://doi.org/10.5194/gmd-13-3267-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Camporese et al.(2010)Camporese, Paniconi, Putti, and
Orlandini</label><mixed-citation>
      
Camporese, M., Paniconi, C., Putti, M., and Orlandini, S.: Surface-Subsurface
Flow Modeling with Path-Based Runoff Routing, Boundary Condition-Based
Coupling, and Assimilation of Multisource Observation Data:
Surface-Subsurface Flow Modeling, Water Resour. Res., 46,
<a href="https://doi.org/10.1029/2008WR007536" target="_blank">https://doi.org/10.1029/2008WR007536</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Carsel and Parrish(1988)</label><mixed-citation>
      
Carsel, R. F. and Parrish, R. S.: Developing Joint Probability Distributions of
Soil Water Retention Characteristics, Water Resour. Res., 24, 755–769,
<a href="https://doi.org/10.1029/WR024i005p00755" target="_blank">https://doi.org/10.1029/WR024i005p00755</a>, 1988.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Celia et al.(1990)Celia, Bouloutas, and
Zarba</label><mixed-citation>
      
Celia, M. A., Bouloutas, E. T., and Zarba, R. L.: A general mass-conservative
numerical solution for the unsaturated flow equation, Water Resour.
Res., 26, 1483–1496, <a href="https://doi.org/10.1029/WR026i007p01483" target="_blank">https://doi.org/10.1029/WR026i007p01483</a>,
1990.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Clark et al.(2015a)Clark, Fan, Lawrence, Adam, Bolster,
Gochis, Hooper, Kumar, Leung, Mackay, Maxwell, Shen, Swenson, and
Zeng</label><mixed-citation>
      
Clark, M. P., Fan, Y., Lawrence, D. M., Adam, J. C., Bolster, D., Gochis,
D. J., Hooper, R. P., Kumar, M., Leung, L. R., Mackay, D. S., Maxwell, R. M.,
Shen, C., Swenson, S. C., and Zeng, X.: Improving the Representation of
Hydrologic Processes in Earth System Models: Representing Hydrologic
Processes in Earth System Models, Water Resour. Res., 51, 5929–5956,
<a href="https://doi.org/10.1002/2015WR017096" target="_blank">https://doi.org/10.1002/2015WR017096</a>, 2015a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Clark et al.(2015b)Clark, Nijssen, Lundquist, Kavetski,
Rupp, Woods, Freer, Gutmann, Wood, Brekke, Arnold, Gochis, and
Rasmussen</label><mixed-citation>
      
Clark, M. P., Nijssen, B., Lundquist, J. D., Kavetski, D., Rupp, D. E., Woods,
R. A., Freer, J. E., Gutmann, E. D., Wood, A. W., Brekke, L. D., Arnold,
J. R., Gochis, D. J., and Rasmussen, R. M.: A Unified Approach for
Process‐based Hydrologic Modeling: 1. Modeling Concept, Water Resour.
Res., 51, 2498–2514, <a href="https://doi.org/10.1002/2015WR017198" target="_blank">https://doi.org/10.1002/2015WR017198</a>, 2015b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Clark et al.(2015c)Clark, Nijssen, Lundquist, Kavetski,
Rupp, Woods, Freer, Gutmann, Wood, Gochis, Rasmussen, Tarboton, Mahat,
Flerchinger, and Marks</label><mixed-citation>
      
Clark, M. P., Nijssen, B., Lundquist, J. D., Kavetski, D., Rupp, D. E., Woods,
R. A., Freer, J. E., Gutmann, E. D., Wood, A. W., Gochis, D. J., Rasmussen,
R. M., Tarboton, D. G., Mahat, V., Flerchinger, G. N., and Marks, D. G.: A
Unified Approach for Process‐based Hydrologic Modeling: 2. Model
Implementation and Case Studies, Water Resour. Res., 51, 2515–2542,
<a href="https://doi.org/10.1002/2015WR017200" target="_blank">https://doi.org/10.1002/2015WR017200</a>, 2015c.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Clark et al.(2017)Clark, Bierkens, Samaniego, Woods, Uijlenhoet,
Bennett, Pauwels, Cai, Wood, and
Peters-Lidard</label><mixed-citation>
      
Clark, M. P., Bierkens, M. F. P., Samaniego, L., Woods, R. A., Uijlenhoet, R., Bennett, K. E., Pauwels, V. R. N., Cai, X., Wood, A. W., and Peters-Lidard, C. D.: The evolution of process-based hydrologic models: historical challenges and the collective quest for physical realism, Hydrol. Earth Syst. Sci., 21, 3427–3440, <a href="https://doi.org/10.5194/hess-21-3427-2017" target="_blank">https://doi.org/10.5194/hess-21-3427-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Collenteur et al.(2021)Collenteur, Brunetti, and
Vremec</label><mixed-citation>
      
Collenteur, R. A., Brunetti, G., and Vremec, M.: phydrus: A Python
implementation of the HYDRUS-1D unsaturated zone model, Software, version
0.2.0, <a href="https://github.com/phydrus/phydrus" target="_blank"/> (last access: 2 September 2026), 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Conte and de Boor(1980)</label><mixed-citation>
      
Conte, S. D. and de Boor, C.: Elementary Numerical Analysis: An Algorithmic Approach, 3rd Edn., McGraw-Hill, New York, ISBN 978-0-07-012447-9, 1980.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Courant et al.(1928)Courant, Friedrichs, and
Lewy</label><mixed-citation>
      
Courant, R., Friedrichs, K., and Lewy, H.: Über die partiellen
Differenzengleichungen der mathematischen Physik, Math. Ann., 100,
32–74, <a href="https://doi.org/10.1007/bf01448839" target="_blank">https://doi.org/10.1007/bf01448839</a>, 1928.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>DHI(2024)</label><mixed-citation>
      
DHI: MIKE SHE, DHI A/S, Hørsholm, Denmark,
<a href="https://www.mikepoweredbydhi.com/products/mike-she" target="_blank"/> (last access: 2 September 2026), 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Dogan and Motz(2005)</label><mixed-citation>
      
Dogan, A. and Motz, L. H.: Saturated-Unsaturated 3D Groundwater Model.
I: Development, J. Hydrol. Eng., 10, 492–504,
<a href="https://doi.org/10.1061/(ASCE)1084-0699(2005)10:6(492)" target="_blank">https://doi.org/10.1061/(ASCE)1084-0699(2005)10:6(492)</a>, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Duethmann et al.(2020)Duethmann, Blöschl, and
Parajka</label><mixed-citation>
      
Duethmann, D., Blöschl, G., and Parajka, J.: Why does a conceptual hydrological model fail to correctly predict discharge changes in response to climate change?, Hydrol. Earth Syst. Sci., 24, 3493–3511, <a href="https://doi.org/10.5194/hess-24-3493-2020" target="_blank">https://doi.org/10.5194/hess-24-3493-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Dunne and Black(1970)</label><mixed-citation>
      
Dunne, T. and Black, R. D.: Partial Area Contributions to Storm Runoff
in a Small New England Watershed, Water Resour. Res., 6,
1296–1311, <a href="https://doi.org/10.1029/WR006i005p01296" target="_blank">https://doi.org/10.1029/WR006i005p01296</a>, 1970.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Fan et al.(2019)Fan, Clark, Lawrence, Swenson, Band, Brantley,
Brooks, Dietrich, Flores, Grant, Kirchner, Mackay, McDonnell, Milly,
Sullivan, Tague, Ajami, Chaney, Hartmann, Hazenberg, McNamara, Pelletier,
Perket, Rouholahnejad-Freund, Wagener, Zeng, Beighley, Buzan, Huang, Livneh,
Mohanty, Nijssen, Safeeq, Shen, van Verseveld, Volk, and
Yamazaki</label><mixed-citation>
      
Fan, Y., Clark, M., Lawrence, D. M., Swenson, S., Band, L. E., Brantley, S. L.,
Brooks, P. D., Dietrich, W. E., Flores, A., Grant, G., Kirchner, J. W.,
Mackay, D. S., McDonnell, J. J., Milly, P. C. D., Sullivan, P. L., Tague, C.,
Ajami, H., Chaney, N., Hartmann, A., Hazenberg, P., McNamara, J., Pelletier,
J., Perket, J., Rouholahnejad-Freund, E., Wagener, T., Zeng, X., Beighley,
E., Buzan, J., Huang, M., Livneh, B., Mohanty, B. P., Nijssen, B., Safeeq,
M., Shen, C., van Verseveld, W., Volk, J., and Yamazaki, D.: Hillslope
hydrology in global change research and Earth system modeling, Water
Resour. Res., 55, 1737–1772, <a href="https://doi.org/10.1029/2018WR023903" target="_blank">https://doi.org/10.1029/2018WR023903</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Farthing and Ogden(2017)</label><mixed-citation>
      
Farthing, M. W. and Ogden, F. L.: Numerical Solution of Richards'
Equation: A Review of Advances and Challenges, Soil Sci. Soc.
Am. J., 81, 1257–1269, <a href="https://doi.org/10.2136/sssaj2017.02.0058" target="_blank">https://doi.org/10.2136/sssaj2017.02.0058</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Fatichi et al.(2016)Fatichi, Vivoni, Ogden, Ivanov, Mirus, Gochis,
Downer, Camporese, Davison, Ebel, Jones, Kim, Mascaro, Niswonger, Restrepo,
Rigon, Shen, Sulis, and Tarboton</label><mixed-citation>
      
Fatichi, S., Vivoni, E. R., Ogden, F. L., Ivanov, V. Y., Mirus, B., Gochis, D.,
Downer, C. W., Camporese, M., Davison, J. H., Ebel, B., Jones, N., Kim, J.,
Mascaro, G., Niswonger, R., Restrepo, P., Rigon, R., Shen, C., Sulis, M., and
Tarboton, D.: An overview of current applications, challenges, and future
trends in distributed process-based models in hydrology, J.
Hydrol., 537, 45–60, <a href="https://doi.org/10.1016/j.jhydrol.2016.03.026" target="_blank">https://doi.org/10.1016/j.jhydrol.2016.03.026</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Feddes et al.(1978)Feddes, Kowalik, and
Zaradny</label><mixed-citation>
      
Feddes, R. A., Kowalik, P. J., and Zaradny, H.: Simulation of Field Water Use
and Crop Yield, Simulation Monographs, John Wiley &amp; Sons, New York, pudoc, Wageningen/Wiley, New York, Original source of
the Feddes piecewise-linear root water uptake reduction function, ISBN
978-0-470-26345-0, 1978.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Forsyth and Kropinski(1997)</label><mixed-citation>
      
Forsyth, P. A. and Kropinski, M. C.: Monotonicity Considerations for
Saturated–Unsaturated Subsurface Flow, SIAM J. Sci. Comput.,
18, 1328–1354, <a href="https://doi.org/10.1137/S1064827594265824" target="_blank">https://doi.org/10.1137/S1064827594265824</a>, 1997.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Freeze(1972)</label><mixed-citation>
      
Freeze, R. A.: Role of Subsurface Flow in Generating Surface Runoff: 1.
Base Flow Contributions to Channel Flow, Water Resour. Res., 8, 609–623,
<a href="https://doi.org/10.1029/WR008i003p00609" target="_blank">https://doi.org/10.1029/WR008i003p00609</a>, 1972.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Gleeson et al.(2021)Gleeson, Wagener, Döll, Zipper, West, Wada,
Taylor, Scanlon, Rosolem, Rahman, Oshinlaja, Maxwell, Lo, Kim, Hill,
Hartmann, Fogg, Famiglietti, Ducharne, de Graaf, Cuthbert, Condon,
Bresciani, and Bierkens</label><mixed-citation>
      
Gleeson, T., Wagener, T., Döll, P., Zipper, S. C., West, C., Wada, Y., Taylor, R., Scanlon, B., Rosolem, R., Rahman, S., Oshinlaja, N., Maxwell, R., Lo, M.-H., Kim, H., Hill, M., Hartmann, A., Fogg, G., Famiglietti, J. S., Ducharne, A., de Graaf, I., Cuthbert, M., Condon, L., Bresciani, E., and Bierkens, M. F. P.: GMD perspective: The quest to improve the evaluation of groundwater representation in continental- to global-scale models, Geosci. Model Dev., 14, 7545–7571, <a href="https://doi.org/10.5194/gmd-14-7545-2021" target="_blank">https://doi.org/10.5194/gmd-14-7545-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Godunov(1959)</label><mixed-citation>
      
Godunov, S. K.: A Difference Method for Numerical Calculation of Discontinuous
Solutions of the Equations of Hydrodynamics, english exposition in LeVeque (1992), Matematicheskii Sbornik (Novaya Seriya), 47, 271–306, <a href="https://www.mathnet.ru/eng/sm4873" target="_blank"/> (last access: 2 September 2026), 1959.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Gray and Hassanizadeh(1991)</label><mixed-citation>
      
Gray, W. G. and Hassanizadeh, S. M.: Paradoxes and Realities in
Unsaturated Flow Theory, Water Resour. Res., 27, 1847–1854,
<a href="https://doi.org/10.1029/91WR01259" target="_blank">https://doi.org/10.1029/91WR01259</a>, 1991.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Gupta and
Kumar Sharma(2023)</label><mixed-citation>
      
Gupta, R. and Kumar Sharma, P.: A Review of Groundwater-Surface Water
Interaction Studies in India, J. Hydrol., 621, 129592,
<a href="https://doi.org/10.1016/j.jhydrol.2023.129592" target="_blank">https://doi.org/10.1016/j.jhydrol.2023.129592</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Haverkamp and
Vauclin(1979)</label><mixed-citation>
      
Haverkamp, R. and Vauclin, M.: A note on estimating finite difference
interblock hydraulic conductivity values for transient unsaturated flow
problems, Water Resour. Res., 15, 181–187,
<a href="https://doi.org/10.1029/WR015i001p00181" target="_blank">https://doi.org/10.1029/WR015i001p00181</a>, 1979.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Horton(1933)</label><mixed-citation>
      
Horton, R. E.: The Role of Infiltration in the Hydrologic Cycle, Eos Trans.
AGU, 14, 446–460, <a href="https://doi.org/10.1029/TR014i001p00446" target="_blank">https://doi.org/10.1029/TR014i001p00446</a>, 1933.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Hrachowitz and Clark(2017)</label><mixed-citation>
      
Hrachowitz, M. and Clark, M. P.: HESS Opinions: The complementary merits of competing modelling philosophies in hydrology, Hydrol. Earth Syst. Sci., 21, 3953–3973, <a href="https://doi.org/10.5194/hess-21-3953-2017" target="_blank">https://doi.org/10.5194/hess-21-3953-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Hughes and Liu(2008)</label><mixed-citation>
      
Hughes, J. D. and Liu, J.: MIKE SHE: Software for Integrated Surface
Water/Ground Water Modeling, Ground Water, 46, 797–802,
<a href="https://doi.org/10.1111/j.1745-6584.2008.00500.x" target="_blank">https://doi.org/10.1111/j.1745-6584.2008.00500.x</a>, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Hwang et al.(2014)Hwang, Park, Sudicky, and
Forsyth</label><mixed-citation>
      
Hwang, H.-T., Park, Y.-J., Sudicky, E., and Forsyth, P.: A Parallel
Computational Framework to Solve Flow and Transport in Integrated
Surface–Subsurface Hydrologic Systems, Environ. Modell. Softw.,
61, 39–58, <a href="https://doi.org/10.1016/j.envsoft.2014.06.024" target="_blank">https://doi.org/10.1016/j.envsoft.2014.06.024</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Kmec et al.(2023)Kmec, Šír, Fürst, and
Vodák</label><mixed-citation>
      
Kmec, J., Šír, M., Fürst, T., and Vodák, R.: Semi-continuum modeling of unsaturated porous media flow to explain Bauters' paradox, Hydrol. Earth Syst. Sci., 27, 1279–1300, <a href="https://doi.org/10.5194/hess-27-1279-2023" target="_blank">https://doi.org/10.5194/hess-27-1279-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Kollet and Maxwell(2006)</label><mixed-citation>
      
Kollet, S. J. and Maxwell, R. M.: Integrated Surface–Groundwater Flow
Modeling: A Free-Surface Overland Flow Boundary Condition in a Parallel
Groundwater Flow Model, Adv. Water Resour., 29, 945–958,
<a href="https://doi.org/10.1016/j.advwatres.2005.08.006" target="_blank">https://doi.org/10.1016/j.advwatres.2005.08.006</a>, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Kool and Parker(1987)</label><mixed-citation>
      
Kool, J. B. and Parker, J. C.: Development and evaluation of closed-form
expressions for hysteretic soil hydraulic properties, Water Resour.
Res., 23, 105–114, <a href="https://doi.org/10.1029/WR023i001p00105" target="_blank">https://doi.org/10.1029/WR023i001p00105</a>, 1987.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Kootanoor Sheshadrivasan(2026)</label><mixed-citation>
      
Kootanoor Sheshadrivasan, V.: GWSWEX: a process-based, dual-solver
groundwater–surface water exchange coupler for the unsaturated zone, Zenodo, v1.0.0, <a href="https://doi.org/10.5281/zenodo.20268583" target="_blank">https://doi.org/10.5281/zenodo.20268583</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Kuffour et al.(2020)Kuffour, Engdahl, Woodward, Condon, Kollet, and
Maxwell</label><mixed-citation>
      
Kuffour, B. N. O., Engdahl, N. B., Woodward, C. S., Condon, L. E., Kollet, S., and Maxwell, R. M.: Simulating coupled surface–subsurface flows with ParFlow v3.5.0: capabilities, applications, and ongoing development of an open-source, massively parallel, integrated hydrologic model, Geosci. Model Dev., 13, 1373–1397, <a href="https://doi.org/10.5194/gmd-13-1373-2020" target="_blank">https://doi.org/10.5194/gmd-13-1373-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Laio et al.(2001)Laio, Porporato, Fernandez-Illescas, and
Rodriguez-Iturbe</label><mixed-citation>
      
Laio, F., Porporato, A., Fernandez-Illescas, C., and Rodriguez-Iturbe, I.:
Plants in water-controlled ecosystems: active role in hydrologic processes
and response to water stress: IV. Discussion of real cases, Adv. Water
Resour., 24, 745–762, <a href="https://doi.org/10.1016/S0309-1708(01)00007-0" target="_blank">https://doi.org/10.1016/S0309-1708(01)00007-0</a>,
2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>LeVeque(1992)</label><mixed-citation>
      
LeVeque, R. J.: Numerical Methods for Conservation Laws, Birkhäuser, 2 edn.,
ISBN 978-3-7643-2723-1, 1992.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Li et al.(2025)Li, Rickert, Zheng, Zhang, Özgen-Xian, and
Caviedes-Voullième</label><mixed-citation>
      
Li, Z., Rickert, G., Zheng, N., Zhang, Z., Özgen-Xian, I., and Caviedes-Voullième, D.: SERGHEI v2.0: introducing a performance-portable, high-performance, three-dimensional variably saturated subsurface flow solver (SERGHEI-RE), Geosci. Model Dev., 18, 547–562, <a href="https://doi.org/10.5194/gmd-18-547-2025" target="_blank">https://doi.org/10.5194/gmd-18-547-2025</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Ma et al.(2023)Ma, Wu, Liu, and
Zhang</label><mixed-citation>
      
Ma, D. H., Wu, S. C., Liu, Z. P., and Zhang, J. B.: A novel analytical solution
for ponded infiltration with consideration of a developing saturated zone,
Water Resour. Res., 59, <a href="https://doi.org/10.1029/2022WR034228" target="_blank">https://doi.org/10.1029/2022WR034228</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>Maxwell et al.(2015)Maxwell, Condon, and
Kollet</label><mixed-citation>
      
Maxwell, R. M., Condon, L. E., and Kollet, S. J.: A high-resolution simulation of groundwater and surface water over most of the continental US with the integrated hydrologic model ParFlow v3, Geosci. Model Dev., 8, 923–937, <a href="https://doi.org/10.5194/gmd-8-923-2015" target="_blank">https://doi.org/10.5194/gmd-8-923-2015</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Mensah et al.(2022)Mensah, Ofosu, Yidana, Akpoti, and
Kabo-bah</label><mixed-citation>
      
Mensah, J. K., Ofosu, E. A., Yidana, S. M., Akpoti, K., and Kabo-bah, A. T.:
Integrated Modeling of Hydrological Processes and Groundwater Recharge Based
on Land Use Land Cover, and Climate Changes: A Systematic Review,
Environmental Advances, 8, 100224, <a href="https://doi.org/10.1016/j.envadv.2022.100224" target="_blank">https://doi.org/10.1016/j.envadv.2022.100224</a>,
2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib57"><label>Miller et al.(1998)Miller, Williams, Kelley, and
Tocci</label><mixed-citation>
      
Miller, C. T., Williams, G. A., Kelley, C. T., and Tocci, M. D.: Robust
Solution of Richards' Equation for Nonuniform Porous Media, Water Resour.
Res., 34, 2599–2610, <a href="https://doi.org/10.1029/98WR01673" target="_blank">https://doi.org/10.1029/98WR01673</a>, 1998.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib58"><label>Moeck et al.(2024)Moeck, Collenteur, and
Berghuijs</label><mixed-citation>
      
Moeck, C., Collenteur, R. A., and Berghuijs, W. R.: A global assessment of
groundwater recharge response to infiltration variability at monthly to
decadal timescales, Water Resour. Res., <a href="https://doi.org/10.1029/2023WR035828" target="_blank">https://doi.org/10.1029/2023WR035828</a>,
2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib59"><label>Morris(1991)</label><mixed-citation>
      
Morris, M. D.: Factorial sampling plans for preliminary computational
experiments, Technometrics, 33, 161–174,
<a href="https://doi.org/10.1080/00401706.1991.10484804" target="_blank">https://doi.org/10.1080/00401706.1991.10484804</a>, 1991.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib60"><label>Mualem(1976)</label><mixed-citation>
      
Mualem, Y.: A New Model for Predicting the Hydraulic Conductivity of
Unsaturated Porous Media, Water Resour. Res., 12, 513–522,
<a href="https://doi.org/10.1029/WR012i003p00513" target="_blank">https://doi.org/10.1029/WR012i003p00513</a>, 1976.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib61"><label>Nash and Sutcliffe(1970)</label><mixed-citation>
      
Nash, J. E. and Sutcliffe, J. V.: River Flow Forecasting through Conceptual
Models Part I – A Discussion of Principles, J. Hydrol., 10,
282–290, <a href="https://doi.org/10.1016/0022-1694(70)90255-6" target="_blank">https://doi.org/10.1016/0022-1694(70)90255-6</a>, 1970.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib62"><label>Niswonger et al.(2006)Niswonger, Prudic, and
Regan</label><mixed-citation>
      
Niswonger, R. G., Prudic, D. E., and Regan, R. S.: Documentation of the
Unsaturated-Zone Flow (UZF1) Package for modeling unsaturated flow
between the land surface and the water table with MODFLOW-2005, Techniques
and Methods 6-A19, U.S. Geological Survey,
<a href="https://pubs.usgs.gov/tm/2006/tm6a19/" target="_blank"/> (last access: 2 September 2026), 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib63"><label>Oad et al.(2025)Oad, Szymkiewicz, and
Berezowski</label><mixed-citation>
      
Oad, V. K., Szymkiewicz, A., and Berezowski, T.: Incorporation of horizontal
aquifer flow into a vertical vadose zone model to simulate natural
groundwater table fluctuations, Water, 17, 2046, <a href="https://doi.org/10.3390/w17142046" target="_blank">https://doi.org/10.3390/w17142046</a>,
2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib64"><label>Paniconi and Putti(2015)</label><mixed-citation>
      
Paniconi, C. and Putti, M.: Physically Based Modeling in Catchment Hydrology at
50: Survey and Outlook, Water Resour. Res., 51, 7090–7129,
<a href="https://doi.org/10.1002/2015WR017780" target="_blank">https://doi.org/10.1002/2015WR017780</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib65"><label>Pianosi et al.(2016)Pianosi, Beven, Freer, Hall, Rougier, Stephenson,
and Wagener</label><mixed-citation>
      
Pianosi, F., Beven, K., Freer, J., Hall, J. W., Rougier, J., Stephenson, D. B.,
and Wagener, T.: Sensitivity analysis of environmental models: A systematic
review with practical workflow guidance, Environ. Modell. Softw.,
79, 214–232, <a href="https://doi.org/10.1016/j.envsoft.2016.02.008" target="_blank">https://doi.org/10.1016/j.envsoft.2016.02.008</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib66"><label>Picard(1890)</label><mixed-citation>
      
Picard, É.: Mémoire sur la théorie des équations aux
dérivées partielles et la méthode des approximations successives,
Journal de Mathématiques Pures et Appliquées, 6, 145–210,
<a href="http://www.numdam.org/item/JMPA_1890_4_6__145_0/" target="_blank"/> (last access: 2 September 2026), 1890.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib67"><label>Razavi and Gupta(2015)</label><mixed-citation>
      
Razavi, S. and Gupta, H. V.: What do we mean by sensitivity analysis? The
need for comprehensive characterization of “global” sensitivity in Earth
and Environmental Systems Models, Water Resour. Res., 51, 3070–3092,
<a href="https://doi.org/10.1002/2014WR016527" target="_blank">https://doi.org/10.1002/2014WR016527</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib68"><label>Regan and Niswonger(2021)</label><mixed-citation>
      
Regan, R. S. and Niswonger, R.: GSFLOW: Coupled Groundwater and
Surface-Water Flow Model, Version 2.2.1, U.S. Geological Survey software
release, <a href="https://doi.org/10.5066/P9NI0E6M" target="_blank">https://doi.org/10.5066/P9NI0E6M</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib69"><label>Saltelli and Annoni(2010)</label><mixed-citation>
      
Saltelli, A. and Annoni, P.: How to avoid a perfunctory sensitivity analysis,
Environ. Modell. Softw., 25, 1508–1517,
<a href="https://doi.org/10.1016/j.envsoft.2010.04.012" target="_blank">https://doi.org/10.1016/j.envsoft.2010.04.012</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib70"><label>Samaniego et al.(2017)Samaniego, Kumar, Thober, Rakovec, Zink,
Wanders, Eisner, Müller Schmied, Sutanudjaja, Warrach-Sagi, and
Attinger</label><mixed-citation>
      
Samaniego, L., Kumar, R., Thober, S., Rakovec, O., Zink, M., Wanders, N., Eisner, S., Müller Schmied, H., Sutanudjaja, E. H., Warrach-Sagi, K., and Attinger, S.: Toward seamless hydrologic predictions across spatial scales, Hydrol. Earth Syst. Sci., 21, 4323–4346, <a href="https://doi.org/10.5194/hess-21-4323-2017" target="_blank">https://doi.org/10.5194/hess-21-4323-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib71"><label>Shu et al.(2020)Shu, Ullrich, and
Duffy</label><mixed-citation>
      
Shu, L., Ullrich, P. A., and Duffy, C. J.: Simulator for Hydrologic Unstructured Domains (SHUD v1.0): numerical modeling of watershed hydrology with the finite volume method, Geosci. Model Dev., 13, 2743–2762, <a href="https://doi.org/10.5194/gmd-13-2743-2020" target="_blank">https://doi.org/10.5194/gmd-13-2743-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib72"><label>Šimůnek et al.(2008)Šimůnek, Šejna,
Saito, Sakai, and van Genuchten</label><mixed-citation>
      
Šimůnek, J., Šejna, M., Saito, H., Sakai, M., and van
Genuchten, M. T.: The HYDRUS-1D Software Package for Simulating the
One-Dimensional Movement of Water, Heat, and Multiple Solutes in Variably
Saturated Media, Version 4.0, Hydrus software series 3, Department of
Environmental Sciences, University of California Riverside, Riverside,
California,
<a href="https://www.pc-progress.com/Downloads/Pgm_hydrus1D/HYDRUS1D-4.08.pdf" target="_blank"/> (last access: 2 September 2026),
2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib73"><label>Sobol'(2001)</label><mixed-citation>
      
Sobol', I. M.: Global sensitivity indices for nonlinear mathematical models and
their Monte Carlo estimates, Math. Comput. Simulat., 55,
271–280, <a href="https://doi.org/10.1016/S0378-4754(00)00270-6" target="_blank">https://doi.org/10.1016/S0378-4754(00)00270-6</a>, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib74"><label>Sophocleous(2002)</label><mixed-citation>
      
Sophocleous, M.: Interactions between Groundwater and Surface Water: The State
of the Science, Hydrogeol. J., 10, 52–67,
<a href="https://doi.org/10.1007/s10040-001-0170-8" target="_blank">https://doi.org/10.1007/s10040-001-0170-8</a>, 2002.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib75"><label>Sutanudjaja et al.(2018)Sutanudjaja, Van Beek, Wanders, Wada,
Bosmans, Drost, Van Der Ent, De Graaf, Hoch, De Jong, Karssenberg,
López López, Peßenteiner, Schmitz, Straatsma, Vannametee, Wisser, and
Bierkens</label><mixed-citation>
      
Sutanudjaja, E. H., van Beek, R., Wanders, N., Wada, Y., Bosmans, J. H. C., Drost, N., van der Ent, R. J., de Graaf, I. E. M., Hoch, J. M., de Jong, K., Karssenberg, D., López López, P., Peßenteiner, S., Schmitz, O., Straatsma, M. W., Vannametee, E., Wisser, D., and Bierkens, M. F. P.: PCR-GLOBWB 2: a 5 arcmin global hydrological and water resources model, Geosci. Model Dev., 11, 2429–2453, <a href="https://doi.org/10.5194/gmd-11-2429-2018" target="_blank">https://doi.org/10.5194/gmd-11-2429-2018</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib76"><label>Trotter(1959)</label><mixed-citation>
      
Trotter, H. F.: On the Product of Semi-Groups of Operators, P.
Am. Math. Soc., 10, 545–551,
<a href="https://doi.org/10.1090/S0002-9939-1959-0108732-6" target="_blank">https://doi.org/10.1090/S0002-9939-1959-0108732-6</a>, 1959.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib77"><label>Tsypin et al.(2025)Tsypin, Cacace, Guse, Lischeid, and
Güntner</label><mixed-citation>
      
Tsypin, M., Cacace, M., Guse, B., Lischeid, G., and Güntner, A.: Damped
groundwater response to recharge: From spectral analysis to regional
modeling, J. Hydrol., <a href="https://doi.org/10.1016/j.jhydrol.2025.132851" target="_blank">https://doi.org/10.1016/j.jhydrol.2025.132851</a>, 2025.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib78"><label>Twarakavi et al.(2008)Twarakavi, Šimůnek, and
Seo</label><mixed-citation>
      
Twarakavi, N. K. C., Šimůnek, J., and Seo, S.: Evaluating Interactions
between Groundwater and Vadose Zone Using the HYDRUS-Based Flow Package
for MODFLOW, Vadose Zone J., 7, 757–768, <a href="https://doi.org/10.2136/vzj2007.0082" target="_blank">https://doi.org/10.2136/vzj2007.0082</a>,
2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib79"><label>van
Genuchten(1980)</label><mixed-citation>
      
van Genuchten, M. Th.: A Closed-form Equation for
Predicting the Hydraulic Conductivity of Unsaturated Soils, Soil
Sci. Soc. Am. J., 44, 892–898,
<a href="https://doi.org/10.2136/sssaj1980.03615995004400050002x" target="_blank">https://doi.org/10.2136/sssaj1980.03615995004400050002x</a>, 1980.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib80"><label>Vogel and Ippisch(2008)</label><mixed-citation>
      
Vogel, T. and Ippisch, O.: Estimation of a critical spatial discretization
limit for solving Richards' equation at large scales, Vadose Zone J.,
7, 112–114, <a href="https://doi.org/10.2136/vzj2006.0182" target="_blank">https://doi.org/10.2136/vzj2006.0182</a>, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib81"><label>Westenbroek et al.(2018)Westenbroek, Engott, Kelson, and
Hunt</label><mixed-citation>
      
Westenbroek, S. M., Engott, J. A., Kelson, V. A., and Hunt, R. J.: SWB
Version 2.0 – A soil-water-balance code for estimating net infiltration
and other water-budget components, Techniques and Methods 6-A59, U.S.
Geological Survey, <a href="https://doi.org/10.3133/tm6A59" target="_blank">https://doi.org/10.3133/tm6A59</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib82"><label>Woessner(2023)</label><mixed-citation>
      
Woessner, W. W.: Groundwater-Surface Water Exchange, The Groundwater Project,
ISBN 978-1-77705-415-1, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib83"><label>Zeng et al.(2019)Zeng, Yang, Zha, and
Shi</label><mixed-citation>
      
Zeng, J., Yang, J., Zha, Y., and Shi, L.: Capturing soil-water and groundwater interactions with an iterative feedback coupling scheme: new HYDRUS package for MODFLOW, Hydrol. Earth Syst. Sci., 23, 637–655, <a href="https://doi.org/10.5194/hess-23-637-2019" target="_blank">https://doi.org/10.5194/hess-23-637-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib84"><label>Zha et al.(2019)Zha, Yang, Zeng, Tso, Zeng, and
Shi</label><mixed-citation>
      
Zha, Y., Yang, J., Zeng, J., Tso, C. M., Zeng, W., and Shi, L.: Review of
Numerical Solution of Richardson–Richards Equation for Variably
Saturated Flow in Soils, WIREs Water, 6, <a href="https://doi.org/10.1002/wat2.1364" target="_blank">https://doi.org/10.1002/wat2.1364</a>, 2019.

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