<?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">HESS</journal-id><journal-title-group>
    <journal-title>Hydrology and Earth System Sciences</journal-title>
    <abbrev-journal-title abbrev-type="publisher">HESS</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Hydrol. Earth Syst. Sci.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1607-7938</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/hess-30-2247-2026</article-id><title-group><article-title>Multi-component reactive transport in near-saturated deformable porous media</article-title><alt-title>Reactive transport in deformable porous media</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" equal-contrib="yes" corresp="no" rid="aff1 aff2">
          <name><surname>Wang</surname><given-names>Bolin</given-names></name>
          
        <ext-link>https://orcid.org/0009-0003-3371-3381</ext-link></contrib>
        <contrib contrib-type="author" equal-contrib="yes" corresp="yes" rid="aff1 aff2">
          <name><surname>Jeng</surname><given-names>Dong-Sheng</given-names></name>
          <email>d.jeng@griffith.edu.au</email>
        <ext-link>https://orcid.org/0000-0003-0199-0918</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>College of Civil Engineering, Qingdao University of Technology, Qingdao 266033, China</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>School of Engineering and Built Environment, Griffith University Gold Coast Campus, Queensland, 4222, Australia</institution>
        </aff><author-comment content-type="econtrib"><p>These authors contributed equally to this work.</p></author-comment>
      </contrib-group>
      <author-notes><corresp id="corr1">Dong-Sheng Jeng (d.jeng@griffith.edu.au)</corresp></author-notes><pub-date><day>20</day><month>April</month><year>2026</year></pub-date>
      
      <volume>30</volume>
      <issue>8</issue>
      <fpage>2247</fpage><lpage>2275</lpage>
      <history>
        <date date-type="received"><day>6</day><month>November</month><year>2025</year></date>
           <date date-type="rev-request"><day>27</day><month>November</month><year>2025</year></date>
           <date date-type="rev-recd"><day>25</day><month>March</month><year>2026</year></date>
           <date date-type="accepted"><day>6</day><month>April</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Bolin Wang</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://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026.html">This article is available from https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026.html</self-uri><self-uri xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026.pdf">The full text article is available as a PDF file from https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e100">This study develops a hydro–mechanical–chemical (HMC) framework to simulate reactive solute migration in near-saturated, deformable porous media. The model couples the pore-water mass balance, force equilibrium, and advection–dispersion equations, and further incorporates a flexible geochemical reaction module to address both single-reaction and multi-component, multi-mineral systems. The numerical results indicate that deformation, mechanical loading, saturation, and mineral reactions jointly control the distribution and evolution of the solute. Compression and stronger mechanical loads accelerate solute transport in the early stage, but later hinder migration as the pore structure tightens. Moreover, reduced saturation promotes concentration build-up by enhancing advective transport and limiting the ability of the aqueous phase to dilute accumulated solutes. The framework improves the predictive capability for long-term plume behaviour and mineral alteration in reactive porous systems where mechanical, hydraulic, and geochemical processes interact.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e112">Solute migration in subsurface environments governs the redistribution of dissolved species within groundwater and other porous formations, influencing water quality, contaminant containment, and the performance of subsurface storage or isolation systems. A clear understanding of these transport processes is crucial for predicting long-term contaminant behaviour and evaluating the reliability of engineered and natural barriers in diverse environmental and industrial contexts.</p>
      <p id="d2e115">To better understand the migration of the solute, the first step is to describe the advective and dispersive components of transport. The advection–dispersion equation (ADE), derived from mass conservation under the assumption that hydrodynamic dispersion follows Fick's law <xref ref-type="bibr" rid="bib1.bibx4 bib1.bibx6 bib1.bibx7 bib1.bibx10 bib1.bibx41" id="paren.1"/>, remains one of the most widely applied frameworks for modelling contaminant transport in porous media, with its relevance supported by field-scale evidence of Fickian diffusion in natural geological formations <xref ref-type="bibr" rid="bib1.bibx24 bib1.bibx2" id="paren.2"/>. Due to its simple form, analytical tractability, and computational efficiency, ADE has been recognised as the baseline tool in both aquifer studies and barrier system assessments <xref ref-type="bibr" rid="bib1.bibx9" id="paren.3"/>. Although non-Fickian behaviours, such as non-equilibrium diffusion, sorption/desorption, and long-tailed breakthrough curves, have motivated alternative formulations including multirate mass transfer (MRMT) and random walk models <xref ref-type="bibr" rid="bib1.bibx8" id="paren.4"/>, these are general approaches not yet universally adopted. In view of ADE's proven reliability and its compatibility with coupled hydro-mechanical modelling, it is adopted here as a robust baseline for solute-transport analysis.</p>
      <p id="d2e131">While many contaminant transport models focus primarily on purely physical processes, geochemical reactions can also significantly influence the migration of dissolved species by altering concentration distributions and species mobility. Adsorption/desorption, ion exchange, mineral dissolution–precipitation and redox transformations can retard or accelerate migration through mass exchange or phase change. Capturing these processes has led to the development of reactive-transport modelling (RTM), which provides a unified description of geochemical–hydrological interactions in porous media <xref ref-type="bibr" rid="bib1.bibx38 bib1.bibx11" id="paren.5"/>. Previous studies such as <xref ref-type="bibr" rid="bib1.bibx43 bib1.bibx36" id="text.6"/> established the general advection–dispersion–reaction framework for multicomponent systems. In recent decades, several RTM platforms, including <sc>PHREEQC</sc>, <sc>TOUGHREACT</sc>, and <sc>CrunchFlow</sc>, have demonstrated how these concepts can be implemented for long-term practical simulations <xref ref-type="bibr" rid="bib1.bibx27 bib1.bibx35 bib1.bibx13 bib1.bibx16" id="paren.7"/>.</p>
      <p id="d2e153">The coupling of reaction processes with transport introduces additional numerical challenges. Two strategies have been commonly classified: <italic>operator-splitting</italic> (sequential) schemes and <italic>fully implicit</italic> (global) methods <xref ref-type="bibr" rid="bib1.bibx37" id="paren.8"/>. Sequential schemes decouple transport and reaction within each time increment, offering modularity and reduced computational cost <xref ref-type="bibr" rid="bib1.bibx32 bib1.bibx42" id="paren.9"/>. Fully implicit methods solve the entire transport–reaction system simultaneously <xref ref-type="bibr" rid="bib1.bibx18 bib1.bibx23" id="paren.10"/>, improving stability and mass conservation but often becoming computationally prohibitive for large-scale multi-dimensional problems due to the size and conditioning of the global Jacobian matrix <xref ref-type="bibr" rid="bib1.bibx43 bib1.bibx30" id="paren.11"/>. Moreover, numerous fully implicit implementations are tailored to relatively simple or specific reaction networks. For example, <xref ref-type="bibr" rid="bib1.bibx44" id="text.12"/> considered only the dissolution–precipitation of halite (NaCl) in rock-salt formations, which limits their flexibility for general multicomponent geochemical systems. These considerations explain the continued prevalence of sequential or partially coupled approaches in many engineering applications.</p>
      <p id="d2e179">Despite these advances, most hydro-chemical (HC) frameworks still idealise the porous medium as rigid, and thus neglect deformation-induced changes in transport pathways. Several studies have explored mechanical effects in simplified forms. For example, <xref ref-type="bibr" rid="bib1.bibx31" id="text.13"/> examined stress-driven dissolution and its impact on the geometry and permeability of pores at the pore scale. <xref ref-type="bibr" rid="bib1.bibx1" id="text.14"/> linked carbonate dissolution with porosity, permeability, and stress in a single-continuum model. <xref ref-type="bibr" rid="bib1.bibx15" id="text.15"/> combined enriched-Galerkin transport with mixed finite element mechanics to simulate calcite precipitation/dissolution during deformation. <xref ref-type="bibr" rid="bib1.bibx12" id="text.16"/> further incorporated deformation with multicomponent reactions, but limited the chemistry to the ternary (H<sub>2</sub>O)<inline-formula><mml:math id="M2" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>(CO<sub>2</sub>)<inline-formula><mml:math id="M4" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>(CaCO<sub>3</sub>) system. More recently, <xref ref-type="bibr" rid="bib1.bibx22" id="text.17"/> developed a fully implicit thermo-hydromechanical-chemical (THMC) scheme, but confined the geochemical module to a single dissolution–precipitation reaction. These efforts still simplify geochemistry to restricted reaction terms and cannot represent general multicomponent reactions in deformable porous frameworks.</p>
      <p id="d2e239">The gap aforementioned highlights the need for a modelling strategy that consistently integrates the deformation of porous media with comprehensive geochemical reactions. In the present work, a multi-dimensional <italic>hydro-mechanical-chemical</italic> (HMC) reactive-transport framework is implemented to: <list list-type="order"><list-item>
      <p id="d2e247">Extends existing near-saturated flow–transport models by embedding a generalised representation of geochemical reactions capable of handling multi-species.</p></list-item><list-item>
      <p id="d2e251">Captures coupled deformation, solute migration, and geochemical reactions under near-saturated hydraulic conditions, characteristics that are often oversimplified or ignored in previous models.</p></list-item></list></p>
      <p id="d2e254">By bridging geochemical complexity with hydro-mechanical deformation under near-saturated conditions, the proposed framework advances the predictive capability of HMC reactive transport processes in a broad range of subsurface systems, including but not limited to containment barriers, tailings repositories, engineered covers, and natural clay formations. It offers a mechanistic foundation for evaluating long-term hydro-chemo-mechanical evolution in near-saturated clayey soils, thereby supporting more reliable risk assessment and design optimisation across environmental remediation, underground storage, and geohazard mitigation.</p>
      <p id="d2e257">The general aim of this study is to develop a three-dimensional (3-D) hydro-mechanical–chemical (HMC) modelling framework that explicitly couples hydro-mechanical deformation with multicomponent geochemical reactive transport. The framework is used to investigate solute transport in near-saturated deformable porous media. Specifically, the objectives of this study are to: (i) analyse the coupled effects of mechanical deformation and multicomponent geochemical reactions on solute transport within the proposed HMC framework; (ii) explore the sensitivity of deformation-driven solute transport to loading conditions and limited deviations from full saturation through numerical simulations.</p>
      <p id="d2e260">The remainder of this paper is organised as follows. Section <xref ref-type="sec" rid="Ch1.S2"/> summarises the modelling assumptions, simplifications, and governing equations; Sect. <xref ref-type="sec" rid="Ch1.S3"/> presents the numerical implementation; Sect. <xref ref-type="sec" rid="Ch1.S4"/> describes the construction of the numerical model together with the material and boundary parameters; Sect. <xref ref-type="sec" rid="Ch1.S5"/> discusses the simulation results, emphasising the effects of deformation and multicomponent geochemical reactions, as well as the sensitivity to different loading and saturation conditions; and Sect. <xref ref-type="sec" rid="Ch1.S6"/> summarises the key findings and limitations of the present work.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Theoretical model</title>
      <p id="d2e281">This section outlines the theoretical framework for reactive solute transport in deformable porous media under near-saturated conditions. It first states the key assumptions and simplifications adopted for a continuum-scale description, then introduces the governing equations for the coupled evolution of fluid flow, mechanical response of the porous skeleton, and migration of dissolved elements.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Assumptions and simplifications</title>
      <p id="d2e291">The following assumptions define the physical scope of the framework and indicate how they reduce mathematical and computational complexity while highlighting their limitations.</p>
<sec id="Ch1.S2.SS1.SSS1">
  <label>2.1.1</label><title>Continuum-scale formulation</title>
      <p id="d2e301">The governing hydro–mechanical–chemical equations are formulated at the continuum (Darcy) scale rather than the pore scale. Each control volume is treated as a representative elementary volume (REV) whose characteristic length greatly exceeds the pore size, allowing spatially averaged variables such as pressure, concentration, porosity, and solid deformation to be defined. This assumption suits field- or engineering-scale problems in deformable porous media where continuum properties (e.g., permeability, dispersion, stiffness) remain well defined and the solid skeleton can be regarded as a homogenised medium.</p>
      <p id="d2e304">It becomes invalid for processes controlled by pore-scale heterogeneity such as localised mineral dissolution or precipitation forming preferential channels, pronounced capillary effects in partially saturated zones, or micro-fracture initiation, where explicit pore-scale or hybrid multi-scale approaches are required <xref ref-type="bibr" rid="bib1.bibx20 bib1.bibx21" id="paren.18"/>.</p>
</sec>
<sec id="Ch1.S2.SS1.SSS2">
  <label>2.1.2</label><title>Small-strain elastic skeleton in Eulerian frame</title>
      <p id="d2e318">The porous skeleton is modelled as linear-elastic and mechanically isotropic, with governing equations expressed in a Eulerian frame under the small-deformation assumption. Inelastic responses such as plastic yielding, visco-elasticity or damage are neglected, so the formulation applies only where materials remain within their elastic range.</p>
      <p id="d2e321">The small-strain approximation allows linearised stress–strain relations and avoids the geometric non-linearity and mesh-updating required in large-strain analyses. It is unsuitable for substantial volumetric compression, shear localisation or other finite-strain effects. The Eulerian description is convenient when material properties are uniform or weakly heterogeneous, since field variables are tracked on a fixed grid. In cases of strong heterogeneity or random variability, significant local deformation can distort material points relative to the mesh, and a Lagrangian or updated Lagrangian scheme is often preferable to capture material interfaces and discontinuities <xref ref-type="bibr" rid="bib1.bibx8 bib1.bibx5" id="paren.19"/>.</p>
</sec>
<sec id="Ch1.S2.SS1.SSS3">
  <label>2.1.3</label><title>Neglect of geochemical feedbacks</title>
      <p id="d2e336">The present formulation excludes geochemical feedbacks on flow and mechanical behaviour. This simplification is reasonable, as the reactions considered merely redistribute dissolved elements among the aqueous and solid phases, without affecting the pore geometry. Accordingly, chemical processes neither modify porosity nor are influenced by its variation. Under this assumption, both hydraulic and mechanical behaviours are governed exclusively by stress- or strain-induced compaction.</p>
      <p id="d2e339">Feedback becomes important when reactions significantly modify the pore space: dissolution enlarges voids and may create preferential channels, whereas precipitation clogs pore throats and reduces permeability. Such reaction-induced changes in porosity and permeability can exceed those caused by mechanical compaction <xref ref-type="bibr" rid="bib1.bibx1 bib1.bibx33" id="paren.20"/>.</p>
</sec>
<sec id="Ch1.S2.SS1.SSS4">
  <label>2.1.4</label><title>Near-saturated conditions</title>
      <p id="d2e354">The porous medium is assumed to remain nearly saturated. The liquid phase forms a continuous network and controls flow, while the gas phase is idealised as isolated, immobile bubbles that do not participate in advection. Hence, the degree of saturation <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is prescribed as a constant rather than solved as a state variable, leading to a single-phase liquid formulation in which residual gas influences the system only through the effective compressibility of the pore fluid–solid skeleton. This treatment is consistent with mass conservation under drained conditions, whereby the decrease in pore volume during consolidation is accommodated by outward Darcy drainage, so that the volumetric water content <inline-formula><mml:math id="M7" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M8" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> evolves implicitly through the liquid-phase mass balance while <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is treated as approximately constant. This approximation is suitable for wet, low-permeability geomaterials where <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> typically exceeds 0.8–0.9 and varies slowly relative to the consolidation timescale, such that deformation-driven transport dominates over transient unsaturated flow, as in compacted clay barriers and landfill liners under quasi-steady infiltration.</p>
      <p id="d2e418">The formulation becomes invalid when drying fronts develop, when strong transient infiltration induces significant saturation changes, or when connected gas pathways form such that gas-phase transport is no longer negligible. Under these circumstances, prescribing <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is inappropriate and the single-phase assumption may fail <xref ref-type="bibr" rid="bib1.bibx45" id="paren.21"/>. Accordingly, the present modelling philosophy is to focus on deformation-driven transport under quasi-saturated conditions, rather than adopting thermodynamics-based unsaturated multi-field frameworks in which saturation, multiphase pore pressures and chemical potentials are fully coupled <xref ref-type="bibr" rid="bib1.bibx19" id="paren.22"/>. This simplification is appropriate for a wide range of low-permeability geomaterials under near-saturated conditions, in which saturation evolves slowly relative to the consolidation timescale and gas connectivity remains limited, so that deformation-driven transport dominates over transient unsaturated flow processes.</p>
</sec>
<sec id="Ch1.S2.SS1.SSS5">
  <label>2.1.5</label><title>Mass conservation in elemental form</title>
      <p id="d2e446">Mass conservation is fundamental to any reactive solute transport formulation. Here, the transport equation is written in terms of elemental concentrations rather than individual aqueous species. Because reactions merely redistribute elements between dissolved and solid phases without creating or destroying them, elemental balance inherently satisfies mass conservation and requires no explicit reaction source term. This approach is advantageous for multicomponent systems where many species undergo rapid equilibrium or kinetic reactions, yet the total elemental inventory remains constant. For species-based transport problems, suitable reaction source or sink terms must be included to preserve overall elemental mass balance.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Flow and deformation equations</title>
      <p id="d2e458">The governing equations for coupled flow–deformation processes in a saturated porous medium originate from two fundamental principles: mass conservation for the pore‐water phase and force equilibrium for the deformable solid skeleton. The former governs the flow of the fluid, while the latter describes the mechanical deformation of the solid matrix. These macroscopic forms are well established for deformable porous media under small‐strain conditions <xref ref-type="bibr" rid="bib1.bibx4 bib1.bibx14 bib1.bibx40" id="paren.23"/>.</p>
      <p id="d2e464">All dissolved aqueous elements are transported by the same bulk liquid phase and therefore experience a common flow field. Likewise, the deformation of the porous skeleton responds to the total pore‐fluid pressure rather than to the concentrations of individual solutes. Consequently, the flow and deformation equations remain unchanged regardless of the number or type of chemical elements present; only the solute transport equation varies with chemical composition.</p>
      <p id="d2e467">The pore‐water flow equation <xref ref-type="bibr" rid="bib1.bibx40" id="paren.24"/> is expressed as

            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M13" display="block"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mi>g</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="bold">K</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where porosity <inline-formula><mml:math id="M14" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> is the volume fraction of the void space and controls fluid storage and transmission, <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the density of pore water and <inline-formula><mml:math id="M16" display="inline"><mml:mi>g</mml:mi></mml:math></inline-formula> is the gravitational acceleration. The coefficient <inline-formula><mml:math id="M17" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> represents the effective compressibility of the pore fluid mixture and is written as <inline-formula><mml:math id="M18" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M19" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">wo</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi>h</mml:mi></mml:msub><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>. Here, the bulk modulus of water is taken as <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">wo</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M22" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2000 MPa, the volumetric fraction of dissolved air is <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi>h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M24" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.02 m, and the atmospheric pressure is <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M26" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 100 kPa, while <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> denotes the apparent capillary pressure.</p>
      <p id="d2e719">In Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>), <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> represents the velocity of the solid skeleton, defined as the time derivative of the displacement vector <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M30" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>u</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>u</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>; its components are the displacement rates along the Cartesian axes. The hydraulic conductivity tensor <inline-formula><mml:math id="M32" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula> is taken as diagonal, with principal components <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> aligned with the coordinate axes to represent possible anisotropy of the porous medium.</p>
      <p id="d2e826">The deformation equation is formulated using the displacement vector <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as the primary variable.
          

                <disp-formula id="Ch1.E2" specific-use="gather" content-type="subnumberedsingle"><mml:math id="M37" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E2.3"><mml:mtd><mml:mtext>2a</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mi mathvariant="italic">μ</mml:mi><mml:mi mathvariant="normal">∇</mml:mi><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="italic">μ</mml:mi><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi>T</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mi mathvariant="bold">I</mml:mi><mml:mi mathvariant="normal">tr</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>-</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><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: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>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>g</mml:mi><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>=</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>p</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E2.4"><mml:mtd><mml:mtext>2b</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>G</mml:mi><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="italic">μ</mml:mi><mml:mo>=</mml:mo><mml:mi>G</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e1021">The body force vector in Eq. (<xref ref-type="disp-formula" rid="Ch1.E2.3"/>) accounts for the self‐weight of the solid skeleton. Because gravity acts vertically, only the <inline-formula><mml:math id="M38" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> component is non-zero. In Eq. (<xref ref-type="disp-formula" rid="Ch1.E2.4"/>), <inline-formula><mml:math id="M39" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M40" display="inline"><mml:mi mathvariant="italic">μ</mml:mi></mml:math></inline-formula> are the Lamé parameters defining the elastic response of the porous skeleton. The shear modulus <inline-formula><mml:math id="M41" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula> characterises resistance to shear deformation, and the Poisson’s ratio <inline-formula><mml:math id="M42" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> describes the lateral contraction under uniaxial loading.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Transport equation</title>
      <p id="d2e1072">The governing equation for solute migration follows the classical advection–dispersion framework widely used in studies of porous media transport <xref ref-type="bibr" rid="bib1.bibx34 bib1.bibx28 bib1.bibx46 bib1.bibx39" id="paren.25"/>. A separate transport equation is solved for each chemical element of interest. As highlighted in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1.SSS5"/>, the elemental formulation ensures that chemical reactions merely redistribute each element between the aqueous and solid phases without creating or destroying it. Therefore, no additional reaction source or sink terms are required to enforce mass conservation. Species‐level concentrations can be reconstructed by coupling these elemental balances with reaction relations, but the governing transport operator itself remains the same for all elements.</p>
      <p id="d2e1080">The solute transport equation <xref ref-type="bibr" rid="bib1.bibx39" id="paren.26"/> is written as

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M43" display="block"><mml:mtable rowspacing="5.690551pt" displaystyle="true"><mml:mlabeledtr id="Ch1.E5"><mml:mtd><mml:mtext>3</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mfenced close="]" open="["><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mo>+</mml:mo><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:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:msub><mml:mi>K</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><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="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>=</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="bold">D</mml:mi><mml:mo>:</mml:mo><mml:msup><mml:mi mathvariant="normal">∇</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>-</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><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:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:msub><mml:mi>K</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>p</mml:mi><mml:mo>)</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E6"><mml:mtd><mml:mtext>4</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mi>g</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mi mathvariant="bold">K</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e1406">In Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>), <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> denotes the dissolved concentrations of aqueous elements, for example <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> for the total dissolved carbon and <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula> for calcium in the liquid phase. Mineral‐phase concentrations, such as <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mi>s</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi><mml:mi>l</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:math></inline-formula>, are tracked in the geochemical reaction module but do not appear explicitly in the physical governing equations for flow, deformation or transport. The vector <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> represents the pore‐fluid velocity that drives advective migration of the dissolved elements (see Eq. <xref ref-type="disp-formula" rid="Ch1.E6"/>).</p>
      <p id="d2e1491">The hydrodynamic‐dispersion tensor <inline-formula><mml:math id="M49" display="inline"><mml:mi mathvariant="bold">D</mml:mi></mml:math></inline-formula> is defined using the local‐scale Scheidegger model, which treats dispersion as the combined effect of molecular diffusion and velocity‐dependent mechanical dispersion under a spatially smooth Darcy‐scale velocity field.

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M50" display="block"><mml:mtable rowspacing="8.535827pt 8.535827pt" displaystyle="true"><mml:mlabeledtr id="Ch1.E7"><mml:mtd><mml:mtext>5</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TH</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TV</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced open="|" close="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TH</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TV</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E8"><mml:mtd><mml:mtext>6</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TV</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced open="|" close="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TV</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced open="|" close="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>v</mml:mi><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TH</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mfenced open="|" close="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E9"><mml:mtd><mml:mtext>7</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TV</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></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:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TV</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mfenced open="|" close="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Here, the molecular diffusion coefficient <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> accounts for Brownian‐motion‐driven spreading in the absence of bulk flow. The longitudinal and transverse mechanical‐dispersion coefficients <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TH</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TV</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> describe velocity‐dependent spreading caused by microscopic variations in pore‐scale flow paths. The modulus length of the velocity vector <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:math></inline-formula> is calculated from

            <disp-formula id="Ch1.E10" content-type="numbered"><label>8</label><mml:math id="M56" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mfenced close="|" open="|"><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfenced></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>f</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mi>g</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msqrt><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>f</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mrow><mml:mi>s</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are the fluid and solid velocity components in the <inline-formula><mml:math id="M63" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M64" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M65" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions, respectively.</p>
      <p id="d2e2371">Equation (<xref ref-type="disp-formula" rid="Ch1.E5"/>) includes a simple linear adsorption term represented by the distribution coefficient <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to model instantaneous equilibrium partitioning between the aqueous phase and the solid matrix. If a more detailed description of adsorption–desorption kinetics or competitive sorption among multiple elements is needed, this linear term can be removed and replaced by reaction‐controlled source–sink terms calculated by the geochemical reaction module, which updates both aqueous and solid‐phase concentrations.

            <disp-formula id="Ch1.E11" content-type="numbered"><label>9</label><mml:math id="M67" 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>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><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 linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>=</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="bold">D</mml:mi><mml:mo>:</mml:mo><mml:msup><mml:mi mathvariant="normal">∇</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>+</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:mfenced><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Numerical scheme</title>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Development of custom solvers</title>
<sec id="Ch1.S3.SS1.SSS1">
  <label>3.1.1</label><title>Numerical platform</title>
      <p id="d2e2596">The numerical framework is developed on the open‐source finite‐volume platform (OpenFOAM v8), which provides robust solvers for continuum‐scale flow, deformation and solute transport processes, and offers high parallel scalability for large multi‐dimensional problems. Geochemical reactions are handled by PhreeqcRM, the reaction module interface of <xref ref-type="bibr" rid="bib1.bibx26" id="text.27"/>, which preserves the full thermodynamic and kinetic reaction capabilities of PHREEQC <xref ref-type="bibr" rid="bib1.bibx25" id="paren.28"/> while streamlining data exchange between the reactive‐transport code and the geochemical engine. The coupling strategy follows the concept of the porousMedia4Foam project <xref ref-type="bibr" rid="bib1.bibx27" id="paren.29"/>, but the present architecture is further optimised and extended to account for deformable porous media under near-saturated conditions.</p>
      <p id="d2e2608">The coupled hydro–mechanical–chemical (HMC) system is organised into three coupled functional modules: <list list-type="bullet"><list-item>
      <p id="d2e2613"><italic>Hydro–mechanical (HM) module – OpenFOAM:</italic> solves the groundwater flow and solid-deformation equations, yielding the transient pore pressure field and the displacement field of the porous skeleton.</p></list-item><list-item>
      <p id="d2e2619"><italic>Transport module – OpenFOAM:</italic> solves the advection–dispersion equations for each chemical component using the hydraulic fields supplied by the HM module and delivers updated aqueous concentrations to the geochemical module.</p></list-item><list-item>
      <p id="d2e2625"><italic>Chemical-reaction module – PhreeqcRM:</italic> computes equilibrium and kinetic reactions based on element concentrations supplied by OpenFOAM and returns the updated elemental composition to maintain the general mass balance.</p></list-item></list></p>
      <p id="d2e2630">All modules interact through a well-defined field interface, and none of the modules directly modifies the internal data structures of another. This separation allows individual modules to be replaced or extended without changes to the solver core, provided the standard field interface is respected.</p>
      <p id="d2e2633">The temporal coupling of the HMC system is realised through an operator-splitting strategy, in which the HM and transport modules are advanced at the global time step, while the execution of the geochemical module is scheduled by the geochemical-window controller. This design enables Lie or Strang splitting to be employed at runtime and provides a controllable balance between numerical accuracy and computational efficiency.</p>
      <p id="d2e2637">While established platforms such as TOUGHREACT and multiphysics implementations in COMSOL provide comprehensive tools for reactive transport modelling, they are not specifically developed to investigate deformation-driven reactive transport in near-saturated, deformable porous media within a unified continuum-mechanics framework. The strength of the present framework lies in its research-oriented numerical architecture, which allows the governing equations, coupling structure, and solution strategy of hydro–mechanical–chemical processes to be explicitly formulated and systematically controlled at the equation level. This capability is central to investigating deformation-driven reactive transport in near-saturated deformable porous media, which is the focus of this study.</p>
</sec>
<sec id="Ch1.S3.SS1.SSS2">
  <label>3.1.2</label><title>Treatment of molecular diffusion in the element‐based transport framework</title>
      <p id="d2e2648">The definition of the molecular diffusion coefficient <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for element-based transport is inherently ambiguous. Each chemical element may exist in multiple aqueous species (for example, Ca<sup>2+</sup> and CaHCO<inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mo>+</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>), which often have markedly different diffusion coefficients and charge states. Furthermore, <inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> depends on temperature, ionic strength, and local chemical composition, all of which can vary spatially and temporally in reactive systems. Consequently, defining an element-level diffusion coefficient requires a simplifying assumption.</p>
      <p id="d2e2697">In this study, a generalised <inline-formula><mml:math id="M72" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is calculated as a weighted average of the main aqueous species to ensure both simplicity and flexibility of the framework. Let <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> denote the user-defined fraction of the element present in aqueous elements <inline-formula><mml:math id="M74" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> (0 <inline-formula><mml:math id="M75" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M77" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> 1, <inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:msubsup><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</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>s</mml:mi></mml:msub></mml:mrow></mml:msubsup><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>). The effective coefficient is then defined as

              <disp-formula id="Ch1.E12" content-type="numbered"><label>10</label><mml:math id="M79" display="block"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> is the molecular diffusion coefficient of the elements <inline-formula><mml:math id="M81" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>. The solver reads <inline-formula><mml:math id="M82" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> from an external <monospace>.txt</monospace> file, provided as constants or as spatial- or time-dependent fields. If no fractions are supplied, a single constant <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> specified by the user is applied throughout the domain. For the case studies presented later, one involving a single mineral reaction system and the other a multi‐mineral network, the full information of the aqueous elements and their assigned diffusion coefficients are provided in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>.</p>
      <p id="d2e2906">Although the weighted average definition of <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> provides a practical and flexible means to represent element-based diffusion, it relies on one key simplifying assumption. The formulation neglects electromigration and other multicomponent coupling effects that are explicitly resolved in the Nernst–Planck equation and the Maxwell–Stefan diffusion theory <xref ref-type="bibr" rid="bib1.bibx3 bib1.bibx17" id="paren.30"/>. Consequently, the present framework can serve as a foundational platform for future developments, where multicomponent diffusion can be incorporated to account for electromigration effects. Such extensibility allows the model to accommodate more complex chemical environments without changing its numerical structure.</p>
</sec>
<sec id="Ch1.S3.SS1.SSS3">
  <label>3.1.3</label><title>Reaction activation window</title>
      <p id="d2e2931">The framework enables users to activate or deactivate the geochemical module by defining time windows in an external configuration file. During inactive periods, the solver advances only the hydro-mechanical and transport modules, thereby reducing computational overhead and improving overall efficiency. Within each activation window, the treatment of the reactions depends on their type. When only equilibrium reactions are considered, a single chemical calculation is performed at the beginning of the activation period to update the system to equilibrium. For kinetic reactions, however, PhreeqcRM subdivides each transport time step into multiple reaction sub-steps to resolve the reaction dynamics in greater detail.</p>
      <p id="d2e2934">In this framework (Fig. <xref ref-type="fig" rid="F1"/>), the solute transport process defines the main clock that governs the overall time progress of the simulation, while chemical reactions evolve in an internal sub-clock within each transport step. Each transport interval of duration <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">transport</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is therefore subdivided into smaller chemical sub-steps <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">reaction</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, such that <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">transport</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M89" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">reaction</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. See Appendix <xref ref-type="sec" rid="App1.Ch1.S3"/> for a detailed description of the chemical activation window.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e3009">Schematic of reaction–transport time stepping with and without a chemistry window.</p></caption>
            <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f01.png"/>

          </fig>

      <p id="d2e3019">Although the dual-clock scheme allows chemical reactions to evolve on finer internal sub-steps, it also introduces synchronisation issues. Extremely small transport steps are required to capture fast kinetics, which may offset the intended efficiency gain, whereas overly large sub-steps can reduce temporal resolution and cause numerical errors. Nevertheless, this framework is well suited for problems where the transport and reaction processes operate on distinct time scales, and the chemical feedback is relatively weak, providing an effective balance between accuracy and computational efficiency.</p>
</sec>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Integration strategy</title>
      <p id="d2e3031">The overall integration workflow is illustrated in Fig. <xref ref-type="fig" rid="F2"/>. At the start of the simulation, PhreeqcRM performs an initialisation stage that reads the configuration parameters, loads the prescribed geochemical conditions, and computes the initial aqueous-element concentrations and mineral-phase abundances. In coordination with OpenFOAM, these initial values are mapped onto the computational mesh so that each control volume is assigned its starting aqueous and mineral concentrations. These fields serve as the baseline for subsequent transport and reaction calculations.</p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e3038">Numerical simulation procedure for present model.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f02.png"/>

        </fig>

      <p id="d2e3047">For each global time step thereafter, OpenFOAM first solves the hydro-mechanical (HM) subsystem, pore pressure, mechanical deformation, and elemental advection–dispersion transport. Although the flow and deformation equations are strongly coupled through the pore-pressure–displacement interaction, solving them in a fully monolithic manner is numerically demanding and often computationally expensive. To improve robustness and efficiency, the present framework adopts a segregated iterative strategy, which has been widely used in CFD. The pressure equation is solved first using the previous iteration's displacement field. The resulting pressure distribution is then used to update the solid skeleton deformation, and only explicit terms are refreshed at each iteration. This process repeats until the change between successive iterations falls below a prescribed tolerance, at which point convergence is declared. The convergent fields of pore pressure <inline-formula><mml:math id="M91" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> and displacement <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are then passed in a one-way manner to the transport module to define the pore-fluid velocity <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and solid velocity <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> required by the advection–dispersion equation for solute migration.</p>
      <p id="d2e3091">After the HM and transport updates, the solver checks whether the current simulation time falls within the user-defined reaction-activation window. If the chemical module is inactive, the solver skips the reaction step and proceeds directly to the next global time step. If the chemical module is active, OpenFOAM first assembles the elemental concentration fields from all computational cells into a contiguous vector conforming to the data structure required by PhreeqcRM. This vector is passed to PhreeqcRM, which performs aqueous speciation and kinetic-reaction calculations to update both aqueous concentrations and mineral-phase abundances. Upon completion, PhreeqcRM overwrites the same vector with the updated results, which are then mapped back into the OpenFOAM fields of each cell. The simulation proceeds to the next global HM–transport step using these updated concentrations.</p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Numerical stability</title>
      <p id="d2e3102">Within the OpenFOAM framework adopted in this study, the governing equations were discretised using the finite volume method. Diffusive and dispersive fluxes were evaluated using the Gauss linear scheme, while the advective term of solute transport was discretised using a Gauss limitedLinear scheme with a limiter coefficient of 1 in order to suppress spurious oscillations. Temporal integration was performed using the implicit Euler method. The pressure, displacement and concentration equations were solved using the GAMG solver with a DILU preconditioner, with absolute and relative tolerances of <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and zero, respectively. The coupled HMC system was advanced using a segregated outer-iteration strategy, and convergence was achieved when the residuals of all primary variables dropped below <inline-formula><mml:math id="M96" display="inline"><mml:mrow><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>. Further implementation details are provided in the companion paper <xref ref-type="bibr" rid="bib1.bibx39" id="paren.31"/>.</p>
      <p id="d2e3136">To strengthen the numerical credibility of the proposed HMC framework, a systematic sensitivity analysis was conducted with respect to spatial discretisation, global time-step size and chemical sub-stepping in the ChemWindow controller. A one-at-a-time strategy was adopted, whereby only one numerical factor was varied while all others were kept identical.</p>
      <p id="d2e3139">The numerical deviations were quantified using the mean relative error (MRE) and maximum relative error (MaxRE), defined as

            <disp-formula id="Ch1.E13" content-type="numbered"><label>11</label><mml:math id="M97" display="block"><mml:mrow><mml:mtext mathvariant="normal">MRE</mml:mtext><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:munderover><mml:mfenced open="|" close="|"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>y</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">ref</mml:mi></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi>y</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">ref</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mtext>MaxRE</mml:mtext><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">max⁡</mml:mo><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>i</mml:mi><mml:mo>≤</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:munder><mml:mfenced open="|" close="|"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>y</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">ref</mml:mi></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi>y</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">ref</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> denotes the computed value at the <inline-formula><mml:math id="M99" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>th comparison point and <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msubsup><mml:mi>y</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">ref</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is the corresponding value obtained from the finest reference solution. The MRE reflects the overall deviation level, whereas the MaxRE captures the largest local discrepancy associated with potential non-linear or synchronisation effects.</p>
      <p id="d2e3280">The reference configuration corresponds to the finest grid (120 <inline-formula><mml:math id="M101" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M102" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 100), the smallest global time step (<inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M104" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1.58 <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> s), and the smallest chemical sub-step (<inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M107" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 3000 s). The medium discretisation employs a grid of 60 <inline-formula><mml:math id="M108" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M109" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 50 with <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3.15</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M112" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 6000 s, while the coarse setting uses 30 <inline-formula><mml:math id="M113" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M114" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 25, <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M116" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 6.31 <inline-formula><mml:math id="M117" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>5</sup> s, and <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M120" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 12 000 s.</p>
      <p id="d2e3476">Table <xref ref-type="table" rid="T1"/> together with Figs. <xref ref-type="fig" rid="F3"/> and <xref ref-type="fig" rid="F4"/> summarises the grid-, time-step- and chemical-substep-independence results for pore pressure <inline-formula><mml:math id="M121" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula>, solid displacement <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and solute concentration <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>. For the hydro-mechanical variables <inline-formula><mml:math id="M124" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, both the MRE and MaxRE decrease rapidly with mesh refinement and global time-step reduction. In all medium–fine comparisons, the maximum relative errors remain below 0.5 %, indicating excellent numerical convergence of the hydro-mechanical part of the solver.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e3537">Grid-, time-step-, and chemical-substep-independence summary.</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="center"/>
     <oasis:colspec colnum="5" colname="col5" align="center"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Variable</oasis:entry>
         <oasis:entry colname="col2">Grid mean</oasis:entry>
         <oasis:entry colname="col3">Grid max</oasis:entry>
         <oasis:entry colname="col4">Time-step mean</oasis:entry>
         <oasis:entry colname="col5">Time-step max</oasis:entry>
         <oasis:entry colname="col6">Chem. substep mean</oasis:entry>
         <oasis:entry colname="col7">Chem. substep max</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">(%)</oasis:entry>
         <oasis:entry colname="col3">(%)</oasis:entry>
         <oasis:entry colname="col4">(%)</oasis:entry>
         <oasis:entry colname="col5">(%)</oasis:entry>
         <oasis:entry colname="col6">(%)</oasis:entry>
         <oasis:entry colname="col7">(%)</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M126" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">1.2 <inline-formula><mml:math id="M127" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.43</oasis:entry>
         <oasis:entry colname="col3">1.9 <inline-formula><mml:math id="M128" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.45</oasis:entry>
         <oasis:entry colname="col4">0.25 <inline-formula><mml:math id="M129" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.08</oasis:entry>
         <oasis:entry colname="col5">0.27 <inline-formula><mml:math id="M130" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.09</oasis:entry>
         <oasis:entry colname="col6">–</oasis:entry>
         <oasis:entry colname="col7">–</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.54<inline-formula><mml:math id="M132" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.07</oasis:entry>
         <oasis:entry colname="col3">0.92 <inline-formula><mml:math id="M133" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.11</oasis:entry>
         <oasis:entry colname="col4">0.76 <inline-formula><mml:math id="M134" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.25</oasis:entry>
         <oasis:entry colname="col5">0.77 <inline-formula><mml:math id="M135" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.26</oasis:entry>
         <oasis:entry colname="col6">–</oasis:entry>
         <oasis:entry colname="col7">–</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">5.5 <inline-formula><mml:math id="M137" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 2.1</oasis:entry>
         <oasis:entry colname="col3">11.5 <inline-formula><mml:math id="M138" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 3.8</oasis:entry>
         <oasis:entry colname="col4">0.15 <inline-formula><mml:math id="M139" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.05</oasis:entry>
         <oasis:entry colname="col5">0.35 <inline-formula><mml:math id="M140" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.11</oasis:entry>
         <oasis:entry colname="col6">0.7 <inline-formula><mml:math id="M141" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.4</oasis:entry>
         <oasis:entry colname="col7">1.1 <inline-formula><mml:math id="M142" display="inline"><mml:mo>→</mml:mo></mml:math></inline-formula> 0.6</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e3814">Grid and time step independence analysis. <bold>(a–c)</bold> Results under different grid resolutions: <bold>(a)</bold> pore water pressure, <bold>(b)</bold> vertical displacement, and <bold>(c)</bold> solute concentration. <bold>(d–f)</bold> Results under different time step sizes: <bold>(d)</bold> pore water pressure, <bold>(e)</bold> vertical displacement, and <bold>(f)</bold> solute concentration.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f03.png"/>

        </fig>

      <fig id="F4"><label>Figure 4</label><caption><p id="d2e3850">Analysis of chemical-substep independence: small substep (round), medium substep (square), large substep (triangle).</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f04.png"/>

        </fig>

      <p id="d2e3860">The solute concentration <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> exhibits a higher sensitivity to spatial resolution, as expected for advection–dispersion–reaction dominated processes. Nevertheless, the MaxRE decreases from 11.5 % in the coarse–fine comparison to 3.8 % in the medium–fine comparison, while the MRE reduces from 5.5 % to 2.1 %, demonstrating satisfactory convergence of the transport component. In contrast, the sensitivity to the global time-step size is negligible, with maximum discrepancies below 0.2 %. More importantly, decreasing the chemical sub-step size from 12 000 to 3000 s results in less than 1 % variation in solute concentration, with the MaxRE reducing from 1.1 % to 0.6 %. This confirms that the proposed ChemWindow synchronisation scheme is numerically stable and does not introduce artificial splitting errors.</p>
      <p id="d2e3875">Based on these results, the medium discretisation settings (60 <inline-formula><mml:math id="M144" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M145" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 50, <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M147" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 3.15 <inline-formula><mml:math id="M148" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>5</sup> s, <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M151" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 6000 s) are adopted in the remainder of this study as a balanced compromise between numerical accuracy and computational efficiency.</p>
</sec>
<sec id="Ch1.S3.SS4">
  <label>3.4</label><title>Verification with previous studies</title>
      <p id="d2e3954">Two benchmark problems were used to verify different components of the present model and to examine the numerical stability of the solvers. Laboratory data is not available in the literature for direct comparison. However, benchmarking against published numerical results is a well‐established practice in the field of reactive solute transport, and provides a practical means to confirm model implementation before applying it to new scenarios.</p>
<sec id="Ch1.S3.SS4.SSS1">
  <label>3.4.1</label><title>Verification No. 1: Hydro–mechanical–transport (without reactions)</title>
      <p id="d2e3964">The first benchmark was designed to validate the hydro–mechanical–transport (HM–T) module implemented in OpenFOAM, with chemical reactions excluded. All material properties, boundary conditions, and loading settings were kept identical to those reported by <xref ref-type="bibr" rid="bib1.bibx40" id="text.32"/>, who solved the same problem using the commercial package COMSOL.</p>
      <p id="d2e3970">The dissipation of the simulated pore pressure and vertical displacement show excellent agreement with <xref ref-type="bibr" rid="bib1.bibx40" id="text.33"/> in the domain and in all reported directions, confirming the precision of the coupled flow–deformation implementation (Fig. <xref ref-type="fig" rid="F5"/>). A minor early-time deviation appears in the breakthrough concentration at the model top. A plausible cause for this discrepancy is the difference in dimensional treatment between the two codes: COMSOL solves a strictly planar (two-dimensional (2-D)) problem, whereas OpenFOAM emulates 2-D by extruding a thin 3-D slab.</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e3980">Comparison between the present model and previous model <xref ref-type="bibr" rid="bib1.bibx40" id="paren.34"/>. Temporal evolution of <bold>(a)</bold> pore water pressure, <bold>(b)</bold> vertical displacement, and <bold>(c)</bold> normalised solute concentration <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>.  Lines represent different depths: top (blue), middle (red), and bottom (black).</p></caption>
            <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f05.png"/>

          </fig>

      <p id="d2e4020">This quasi-2-D setup introduces several non-ideal effects: (i) the finite out-of-plane thickness implies a small but non-zero storage capacity, which can alter the volumetric flux per unit width; (ii) the high-aspect-ratio cells in the thin direction tends to increase the numerical (and possibly physical) transverse dispersion, which slightly smears the sharp concentration front; (iii) differences in boundary treatment for the thin direction (e.g., <monospace>empty</monospace> vs. <monospace>symmetryPlane</monospace>) and related gradient corrections can produce small phase shifts in the concentration profile.</p>
</sec>
<sec id="Ch1.S3.SS4.SSS2">
  <label>3.4.2</label><title>Verification No. 2: Reactive solute transport with kinetic dissolution</title>
      <p id="d2e4037">The second benchmark was designed to evaluate the OpenFOAM–PhreeqcRM coupling for simulating kinetically controlled mineral reactions under advective–dispersive transport. In this test, the HM module was disabled and a constant velocity of 1 <inline-formula><mml:math id="M153" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−4</sup> m<sup>3</sup> s<sup>−1</sup> (volumetric injection rate) was imposed. The solid matrix comprised 57 % inert mineral and 3 % calcite, while an acid solution of pH <inline-formula><mml:math id="M157" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2 was continuously injected, following the configuration reported by <xref ref-type="bibr" rid="bib1.bibx27" id="text.35"/> (also implemented in OpenFOAM). A one-dimensional (1-D) transport domain was used to represent calcite dissolution and precipitation during migration. The simulated concentration profiles of dissolved Ca were compared with those reported in the reference study, as shown in Fig. <xref ref-type="fig" rid="F6"/>. Overall, the two solutions exhibit good agreement at intermediate and late times, whereas noticeable discrepancies arise during the early breakthrough stage.</p>

      <fig id="F6"><label>Figure 6</label><caption><p id="d2e4095">Comparison of the present model (solid line) with Benchmark 2 (<xref ref-type="bibr" rid="bib1.bibx27" id="altparen.36"/>, diamond markers). The blue line represents the result at 20 min, the red line at 40 min, and the black line at 60 min.</p></caption>
            <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f06.png"/>

          </fig>

      <p id="d2e4107">The discrepancies observed between the two solutions are primarily attributed to the fundamentally different discrete treatments of the advective transport term, which lead to distinct boundary flux reconstructions. The reference solver evaluates the advective operator using the surface-based volumetric flux field <inline-formula><mml:math id="M158" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula> in the form <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:msub><mml:mi>Y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, whereas the present framework formulates advection in terms of the divergence of a Darcy-based, cell-centred mass flux, <inline-formula><mml:math id="M160" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub><mml:msub><mml:mi>Y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Owing to the distinct surface-flux and volume-flux formulations, the two operators are not discretely equivalent.</p>
      <p id="d2e4163">Consequently, even when identical fixedValue boundary conditions are prescribed, the resulting advective fluxes differ in the discrete implementation, because <inline-formula><mml:math id="M161" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula> is imposed directly at cell faces, while <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is defined at cell centres and subsequently interpolated to the boundary faces. This structural difference cannot be expected to vanish systematically through mesh refinement and therefore gives rise to irreducible discrepancies during the early transient stage.</p>
      <p id="d2e4184">Within this context, Benchmark #2 is not intended to provide strict equation-to-equation validation against the reference solution, but rather to assess the correctness and feasibility of the proposed governing equations under comparable conditions. The observed agreement in the overall trend and magnitude of the concentration profiles supports the correctness of the present implementation and indicates that the proposed control equations capture the dominant dissolution dynamics. The remaining differences are mainly attributable to the distinct discrete treatments of the advective operator.</p>
</sec>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Application to a landfill liner</title>
      <p id="d2e4197">The developed framework is designed to simulate coupled flow, deformation and multicomponent reactive transport in porous media subjected simultaneously to mechanical loading and chemically aggressive fluids.  This modelling tool is broadly applicable to scenarios where barrier materials interact with reactive solutes, for example, chloride ingress that accelerates steel corrosion in reinforced concrete structures <xref ref-type="bibr" rid="bib1.bibx11" id="paren.37"/>, or advective–dispersive transport through clay liners accompanied by cation exchange and carbonate dissolution or precipitation <xref ref-type="bibr" rid="bib1.bibx12" id="paren.38"/>.</p>
      <p id="d2e4206">In this study, the framework is applied to a landfill-liner scenario. Chemically aggressive leachates, such as acidic solutions enriched in CO<inline-formula><mml:math id="M163" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, SO<inline-formula><mml:math id="M164" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">4</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, can infiltrate the liner and react with both its mineral constituents and the underlying geomaterials, thus improving contaminant migration and potentially compromising the long-term performance of the barrier.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Model description</title>
      <p id="d2e4243">In OpenFOAM, a quasi-2-D domain (Fig. <xref ref-type="fig" rid="F7"/>) was built as a thin 3-D slab of length <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M166" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 m and height <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M168" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 m, with a negligible out-of-plane thickness to emulate two-dimensional behaviour. Along the top boundary, three contaminant inlets (depicted by blue arrows) are prescribed as boundary molar fluxes <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>–<inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> with units of mol (m<sup>2</sup> s)<sup>−1</sup>. Each inlet is applied uniformly over a top-boundary patch of width 4 m (i.e., an inlet area <inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M174" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 4 m <inline-formula><mml:math id="M175" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 0.02 m, where 0.02 m is the out-of-plane thickness of the quasi-2-D OpenFOAM model). The intervening top-boundary segments are assigned zero solute flux. The entire top surface is subjected to a uniform mechanical load. The bottom boundary comprises five localised drainage outlets (red arrows) with a prescribed hydraulic head, with the rest rendered impermeable; both lateral boundaries are also impermeable and mechanically fixed to prevent rigid body motion.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e4356">Cross section of the present model.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f07.png"/>

        </fig>

      <p id="d2e4365">The coordinate system is defined such that <inline-formula><mml:math id="M176" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> is positive to the right and <inline-formula><mml:math id="M177" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> is positive upward. The geochemical initial condition is spatially uniform: the entire computational domain is assigned <monospace>Solution 1</monospace> from the PHREEQC input file, thus providing the same initial aqueous composition throughout the liner and the surrounding geomaterial. Each OpenFOAM cell is directly mapped to a corresponding PHREEQC cell, ensuring a one-to-one correspondence between the flow and geochemical grids. If spatially variable initial compositions are required (i.e., different <monospace>Solution</monospace> definitions), the OpenFOAM mesh must be preconfigured to assign the appropriate PHREEQC solution number to each computational cell.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Boundary conditions and input parameters</title>
      <p id="d2e4396">A mechanical load is applied at the top boundary and expressed through the local force-balance condition.

            <disp-formula id="Ch1.E14" content-type="numbered"><label>12</label><mml:math id="M178" display="block"><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="bold">n</mml:mi><mml:mo>⋅</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="bold">Q</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold">n</mml:mi><mml:mo>⋅</mml:mo><mml:mi>p</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="bold">I</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M179" display="inline"><mml:mi mathvariant="bold">n</mml:mi></mml:math></inline-formula> is the outward unit normal, <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> denotes the effective stress tensor, and <inline-formula><mml:math id="M181" display="inline"><mml:mi mathvariant="bold">I</mml:mi></mml:math></inline-formula> is the identity tensor. The effective stress is defined following <xref ref-type="bibr" rid="bib1.bibx14" id="text.39"/>, and the corresponding displacement gradient on the loaded surface is given by

            <disp-formula id="Ch1.E15" content-type="numbered"><label>13</label><mml:math id="M182" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="bold">n</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="bold">Q</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mi mathvariant="bold">n</mml:mi><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo>⋅</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mi mathvariant="italic">μ</mml:mi><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi>T</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mi mathvariant="bold">I</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">tr</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">μ</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:mi mathvariant="bold">n</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">μ</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">λ</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e4592">The bottom boundary is constrained to emulate a stiff foundation: both vertical and lateral components of displacement are fixed at zero, suppressing downward settlement and horizontal sliding along the base. The lateral boundaries are laterally fixed to prevent rigid-body motion of the entire domain, but their vertical displacement remains free unless otherwise specified.</p>
      <p id="d2e4595">For pore pressure, the top surface is assumed to be in contact with an overlying ponded leachate at atmospheric pressure and is therefore assigned a zero normal gradient condition,

            <disp-formula id="Ch1.E16" content-type="numbered"><label>14</label><mml:math id="M183" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which is consistent with a flat free surface in static equilibrium and negligible vertical seepage. Under near-saturated conditions, the liquid phase remains continuous up to the surface while the gas phase is disconnected, so no capillary head or hydrostatic jump develops across the interface. If a sustained head difference develops between the ponded leachate and the liner interior, a non-zero gradient or a Dirichlet-type pressure specification would be required to represent advective inflow.</p>
      <p id="d2e4640">The lateral boundaries are treated as impermeable for flow, enforcing no-drainage (zero-normal-flux) conditions. At the bottom boundary, drainage is permitted only at the designated outlet segments where hydraulic head is prescribed, while the remaining sections of the bottom share the same no-drainage condition as the lateral boundaries.</p>
      <p id="d2e4644">The boundary of solute concentration at the top is specified as

            <disp-formula id="Ch1.E17" content-type="numbered"><label>15</label><mml:math id="M184" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>J</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi>n</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msup><mml:mi>J</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> the imposed vertical solute-mass flux of elements <inline-formula><mml:math id="M186" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> the molecular diffusion coefficient. This Robin-type, diffusion-controlled boundary is appropriate when the overlying leachate pond has negligible vertical seepage yet maintains a concentration gradient that drives diffusive mass transfer into the liner. If appreciable advective inflow occurs, a prescribed advective flux or a Dirichlet-type concentration boundary would be more suitable. The lateral boundaries and the impermeable portions of the bottom boundary are assigned zero normal gradient (Neumann) conditions for concentration. The boundary conditions are summarised in Table <xref ref-type="table" rid="T2"/>.</p>

<table-wrap id="T2" specific-use="star"><label>Table 2</label><caption><p id="d2e4773">Boundary conditions (BCs) setup for the present models.</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">Boundary Index</oasis:entry>
         <oasis:entry colname="col2">BC of <inline-formula><mml:math id="M188" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">BC of <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">BC of <inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Top (With pollution sources)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:mi mathvariant="bold">n</mml:mi><mml:mo>⋅</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold">Q</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">t</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi>p</mml:mi><mml:mi mathvariant="bold">n</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msup><mml:mi>J</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi>n</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Top (No pollution sources)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:mi mathvariant="bold">n</mml:mi><mml:mo>⋅</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold">Q</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">t</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi>p</mml:mi><mml:mi mathvariant="bold">n</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Bottom (Drainage area)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Bottom (Undrained area)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Sides</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mo>(</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e5273">It is emphasised that the imposed concentration boundary conditions are adopted as controlled demonstration settings to explore the sensitivity of coupled hydro-mechanical–chemical responses to source strength and drainage configuration. The leakage cases considered correspond to localised defects or preferential pathways rather than spatially uniform barrier failure, which is not regarded as realistic for engineered containment systems. In the absence of site-specific investigation data, the present simulations should therefore be interpreted as scenario-based analyses aimed at mechanistic understanding, rather than predictive landfill exposure assessments.</p>
      <p id="d2e5276">The simulated liner is modelled as a low permeability clayey soil under a small-strain linear elastic framework (Table <xref ref-type="table" rid="T3"/>). Hydraulic and mechanical properties—including porosity <inline-formula><mml:math id="M206" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>, degree of saturation <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, hydraulic conductivity <inline-formula><mml:math id="M208" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula>, shear modulus <inline-formula><mml:math id="M209" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula>, Poisson's ratio <inline-formula><mml:math id="M210" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula>, and compressibility coefficients—were taken from representative ranges for compacted clay liners <xref ref-type="bibr" rid="bib1.bibx28 bib1.bibx46" id="paren.40"/>. These values are consistent with the small-strain assumption, allowing the use of linear elasticity and the Eulerian formulation without large-deformation corrections. Geochemical reactions are implemented via the PhreeqcRM interface, in which standard PHREEQC input blocks are specified using OpenFOAM chemistry dictionaries. Details of the corresponding configuration options are provided in Appendix <xref ref-type="sec" rid="App1.Ch1.S4"/>.</p>
      <p id="d2e5326">For reactive-transport simulations, the linear distribution coefficient <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, a simplified equilibrium sorption term, was set to zero for all elements so that changes in breakthrough and spatial distribution arise solely from geochemical reactions such as mineral dissolution and precipitation. The PHREEQC reaction module is, in principle, capable of representing more complex sorption mechanisms (e.g. nonlinear Freundlich or Langmuir isotherms and competitive or kinetic adsorption–desorption), but these functionalities are reserved for future extensions and are not used in this work.</p>

<table-wrap id="T3" specific-use="star"><label>Table 3</label><caption><p id="d2e5344">Physical parameters of the present models.</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">Parameter</oasis:entry>
         <oasis:entry colname="col2">Value</oasis:entry>
         <oasis:entry colname="col3">Description</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.88</oasis:entry>
         <oasis:entry colname="col3">Degree of saturation</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M214" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.33</oasis:entry>
         <oasis:entry colname="col3">Soil initial porosity</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:msup><mml:mi/><mml:mo>*</mml:mo></mml:msup><mml:mi mathvariant="bold">Q</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Referring to Fig. <xref ref-type="fig" rid="F8"/></oasis:entry>
         <oasis:entry colname="col3">External load</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M216" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">2.75 <inline-formula><mml:math id="M217" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>6</sup> Pa</oasis:entry>
         <oasis:entry colname="col3">Shear modulus</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M219" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.33</oasis:entry>
         <oasis:entry colname="col3">Poisson's ratio</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">1 <inline-formula><mml:math id="M221" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−10</sup> m s<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3">Hydraulic conductivity in the <inline-formula><mml:math id="M224" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">1 <inline-formula><mml:math id="M226" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−11</sup> m s<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3">Hydraulic conductivity in the <inline-formula><mml:math id="M229" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">1 <inline-formula><mml:math id="M231" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>3</sup> kg m<sup>−3</sup></oasis:entry>
         <oasis:entry colname="col3">Density of the pore fluid</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M234" 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="col2">2.6 <inline-formula><mml:math id="M235" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>3</sup> kg m<sup>−3</sup></oasis:entry>
         <oasis:entry colname="col3">Density of the soil</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M238" display="inline"><mml:mi>g</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">9.8 m s<sup>−2</sup></oasis:entry>
         <oasis:entry colname="col3">Gravitational acceleration of water</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0 m<sup>3</sup> kg<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3">Partitioning coefficient</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.5 m</oasis:entry>
         <oasis:entry colname="col3">Longitudinal dispersion coefficient</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.1 m</oasis:entry>
         <oasis:entry colname="col3">Transverse dispersion coefficient</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.1 m<sup>2</sup> m<inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mi mathvariant="normal">mineral</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">Specific surface area of mineral</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><table-wrap-foot><p id="d2e5347">Note: parameters with <sup>*</sup> were used in the parametric study.</p></table-wrap-foot></table-wrap>

</sec>
<sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Description of case studies</title>
      <p id="d2e5887">Two types of reactive‐transport scenarios were designed to demonstrate and evaluate the capabilities of the proposed HMC framework. The first case considers a single reactive mineral that undergoes multicomponent aqueous reactions, enabling a clear examination of the fundamental coupling between hydro-mechanical processes and geochemical reaction fronts. This case is also used to explore the sensitivity of the system response to external mechanical loading and to variations in the initial degree of saturation, highlighting the interaction between pore pressure dissipation, deformation, and reactive solute migration.</p>
      <p id="d2e5890">The second case extends the system to a multi‐mineral, multi‐component reaction network to showcase the stability of the framework to capture simultaneous dissolution–precipitation and competitive aqueous reactions among several solid phases. This progression from a simplified to a more complex geochemical setting highlights the versatility of the solver and its ability to handle general reactive transport problems.</p>
<sec id="Ch1.S4.SS3.SSS1">
  <label>4.3.1</label><title>Single mineral reaction</title>
      <p id="d2e5900">The dissolution and precipitation of calcite in the CO<sub>2</sub>–water system follow the classical carbonate reaction,

              <disp-formula id="Ch1.E18" content-type="numbered"><label>16</label><mml:math id="M249" display="block"><mml:mrow><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CaCO</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="normal">s</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="normal">aq</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">H</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi mathvariant="normal">O</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="normal">l</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>⇌</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="chem"><mml:msup><mml:mi mathvariant="normal">Ca</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>+</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">aq</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="chem"><mml:msubsup><mml:mi mathvariant="normal">HCO</mml:mi><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">aq</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            which describes the equilibrium between solid calcite, dissolved CO<sub>2</sub>, and bicarbonate species.</p>
      <p id="d2e6012">Rather than assuming instantaneous equilibrium, calcite dissolution and precipitation were represented using the surface-controlled kinetic law <xref ref-type="bibr" rid="bib1.bibx29" id="paren.41"/>:

              <disp-formula id="Ch1.E19" content-type="numbered"><label>17</label><mml:math id="M251" 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>r</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>=</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>M</mml:mi><mml:mo>)</mml:mo><mml:mo mathsize="1.5em">[</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:msup><mml:mi mathvariant="normal">H</mml:mi><mml:mo>+</mml:mo></mml:msup></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">H</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:msubsup><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">3</mml:mn><mml:mo>*</mml:mo></mml:msubsup></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">H</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi mathvariant="normal">O</mml:mi></mml:mrow></mml:msub><mml:mo mathsize="1.5em">]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo mathsize="1.5em">(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mtext>SI</mml:mtext><mml:mi mathvariant="normal">calcite</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mo mathsize="1.5em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the volumetric rate of reaction (mol m<inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mi mathvariant="normal">bulk</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> s<sup>−1</sup>); <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>M</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>(</mml:mo><mml:mi>M</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mi>m</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is the effective reactive surface area that scales with the remaining mineral mass <inline-formula><mml:math id="M256" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula>; <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are temperature-dependent rate constants representing the acid (H<sup>+</sup>), carbonic-acid (H<sub>2</sub>CO<inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mo>*</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>), and neutral (H<sub>2</sub>O) mechanisms, respectively; <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> denotes the activity of aqueous species <inline-formula><mml:math id="M265" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>; SI<sub>calcite</sub> is the saturation index controlling the departure from equilibrium (SI <inline-formula><mml:math id="M267" display="inline"><mml:mo>&lt;</mml:mo></mml:math></inline-formula> 0 favours dissolution, SI <inline-formula><mml:math id="M268" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> 0 favours precipitation); <inline-formula><mml:math id="M269" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> is an empirical coefficient (typically <inline-formula><mml:math id="M270" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M271" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 1), and <inline-formula><mml:math id="M272" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> is the surface-area scaling exponent (commonly <inline-formula><mml:math id="M273" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M274" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2/3).</p>
      <p id="d2e6419">Table <xref ref-type="table" rid="T4"/> lists the primary chemical components of the background pore water and the injected acidic solution. The porous medium initially contained 57 % inert mineral and 3 % calcite. The background water was near-neutral, CO<sub>2</sub>-buffered, and close to calcite saturation, while the injected solution was strongly acidic (pH <inline-formula><mml:math id="M276" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2). Acidic inflow reduced the local calcite saturation index, promoting calcite dissolution and releasing Ca<sup>2+</sup> and HCO<inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> into the aqueous phase. The solute fluxes imposed for inorganic carbon differed between the three injection points, designated <inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M280" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> as shown in Fig. <xref ref-type="fig" rid="F7"/>. These sources are located in the left, middle, and right sections of the upper boundary, respectively, with the injection strength progressively increasing from <inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>.</p>

<table-wrap id="T4" specific-use="star"><label>Table 4</label><caption><p id="d2e6526">Primary components in the background (initial) and injected solutions for the single-mineral reaction.</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">Component</oasis:entry>
         <oasis:entry colname="col2">Initial condition</oasis:entry>
         <oasis:entry colname="col3">Injected solution</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">pH</oasis:entry>
         <oasis:entry colname="col2">8.2</oasis:entry>
         <oasis:entry colname="col3">2.0</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Ca</oasis:entry>
         <oasis:entry colname="col2">1 <inline-formula><mml:math id="M284" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup> mol L<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3">negligible</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">C</oasis:entry>
         <oasis:entry colname="col2">1 <inline-formula><mml:math id="M287" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup> mol L<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M291" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2.5 <inline-formula><mml:math id="M292" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−10</sup> mol (m<sup>2</sup> s)<sup>−1</sup>,</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M297" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M298" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−10</sup> mol (m<sup>2</sup> s)<sup>−1</sup>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M303" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M304" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−9</sup> mol (m<sup>2</sup> s)<sup>−1</sup></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CO<sub>2</sub>(g)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:msub><mml:mi>log⁡</mml:mi><mml:mn mathvariant="normal">10</mml:mn></mml:msub><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M310" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M311" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>3.45 atm</oasis:entry>
         <oasis:entry colname="col3">negligible</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e6899">To examine the effects of hydro–mechanical coupling, external loading, and saturation on reactive solute migration, three groups of simulation scenarios were designed: <list list-type="custom"><list-item><label>1.</label>
      <p id="d2e6904">Group 1: Mechanistic influence (Cases A–C) <list list-type="custom"><list-item><label>-</label>
      <p id="d2e6909">Case A: Baseline full HMC coupling (hydro–mechanical coupling, solute transport, and chemical reactions); vertical load 4.0 <inline-formula><mml:math id="M312" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>5</sup> Pa applied for two years at <inline-formula><mml:math id="M314" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.88</mml:mn></mml:mrow></mml:math></inline-formula>.</p></list-item><list-item><label>-</label>
      <p id="d2e6944">Case B: Same as Case A, but with geochemical reactions deactivated (no-chem).</p></list-item><list-item><label>-</label>
      <p id="d2e6948">Case C: Same as Case A, but with the mechanical module removed (no-mech; reactive transport only).</p></list-item></list></p></list-item><list-item><label>2.</label>
      <p id="d2e6952">Group 2: Load sensitivity (Cases D–E) (Fig. <xref ref-type="fig" rid="F8"/>) <list list-type="custom"><list-item><label>-</label>
      <p id="d2e6959">Case D: Higher vertical load 6.0 <inline-formula><mml:math id="M315" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>5</sup> Pa, other settings as in Case A (HMC).</p></list-item><list-item><label>-</label>
      <p id="d2e6979">Case E: Lower vertical load  2.0 <inline-formula><mml:math id="M317" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>5</sup> Pa, other settings as in Case A (HMC).</p></list-item></list></p></list-item><list-item><label>3.</label>
      <p id="d2e6999">Group 3:  Saturation sensitivity and module exclusion (Cases F–K) <list list-type="custom"><list-item><label>-</label>
      <p id="d2e7004">Case F: HMC at <inline-formula><mml:math id="M319" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.0</mml:mn></mml:mrow></mml:math></inline-formula> (other settings as in Case A).</p></list-item><list-item><label>-</label>
      <p id="d2e7023">Case G: HMC at <inline-formula><mml:math id="M320" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.80</mml:mn></mml:mrow></mml:math></inline-formula> (other settings as in Case A).</p></list-item><list-item><label>-</label>
      <p id="d2e7042">Case H: No-mech (RT+Chem) at <inline-formula><mml:math id="M321" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.0</mml:mn></mml:mrow></mml:math></inline-formula> (same as Case F but without mechanics).</p></list-item><list-item><label>-</label>
      <p id="d2e7061">Case I: No-mech (RT+Chem) at <inline-formula><mml:math id="M322" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.80</mml:mn></mml:mrow></mml:math></inline-formula> (same as Case G but without mechanics).</p></list-item><list-item><label>-</label>
      <p id="d2e7080">Case J: No-chem (HM+T) at <inline-formula><mml:math id="M323" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.0</mml:mn></mml:mrow></mml:math></inline-formula> (same as Case F but without geochemical reactions).</p></list-item><list-item><label>-</label>
      <p id="d2e7099">Case K: No-chem (HM+T) at <inline-formula><mml:math id="M324" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.80</mml:mn></mml:mrow></mml:math></inline-formula> (same as Case G but without geochemical reactions).</p></list-item></list></p></list-item></list></p>

      <fig id="F8"><label>Figure 8</label><caption><p id="d2e7119">Load pattern under different models: the black line represents Case A, the red line represents Case D, and the blue line represents Case E.</p></caption>
            <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f08.png"/>

          </fig>

</sec>
<sec id="Ch1.S4.SS3.SSS2">
  <label>4.3.2</label><title>Multi-mineral reaction</title>
      <p id="d2e7136">The simulations also consider two additional reactive minerals in Model L: gibbsite (Al(OH)<sub>3</sub>) and siderite (FeCO<sub>3</sub>), whose dissolution–precipitation reactions in aqueous systems are

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M327" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E20"><mml:mtd><mml:mtext>18</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow class="chem"><mml:mi mathvariant="normal">Al</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="normal">OH</mml:mi><mml:msub><mml:mo>)</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="normal">s</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="chem"><mml:msup><mml:mi mathvariant="normal">H</mml:mi><mml:mo>+</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">aq</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>⇌</mml:mo><mml:mrow class="chem"><mml:msup><mml:mi mathvariant="normal">Al</mml:mi><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>+</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">aq</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">H</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi mathvariant="normal">O</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="normal">l</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E21"><mml:mtd><mml:mtext>19</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow class="chem"><mml:msub><mml:mi mathvariant="normal">FeCO</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="normal">s</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mrow class="chem"><mml:msup><mml:mi mathvariant="normal">H</mml:mi><mml:mo>+</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">aq</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>⇌</mml:mo><mml:mrow class="chem"><mml:msup><mml:mi mathvariant="normal">Fe</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>+</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">aq</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mrow class="chem"><mml:msubsup><mml:mi mathvariant="normal">HCO</mml:mi><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">aq</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e7311">Both minerals were treated as non-equilibrium phases whose dissolution or precipitation follows a surface-area–controlled kinetic law:

              <disp-formula id="Ch1.E22" content-type="numbered"><label>20</label><mml:math id="M328" display="block"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>A</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mtext>SI</mml:mtext><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mtext>Gibbsite, Siderite</mml:mtext><mml:mo mathvariant="italic">}</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M329" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi>A</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the areal rate (mol m<sup>−2</sup> s<sup>−1</sup>), <inline-formula><mml:math id="M332" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is a temperature-dependent rate constant (e.g. <inline-formula><mml:math id="M333" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">gibbsite</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</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">10</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M334" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">siderite</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</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">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> mol m<sup>−2</sup> s<sup>−1</sup> in the implementation of PHREEQC at 25 °C), SI<sub><italic>j</italic></sub> is the saturation index of the mineral <inline-formula><mml:math id="M338" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M339" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is an empirical coefficient (typically <inline-formula><mml:math id="M340" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M341" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 1).</p>
      <p id="d2e7572">Table <xref ref-type="table" rid="T5"/> summarises the multi-mineral scenario, which represents an acidic and oxidising plume injected into a near-neutral, CO<sub>2</sub>-buffered carbonate aquifer. The aquifer initially contained calcite (22 %), gibbsite (5 %), siderite (5 %), and an inert mineral (33 %). The injected plume, characterised by low pH and continuous inflow of C, Fe, and Al, interacted with near-neutral background groundwater and altered its pH and redox state. These chemical perturbations could dissolve or precipitate the resident carbonate and hydroxide minerals, depending on the degree of mixing between the injected plume and the background pore water.</p>

<table-wrap id="T5" specific-use="star"><label>Table 5</label><caption><p id="d2e7590">Primary components in the background (initial) and injected solutions for the multi-mineral reaction.</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">Component</oasis:entry>
         <oasis:entry colname="col2">Initial condition</oasis:entry>
         <oasis:entry colname="col3">Injected solution</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">pH</oasis:entry>
         <oasis:entry colname="col2">8.0</oasis:entry>
         <oasis:entry colname="col3">3.0</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Ca</oasis:entry>
         <oasis:entry colname="col2">0.01 mol L<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3">negligible</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">C</oasis:entry>
         <oasis:entry colname="col2">1 <inline-formula><mml:math id="M344" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup> mol L<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M347" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M348" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2.5 <inline-formula><mml:math id="M349" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−10</sup> mol (m<sup>2</sup> s)<sup>−1</sup>,</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M353" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M354" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M355" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−10</sup> mol (m<sup>2</sup> s)<sup>−1</sup>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M359" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M360" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 <inline-formula><mml:math id="M361" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−9</sup> mol (m<sup>2</sup> s)<sup>−1</sup></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Fe</oasis:entry>
         <oasis:entry colname="col2">0.01 mol L<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M366" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M367" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 4 <inline-formula><mml:math id="M368" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−9</sup> mol (m<sup>2</sup> s)<sup>−1</sup>,</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M372" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M373" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 8 <inline-formula><mml:math id="M374" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−9</sup> mol (m<sup>2</sup> s)<sup>−1</sup>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M378" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M379" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1.6 <inline-formula><mml:math id="M380" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−8</sup> mol (m<sup>2</sup> s)<sup>−1</sup></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Al</oasis:entry>
         <oasis:entry colname="col2">0.01 mol L<sup>−1</sup></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M385" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M386" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 3 <inline-formula><mml:math id="M387" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−10</sup> mol (m<sup>2</sup> s)<sup>−1</sup>,</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M391" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M392" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5.5 <inline-formula><mml:math id="M393" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−10</sup> mol (m<sup>2</sup> s)<sup>−1</sup>,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M397" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M398" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1.5 <inline-formula><mml:math id="M399" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−9</sup> mol (m<sup>2</sup> s)<sup>−1</sup></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">pe/O<sub>2</sub>(g)</oasis:entry>
         <oasis:entry colname="col2">pe <inline-formula><mml:math id="M404" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2</oasis:entry>
         <oasis:entry colname="col3">pe <inline-formula><mml:math id="M405" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 14, <inline-formula><mml:math id="M406" display="inline"><mml:mrow><mml:msub><mml:mi>log⁡</mml:mi><mml:mn mathvariant="normal">10</mml:mn></mml:msub><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">O</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M407" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M408" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>1 (atm)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CO<sub>2</sub>(g)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M410" display="inline"><mml:mrow><mml:msub><mml:mi>log⁡</mml:mi><mml:mn mathvariant="normal">10</mml:mn></mml:msub><mml:msub><mml:mi>p</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">CO</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M411" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M412" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>3.45 (atm)</oasis:entry>
         <oasis:entry colname="col3">negligible</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
</sec>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>Numerical results and discussion</title>
      <p id="d2e8451">This section presents numerical simulations for landfill liner scenarios and highlights the key physical insights from coupled hydromechanical-chemical (HMC) analyses. Section <xref ref-type="sec" rid="Ch1.S5.SS1"/> examines how deformation combined with chemical reactions affects pore pressure dissipation, solute migration, and mineral alteration, and compares the system responses under different external loads. Section <xref ref-type="sec" rid="Ch1.S5.SS2"/> evaluates how changes in the initial degree of saturation modify the coupled hydro-mechanical–chemical behaviour. Section <xref ref-type="sec" rid="Ch1.S5.SS3"/> investigates the role of multiple reactive minerals in shaping the evolution of concentration and the advancement of reaction fronts. Section <xref ref-type="sec" rid="Ch1.S5.SS4"/> discusses the trade-off between model accuracy and computational cost, providing guidance on the practical usability of the model.</p>
<sec id="Ch1.S5.SS1">
  <label>5.1</label><title>Effect of external load and chemical reactions on solute migration</title>
      <p id="d2e8469">This subsection investigates how external loading and aqueous reactions jointly influence solute migration and calcite dissolution by varying the magnitude of loading, deformation behaviour, and dissolution-reaction pathways.</p>
      <p id="d2e8472">Under bottom drainage conditions, all three loading cases demonstrate that a higher load produces a larger initial pore-water pressure, slower dissipation, and greater ultimate settlement (Fig. <xref ref-type="fig" rid="F9"/>a, b). A larger initial excess pressure requires a longer time to dissipate, thus extending the deformation period despite a greater absolute pressure drop. At mid-depth (<inline-formula><mml:math id="M413" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M414" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.5 m), which is closer to the drainage outlet, the pore pressure dissipates more rapidly and the displacement stabilises earlier. Overall, Case D exhibits the highest pore pressure response and settlement, followed by Case A and then Case E, confirming that increasing load amplifies both pressure evolution and deformation.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e8493">Temporal evolution of the coupled responses at the observation point (<inline-formula><mml:math id="M415" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M416" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 17 m) for different cases. <bold>(a, b)</bold> Pore water pressure and vertical displacement for Cases A, D, and E. <bold>(c, d)</bold> Concentration <inline-formula><mml:math id="M417" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>  for Cases A–C and A, D, and E, respectively. <bold>(e, f)</bold> Concentration <inline-formula><mml:math id="M418" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula> for Cases A–C and A, D, and E, respectively.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f09.png"/>

        </fig>

      <p id="d2e8553">Figure <xref ref-type="fig" rid="F9"/>c–h illustrate the temporal evolution of aqueous concentrations within the calcite-dissolution system under different mechanistic scenarios. In Fig. <xref ref-type="fig" rid="F9"/>c (elemental carbon), Case B – which excludes aqueous reactions – yields markedly lower concentrations than the other cases because chemical reactions are suppressed. Case C, where matrix deformation is neglected, exhibits a crossover behaviour: its concentration is lower than that of the fully coupled Case A at early times but becomes higher at later stages. This reversal arises because deformation during consolidation reduces the pore volume and flow ability, thereby restricting early advective release of dissolved species. In contrast, the absence of deformation preserves pore connectivity and facilitates solute transport, resulting in higher late-time concentrations.</p>
      <p id="d2e8560">The influence of mechanical compression is further highlighted under varying loading magnitudes (Fig. <xref ref-type="fig" rid="F9"/>d). Initially, higher loads accelerate the release of the solute through increased flow and reduction of porosity, but as compression progresses, the decrease in pore volume and flow ability restrict later stage transport. Consequently, long-term concentrations under heavy loads become lower than those observed under lighter loads.</p>
      <p id="d2e8565">Unlike <inline-formula><mml:math id="M419" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M420" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula> has no external solute source, the initial calcium concentration is negligible and increases only by calcite dissolution. Accordingly, Fig. <xref ref-type="fig" rid="F9"/>e shows a gradual increase in aqueous Ca<sup>2+</sup> over time, while Case B remains essentially zero because no calcium derived from dissolution is supplied. Figure <xref ref-type="fig" rid="F9"/>e–f further demonstrate that higher loads or the inclusion of deformation compress the soil skeleton, reducing porosity and flow capacity. These mechanical changes alter the transport pathways and influence the rate at which calcium accumulates, underscoring the coupled role of stress, deformation, and chemical reactions in governing long-term redistribution of solutes.</p>
      <p id="d2e8610">Figures <xref ref-type="fig" rid="F10"/> and <xref ref-type="fig" rid="F11"/> present 2-D contour maps at <inline-formula><mml:math id="M422" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M423" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 years for dissolved carbon (<inline-formula><mml:math id="M424" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>) originating from calcite dissolution (Fig. <xref ref-type="fig" rid="F10"/>) and calcium (<inline-formula><mml:math id="M425" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula>) released by the same process (Fig. <xref ref-type="fig" rid="F11"/>). Three external source zones are clearly visible, with strengths increasing from left to right. This gradient produces markedly different peak concentrations across the sources – for instance, under Case A, the rightmost source exhibits approximately two to three times higher concentrations than the leftmost one.</p>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e8664">Contour plots of concentration <inline-formula><mml:math id="M426" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M427" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M428" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 years for different cases. <bold>(a–e)</bold> Results for Cases A–E, respectively.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f10.png"/>

        </fig>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e8705">Contour plots of concentration <inline-formula><mml:math id="M429" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M430" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M431" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 years for different cases. <bold>(a–e)</bold> Results for Cases A–E, respectively.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f11.png"/>

        </fig>

      <p id="d2e8745">In Fig. <xref ref-type="fig" rid="F10"/>, the carbon concentration field follows a similar spatial pattern, reaffirming that neglecting deformation or applying a smaller load accelerates dissolution and enhances solute accumulation. The three distinct source-controlled peaks along the horizontal direction are clearly delineated. Initially, the migration of the solute occurs predominantly in the vertical direction following the main drainage pathway, and with time, it spreads laterally. These maps confirm that the mechanisms identified in the temporal profiles, specifically the effects of deformation, loading magnitude, and reaction coupling, also govern horizontal solute dispersion.</p>
      <p id="d2e8750">In Fig. <xref ref-type="fig" rid="F11"/>, the calcium concentration fields exhibit trends consistent with the earlier time series results, now extending into a full spatial perspective. The transition from vertical to horizontal migration highlights preferential transport pathways shaped by loading and deformation. As expected, Case B remains near zero because there is no dissolution-reaction source, while the other cases display distinct high concentration regions aligned with the three source zones. Enhanced mechanical compression hinders fluid migration and solute dispersion, leading to narrower plumes and lower concentration peaks than in lighter-load or un-deformed cases such as Cases C and E.</p>
      <p id="d2e8755">Figure <xref ref-type="fig" rid="F12"/> shows the two-dimensional contour maps of pH at <inline-formula><mml:math id="M432" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M433" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 years. The pH distribution closely mirrors the dissolved carbon and calcium fields, being primarily governed by local ionic equilibria within the aqueous phase. Zones enriched in dissolved calcium and carbonate species exhibit lower pH (more acidic), while areas with limited accumulation of solutes remain near the background weakly acidic level (pH <inline-formula><mml:math id="M434" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 6.5–7.0). Accordingly, cases or source zones that generate higher solute concentrations develop broader and deeper low pH regions, while non-reactive regions maintain near-neutral conditions.</p>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e8783">Spatial distribution of pH at <inline-formula><mml:math id="M435" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M436" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 years for different cases. <bold>(a–d)</bold> Results for Cases A, C, D, and E, respectively.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f12.png"/>

        </fig>

      <p id="d2e8810">Figure <xref ref-type="fig" rid="F13"/> presents two-dimensional contour maps of calcite dissolution at different times. During the early stage (up to approximately 10 years), dissolution remains concentrated beneath the strongest sources of contaminants. In Case A, the upper layer below the rightmost source, where the inflow is strongest, loses nearly 15 % of its initial calcite mass by year 10, whereas the depletion beneath the weakest leftmost source remains below 5 %.</p>

      <fig id="F13" specific-use="star"><label>Figure 13</label><caption><p id="d2e8817">Spatial distribution of <inline-formula><mml:math id="M437" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mi>s</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi><mml:mi>l</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:math></inline-formula> content at different times for various cases. <bold>(a–c)</bold> Case A at <inline-formula><mml:math id="M438" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M439" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 15, and 20 years, respectively; <bold>(d–f)</bold> Case C at <inline-formula><mml:math id="M440" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M441" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 15, and 20 years, respectively; <bold>(g–i)</bold> Case D at <inline-formula><mml:math id="M442" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M443" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 15, and 20 years, respectively; <bold>(j–l)</bold> Case E at <inline-formula><mml:math id="M444" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M445" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 15, and 20 years, respectively.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f13.png"/>

        </fig>

      <p id="d2e8922">The results reveal that external loading exerts a pronounced influence on the morphology and evolution of the reactive front. With increasing load, the transition between the reacted and unreacted zones becomes progressively smoother and more diffuse, while in the non-deforming case (Case C) it remains narrow and sharply defined. For example, at <inline-formula><mml:math id="M446" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M447" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 years, the front thickness measured as the horizontal distance of 40 % calcite-depletion isolines—widens from approximately 1.4 m in Case C to 2 m under high load (Case A). Consistently, the 2-D maps of aqueous concentration confirm this behaviour: the concentration front is distinctly sharper in the non-deforming case (Case C), whereas deformation produces a smoother and more diffuse transition across the reactive zone.</p>
      <p id="d2e8939">This “mechanical smoothing effect” arises from differences in solute distribution and local chemical disequilibrium. Under higher external load, pore pressure redistribution alters the concentration field, redirecting solute transport predominantly along the horizontal direction rather than vertically. As a result, the dissolved products (e.g. Ca<sup>2+</sup>, HCO<inline-formula><mml:math id="M449" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>) spread laterally and accumulate near the reaction zone, moderating vertical concentration gradients and producing a more diffuse dissolution front. This accumulation increases the local saturation index (SI<sub>calcite</sub>) and reduces the thermodynamic driving force term <inline-formula><mml:math id="M451" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mi>n</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">SI</mml:mi></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, thus slowing and broadening the dissolution process spatially. Consequently, concentration gradients across the front are gradually smoothed, yielding a wider, more diffuse reactive zone. In contrast, the non-deforming case (Case C) maintains stronger undersaturation and steeper concentration gradients, resulting in a sharper, advection-controlled interface that propagates more abruptly through the matrix.</p>
      <p id="d2e8998">Together, these results demonstrate that dissolution, flow-driven transport, and load-induced pore-space evolution jointly control the timing and magnitude of solute concentrations. The 2-D contour maps corroborate the line-based profiles, confirming that these trends persist in the horizontal direction and revealing peak differences and lateral plume structures, such as spreading and source-zone interactions, not captured by 1-D analyses.</p>
</sec>
<sec id="Ch1.S5.SS2">
  <label>5.2</label><title>Effect of saturation on reactive transport</title>
      <p id="d2e9009">This subsection examines how saturation conditions influence reactive solute transport in deformable porous media. Figure <xref ref-type="fig" rid="F14"/>a and b compare excess pore pressure <inline-formula><mml:math id="M452" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> and vertical displacement <inline-formula><mml:math id="M453" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> between three representative cases: the near-saturated baseline Case A (<inline-formula><mml:math id="M454" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M455" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.88), the fully saturated Case F (<inline-formula><mml:math id="M456" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M457" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1.0), and the less-saturated Case G (<inline-formula><mml:math id="M458" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M459" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.80). The mechanical response strongly depends on the saturation. The fully saturated Case F exhibits the highest excess pore pressure – approximately 400 kPa at the top, nearly three times that of Case G – because its pores are filled with nearly incompressible water that resists volumetric change under load.</p>

      <fig id="F14" specific-use="star"><label>Figure 14</label><caption><p id="d2e9089">Temporal evolution of pore water pressure and vertical displacement at the observation point (<inline-formula><mml:math id="M460" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M461" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 17 m) for selected cases. <bold>(a, b)</bold> Results for Cases A, F, and G.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f14.png"/>

        </fig>

      <p id="d2e9115">Although all cases reach similar final surface settlements (<inline-formula><mml:math id="M462" display="inline"><mml:mo lspace="0mm">≈</mml:mo></mml:math></inline-formula> 0.065 m), Case F requires substantially longer to stabilise, as excess pressure dissipates only through slow water drainage in the absence of compressible gas. Lower saturation reduces both the pore water content and the initial pressure peak, facilitating faster dissipation and earlier stabilisation; Case G, for instance, shows roughly 45 % lower peak <inline-formula><mml:math id="M463" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> and settles much earlier than Case F.</p>
      <p id="d2e9133">Figure <xref ref-type="fig" rid="F15"/>a–e depict the spatial and temporal evolution of dissolved calcium (<inline-formula><mml:math id="M464" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula>) and carbon (<inline-formula><mml:math id="M465" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>) at different saturation levels. Both solutes exhibit similar behaviour: lower saturation generally enhances aqueous concentrations. Comparison in the three case groups (Fig. <xref ref-type="fig" rid="F15"/>c–e) clarifies the distinct and combined functions of deformation, saturation, and geochemical reactions.</p>

      <fig id="F15" specific-use="star"><label>Figure 15</label><caption><p id="d2e9168">Temporal evolution of solute concentrations at the observation point (<inline-formula><mml:math id="M466" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M467" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 17 m) for different cases. <bold>(a, b)</bold> Concentration <inline-formula><mml:math id="M468" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:math></inline-formula> for Cases A, F, and G, and Cases C, H, and I, respectively. <bold>(c, d)</bold> Concentration <inline-formula><mml:math id="M469" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> for Cases A, F, and G, and Cases C, H, and I, respectively. <bold>(e)</bold> Concentration <inline-formula><mml:math id="M470" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> for Cases B, J, and K.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f15.png"/>

        </fig>

      <p id="d2e9239">The Case B, J, and K group disables geochemical reactions to isolate the influence of mechanical deformation. Although total compression is nearly identical in all cases, the drainage rate varies markedly with saturation. In fully saturated condition, excess pore pressure slowly dissipates and the resulting limited fluid mobility restricts advective transport, leading to lower solute concentrations. In contrast, partially saturated conditions allow faster drainage and stronger advection, which promote vertical redistribution. Thus, the observed concentration difference primarily reflects drainage-controlled advection capacity rather than differences in overall deformation magnitude.</p>
      <p id="d2e9242">In contrast, the Case C, H, I group suppresses deformation but retains geochemical reactions, thus isolating the reaction-driven response to varying saturation. Here, decreasing <inline-formula><mml:math id="M471" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> elevates the concentrations mainly because the available water volume (<inline-formula><mml:math id="M472" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M473" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M474" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) diminishes; thus, the same mass of the dissolution-derived solute is distributed into a smaller liquid volume, producing uniformly higher aqueous concentrations. This <inline-formula><mml:math id="M475" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> scaling amplifies the contrast between saturation levels.</p>
      <p id="d2e9302">Finally, the Case A, F, G group activates both deformation and geochemical reactions, and the observed patterns reflect their combined influence. Geochemical processes increase the levels of solutes through ongoing dissolution, while lower saturation further magnifies these increases by reducing the aqueous volume. Meanwhile, mechanical compression partially counteracts this enhancement by reducing the level of pore connectivity and limiting the degree of advective redistribution. In general, geochemical reactions amplify saturation-driven contrasts, whereas mechanical deformation provides a modest damping effect on solute concentrations under any given saturation.</p>
      <p id="d2e9306">Figures <xref ref-type="fig" rid="F16"/>a–i present the two-dimensional distributions of dissolved carbon (<inline-formula><mml:math id="M476" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>) at <inline-formula><mml:math id="M477" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M478" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 years for all case groups. Compared with earlier vertical profiles, these maps emphasise the pronounced horizontal variability shaped by the three contaminant sources. Peak concentrations consistently occur near the rightmost source where the inflow is strongest, reaching <inline-formula><mml:math id="M479" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M480" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 3.0 mol L<sup>−1</sup>, approximately two to three times higher than those near the weakest leftmost source. Horizontal plumes are progressively broadened from right to left, revealing distinct source–plume separation and limited mixing between adjacent zones.</p>

      <fig id="F16" specific-use="star"><label>Figure 16</label><caption><p id="d2e9371">Spatial distributions of concentration <inline-formula><mml:math id="M482" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> and pH at  <inline-formula><mml:math id="M483" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M484" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 20 years for different cases. Panels <bold>(a)</bold>–<bold>(c)</bold>, <bold>(d)</bold>–<bold>(f)</bold>, and <bold>(g)</bold>–<bold>(i)</bold> show <inline-formula><mml:math id="M485" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> for Cases A, F, and G; C, H, and I; and B, J, and K, respectively. Panels <bold>(j)</bold>–<bold>(l)</bold> and <bold>(m)</bold>–<bold>(o)</bold> show pH for Cases A, F, and G and cases C, H, and I, respectively.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f16.png"/>

        </fig>

      <p id="d2e9450">Lower saturation elevates aqueous concentrations throughout the domain, particularly around the strong right-hand source, where the high-solute cores expand laterally by about 15 %–20 % in Case G relative to Case F. Similar conclusions can be drawn from Cases J and K. In contrast, mechanical deformation exerts an opposing influence: at the same saturation level, the peak <inline-formula><mml:math id="M486" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> values in deformable cases (e.g., Case G versus Case I) are about 20 % lower, and the corresponding high-concentration plumes appear more confined and compact.</p>
      <p id="d2e9465">The pH distributions (Fig. <xref ref-type="fig" rid="F16"/>j–o) reflect the coupled influence of dissolved calcium, carbonate species, and other ions on local aqueous equilibria. Regions with higher solute concentrations develop broader and more acidic zones, while areas with limited solute accumulation remain close to neutral. Consequently, the extent of acidification closely mirrors both the intensity and lateral extent of the solute plumes.</p>
      <p id="d2e9470">Overall, the results indicate that saturation variations exert a stronger control on chemical concentrations and plume geometry than on the final mechanical deformation. Although saturation influences response magnitudes, the governing mechanisms and comparative trends remain consistent across <inline-formula><mml:math id="M487" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> 0.8–1.0. Lower saturation amplifies both the magnitude and the horizontal reach of high-concentration plumes, while mechanical deformation slightly suppresses the concentration peaks and contracts the plume footprints. Together, these trends highlight the competing effects of saturation and deformation on the long-term spread of reactive solutes in deformable porous media.</p>
</sec>
<sec id="Ch1.S5.SS3">
  <label>5.3</label><title>An example of multi-mineral reaction</title>
      <p id="d2e9492">The purpose of this subsection is to demonstrate the capability of the developed solver to handle multi-component and multi-mineral reactions, thus establishing a foundational framework for future model extensions.</p>
      <p id="d2e9495">Figures <xref ref-type="fig" rid="F17"/> and <xref ref-type="fig" rid="F18"/> illustrate the temporal evolution of aqueous chemistry and mineral reactions driven by three externally supplied contaminants, carbon (<inline-formula><mml:math id="M488" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>), iron (<inline-formula><mml:math id="M489" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>F</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:math></inline-formula>), and aluminium (<inline-formula><mml:math id="M490" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>A</mml:mi><mml:mi>l</mml:mi></mml:mrow></mml:math></inline-formula>), with source intensities decreasing from left to right. Among the three, the external influx of iron is the strongest, followed by aluminium, while carbon has the weakest source. However, the retained aqueous concentrations show the opposite order (C <inline-formula><mml:math id="M491" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> Fe <inline-formula><mml:math id="M492" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> Al) due to their distinct reaction pathways. Dissolved carbon maintains the highest residual level, with typical peaks around 6.6 mol L<sup>−1</sup>, while dissolved iron and aluminium reach lower quasi-steady concentrations of approximately 0.2 mol L<sup>−1</sup> and 0.12 mol L<sup>−1</sup>, respectively. Aluminium undergoes the most intensive reaction: the introduced Al<sup>3+</sup> rapidly precipitates as <italic>gibbsite</italic> (Al(OH)<sub>3</sub>), leaving only trace amounts of dissolved aluminium in the aqueous phase. As a result, the aluminium plume appears nearly stationary, giving the impression of limited solute migration despite strong local reactions.</p>

      <fig id="F17" specific-use="star"><label>Figure 17</label><caption><p id="d2e9620">Spatial distributions of aqueous concentrations and pH at different times for Case L. <bold>(a–c)</bold> Concentration of <inline-formula><mml:math id="M498" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M499" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M500" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 30, and 50 years, respectively. <bold>(d–f)</bold> Concentration of <inline-formula><mml:math id="M501" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>F</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M502" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M503" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 30, and 50 years, respectively. <bold>(g–i)</bold> Concentration of <inline-formula><mml:math id="M504" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>A</mml:mi><mml:mi>l</mml:mi></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M505" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M506" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 30, and 50 years, respectively. <bold>(j–l)</bold> pH at <inline-formula><mml:math id="M507" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M508" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 30, and 50 years, respectively.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f17.png"/>

        </fig>

      <fig id="F18" specific-use="star"><label>Figure 18</label><caption><p id="d2e9742">Spatial distributions of mineral contents at different times for Case L. <bold>(a–c)</bold> <inline-formula><mml:math id="M509" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mi>s</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi><mml:mi>a</mml:mi><mml:mi>l</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:math></inline-formula> content at <inline-formula><mml:math id="M510" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M511" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 30, and 50 years, respectively. <bold>(d–f)</bold> <inline-formula><mml:math id="M512" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mi>s</mml:mi><mml:mo>.</mml:mo><mml:mi>S</mml:mi><mml:mi>i</mml:mi><mml:mi>d</mml:mi><mml:mi>e</mml:mi><mml:mi>r</mml:mi><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:math></inline-formula> content at <inline-formula><mml:math id="M513" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M514" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 30, and 50 years, respectively. <bold>(g–i)</bold> <inline-formula><mml:math id="M515" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mi>s</mml:mi><mml:mo>.</mml:mo><mml:mi>G</mml:mi><mml:mi>i</mml:mi><mml:mi>b</mml:mi><mml:mi>b</mml:mi><mml:mi>s</mml:mi><mml:mi>i</mml:mi><mml:mi>t</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:math></inline-formula> content at <inline-formula><mml:math id="M516" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M517" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10, 30, and 50 years, respectively.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f18.png"/>

        </fig>

      <p id="d2e9889">Initially, the injected source solution is mildly alkaline due to the presence of hydroxyl- and carbonate-bearing complexes such as Al(OH)<inline-formula><mml:math id="M518" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">4</mml:mn><mml:mo>-</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> and HCO<inline-formula><mml:math id="M519" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>. As reactions proceed, the precipitation of gibbsite (Al(OH)<sub>3</sub>) and siderite (FeCO<sub>3</sub>) releases protons through hydrolysis and carbonate exchange, progressively neutralising the alkalinity and driving the system towards mildly acidic conditions. Calcite (CaCO<sub>3</sub>) also precipitates, but plays a dual role by partially buffering the acidity generated through its dissolution equilibrium. Spatially, the right-hand side exhibits a faster pH decline than the left-hand side, primarily because of stronger precipitation reactions and weaker carbonate buffering in that region.</p>
      <p id="d2e9943">Calcite remains persistently oversaturated throughout the simulation, indicating a continuous but slow precipitation. This sluggish behaviour arises from two limiting factors: low concentration Ca<sup>2+</sup> and a mildly acidic environment (pH <inline-formula><mml:math id="M524" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 6.0). Under such conditions, most dissolved inorganic carbon (DIC) exists as HCO<inline-formula><mml:math id="M525" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> rather than CO<inline-formula><mml:math id="M526" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, thus reducing the effective carbonate activity required for calcite growth. Consequently, net calcite precipitation proceeds slowly, achieving only a modest increase of about 15 % of its initial mass by year 50. Although the process consumes small amounts of Ca<sup>2+</sup> and bicarbonate ions, the resulting buffering capacity is insufficient to neutralise the protons released from metal hydrolysis and gibbsite formation. Hence, calcite acts as a slow but persistent secondary precipitate phase under calcium- and pH-limited conditions.</p>
      <p id="d2e10004">Siderite forms at a moderate but sustained rate where injected Fe<sup>2+</sup> overlaps with carbonate species supplied by the carbon source (<inline-formula><mml:math id="M529" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>, primarily HCO<inline-formula><mml:math id="M530" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M531" display="inline"><mml:mo>/</mml:mo></mml:math></inline-formula> CO<inline-formula><mml:math id="M532" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mn mathvariant="normal">3</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>). Concomitant precipitation of calcite competes for carbonate and thus moderates siderite growth. Compared with gibbsite, the siderite front advances more slowly and extends over a broader region. By year 30, siderite captures roughly 25 %–30 % of the incoming iron along the primary flow paths, increasing to approximately 40 %–45 % by year 50. As a result, dissolved iron concentrations peak near the source, governed by the source strength, and gradually attenuate downstream under reaction control.</p>
      <p id="d2e10065">Upon arrival of <inline-formula><mml:math id="M533" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>A</mml:mi><mml:mi>l</mml:mi></mml:mrow></mml:math></inline-formula>, gibbsite precipitates rapidly, causing an abrupt decrease in the dissolved aluminium near the source. Quantitatively, more than 80 % of the incoming Al is removed within the first 10 years in the proximal zone, and the cumulative fraction increases from approximately 5 % initially to nearly 20 % by year 50. Because the precipitation rate greatly exceeds the advective transport rate, most reactions remain confined to the source region, leaving negligible aluminium migration downstream. This behaviour characterises a strongly reaction-controlled regime, where rapid local precipitation suppresses long-range solute propagation.</p>
      <p id="d2e10082">In general, the solver consistently reproduces these coupled processes: progressive plume expansion over 10–50 years, clear dependence on source strength, moderated pH evolution, and mass-conserving behaviour across all solutes. These results confirm that the model robustly simulates complex, multi-mineral reactive transport involving concurrent precipitation and dissolution fronts.</p>
</sec>
<sec id="Ch1.S5.SS4">
  <label>5.4</label><title>Computational performance</title>
      <p id="d2e10094">All simulations were performed on a workstation equipped with an <italic>Intel Xeon Silver 4114 CPU (2.20 GHz)</italic> and <italic>256 GB RAM</italic>. Unless otherwise specified, each case was solved using <italic>four parallel MPI processes</italic> under the same hardware configuration to ensure consistency and fair comparison of CPU time and memory usage.</p>
      <p id="d2e10106">To evaluate numerical efficiency and assess the trade-off between computational cost and accuracy, this subsection compares the performance of the full HMC solver with its simplified counterparts, in which either the chemical module is deactivated. The evaluation considers four key indicators: total CPU time, average time per step, maximum RAM usage, and the relative error of solute concentration at the most responsive monitoring point. For each paired comparison, the fully coupled HMC case under identical loading and saturation conditions (Cases A, F, G) serves as the reference, while the simplified (Cases B, K) and multi-mineral (Case L) cases are evaluated against it.</p>
      <p id="d2e10109">The relative error (RE<sub><italic>Q</italic></sub>(%)) quantifies the deviation of a simplified model from its corresponding full HMC reference under the same loading and saturation. For a time-dependent variable <inline-formula><mml:math id="M535" display="inline"><mml:mrow><mml:mi>Q</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (e.g., carbon concentration <inline-formula><mml:math id="M536" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:math></inline-formula>) measured at a monitoring point, RE<sub><italic>Q</italic></sub>(%) is defined using the <inline-formula><mml:math id="M538" display="inline"><mml:mrow><mml:msup><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>-norm of the temporal series, normalised by the reference:

            <disp-formula id="Ch1.E23" content-type="numbered"><label>21</label><mml:math id="M539" display="block"><mml:mrow><mml:msub><mml:mtext>RE</mml:mtext><mml:mi>Q</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">%</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mfenced close="∥" open="∥"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">model</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">HMC</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">ref</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mrow><mml:msup><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mfenced close="∥" open="∥"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">HMC</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">ref</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mrow><mml:msup><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>×</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M540" display="inline"><mml:mrow><mml:mo>‖</mml:mo><mml:mi>X</mml:mi><mml:msub><mml:mo>‖</mml:mo><mml:mrow><mml:msup><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M541" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M542" display="inline"><mml:msqrt><mml:mrow><mml:msubsup><mml:mo>∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:msup><mml:mi>X</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:msqrt></mml:math></inline-formula>. In this study, RE<sub><italic>Q</italic></sub>(%) is evaluated at the most responsive monitoring point identified from the HMC baseline for each comparison.</p>
      <p id="d2e10355">Table <xref ref-type="table" rid="T6"/> summarises the computational cost and relative error evaluated at the top monitoring point (<inline-formula><mml:math id="M544" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M545" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 17 m, <inline-formula><mml:math id="M546" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M547" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 m). All reported performance metrics correspond to the output of the first MPI process (rank 0). Complete HMC simulations (A, F, G) required approximately 25–26 h of CPU time, while deactivation of chemical reactions (B, J, K) reduced total runtime by more than two orders of magnitude, with almost identical memory consumption. The nearly constant use of RAM arises because all cases share the same mesh and field allocations; enabling a module does not significantly alter the solver's data structure or storage requirements. However, this simplification introduces substantial concentration deviations (RE<sub><italic>c</italic></sub> <inline-formula><mml:math id="M549" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 44 %), demonstrating the importance of retaining chemical coupling to capture realistic solute behaviour. In contrast, the multi-mineral reactive case (L) exhibited the highest computational demand, reflecting the increased cost associated with solving the extended reaction network. Overall, these results confirm that while simplified configurations offer significant computational savings, they do so at the expense of accuracy, underscoring the necessity of HMC modelling for quantitative predictive analyses.</p>

<table-wrap id="T6" specific-use="star"><label>Table 6</label><caption><p id="d2e10409">Computational cost and relative error at the top responsive point (<inline-formula><mml:math id="M550" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M551" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 17 m, <inline-formula><mml:math id="M552" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M553" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 m).</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="center"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Pair</oasis:entry>
         <oasis:entry colname="col2">Model</oasis:entry>
         <oasis:entry colname="col3">Total CPU</oasis:entry>
         <oasis:entry colname="col4">Avg/step</oasis:entry>
         <oasis:entry colname="col5">RAM</oasis:entry>
         <oasis:entry colname="col6">RE<sub><italic>Y</italic>.<italic>C</italic></sub></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3">(h)</oasis:entry>
         <oasis:entry colname="col4">(s)</oasis:entry>
         <oasis:entry colname="col5">(MB)</oasis:entry>
         <oasis:entry colname="col6">(%)</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">A <inline-formula><mml:math id="M556" display="inline"><mml:mo>↔</mml:mo></mml:math></inline-formula> B</oasis:entry>
         <oasis:entry colname="col2">A (HMC ref.)</oasis:entry>
         <oasis:entry colname="col3">24.96</oasis:entry>
         <oasis:entry colname="col4">44.91</oasis:entry>
         <oasis:entry colname="col5">66.75</oasis:entry>
         <oasis:entry colname="col6">n/a</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">B (no-chem)</oasis:entry>
         <oasis:entry colname="col3">0.16</oasis:entry>
         <oasis:entry colname="col4">0.29</oasis:entry>
         <oasis:entry colname="col5">66.84</oasis:entry>
         <oasis:entry colname="col6">44.17</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">F <inline-formula><mml:math id="M557" display="inline"><mml:mo>↔</mml:mo></mml:math></inline-formula> J</oasis:entry>
         <oasis:entry colname="col2">F (HMC ref.)</oasis:entry>
         <oasis:entry colname="col3">26.20</oasis:entry>
         <oasis:entry colname="col4">47.14</oasis:entry>
         <oasis:entry colname="col5">66.70</oasis:entry>
         <oasis:entry colname="col6">n/a</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">J (no-chem)</oasis:entry>
         <oasis:entry colname="col3">0.23</oasis:entry>
         <oasis:entry colname="col4">0.41</oasis:entry>
         <oasis:entry colname="col5">67.03</oasis:entry>
         <oasis:entry colname="col6">44.16</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">G <inline-formula><mml:math id="M558" display="inline"><mml:mo>↔</mml:mo></mml:math></inline-formula> K</oasis:entry>
         <oasis:entry colname="col2">G (HMC ref.)</oasis:entry>
         <oasis:entry colname="col3">26.14</oasis:entry>
         <oasis:entry colname="col4">47.02</oasis:entry>
         <oasis:entry colname="col5">66.78</oasis:entry>
         <oasis:entry colname="col6">n/a</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">K (no-chem)</oasis:entry>
         <oasis:entry colname="col3">0.17</oasis:entry>
         <oasis:entry colname="col4">0.31</oasis:entry>
         <oasis:entry colname="col5">67.06</oasis:entry>
         <oasis:entry colname="col6">44.22</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">A <inline-formula><mml:math id="M559" display="inline"><mml:mo>↔</mml:mo></mml:math></inline-formula> L</oasis:entry>
         <oasis:entry colname="col2">A (HMC ref.)</oasis:entry>
         <oasis:entry colname="col3">24.96</oasis:entry>
         <oasis:entry colname="col4">44.91</oasis:entry>
         <oasis:entry colname="col5">66.75</oasis:entry>
         <oasis:entry colname="col6">n/a</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">L (multi-mineral)</oasis:entry>
         <oasis:entry colname="col3">32.38 (20 years)</oasis:entry>
         <oasis:entry colname="col4">58.26</oasis:entry>
         <oasis:entry colname="col5">67.22</oasis:entry>
         <oasis:entry colname="col6">n/a</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><table-wrap-foot><p id="d2e10440">Notes: CPU times measured on the same hardware. RAM <inline-formula><mml:math id="M554" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> maximum resident set size. n/a: not applicable.</p></table-wrap-foot></table-wrap>

      <p id="d2e10730">To evaluate the parallel efficiency of the developed solver, the wall time required for a 5-year simulation is analysed as a function of the number of MPI processes. Figure <xref ref-type="fig" rid="F19"/> presents the measured wall time together with the corresponding speedup, which is defined relative to the baseline case with two MPI processes as Speedup <inline-formula><mml:math id="M560" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M561" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi>N</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="F19"><label>Figure 19</label><caption><p id="d2e10762">Wall time and speedup versus number of MPI processes.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f19.png"/>

        </fig>

      <p id="d2e10771">As the number of MPI processes increases from 2 to 16, the wall time decreases substantially from approximately 3.5 <inline-formula><mml:math id="M562" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>4</sup> s to below 5 <inline-formula><mml:math id="M564" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>3</sup> s, demonstrating a marked improvement in computational efficiency. The speedup increases monotonically over the same range and remains close to linear scaling, indicating that the developed solver is well parallelised and can effectively exploit distributed-memory computing for the problem size considered. Overall, these results confirm satisfactory strong-scaling performance up to 16 MPI processes for the 5-year simulation.</p>
</sec>
</sec>
<sec id="Ch1.S6" sec-type="conclusions">
  <label>6</label><title>Conclusions</title>
      <p id="d2e10815">This study develops a multi-dimensional HMC modelling framework by embedding a flexible geochemical module into an existing hydro-mechanical solver, enabling a consistent treatment of multi-component aqueous species and mineral reactions in near-saturated deformable porous media. The formulation is established under small-strain assumptions and predominantly elastic behaviour, and is therefore applicable to scenarios with limited deformation.</p>
      <p id="d2e10818">For long-term conditions involving large settlements, plastic deformation of soft clays, or pronounced geochemical alteration, a more comprehensive framework would be required, incorporating elasto-plastic or visco-plastic constitutive behaviour together with reaction-driven porosity–permeability feedbacks. These processes are expected to intensify preferential flow pathways and enhance solute plume heterogeneity, such that neglecting them may lead to smoother transport patterns and an underestimation of plume spreading in reactive environments. Future work will focus on integrating these feedbacks and on quantitative benchmarking against laboratory and field observations to further strengthen the predictive capability of the framework.</p>
      <p id="d2e10821">The results show that calcite dissolution, flow-driven transport, and load-induced pore-structure evolution jointly govern both the timing and spatial distribution of solutes. Mechanical compression accelerates early-stage solute release by enhancing advective flow but later suppresses transport as porosity and flow ability decline, leading to non-monotonic concentration trends. Neglecting deformation or applying a smaller external load promotes faster mineral dissolution, whereas deformation under high load suppresses the reaction and yields a smoother dissolution front.</p>
      <p id="d2e10824">Saturation plays a key role in both hydro-mechanical responses and reactive-solute transport, with a more pronounced influence on chemical concentrations and plume evolution. Fully saturated soils develop the highest excess pore pressures and dissipate them most slowly, whereas lower saturation lowers the pressure peak and accelerates settlement. For solutes, decreasing saturation consistently elevates aqueous concentrations by increasing the flow velocity and concentrating dissolution-released species; this amplification is most pronounced near strong contaminant sources, which expands the high-solute and low-pH plumes laterally. Mechanical deformation counteracts this effect by reducing connected pore volume and advective transport, slightly damping concentrations, and confining plume spread.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>List of Symbols</title>
      <p id="d2e10838"><table-wrap position="anchor"><oasis:table><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="justify" colwidth="7cm"/>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M566" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">degree of saturation</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M567" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">compressibility of pore water (Pa<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M569" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">velocity of solid particles (m s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M571" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">hydraulic conductivity (m s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M573" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M574" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula> in the <inline-formula><mml:math id="M575" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> direction (m s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M577" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">soil displacement (m)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M578" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M579" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the <inline-formula><mml:math id="M580" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> direction (m)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M581" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">wo</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">bulk modulus of pore water (MPa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M582" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">apparent pressure (kPa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M583" display="inline"><mml:mi mathvariant="italic">μ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">lamé parameter (Pa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M584" display="inline"><mml:mi>E</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">elastic modulus (Pa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M585" display="inline"><mml:mi mathvariant="bold">I</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">unit tensor</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M586" display="inline"><mml:mrow><mml:mi mathvariant="bold">Q</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">external loading (Pa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M587" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">density of pore fluid (kg m<sup>−3</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M589" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">velocity of fluid particles (m s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M591" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TH</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">transverse dispersion coefficient (m)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M592" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">molecular diffusion coefficient (m<sup>2</sup> s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M595" display="inline"><mml:mi mathvariant="bold">D</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">hydrodynamic dispersion coefficient (m<sup>2</sup> s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M598" display="inline"><mml:mrow><mml:msub><mml:mi>Y</mml:mi><mml:mi>s</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">mineral concentration</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M599" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">specific surface area (m<sup>2</sup> m<inline-formula><mml:math id="M601" display="inline"><mml:mrow><mml:msubsup><mml:mi/><mml:mi mathvariant="normal">mineral</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M602" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">soil porosity</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M603" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">excess pore water pressure (Pa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M604" display="inline"><mml:mi>g</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">gravitational acceleration (m s<sup>−2</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M606" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M607" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula> in the <inline-formula><mml:math id="M608" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction (m s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M610" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M611" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula> in the <inline-formula><mml:math id="M612" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction (m s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M614" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M615" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the <inline-formula><mml:math id="M616" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction (m)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M617" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M618" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="bold">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the <inline-formula><mml:math id="M619" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction (m)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M620" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi>h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">volumetric fraction of air dissolved in pore water</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M621" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">atmospheric pressure (kPa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M622" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">lamé parameter (Pa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M623" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">shear modulus (Pa)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M624" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Poisson's ratio</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M625" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">partitioning coefficient (m<sup>3</sup> kg<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M628" 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="col2">density of solid phase (kg m<sup>−3</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M630" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">longitudinal dispersion coefficient (m)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M631" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">TV</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">transverse dispersion coefficient (m)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M632" display="inline"><mml:mrow><mml:mo>|</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>|</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">modulus length of the velocity (m s<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M634" display="inline"><mml:mrow><mml:mi>Y</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">aqueous phase concentration (mol L<sup>−1</sup>)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M636" display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">solute flux (mol (m<sup>2</sup> s)<sup>−1</sup>)</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap></p>
</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Proportion of elements diffusion coefficient</title>
      <p id="d2e11866">Within the coupled hydro–mechanical–chemical framework adopted in this study, the relative fractions of aqueous species <inline-formula><mml:math id="M639" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, obtained from the initial geochemical speciation calculations, are prescribed as constant parameters. The effective molecular diffusion coefficient is evaluated as <inline-formula><mml:math id="M640" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M641" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M642" display="inline"><mml:mrow><mml:msub><mml:mo>∑</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, where the species-specific diffusion coefficients <inline-formula><mml:math id="M643" display="inline"><mml:mrow><mml:msubsup><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>i</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> are obtained from the PHREEQC database through the <monospace>-diffusion_coefficient</monospace> entries. Although the present numerical architecture can, in principle, be extended to dynamically update <inline-formula><mml:math id="M644" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> using cell-wise speciation results from a geochemical module, such functionality is <italic>not activated in this work</italic>, because dynamic coupling would require code-level modifications and recompilation whenever the reaction network is altered, substantially reducing model reproducibility; moreover, as <inline-formula><mml:math id="M645" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is formulated as a weighted average of species diffusion coefficients, its variation under typical speciation changes is expected to be limited and is unlikely to affect the principal chemo-mechanical trends investigated here.</p>
      <p id="d2e11973">In this study, the fractions <inline-formula><mml:math id="M646" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are prescribed rather than dynamically updated, as shown in Figs. <xref ref-type="fig" rid="FB1"/> and <xref ref-type="fig" rid="FB2"/>. These figures present the compositions, fractions, and molecular diffusion  coefficients of predefined species adopted in the model test cases. The values are fixed input parameters for clarity and reproducibility, but can be easily modified to represent alternative systems without changing the numerical framework. The present work primarily aims to capture the coupled deformation, solute migration, and geochemical reactions under near-saturated conditions, while dynamic updates of species fractions can be incorporated in future extensions of the same framework.</p><fig id="FB1"><label>Figure B1</label><caption><p id="d2e11993">The proportion of elements diffusion coefficient for single mineral reaction. <bold>(a)</bold> C; <bold>(b)</bold> Ca.</p></caption>
        
        <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f20.png"/>

      </fig>

      <fig id="FB2"><label>Figure B2</label><caption><p id="d2e12013">The proportion of elements diffusion coefficient for multi-mineral reaction. <bold>(a)</bold> Al; <bold>(b)</bold> Fe.</p></caption>
        
        <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-f21.png"/>

      </fig>

</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>Implementation of the geochemical-window controller</title>
      <p id="d2e12038">The geochemical-window controller (<monospace>ChemWindow</monospace>) schedules the activation of geochemical sub-cycling within the global hydro–mechanical–transport loop. It enables chemistry to be executed only within prescribed step-index windows, allowing kinetic reactions to be resolved with smaller time steps while maintaining an affordable global time step.</p>
<sec id="App1.Ch1.S3.SS1">
  <label>C1</label><title>Window definition and data structure</title>
      <p id="d2e12051">A chemistry window is defined as an inclusive index interval

            <disp-formula id="App1.Ch1.S3.Ex1"><mml:math id="M647" display="block"><mml:mrow><mml:mo>[</mml:mo><mml:mtext mathvariant="monospace">start</mml:mtext><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mtext mathvariant="monospace">end</mml:mtext><mml:mo>]</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>↦</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">chem</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mtext mathvariant="monospace">nSub</mml:mtext></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <monospace>start</monospace> and <monospace>end</monospace> are global OpenFOAM time indices (zero-based, inclusive), <inline-formula><mml:math id="M648" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">chem</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the chemical sub-time-step, and <monospace>nSub</monospace> is the number of chemistry sub-steps executed within each global transport step. Internally, all windows are stored as a list of non-overlapping, sorted ranges.</p>
</sec>
<sec id="App1.Ch1.S3.SS2">
  <label>C2</label><title>Input format and normalisation</title>
      <p id="d2e12126">The controller reads a plain-text input file, <monospace>chemWindow.txt</monospace>. Each valid entry consists of four fields, namely <monospace>start</monospace>, <monospace>nSteps</monospace>, <inline-formula><mml:math id="M649" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">chem</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <monospace>nSub</monospace>. The corresponding time window is constructed as an inclusive interval, with the ending index defined as

            <disp-formula id="App1.Ch1.S3.Ex2"><mml:math id="M650" display="block"><mml:mrow><mml:mtext mathvariant="monospace">end</mml:mtext><mml:mo>=</mml:mo><mml:mtext mathvariant="monospace">start</mml:mtext><mml:mo>+</mml:mo><mml:mtext mathvariant="monospace">nSteps</mml:mtext><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Basic input checks are applied, enforcing <monospace>start</monospace> <inline-formula><mml:math id="M651" display="inline"><mml:mo>≥</mml:mo></mml:math></inline-formula> 0, <monospace>nSteps</monospace> <inline-formula><mml:math id="M652" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> 0, <inline-formula><mml:math id="M653" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">chem</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M654" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> 0, and <monospace>nSub</monospace> <inline-formula><mml:math id="M655" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> 0.</p>
      <p id="d2e12228">An example file is </p>

      <fig id="LiC1"><label>Listing C1</label><caption><p id="d2e12235">Example input file for chemical time stepping.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-l01.png"/>

        </fig>

      <p id="d2e12245">All raw windows are then normalised by: (i) stable sorting by <monospace>start</monospace> (and <monospace>end</monospace> as tie-breaker); (ii) resolving overlaps according to a user-selected conflict policy; and (iii) merging adjacent windows if they are contiguous and share identical <inline-formula><mml:math id="M656" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">chem</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mtext mathvariant="monospace">nSub</mml:mtext><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (within a tolerance on <inline-formula><mml:math id="M657" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">chem</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>).</p>
</sec>
<sec id="App1.Ch1.S3.SS3">
  <label>C3</label><title>Overlap resolution policies</title>
      <p id="d2e12296">If two windows overlap, the existing window is split into up to three segments (left, overlap, right). The overlap segment adopts parameters according to the selected policy: <list list-type="bullet"><list-item>
      <p id="d2e12301"><monospace>LastWins</monospace>: parameters of the later-defined window;</p></list-item><list-item>
      <p id="d2e12307"><monospace>FirstWins</monospace>: parameters of the earlier window;</p></list-item><list-item>
      <p id="d2e12313"><monospace>MinDt</monospace>: window with the smaller <inline-formula><mml:math id="M658" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">chem</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>;</p></list-item><list-item>
      <p id="d2e12332"><monospace>MaxDt</monospace>: window with the larger <inline-formula><mml:math id="M659" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">chem</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p></list-item></list> For <monospace>MinDt</monospace> and <monospace>MaxDt</monospace>, the paired <monospace>nSub</monospace> from the selected record is retained; no recomputation of <monospace>nSub</monospace> is performed.</p>
</sec>
<sec id="App1.Ch1.S3.SS4">
  <label>C4</label><title>Runtime query interface</title>
      <p id="d2e12372">During the global time-marching loop, the solver queries

            <disp-formula id="App1.Ch1.S3.Ex3"><mml:math id="M660" display="block"><mml:mrow><mml:mtext mathvariant="monospace">inChemWindow(currentIndex, newDt, nSub)</mml:mtext><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          A monotonic pointer to the active range is maintained, yielding amortised <inline-formula><mml:math id="M661" display="inline"><mml:mrow><mml:mi>O</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> lookup per global step. If <monospace>currentIndex</monospace> satisfies <monospace>start</monospace> <inline-formula><mml:math id="M662" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> <monospace>currentIndex</monospace> <inline-formula><mml:math id="M663" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> <monospace>end</monospace>, the routine returns <monospace>true</monospace> together with (<monospace>newDt</monospace>, <monospace>nSub</monospace>); otherwise, chemistry is bypassed for this step.</p>
      <p id="d2e12435">A simplified driver loop is </p>

      <fig id="LiC2"><label>Listing C2</label><caption><p id="d2e12442">Simplified driver loop for coupled hydro-mechanical-transport-chemical simulation.</p></caption>
          <graphic xlink:href="https://hess.copernicus.org/articles/30/2247/2026/hess-30-2247-2026-l02.png"/>

        </fig>

</sec>
</app>

<app id="App1.Ch1.S4">
  <label>Appendix D</label><title>Chemical database and reaction configuration</title>
      <p id="d2e12460">Geochemical reactions are executed through PHREEQC using the PhreeqcRM interface. In contrast to conventional PHREEQC workflows based on standalone input scripts, the present solver introduces a dictionary-based configuration layer within OpenFOAM. Keywords such as <monospace>PhreeqcDataBase</monospace> and <monospace>PhreeqcInputFile</monospace> are parsed at runtime and directly mapped to the corresponding PhreeqcRM function calls. Consequently, all reaction systems are fully configurable at runtime, and no recompilation of the solver is required when modifying geochemical databases or reaction settings.</p>
      <p id="d2e12469">This design ensures that all geochemical configurations are explicitly defined within the input files, thereby enabling straightforward reproducibility of simulations while also providing high flexibility for extending reaction systems without modifying the solver source code.</p>
<sec id="App1.Ch1.S4.SS1">
  <label>D1</label><title>Database binding and runtime mapping</title>
      <p id="d2e12479">The thermodynamic database is specified by the keyword <monospace>PhreeqcDataBase</monospace>, which is passed directly to the PhreeqcRM initialisation routine. Similarly, the entry <monospace>PhreeqcInputFile</monospace> defines an OpenFOAM dictionary that encodes the aqueous solution composition using standard PHREEQC <monospace>SOLUTION</monospace> syntax. At runtime, the PhreeqcRM interface converts the dictionary entries into the corresponding PHREEQC command strings and executes them internally via PhreeqcRM, ensuring full compatibility with the official PHREEQC syntax.</p>
</sec>
<sec id="App1.Ch1.S4.SS2">
  <label>D2</label><title>Reaction model configuration</title>
      <p id="d2e12499">Phase equilibrium and kinetic reactions are configured through the boolean flag <monospace>activatePhaseEquilibrium</monospace>. When enabled, mineral reactions are treated as equilibrium phases; otherwise, they are processed as kinetic reactions, reproducing the functionality of the PHREEQC blocks <monospace>EQUILIBRIUM_PHASES</monospace> and <monospace>KINETICS</monospace>. Time integration of kinetic reactions can be controlled through the options <monospace>cvODE</monospace> and <monospace>cvODETol</monospace>, which activate the CVODE integrator and prescribe its relative tolerance, respectively. The keyword <monospace>setComponentH2O</monospace> determines whether water is treated as an explicit geochemical component.</p>
</sec>
</app>
  </app-group><notes notes-type="codeavailability"><title>Code availability</title>

      <p id="d2e12526">The chemical reaction solver is based on the open-source library PhreeqcRM (<uri>https://github.com/usgs-coupled/PhreeqcRM</uri>, last access: 14 April 2026). The flow and transport simulations are performed using OpenFOAM (version 8, <uri>https://openfoam.org/version/8/</uri>, last access: 14 April 2026) and available in the authors' previous paper <ext-link xlink:href="https://doi.org/10.1002/nag.70070" ext-link-type="DOI">10.1002/nag.70070</ext-link> <xref ref-type="bibr" rid="bib1.bibx39" id="paren.42"/>. Key aspects of the coupling implementation between the chemical reaction module and the solute transport model are described in Appendix C.</p>
  </notes><notes notes-type="dataavailability"><title>Data availability</title>

      <p id="d2e12544">No new experimental or observational datasets were generated in this study. The chemical data used are derived from publicly available thermodynamic databases distributed with PHREEQC, available at <uri>https://www.usgs.gov/software/phreeqc-version-3</uri> (last access: 15 April 2026). All relevant results supporting the findings of this study are included within the manuscript and its appendices.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e12553">BW: conceptuation, methodology, data curation, visualization, investigation, validation, writing – original draft; DSJ: conceptuation, methodology, writing – review and editing, supervision, resources, funding acquisition, project administration.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e12559">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="d2e12565">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="d2e12571">The authors appreciate the financial support of the National Natural Science Foundation of China and the Shandong Provincial Overseas High-Level Talent Workstation.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e12577">This research has been supported by the National Natural Science Foundation of China (grant no. 52271281 to Dong-Sheng Jeng) and the Shandong Provincial Overseas High-Level Talent Workstation (grant no. A2025-1265).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

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

      <ref id="bib1.bibx1"><label>Abdullah et al.(2024)</label><mixed-citation>Abdullah, S., Ma, Y., Chen, X. H., and Khan, A.: Coupled Reactive Two-Phase Model Involving Dissolution and Dynamic Porosity for Deformable Porous Media Based on Mixture Coupling Theory, Transport Porous Med., 151, 27–54, <ext-link xlink:href="https://doi.org/10.1007/s11242-023-02032-1" ext-link-type="DOI">10.1007/s11242-023-02032-1</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Agbotui et al.(2025)</label><mixed-citation>Agbotui, P. Y., Firouzbehi, F., and Medici, G.: Review of effective porosity in sandstone aquifers: insights for representation of contaminant transport, Sustainability, 17, 6469, <ext-link xlink:href="https://doi.org/10.3390/su17146469" ext-link-type="DOI">10.3390/su17146469</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Bard et al.(2022)</label><mixed-citation> Bard, A. J., Faulkner, L. R., and White, H. S.: Electrochemical Methods: Fundamentals and Applications, 3rd edn., John Wiley &amp; Sons, Hoboken, NJ,  ISBN 978-1119334064, 2022..</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Bear(1972)</label><mixed-citation> Bear, J.: Dynamics of Fluids in Porous Media, Elsevier, New York, ISBN 978-0-444-00114-6, 1972.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>de Barros and Fiori(2021)</label><mixed-citation> de Barros, F. P. and Fiori, A.: On the maximum concentration of contaminants in natural aquifers, Transport Porous Med., 140, 273–290, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Ding et al.(2025)</label><mixed-citation>Ding, X.-H., Luo, B., Zhou, H.-T., and Chen, Y.-H.: Generalized solutions for advection–dispersion transport equations subject to time-and space-dependent internal and boundary sources, Comput. Geotech., 178, 106944, <ext-link xlink:href="https://doi.org/10.1016/j.compgeo.2024.106944" ext-link-type="DOI">10.1016/j.compgeo.2024.106944</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Erfani et al.(2021)</label><mixed-citation>Erfani, H., Karadimitriou, N., Nissan, A., Walczak, M. S., An, S. Y., Berkowitz, B., and Niasar, V.: Process-dependent solute transport in porous media, Transport Porous Med., 140, 421–435, <ext-link xlink:href="https://doi.org/10.1007/s11242-021-01655-6" ext-link-type="DOI">10.1007/s11242-021-01655-6</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Fiori et al.(2015)</label><mixed-citation> Fiori, A., Bellin, A., Cvetkovic, V., De Barros, F. P., and Dagan, G.: Stochastic modeling of solute transport in aquifers: From heterogeneity characterization to risk analysis, Water Resour. Res., 51, 6622–6648, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Fiori et al.(2017)</label><mixed-citation>Fiori, A., Zarlenga, A., Jankovic, I., and Dagan, G.: Solute transport in aquifers: The comeback of the advection dispersion equation and the first order approximation, Adv. Water Resour., 110, 349–359, <ext-link xlink:href="https://doi.org/10.1016/j.advwatres.2017.10.025" ext-link-type="DOI">10.1016/j.advwatres.2017.10.025</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Guleria and Chakma(2023)</label><mixed-citation> Guleria, A. and Chakma, S.: Mechanistic insights into contaminant transport dynamics in the saturated porous system in the presence of low permeability region using numerical simulations and temporal moment analysis, Environ. Sci. Pollut. R., 30, 89071–89087, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Guo et al.(2024)</label><mixed-citation>Guo, B. B., Yu, R. C., Zhang, Z. D., Wang, Y., and Niu, D. T.: Numerical model of chloride reactive transport in concrete – a review, Transport Porous Med., 151, 367–398, <ext-link xlink:href="https://doi.org/10.1007/s11242-023-02053-w" ext-link-type="DOI">10.1007/s11242-023-02053-w</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Guo and Na(2023)</label><mixed-citation>Guo, Y. F. and Na, S. H.: A computational framework based on explicit local chemical equilibrium for coupled chemo-hydro-mechanical effects on fluid-infiltrating porous media, J. Comput. Phys., 488, 112196, <ext-link xlink:href="https://doi.org/10.1016/j.jcp.2023.112196" ext-link-type="DOI">10.1016/j.jcp.2023.112196</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Jang et al.(2017)</label><mixed-citation>Jang, E., Boog, J., He, W. K., and Kalbacher, T.: OpenGeoSys tutorial: Computational Hydrology III: OGS#IPhreeqc coupled reactive transport modeling, Springer, <ext-link xlink:href="https://doi.org/10.1007/978-3-319-67153-6" ext-link-type="DOI">10.1007/978-3-319-67153-6</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Jasak and Weller(2000)</label><mixed-citation> Jasak, H. and Weller, H. G.: Application of the finite volume method and unstructured meshes to linear elasticity, Int. J. Numer. Meth. Eng., 48, 267–287, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Kadeethum et al.(2021)</label><mixed-citation>Kadeethum, T., Lee, S., Ballarin, F., Choo, J., and Nick, H. M.: A locally conservative mixed finite element framework for coupled hydro-mechanical–chemical processes in heterogeneous porous media, Comput. Geosci., 152, 104774, <ext-link xlink:href="https://doi.org/10.1016/j.cageo.2021.104774" ext-link-type="DOI">10.1016/j.cageo.2021.104774</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Kempka et al.(2022)</label><mixed-citation>Kempka, T., Steding, S., and Kühn, M.: Verification of TRANSPORT Simulation Environment coupling with PHREEQC for reactive transport modelling, Adv. Geosci., 58, 19–29, <ext-link xlink:href="https://doi.org/10.5194/adgeo-58-19-2022" ext-link-type="DOI">10.5194/adgeo-58-19-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Krishna and Wesselingh(1997)</label><mixed-citation>Krishna, R. and Wesselingh, J. A.: The Maxwell-Stefan approach to mass transfer, Chem. Eng. Sci., 52, 861–911, <ext-link xlink:href="https://doi.org/10.1016/S0009-2509(96)00458-7" ext-link-type="DOI">10.1016/S0009-2509(96)00458-7</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Lichtner(1985)</label><mixed-citation>Lichtner, P. C.: Continuum model for simultaneous chemical reactions and mass transport in hydrothermal systems, Geochim. Cosmochim. Ac., 49, 779–800, <ext-link xlink:href="https://doi.org/10.1016/0016-7037(85)90172-3" ext-link-type="DOI">10.1016/0016-7037(85)90172-3</ext-link>, 1985.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Liu et al.(2025)</label><mixed-citation>Liu, J. H., Ma, T. S., Fu, J. H., Gao, J. J., Martyushev, D. A., and Ranjith, P. G.: Thermodynamics-based unsaturated hydro-mechanical-chemical coupling model for wellbore stability analysis in chemically active gas formations, Journal of Rock Mechanics and Geotechnical Engineering, 17, 3644–3661, <ext-link xlink:href="https://doi.org/10.1016/j.jrmge.2024.09.024" ext-link-type="DOI">10.1016/j.jrmge.2024.09.024</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Molins et al.(2014)</label><mixed-citation>Molins, S., Trebotich, D., Yang, L., Ajo-Franklin, J. B., Ligocki, T. J., Shen, C. P., and Steefel, C. I.: Pore-scale controls on calcite dissolution rates from flow-through laboratory and numerical experiments, Environ. Sci. Technol., 48, 7453–7460, <ext-link xlink:href="https://doi.org/10.1021/es5013438" ext-link-type="DOI">10.1021/es5013438</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Molins et al.(2017)</label><mixed-citation>Molins, S., Trebotich, D., Miller, G. H., and Steefel, C. I.: Mineralogical and transport controls on the evolution of porous media texture using direct numerical simulation, Water Resour. Res., 53, 3645–3661, <ext-link xlink:href="https://doi.org/10.1002/2016WR020323" ext-link-type="DOI">10.1002/2016WR020323</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Mortazavi and Khoei(2024)</label><mixed-citation>Mortazavi, S. M. S. and Khoei, A. R.: Coupled Thermo-Hydro-Mechanical and Chemical (THMC) simulation of silicate rocks with an enriched–FEM model, Comput. Geotech., 173, 106575, <ext-link xlink:href="https://doi.org/10.1016/j.compgeo.2024.106575" ext-link-type="DOI">10.1016/j.compgeo.2024.106575</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Nghiem et al.(2004)</label><mixed-citation>Nghiem, L., Sammon, P., Grabenstetter, J., and Ohkuma, H.: Modeling CO<inline-formula><mml:math id="M664" display="inline"><mml:mn mathvariant="normal">2</mml:mn></mml:math></inline-formula> Storage in Aquifers with a Fully-Coupled Geochemical EOS Compositional Simulator, in: SPE/DOE Symposium on Improved Oil Recovery, Tulsa, Oklahoma, 17–21 April 2004, p. 89474, <ext-link xlink:href="https://doi.org/10.2118/89474-MS" ext-link-type="DOI">10.2118/89474-MS</ext-link>, 2004.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Parker et al.(2022)</label><mixed-citation>Parker, B. L., Cherry, J. A., and Wanner, P.: Determining effective diffusion coefficients of chlorohydrocarbons in natural clays: unique results from highly resolved controlled release field experiments, J. Contam. Hydrol., 250, 104075, <ext-link xlink:href="https://doi.org/10.1016/j.jconhyd.2022.104075" ext-link-type="DOI">10.1016/j.jconhyd.2022.104075</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Parkhurst and Appelo(2013)</label><mixed-citation>Parkhurst, D. L. and Appelo, C. A. J.: Description of Input and Examples for PHREEQC Version 3: A Computer Program for Speciation, Batch-Reaction, One-Dimensional Transport, and Inverse Geochemical Calculations, U.S. Geological Survey Techniques and Methods, Book 6, Chapter A43, Reston, VA, USA, <ext-link xlink:href="https://doi.org/10.3133/tm6A43" ext-link-type="DOI">10.3133/tm6A43</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Parkhurst and Wissmeier(2015)</label><mixed-citation>Parkhurst, D. L. and Wissmeier, L.: PhreeqcRM: A reaction module for transport simulators based on the geochemical model PHREEQC, Adv. Water Resour., 83, 176–189, <ext-link xlink:href="https://doi.org/10.1016/j.advwatres.2015.06.001" ext-link-type="DOI">10.1016/j.advwatres.2015.06.001</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Pavuluri et al.(2022)</label><mixed-citation>Pavuluri, S., Tournassat, C., Claret, F., and Soulaine, C.: Reactive transport modeling with a coupled openfoam<sup>®</sup>-phreeqc platform, Transport Porous Med., 145, 475–504, <ext-link xlink:href="https://doi.org/10.1007/s11242-022-01860-x" ext-link-type="DOI">10.1007/s11242-022-01860-x</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Peters and Smith(2002)</label><mixed-citation> Peters, G. P. and Smith, D. W.: Solute transport through a deforming porous medium, Int. J. Numer. Anal. Met.,, 26, 683–717, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Plummer et al.(1978)</label><mixed-citation>Plummer, L., Wigley, T., and Parkhurst, D.: The kinetics of calcite dissolution in CO 2 -water systems at 5 degrees to 60 degrees C and 0.0 to 1.0 atm CO 2, Am. J. Sci., 278, 179–216, <ext-link xlink:href="https://doi.org/10.2475/ajs.278.2.179" ext-link-type="DOI">10.2475/ajs.278.2.179</ext-link>, 1978.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Ren et al.(2025)</label><mixed-citation>Ren, M. Z., Qiao, L. P., and Wang, Z. C.: Effect of reaction rate and pore structure heterogeneity on reactive solute transport in porous media, Gas Science and Engineering, 133, 205498, <ext-link xlink:href="https://doi.org/10.1016/j.jgsce.2024.205498" ext-link-type="DOI">10.1016/j.jgsce.2024.205498</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Roded et al.(2018)</label><mixed-citation>Roded, R., Paredes, X., and Holtzman, R.: Reactive transport under stress: Permeability evolution in deformable porous media, Earth Planet. Sc. Lett., 493, 198–207, <ext-link xlink:href="https://doi.org/10.1016/j.epsl.2018.04.041" ext-link-type="DOI">10.1016/j.epsl.2018.04.041</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Samper et al.(2009)</label><mixed-citation>Samper, J., Xu, T. F., and Yang, C. B.: A sequential partly iterative approach for multicomponent reactive transport with CORE2D, Computat. Geosci., 13, 301–316, <ext-link xlink:href="https://doi.org/10.1007/s10596-008-9119-5" ext-link-type="DOI">10.1007/s10596-008-9119-5</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Seigneur et al.(2019)</label><mixed-citation>Seigneur, N., Mayer, K. U., and Steefel, C. I.: Reactive transport in evolving porous media, Rev. Mineral. Geochem., 85, 197–238, <ext-link xlink:href="https://doi.org/10.2138/rmg.2019.85.7" ext-link-type="DOI">10.2138/rmg.2019.85.7</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Smith(2000)</label><mixed-citation> Smith, D. W.: One-dimensional contaminant transport through a deforming porous medium: theory and a solution for a quasi-steady-state problem, Int. J. Numer. Anal. Met., 24, 693–722, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Soulaine et al.(2021)</label><mixed-citation>Soulaine, C., Pavuluri, S., Claret, F., and Tournassat, C.: <italic>porousMedia4Foam</italic>: Multi-scale open-source platform for hydro-geochemical simulations with OpenFOAM®, Environ. Modell. Softw., 145, 105199, <ext-link xlink:href="https://doi.org/10.1016/j.envsoft.2021.105199" ext-link-type="DOI">10.1016/j.envsoft.2021.105199</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Steefel and MacQuarrie(1996)</label><mixed-citation>Steefel, C. I. and MacQuarrie, K. T. B.: Approaches to Modeling of Reactive Transport in Porous Media, De Gruyter, Berlin, Boston, Chap. 2, 83–130, <ext-link xlink:href="https://doi.org/10.1515/9781501509797-005" ext-link-type="DOI">10.1515/9781501509797-005</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Steefel et al.(2005) </label><mixed-citation>Steefel, C. I., DePaolo, D. J., and Lichtner, P. C.: Reactive transport modeling: An essential tool and a new research approach for the Earth sciences, Earth Planet. Sc. Lett., 240, 539–558, <ext-link xlink:href="https://doi.org/10.1016/j.epsl.2005.09.017" ext-link-type="DOI">10.1016/j.epsl.2005.09.017</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Steefel et al.(2015)</label><mixed-citation>Steefel, C. I., Appelo, C. A. J., Arora, B., Jacques, D., Kalbacher, T., Kolditz, O., Lagneau, V., Lichtner, P. C., Mayer, K. U., Meeussen, J. C. L., Molins, S., Moulton, D., Shao, H., Šimůnek, J., Spycher, N., Yabusaki, S. B., and Yeh, G. T.: Reactive transport codes for subsurface environmental simulation, Computat. Geosci., 19, 445–478, <ext-link xlink:href="https://doi.org/10.1007/s10596-014-9443-x" ext-link-type="DOI">10.1007/s10596-014-9443-x</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Wang and Jeng(2025)</label><mixed-citation>Wang, B. L. and Jeng, D.-S.: Three-Dimensional Model for Consolidation-Induced Solute Transport in a Nearly Saturated Porous Medium, Int. J. Numer. Anal. Met., 49, 4436–4464, <ext-link xlink:href="https://doi.org/10.1002/nag.70070" ext-link-type="DOI">10.1002/nag.70070</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Wu and Jeng(2023)</label><mixed-citation>Wu, S. and Jeng, D.-S.: Two-dimensional model for consolidatopn-induced solute transport in an unsaturated porous medium, Sci, 5, 16, <ext-link xlink:href="https://doi.org/10.3390/sci5020016" ext-link-type="DOI">10.3390/sci5020016</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Xie et al.(2018)</label><mixed-citation>Xie, H. J., Zhang, C. H., Feng, S. J., Wang, Q., and Yan, H. X.: Analytical model for degradable organic contaminant transport through a GMB/GCL/AL system, J. Environ. Eng., 144, 04018006, <ext-link xlink:href="https://doi.org/10.1061/(ASCE)EE.1943-7870.0001338" ext-link-type="DOI">10.1061/(ASCE)EE.1943-7870.0001338</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Xu and Pruess(2001)</label><mixed-citation> Xu, T. and Pruess, K.: Modeling multiphase non-isothermal fluid and reactive geochemical transport in variably saturated fractured rocks: 1. Methodology, Am. J. Sci., 301, 16–33, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Yeh and Tripathi(1989)</label><mixed-citation>Yeh, G.-T. and Tripathi, V. S.: A critical evaluation of recent developments in hydrogeochemical transport models of reactive multichemical components, Water Resour. Res., 25, 93–108, <ext-link xlink:href="https://doi.org/10.1029/WR025i001p00093" ext-link-type="DOI">10.1029/WR025i001p00093</ext-link>, 1989.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Yevugah et al.(2025)</label><mixed-citation>Yevugah, I. D., Kong, X.-Z., Jacquey, A. B., Green, C. P., Holländer, H. M., and Maghoul, P.: Fully coupled hydro-mechanical–chemical continuum modeling of fluid percolation through rock salt, Int. J. Rock Mech. Min., 186, 105985, <ext-link xlink:href="https://doi.org/10.1016/j.ijrmms.2024.105985" ext-link-type="DOI">10.1016/j.ijrmms.2024.105985</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Zeng et al.(2011)</label><mixed-citation>Zeng, Y. J., Su, Z. B., Wan, L., and Wen, J.: Numerical analysis of air-water-heat flow in unsaturated soil: Is it necessary to consider airflow in land surface models?, J. Geophys. Res.-Atmos., 116, <ext-link xlink:href="https://doi.org/10.1029/2011JD015835" ext-link-type="DOI">10.1029/2011JD015835</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Zhang et al.(2012)</label><mixed-citation> Zhang, H., Jeng, D.-S., Seymour, B., Barry, D. A., and Li, L.: Solute transport in partially-saturated deformable porous media: Application to a landfill clay liner, Adv. Water Resour., 40, 1–10, 2012.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Multi-component reactive transport in near-saturated deformable porous media</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Abdullah et al.(2024)</label><mixed-citation>
      
Abdullah, S., Ma, Y., Chen, X. H., and Khan, A.: Coupled Reactive Two-Phase Model Involving Dissolution and Dynamic Porosity for Deformable Porous Media Based on Mixture Coupling Theory, Transport Porous Med., 151, 27–54, <a href="https://doi.org/10.1007/s11242-023-02032-1" target="_blank">https://doi.org/10.1007/s11242-023-02032-1</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Agbotui et al.(2025)</label><mixed-citation>
      
Agbotui, P. Y., Firouzbehi, F., and Medici, G.: Review of effective porosity in sandstone aquifers: insights for representation of contaminant transport, Sustainability, 17, 6469, <a href="https://doi.org/10.3390/su17146469" target="_blank">https://doi.org/10.3390/su17146469</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Bard et al.(2022)</label><mixed-citation>
      
Bard, A. J., Faulkner, L. R., and White, H. S.: Electrochemical Methods: Fundamentals and Applications, 3rd edn., John Wiley &amp; Sons, Hoboken, NJ,  ISBN&thinsp;978-1119334064, 2022..

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Bear(1972)</label><mixed-citation>
      
Bear, J.: Dynamics of Fluids in Porous Media, Elsevier, New York, ISBN&thinsp;978-0-444-00114-6, 1972.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>de Barros and Fiori(2021)</label><mixed-citation>
      
de Barros, F. P. and Fiori, A.: On the maximum concentration of contaminants in natural aquifers, Transport Porous Med., 140, 273–290, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Ding et al.(2025)</label><mixed-citation>
      
Ding, X.-H., Luo, B., Zhou, H.-T., and Chen, Y.-H.: Generalized solutions for advection–dispersion transport equations subject to time-and space-dependent internal and boundary sources, Comput. Geotech., 178, 106944, <a href="https://doi.org/10.1016/j.compgeo.2024.106944" target="_blank">https://doi.org/10.1016/j.compgeo.2024.106944</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Erfani et al.(2021)</label><mixed-citation>
      
Erfani, H., Karadimitriou, N., Nissan, A., Walczak, M. S., An, S. Y., Berkowitz, B., and Niasar, V.: Process-dependent solute transport in porous media, Transport Porous Med., 140, 421–435, <a href="https://doi.org/10.1007/s11242-021-01655-6" target="_blank">https://doi.org/10.1007/s11242-021-01655-6</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Fiori et al.(2015)</label><mixed-citation>
      
Fiori, A., Bellin, A., Cvetkovic, V., De Barros, F. P., and Dagan, G.: Stochastic modeling of solute transport in aquifers: From heterogeneity characterization to risk analysis, Water Resour. Res., 51, 6622–6648, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Fiori et al.(2017)</label><mixed-citation>
      
Fiori, A., Zarlenga, A., Jankovic, I., and Dagan, G.: Solute transport in aquifers: The comeback of the advection dispersion equation and the first order approximation, Adv. Water Resour., 110, 349–359, <a href="https://doi.org/10.1016/j.advwatres.2017.10.025" target="_blank">https://doi.org/10.1016/j.advwatres.2017.10.025</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Guleria and Chakma(2023)</label><mixed-citation>
      
Guleria, A. and Chakma, S.: Mechanistic insights into contaminant transport dynamics in the saturated porous system in the presence of low permeability region using numerical simulations and temporal moment analysis, Environ. Sci. Pollut. R., 30, 89071–89087, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Guo et al.(2024)</label><mixed-citation>
      
Guo, B. B., Yu, R. C., Zhang, Z. D., Wang, Y., and Niu, D. T.: Numerical model of chloride reactive transport in concrete – a review, Transport Porous Med., 151, 367–398, <a href="https://doi.org/10.1007/s11242-023-02053-w" target="_blank">https://doi.org/10.1007/s11242-023-02053-w</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Guo and Na(2023)</label><mixed-citation>
      
Guo, Y. F. and Na, S. H.: A computational framework based on explicit local chemical equilibrium for coupled chemo-hydro-mechanical effects on fluid-infiltrating porous media, J. Comput. Phys., 488, 112196, <a href="https://doi.org/10.1016/j.jcp.2023.112196" target="_blank">https://doi.org/10.1016/j.jcp.2023.112196</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Jang et al.(2017)</label><mixed-citation>
      
Jang, E., Boog, J., He, W. K., and Kalbacher, T.: OpenGeoSys tutorial: Computational Hydrology III: OGS#IPhreeqc coupled reactive transport modeling, Springer, <a href="https://doi.org/10.1007/978-3-319-67153-6" target="_blank">https://doi.org/10.1007/978-3-319-67153-6</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Jasak and Weller(2000)</label><mixed-citation>
      
Jasak, H. and Weller, H. G.: Application of the finite volume method and unstructured meshes to linear elasticity, Int. J. Numer. Meth. Eng., 48, 267–287, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Kadeethum et al.(2021)</label><mixed-citation>
      
Kadeethum, T., Lee, S., Ballarin, F., Choo, J., and Nick, H. M.: A locally conservative mixed finite element framework for coupled hydro-mechanical–chemical processes in heterogeneous porous media, Comput. Geosci., 152, 104774, <a href="https://doi.org/10.1016/j.cageo.2021.104774" target="_blank">https://doi.org/10.1016/j.cageo.2021.104774</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Kempka et al.(2022)</label><mixed-citation>
      
Kempka, T., Steding, S., and Kühn, M.: Verification of TRANSPORT Simulation Environment coupling with PHREEQC for reactive transport modelling, Adv. Geosci., 58, 19–29, <a href="https://doi.org/10.5194/adgeo-58-19-2022" target="_blank">https://doi.org/10.5194/adgeo-58-19-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Krishna and Wesselingh(1997)</label><mixed-citation>
      
Krishna, R. and Wesselingh, J. A.: The Maxwell-Stefan approach to mass transfer, Chem. Eng. Sci., 52, 861–911, <a href="https://doi.org/10.1016/S0009-2509(96)00458-7" target="_blank">https://doi.org/10.1016/S0009-2509(96)00458-7</a>, 1997.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Lichtner(1985)</label><mixed-citation>
      
Lichtner, P. C.: Continuum model for simultaneous chemical reactions and mass transport in hydrothermal systems, Geochim. Cosmochim. Ac., 49, 779–800, <a href="https://doi.org/10.1016/0016-7037(85)90172-3" target="_blank">https://doi.org/10.1016/0016-7037(85)90172-3</a>, 1985.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Liu et al.(2025)</label><mixed-citation>
      
Liu, J. H., Ma, T. S., Fu, J. H., Gao, J. J., Martyushev, D. A., and Ranjith, P. G.: Thermodynamics-based unsaturated hydro-mechanical-chemical coupling model for wellbore stability analysis in chemically active gas formations, Journal of Rock Mechanics and Geotechnical Engineering, 17, 3644–3661, <a href="https://doi.org/10.1016/j.jrmge.2024.09.024" target="_blank">https://doi.org/10.1016/j.jrmge.2024.09.024</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Molins et al.(2014)</label><mixed-citation>
      
Molins, S., Trebotich, D., Yang, L., Ajo-Franklin, J. B., Ligocki, T. J., Shen, C. P., and Steefel, C. I.: Pore-scale controls on calcite dissolution rates from flow-through laboratory and numerical experiments, Environ. Sci. Technol., 48, 7453–7460, <a href="https://doi.org/10.1021/es5013438" target="_blank">https://doi.org/10.1021/es5013438</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Molins et al.(2017)</label><mixed-citation>
      
Molins, S., Trebotich, D., Miller, G. H., and Steefel, C. I.: Mineralogical and transport controls on the evolution of porous media texture using direct numerical simulation, Water Resour. Res., 53, 3645–3661, <a href="https://doi.org/10.1002/2016WR020323" target="_blank">https://doi.org/10.1002/2016WR020323</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Mortazavi and Khoei(2024)</label><mixed-citation>
      
Mortazavi, S. M. S. and Khoei, A. R.: Coupled Thermo-Hydro-Mechanical and Chemical (THMC) simulation of silicate rocks with an enriched–FEM model, Comput. Geotech., 173, 106575, <a href="https://doi.org/10.1016/j.compgeo.2024.106575" target="_blank">https://doi.org/10.1016/j.compgeo.2024.106575</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Nghiem et al.(2004)</label><mixed-citation>
      
Nghiem, L., Sammon, P., Grabenstetter, J., and Ohkuma, H.: Modeling CO2 Storage in Aquifers with a Fully-Coupled Geochemical EOS Compositional Simulator, in: SPE/DOE Symposium on Improved Oil Recovery, Tulsa, Oklahoma, 17–21 April 2004, p. 89474, <a href="https://doi.org/10.2118/89474-MS" target="_blank">https://doi.org/10.2118/89474-MS</a>, 2004.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Parker et al.(2022)</label><mixed-citation>
      
Parker, B. L., Cherry, J. A., and Wanner, P.: Determining effective diffusion coefficients of chlorohydrocarbons in natural clays: unique results from highly resolved controlled release field experiments, J. Contam. Hydrol., 250, 104075, <a href="https://doi.org/10.1016/j.jconhyd.2022.104075" target="_blank">https://doi.org/10.1016/j.jconhyd.2022.104075</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Parkhurst and Appelo(2013)</label><mixed-citation>
      
Parkhurst, D. L. and Appelo, C. A. J.: Description of Input and Examples for PHREEQC Version 3: A Computer Program for Speciation, Batch-Reaction, One-Dimensional Transport, and Inverse Geochemical Calculations, U.S. Geological Survey Techniques and Methods, Book 6, Chapter A43, Reston, VA, USA, <a href="https://doi.org/10.3133/tm6A43" target="_blank">https://doi.org/10.3133/tm6A43</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Parkhurst and Wissmeier(2015)</label><mixed-citation>
      
Parkhurst, D. L. and Wissmeier, L.: PhreeqcRM: A reaction module for transport simulators based on the geochemical model PHREEQC, Adv. Water Resour., 83, 176–189, <a href="https://doi.org/10.1016/j.advwatres.2015.06.001" target="_blank">https://doi.org/10.1016/j.advwatres.2015.06.001</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Pavuluri et al.(2022)</label><mixed-citation>
      
Pavuluri, S., Tournassat, C., Claret, F., and Soulaine, C.: Reactive transport modeling with a coupled openfoam<span style="position:relative; bottom:0.5em; " class="text">®</span>-phreeqc platform, Transport Porous Med., 145, 475–504, <a href="https://doi.org/10.1007/s11242-022-01860-x" target="_blank">https://doi.org/10.1007/s11242-022-01860-x</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Peters and Smith(2002)</label><mixed-citation>
      
Peters, G. P. and Smith, D. W.: Solute transport through a deforming porous medium, Int. J. Numer. Anal. Met.,, 26, 683–717, 2002.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Plummer et al.(1978)</label><mixed-citation>
      
Plummer, L., Wigley, T., and Parkhurst, D.: The kinetics of calcite dissolution in CO 2 -water systems at 5 degrees to 60 degrees C and 0.0 to 1.0 atm CO 2, Am. J. Sci., 278, 179–216, <a href="https://doi.org/10.2475/ajs.278.2.179" target="_blank">https://doi.org/10.2475/ajs.278.2.179</a>, 1978.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Ren et al.(2025)</label><mixed-citation>
      
Ren, M. Z., Qiao, L. P., and Wang, Z. C.: Effect of reaction rate and pore structure heterogeneity on reactive solute transport in porous media, Gas Science and Engineering, 133, 205498, <a href="https://doi.org/10.1016/j.jgsce.2024.205498" target="_blank">https://doi.org/10.1016/j.jgsce.2024.205498</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Roded et al.(2018)</label><mixed-citation>
      
Roded, R., Paredes, X., and Holtzman, R.: Reactive transport under stress: Permeability evolution in deformable porous media, Earth Planet. Sc. Lett., 493, 198–207, <a href="https://doi.org/10.1016/j.epsl.2018.04.041" target="_blank">https://doi.org/10.1016/j.epsl.2018.04.041</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Samper et al.(2009)</label><mixed-citation>
      
Samper, J., Xu, T. F., and Yang, C. B.: A sequential partly iterative approach for multicomponent reactive transport with CORE2D, Computat. Geosci., 13, 301–316, <a href="https://doi.org/10.1007/s10596-008-9119-5" target="_blank">https://doi.org/10.1007/s10596-008-9119-5</a>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Seigneur et al.(2019)</label><mixed-citation>
      
Seigneur, N., Mayer, K. U., and Steefel, C. I.: Reactive transport in evolving porous media, Rev. Mineral. Geochem., 85, 197–238, <a href="https://doi.org/10.2138/rmg.2019.85.7" target="_blank">https://doi.org/10.2138/rmg.2019.85.7</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Smith(2000)</label><mixed-citation>
      
Smith, D. W.: One-dimensional contaminant transport through a deforming porous medium: theory and a solution for a quasi-steady-state problem, Int. J. Numer. Anal. Met., 24, 693–722, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Soulaine et al.(2021)</label><mixed-citation>
      
Soulaine, C., Pavuluri, S., Claret, F., and Tournassat, C.: <i>porousMedia4Foam</i>: Multi-scale open-source platform for hydro-geochemical simulations with OpenFOAM®, Environ. Modell. Softw., 145, 105199, <a href="https://doi.org/10.1016/j.envsoft.2021.105199" target="_blank">https://doi.org/10.1016/j.envsoft.2021.105199</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Steefel and MacQuarrie(1996)</label><mixed-citation>
      
Steefel, C. I. and MacQuarrie, K. T. B.: Approaches to Modeling of Reactive Transport in Porous Media, De Gruyter, Berlin, Boston, Chap. 2, 83–130, <a href="https://doi.org/10.1515/9781501509797-005" target="_blank">https://doi.org/10.1515/9781501509797-005</a>, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Steefel et al.(2005) </label><mixed-citation>
      
Steefel, C. I., DePaolo, D. J., and Lichtner, P. C.: Reactive transport modeling: An essential tool and a new research approach for the Earth sciences, Earth Planet. Sc. Lett., 240, 539–558, <a href="https://doi.org/10.1016/j.epsl.2005.09.017" target="_blank">https://doi.org/10.1016/j.epsl.2005.09.017</a>, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Steefel et al.(2015)</label><mixed-citation>
      
Steefel, C. I., Appelo, C. A. J., Arora, B., Jacques, D., Kalbacher, T., Kolditz, O., Lagneau, V., Lichtner, P. C., Mayer, K. U., Meeussen, J. C. L., Molins, S., Moulton, D., Shao, H., Šimůnek, J., Spycher, N., Yabusaki, S. B., and Yeh, G. T.: Reactive transport codes for subsurface environmental simulation, Computat. Geosci., 19, 445–478, <a href="https://doi.org/10.1007/s10596-014-9443-x" target="_blank">https://doi.org/10.1007/s10596-014-9443-x</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Wang and Jeng(2025)</label><mixed-citation>
      
Wang, B. L. and Jeng, D.-S.: Three-Dimensional Model for Consolidation-Induced Solute Transport in a Nearly Saturated Porous Medium, Int. J. Numer. Anal. Met., 49, 4436–4464, <a href="https://doi.org/10.1002/nag.70070" target="_blank">https://doi.org/10.1002/nag.70070</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Wu and Jeng(2023)</label><mixed-citation>
      
Wu, S. and Jeng, D.-S.: Two-dimensional model for consolidatopn-induced solute transport in an unsaturated porous medium, Sci, 5, 16, <a href="https://doi.org/10.3390/sci5020016" target="_blank">https://doi.org/10.3390/sci5020016</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Xie et al.(2018)</label><mixed-citation>
      
Xie, H. J., Zhang, C. H., Feng, S. J., Wang, Q., and Yan, H. X.: Analytical model for degradable organic contaminant transport through a GMB/GCL/AL system, J. Environ. Eng., 144, 04018006, <a href="https://doi.org/10.1061/(ASCE)EE.1943-7870.0001338" target="_blank">https://doi.org/10.1061/(ASCE)EE.1943-7870.0001338</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Xu and Pruess(2001)</label><mixed-citation>
      
Xu, T. and Pruess, K.: Modeling multiphase non-isothermal fluid and reactive geochemical transport in variably saturated fractured rocks: 1. Methodology, Am. J. Sci., 301, 16–33, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Yeh and Tripathi(1989)</label><mixed-citation>
      
Yeh, G.-T. and Tripathi, V. S.: A critical evaluation of recent developments in hydrogeochemical transport models of reactive multichemical components, Water Resour. Res., 25, 93–108, <a href="https://doi.org/10.1029/WR025i001p00093" target="_blank">https://doi.org/10.1029/WR025i001p00093</a>, 1989.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Yevugah et al.(2025)</label><mixed-citation>
      
Yevugah, I. D., Kong, X.-Z., Jacquey, A. B., Green, C. P., Holländer, H. M., and Maghoul, P.: Fully coupled hydro-mechanical–chemical continuum modeling of fluid percolation through rock salt, Int. J. Rock Mech. Min., 186, 105985, <a href="https://doi.org/10.1016/j.ijrmms.2024.105985" target="_blank">https://doi.org/10.1016/j.ijrmms.2024.105985</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Zeng et al.(2011)</label><mixed-citation>
      
Zeng, Y. J., Su, Z. B., Wan, L., and Wen, J.: Numerical analysis of air-water-heat flow in unsaturated soil: Is it necessary to consider airflow in land surface models?, J. Geophys. Res.-Atmos., 116, <a href="https://doi.org/10.1029/2011JD015835" target="_blank">https://doi.org/10.1029/2011JD015835</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Zhang et al.(2012)</label><mixed-citation>
      
Zhang, H., Jeng, D.-S., Seymour, B., Barry, D. A., and Li, L.: Solute transport in partially-saturated deformable porous media: Application to a landfill clay liner, Adv. Water Resour., 40, 1–10, 2012.

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