<?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="methods-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">SE</journal-id><journal-title-group>
    <journal-title>Solid Earth</journal-title>
    <abbrev-journal-title abbrev-type="publisher">SE</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Solid Earth</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1869-9529</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/se-17-1167-2026</article-id><title-group><article-title>Efficient Uzawa algorithms with projection strategies for geodynamic Stokes flow</article-title><alt-title>Uzawa algorithms with projection strategies</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Jang</surname><given-names>Deok-Kyu</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Lee</surname><given-names>Kyeong-Min</given-names></name>
          
        <ext-link>https://orcid.org/0009-0003-2583-0772</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff3">
          <name><surname>Thieulot</surname><given-names>Cedric</given-names></name>
          
        <ext-link>https://orcid.org/0000-0001-6636-2862</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1 aff4">
          <name><surname>Choi</surname><given-names>Whan-Hyuk</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="yes" rid="aff2 aff5">
          <name><surname>So</surname><given-names>Byung-Dal</given-names></name>
          <email>bdso@kangwon.ac.kr</email>
        <ext-link>https://orcid.org/0000-0002-9294-7896</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>KNU Research Institute of Mathematical Sciences, Kangwon National University, Chuncheon, Republic of Korea</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Interdisciplinary Program in Earth Environmental System Science &amp; Engineering, Kangwon National University, Chuncheon, Republic of Korea</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>Department of Earth Sciences, Utrecht University, Princetonlaan 8A, the Netherlands</institution>
        </aff>
        <aff id="aff4"><label>4</label><institution>Department of Mathematics, Kangwon National University, Chuncheon, Republic of Korea</institution>
        </aff>
        <aff id="aff5"><label>5</label><institution>Department of Geophysics, Kangwon National University, Chuncheon, Republic of Korea</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Byung-Dal So (bdso@kangwon.ac.kr)</corresp></author-notes><pub-date><day>19</day><month>October</month><year>2026</year></pub-date>
      
      <volume>17</volume>
      <issue>10</issue>
      <fpage>1167</fpage><lpage>1185</lpage>
      <history>
        <date date-type="received"><day>5</day><month>November</month><year>2025</year></date>
           <date date-type="rev-request"><day>18</day><month>November</month><year>2025</year></date>
           <date date-type="rev-recd"><day>20</day><month>May</month><year>2026</year></date>
           <date date-type="accepted"><day>27</day><month>August</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Deok-Kyu Jang et al.</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://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026.html">This article is available from https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026.html</self-uri><self-uri xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026.pdf">The full text article is available as a PDF file from https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e144">Stokes equations are often difficult to handle in geodynamic modelling because they form a saddle-point system and involve strong variations in viscosity. In this work, we reformulate the Uzawa iteration through finite element variational principles, replacing the standard algebraic residual with a weighted <inline-formula><mml:math id="M1" 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> form that yields a robust preconditioned conjugate gradient iteration for the Schur complement system. Residuals are evaluated in weak form, giving an effect similar to that of a mass-matrix preconditioner. We also add a projection step so that the velocity field remains nearly divergence-free. These updates made the solver converge faster and behave more stably than the standard Uzawa method. This reformulation provides a complementary algorithmic perspective on Schur complement preconditioning within the finite element variational framework. The modified approach was tested in several cases, including ABC flow, SolCx, SolKz, mantle convection, block sinking, multisinker, and compressible convection under the Anelastic Liquid Approximation.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>National Research Foundation of Korea</funding-source>
<award-id>RS-2025-00519120</award-id>
<award-id>RS-2025-25415913</award-id>
<award-id>NRF-2022R1C2011689</award-id>
<award-id>RS-2025-02293161</award-id>
<award-id>NRF-2022R1A2C1009742</award-id>
</award-group>
</funding-group>
</article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e167">Geodynamic modelling of the mantle and lithosphere is concerned with processes such as subduction <xref ref-type="bibr" rid="bib1.bibx21 bib1.bibx32 bib1.bibx46" id="paren.1"/>, continental rifting <xref ref-type="bibr" rid="bib1.bibx25 bib1.bibx13 bib1.bibx47" id="paren.2"/>, mantle plume upwelling <xref ref-type="bibr" rid="bib1.bibx26 bib1.bibx38 bib1.bibx28" id="paren.3"/>, and lithospheric buckling <xref ref-type="bibr" rid="bib1.bibx17 bib1.bibx54" id="paren.4"/>. The mantle has a viscosity on the order of 10<sup>19</sup>–10<sup>23</sup> Pa s, and the associated flows occur at low Reynolds number. As a result, inertial terms are negligible, and the Navier–Stokes equations reduce to the elliptic Stokes system. This formulation produces large and sparse saddle-point systems that are challenging to solve, especially when viscosity varies by several orders of magnitude and complex rheologies are present <xref ref-type="bibr" rid="bib1.bibx36 bib1.bibx58" id="paren.5"/>.</p>
      <p id="d2e204">The spatial discretisation of the Stokes equations in geodynamics is frequently performed using finite element (FEM), finite difference (FDM) procedures, or finite volume (FVM) techniques. These algebraic systems retain the saddle-point structure of the velocity–pressure formulation. For this reason, direct solvers are not a realistic method for three-dimensional problems due to memory and computational expense. Due to this reason, iterative Krylov subspace approaches such as the conjugate gradient (CG) method for symmetric positive definite systems <xref ref-type="bibr" rid="bib1.bibx24" id="paren.6"/> and the generalized minimal residual method (GMRES) or its flexible variant (FGMRES) for nonsymmetric systems <xref ref-type="bibr" rid="bib1.bibx43 bib1.bibx42" id="paren.7"/> are often used for large-scale simulations. In the absence of suitable preconditioning, such methods progress slowly, especially when strong viscosity contrasts reduce the conditioning of the operator.</p>
      <p id="d2e213">A common strategy is to eliminate the velocity variables and form a reduced Schur complement system for the pressure. The standard Uzawa algorithm <xref ref-type="bibr" rid="bib1.bibx3" id="paren.8"/> applies Richardson-type iterations to this system and recomputes velocity at each step. The method is simple but converges slowly and is sensitive to the relaxation parameter, which limits its use in geodynamic applications. Later studies proposed variants with preconditioning and inexact solves, such as block preconditioners and mass-matrix approximations, to improve efficiency and stability <xref ref-type="bibr" rid="bib1.bibx14 bib1.bibx19 bib1.bibx15 bib1.bibx5" id="paren.9"/>. Explicit formulations of adaptive Uzawa and conjugate-directions Uzawa have been presented, showing their relation to gradient and conjugate gradient iterations <xref ref-type="bibr" rid="bib1.bibx10" id="paren.10"/>. In geodynamics, Uzawa-type updates have been implemented in mantle convection codes such as CitcomS <xref ref-type="bibr" rid="bib1.bibx58" id="paren.11"/>, and scalability studies have evaluated their performance on large parallel systems <xref ref-type="bibr" rid="bib1.bibx22" id="paren.12"/>. More generally, Schur complement systems can be solved using Krylov methods combined with suitable preconditioners, and much work has focused on block preconditioners, multigrid methods, and algebraic strategies for Stokes flow <xref ref-type="bibr" rid="bib1.bibx45 bib1.bibx35 bib1.bibx30" id="paren.13"/>, including the weighted BFBT (w-BFBT) preconditioner that incorporates viscosity directly into the Schur complement approximation <xref ref-type="bibr" rid="bib1.bibx41" id="paren.14"/>. These approaches are now widely adopted in large-scale mantle convection modelling.</p>
      <p id="d2e238">This study revisits the Uzawa framework from a variational perspective. The key observation is that defining residuals through weighted <inline-formula><mml:math id="M4" 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> inner products in the finite element space recasts the Uzawa iteration as a preconditioned conjugate gradient method for the Schur complement system. Since the entire algorithm is expressed through inner products and variational forms, it naturally leverages the matrix assembly and parallel solver infrastructure available in general-purpose finite element libraries coupled with PETSc. Based on this reformulation, we propose two extensions. The first is a viscosity-weighted residual formulation that serves as a Schur complement preconditioner and whose convergence can be systematically improved. The second is a projection post-processing step that improves the divergence-free constraint at minimal additional cost.</p>
      <p id="d2e253">The first extension changes how residuals are updated in the pressure space using inner products, which works the same as applying a mass-matrix preconditioner. This connects the <inline-formula><mml:math id="M5" 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>-projected residual update to preconditioned conjugate gradient (PCG) iterations and brings mass-matrix stabilization into the Uzawa framework <xref ref-type="bibr" rid="bib1.bibx19 bib1.bibx40 bib1.bibx15 bib1.bibx8" id="paren.15"/>. We also introduce a viscosity-weighted variant where the mass matrix is replaced by an <inline-formula><mml:math id="M6" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted version. This idea relates to earlier work on Schur complement preconditioners for variable-viscosity Stokes flow <xref ref-type="bibr" rid="bib1.bibx35" id="paren.16"/>. Unlike block preconditioning, our method puts viscosity weighting directly into the Uzawa iteration, making it a preconditioned conjugate gradient scheme with a preconditioner that better matches the true Schur complement spectrum. This gives faster and more stable convergence when viscosity contrasts are large.</p>
      <p id="d2e280">The second extension is a post-processing projection step that projects velocity variable onto the constraint-satisfying subspace. For incompressible flow, this is the discrete Helmholtz–Hodge decomposition. This method was first introduced for time-dependent Navier-Stokes equations <xref ref-type="bibr" rid="bib1.bibx16" id="paren.17"/>, and later refined for better stability and accuracy <xref ref-type="bibr" rid="bib1.bibx7 bib1.bibx23 bib1.bibx12 bib1.bibx39" id="paren.18"/>. These methods are standard in unsteady fluid dynamics but have received little attention for elliptic Stokes problems in geodynamics. We use projection after Uzawa iterations to reduce constraint residuals.</p>
      <p id="d2e289">The remainder of this paper is organized as follows. Section 2 presents the mathematical formulation, including the Stokes equations, the saddle-point system, Uzawa-type algorithms, residual representations, and the Helmholtz–Hodge projection. Section 3 reports numerical experiments using manufactured benchmarks, incompressible and compressible mantle convection, and block sinking problems. Section 4 summarizes the main results and outlines future work.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Mathematical formulation</title>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Stokes equations and saddle-point formulation</title>
      <p id="d2e307">We consider the incompressible Stokes equations relevant to mantle convection. Because the Prandtl number of mantle materials is effectively infinite (<italic>Pr</italic> <inline-formula><mml:math id="M7" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 10<sup>23</sup>), inertial terms in the Navier–Stokes equations can be neglected, and the governing system reduces to the elliptic Stokes equations <xref ref-type="bibr" rid="bib1.bibx44" id="paren.19"/>.</p>
      <p id="d2e332">In a bounded domain <inline-formula><mml:math id="M9" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M10" display="inline"><mml:mo>⊂</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M13" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2, 3), these are

            <disp-formula id="Ch1.Ex1"><mml:math id="M14" display="block"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold">g</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="bold">0</mml:mn><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 mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M15" display="inline"><mml:mi mathvariant="bold">u</mml:mi></mml:math></inline-formula> is velocity, <inline-formula><mml:math id="M16" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> is pressure, <inline-formula><mml:math id="M17" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is density, and <inline-formula><mml:math id="M18" display="inline"><mml:mi mathvariant="bold">g</mml:mi></mml:math></inline-formula> is gravitational acceleration. The Cauchy stress tensor is

            <disp-formula id="Ch1.Ex2"><mml:math id="M19" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>p</mml:mi><mml:mi mathvariant="bold">I</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">η</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>D</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>D</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold">u</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold">u</mml:mi></mml:mrow></mml:mfenced><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          with <inline-formula><mml:math id="M20" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> the dynamic viscosity and <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> the strain-rate tensor.</p>
      <p id="d2e546">In compact form, the Stokes equations then become

            <disp-formula id="Ch1.Ex3"><mml:math id="M22" display="block"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold">u</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold">u</mml:mi></mml:mrow></mml:mfenced><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold">g</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          In the case of constant viscosity with Dirichlet boundary conditions, the momentum equation reduces to a vector Laplacian.</p>
      <p id="d2e615">Discretization with stable finite element pairs <xref ref-type="bibr" rid="bib1.bibx4 bib1.bibx11 bib1.bibx45 bib1.bibx33" id="paren.20"/> gives the saddle-point system

            <disp-formula id="Ch1.Ex4"><mml:math id="M23" display="block"><mml:mrow><mml:mfenced open="(" close=")"><mml:mtable class="matrix" columnalign="center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mi>K</mml:mi></mml:mtd><mml:mtd><mml:mi>G</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mfenced close=")" open="("><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mi>u</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>p</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mi>f</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>h</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M24" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> is the discrete viscosity matrix (symmetric positive definite) and <inline-formula><mml:math id="M25" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula> is the discrete gradient operator. The system is symmetric but indefinite, and efficient iterative solvers are required.</p>
      <p id="d2e686">Eliminating velocity gives the Schur complement system

            <disp-formula id="Ch1.Ex5"><mml:math id="M26" display="block"><mml:mrow><mml:mi>S</mml:mi><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>K</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mi>f</mml:mi><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>K</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mi>G</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The Schur complement <inline-formula><mml:math id="M27" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula> is symmetric positive definite under the standard inf-sup stability condition. Forming <inline-formula><mml:math id="M28" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula> explicitly is too expensive, since each multiplication requires solving with <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msup><mml:mi>K</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, which is costly for large problems with variable viscosity. In practice, <inline-formula><mml:math id="M30" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula> is applied implicitly within iterative methods, together with suitable preconditioners.</p>
      <p id="d2e782">The standard Uzawa algorithm applies Richardson-type iterations to update the pressure and recompute the velocity, with relaxation parameter <inline-formula><mml:math id="M31" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M32" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> 0. The scheme is simple, but its convergence is sensitive to the choice of <inline-formula><mml:math id="M33" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> and deteriorates with large viscosity contrasts.</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog1"><label>Algorithm 1</label><caption><p id="d2e807">Standard Uzawa.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d2e814" specific-use="STATE"><italic>Initialization:</italic>   Set <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e837" specific-use="STATE"><italic>Iteration</italic> (<inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>):</p>
            </list-item>

    <list-item>

      <p id="d2e857" specific-use="STATE"><italic>Velocity update:</italic>   Find <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>p</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e912" specific-use="STATE"><italic>Pressure update:</italic>  Compute <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>(</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p>
            </list-item>
          </list></disp-quote></boxed-text>
      <p id="d2e971">To reduce this sensitivity, the relaxation parameter is updated adaptively at each step. This improves robustness compared with the fixed-<inline-formula><mml:math id="M39" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> method.</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog2"><label>Algorithm 2</label><caption><p id="d2e982">Adaptive Uzawa.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d2e989" specific-use="STATE"><italic>Initialization:</italic> Set <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1012" specific-use="STATE"><italic>Initial solve:</italic> Find <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1057" specific-use="STATE"><italic>Initial residual:</italic> Compute <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo>-</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1092" specific-use="STATE"><italic>Iteration</italic> (<inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>):</p>
            </list-item>

    <list-item>

      <p id="d2e1112" specific-use="STATE"><italic>Auxiliary solve:</italic> Find <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1154" specific-use="STATE"><italic>Step-size selection:</italic> Compute <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>/</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>(</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1216" specific-use="STATE"><italic>Pressure update:</italic> Compute <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1260" specific-use="STATE"><italic>Velocity update:</italic> Compute <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1304" specific-use="STATE"><italic>Residual update:</italic> Compute <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo>-</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>
          </list></disp-quote></boxed-text>
      <p id="d2e1348">The CD-U method accelerates convergence by constructing conjugate directions, in analogy with the conjugate gradient method. The explicit coefficients <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> highlight the connection with CG. By exploiting information from previous steps, CD-U achieves faster and more stable convergence, especially for problems with strong viscosity contrasts or heterogeneous coefficients.</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog3" specific-use="star"><label>Algorithm 3</label><caption><p id="d2e1374">Conjugate-Directions Uzawa (CD-U).</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d2e1381" specific-use="STATE"><italic>Initialization:</italic> Set <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1405" specific-use="STATE"><italic>Initial solve:</italic> Find <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e1452" specific-use="STATE"><italic>Initial residual:</italic> Compute <inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo>-</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>,   set   <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e1509" specific-use="STATE"><italic>Iteration</italic> (<inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>): </p>
            </list-item>

    <list-item>

      <p id="d2e1530" specific-use="STATE"><italic>Direction solve:</italic> Find <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e1574" specific-use="STATE"><italic>Step-size selection:</italic> Compute <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>/</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>(</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e1637" specific-use="STATE"><italic>Pressure update:</italic> Compute <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e1683" specific-use="STATE"><italic>Velocity update:</italic> Compute <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e1729" specific-use="STATE"><italic>Residual update:</italic> Compute <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo>-</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e1776" specific-use="STATE"><italic>Conjugate direction:</italic> Compute <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>/</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>(</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>,   set   <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>
          </list></disp-quote></boxed-text>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Residual representation in Uzawa iterations</title>
      <p id="d2e1896">The definition of the residual is central to Uzawa-type algorithms. In the Schur complement formulation, the discrete residual is

            <disp-formula id="Ch1.Ex6"><mml:math id="M67" display="block"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo>-</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which measures the violation of the incompressibility constraint. In its standard (vector) form, <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is assembled directly as a discrete vector. This is simple but suffers from poor conditioning, and small singular values of <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> can lead to unstable step-size choices and slow convergence, especially with large viscosity contrasts.</p>
      <p id="d2e1950">An alternative is to define the residual variationally in the <inline-formula><mml:math id="M70" 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> inner product on the pressure space <inline-formula><mml:math id="M71" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula>:

            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M72" display="block"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:mi>h</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo>⋅</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>,</mml:mo><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:mi>r</mml:mi><mml:mo>∈</mml:mo><mml:mi>Q</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          In discrete form this corresponds to solving a mass-matrix system,

            <disp-formula id="Ch1.Ex7"><mml:math id="M73" display="block"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mi>h</mml:mi><mml:mo>+</mml:mo><mml:mi>b</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> denotes the discrete constraint term. This formulation shows that Uzawa iterations implicitly apply the pressure mass matrix as a preconditioner <xref ref-type="bibr" rid="bib1.bibx14 bib1.bibx19 bib1.bibx15 bib1.bibx8" id="paren.21"/>. The resulting <inline-formula><mml:math id="M75" 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>-projected residual is smoother and scale-independent, and yields more robust convergence at modest extra cost.</p>
      <p id="d2e2103">With this modification, the overall update structure of the standard, adaptive, and CD-U algorithms remains the same. Only the scalar coefficients change, as summarized below.</p>
      <p id="d2e2106"><italic>Standard Uzawa.</italic>

            <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M76" display="block"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mi>r</mml:mi><mml:mo>∈</mml:mo><mml:mi>Q</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2189"><italic>Adaptive Uzawa.</italic> Using the <inline-formula><mml:math id="M77" 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> residual definition in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>), the step size is updated as

            <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M78" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>〉</mml:mo></mml:mrow><mml:mrow><mml:mo>〈</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>〉</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2284"><italic>Conjugate-directions Uzawa (CD-U).</italic> With <inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> defined in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>), the coefficients are

            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M80" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>〉</mml:mo></mml:mrow><mml:mrow><mml:mo>〈</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>〉</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>〉</mml:mo></mml:mrow><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>〉</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2412"><italic>Conjugate-directions Uzawa with η-weighted residuals (CD-U-η).</italic> The standard <inline-formula><mml:math id="M81" 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> residual in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) can be extended by replacing the mass matrix with an inverse-viscosity-weighted version, which we refer to as <inline-formula><mml:math id="M82" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted for brevity. This introduces a viscosity scaling in the pressure space, which more closely reflects the spectrum of the true Schur complement for variable-viscosity problems. The resulting scheme is a preconditioned conjugate-gradient iteration in which both the residual <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and its preconditioned form <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> appear in the update formulas.</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog4" specific-use="star"><label>Algorithm 4</label><caption><p id="d2e2460">Conjugate-Directions Uzawa with <inline-formula><mml:math id="M85" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted residuals (CD-U-<inline-formula><mml:math id="M86" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>).</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item>

      <p id="d2e2481" specific-use="STATE"><italic>Initialization:</italic> Set <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e2506" specific-use="STATE"><italic>Initial solve:</italic> Find <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e2553" specific-use="STATE"><italic>Initial residual:</italic> Find <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:mi>h</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo>⋅</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula>  <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:mo>∀</mml:mo><mml:mi>r</mml:mi><mml:mo>∈</mml:mo><mml:mi>Q</mml:mi></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e2632" specific-use="STATE"><italic>Preconditioning:</italic> Find <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">η</mml:mi></mml:mfrac></mml:mstyle><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula>   <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:mo>∀</mml:mo><mml:mi>r</mml:mi><mml:mo>∈</mml:mo><mml:mi>Q</mml:mi></mml:mrow></mml:math></inline-formula>,   set <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e2728" specific-use="STATE"><italic>Iteration</italic> (<inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>): </p>
            </list-item>

    <list-item>

      <p id="d2e2750" specific-use="STATE"><italic>Direction solve:</italic> Find <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi>G</mml:mi><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e2793" specific-use="STATE"><italic>Step-size selection:</italic> Compute <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>〉</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>/</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>〈</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e2855" specific-use="STATE"><italic>Pressure update:</italic> Compute <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e2900" specific-use="STATE"><italic>Velocity update:</italic> Compute <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e2946" specific-use="STATE"><italic>Residual update:</italic> Find <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:mi>h</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo>⋅</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula>   <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:mo>∀</mml:mo><mml:mi>r</mml:mi><mml:mo>∈</mml:mo><mml:mi>Q</mml:mi></mml:mrow></mml:math></inline-formula> </p>
            </list-item>

    <list-item>

      <p id="d2e3040" specific-use="STATE"><italic>Preconditioning:</italic> Find <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> satisfying <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">η</mml:mi></mml:mfrac></mml:mstyle><mml:msup><mml:mi>w</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula>   <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:mo>∀</mml:mo><mml:mi>r</mml:mi><mml:mo>∈</mml:mo><mml:mi>Q</mml:mi></mml:mrow></mml:math></inline-formula></p>
            </list-item>

    <list-item>

      <p id="d2e3131" specific-use="STATE"><italic>Conjugate direction:</italic> Compute <inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>〉</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>/</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula>,   set   <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p>
            </list-item>
          </list></disp-quote></boxed-text>
      <p id="d2e3241">This iteration can be interpreted as a Preconditioned Conjugate Gradient (PCG) method applied to the Schur complement system. Here <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> denotes the residual in the pressure space, and <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> its preconditioned form. The search directions <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and coefficients <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are then defined from inner products such as <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula>, following the standard PCG structure.</p>
      <p id="d2e3322">With the <inline-formula><mml:math id="M117" 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> formulation, the preconditioner is the pressure mass matrix <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which is spectrally close to the identity. In this case <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M120" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>, and the scheme reduces to a Conjugate Gradient iteration with a trivial preconditioner. In the <inline-formula><mml:math id="M122" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted formulation, the preconditioner is the viscosity-weighted mass matrix, so that <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M124" display="inline"><mml:mo>≠</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and both quantities appear in the iteration. Note that the relation between <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> cannot be expressed pointwise as <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>, since <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> varies spatially. Instead, <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is defined variationally by

            <disp-formula id="Ch1.Ex8"><mml:math id="M131" display="block"><mml:mrow><mml:mo>〈</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">η</mml:mi></mml:mfrac></mml:mstyle><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>〉</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mi>r</mml:mi><mml:mo>∈</mml:mo><mml:mi>Q</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which  ensures that <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>  belongs to the pressure space <inline-formula><mml:math id="M133" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula>  and serves as the Riesz representative of <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> under the <inline-formula><mml:math id="M135" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted inner product. This formulation provides a consistent SPD preconditioner in the finite element setting.</p>
      <p id="d2e3578">In practice, at high resolution or extreme viscosity contrasts, the conjugate gradient iteration may stagnate when the denominators in the step-size and conjugacy coefficients become too small. To address this, we introduce an adaptive scaling parameter AAR that modifies the preconditioner weights from <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to AAR <inline-formula><mml:math id="M137" display="inline"><mml:mo>/</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Starting from AAR <inline-formula><mml:math id="M139" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1.0, the parameter is progressively reduced whenever stagnation is detected. To prevent numerical instability in high-viscosity regions where the scaled weights become excessively small, we enforce a pointwise lower bound <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msub><mml:mo>min⁡</mml:mo><mml:mi>x</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mtext>AAR</mml:mtext><mml:mo>/</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>≥</mml:mo><mml:mi mathvariant="italic">ϵ</mml:mi></mml:mrow></mml:math></inline-formula> for a prescribed threshold <inline-formula><mml:math id="M141" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>. The specific reduction strategy and the threshold <inline-formula><mml:math id="M142" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> are reported together with the numerical experiments.</p>
      <p id="d2e3673">In summary, while the <inline-formula><mml:math id="M143" 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> formulation corresponds to a CG iteration with a trivial mass-matrix preconditioner, the <inline-formula><mml:math id="M144" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted Uzawa method is a genuine PCG scheme with a physically motivated preconditioner that better reflects the spectral properties of the Schur complement, particularly under strong viscosity contrasts <xref ref-type="bibr" rid="bib1.bibx35" id="paren.22"/>. The adaptive AAR strategy ensures robust convergence of this scheme across a wide range of resolutions and viscosity ratios.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Helmholtz–Hodge projection as post-processing</title>
      <p id="d2e3705">Uzawa-type iterations reduce the constraint violation only asymptotically, so the discrete constraint remains slightly violated after a finite number of steps. To enforce the constraint explicitly, we apply a projection step as a post-processing. The idea is to correct an intermediate velocity <inline-formula><mml:math id="M145" display="inline"><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:math></inline-formula> by adding a gradient field so that the updated velocity satisfies the discrete constraint operator

            <disp-formula id="Ch1.Ex9"><mml:math id="M146" display="block"><mml:mrow><mml:mi mathvariant="script">C</mml:mi><mml:mo>(</mml:mo><mml:mi>u</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:mi mathvariant="script">C</mml:mi><mml:mo>(</mml:mo><mml:mi>u</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M148" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula> for the incompressible case, and <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:mi mathvariant="script">C</mml:mi><mml:mo>(</mml:mo><mml:mi>u</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M151" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>u</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> under the anelastic liquid approximation (ALA).</p>
      <p id="d2e3814">For the incompressible case, <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:mi mathvariant="script">C</mml:mi><mml:mo>(</mml:mo><mml:mi>u</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M154" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula>, the projection requires solving a scalar Poisson problem

            <disp-formula id="Ch1.Ex10"><mml:math id="M156" display="block"><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          This corresponds to the discrete Helmholtz–Hodge decomposition, which states that any vector field can be uniquely decomposed into a solenoidal part and a gradient part,

            <disp-formula id="Ch1.Ex11"><mml:math id="M157" display="block"><mml:mrow><mml:msup><mml:mi mathvariant="bold">u</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Equivalently, the projection operator can be written as

            <disp-formula id="Ch1.Ex12"><mml:math id="M158" display="block"><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mo>=</mml:mo><mml:mi>I</mml:mi><mml:mo>-</mml:mo><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:mi>G</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mi>G</mml:mi><mml:mi>T</mml:mi></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which is symmetric and idempotent.</p>
      <p id="d2e3988">In variational form, the correction is obtained by solving

            <disp-formula id="Ch1.Ex13"><mml:math id="M159" display="block"><mml:mrow><mml:mo>〈</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:mi>h</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>〉</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:mo>∀</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>∈</mml:mo><mml:mi>Q</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          and updating the velocity consistently in the finite element space,

            <disp-formula id="Ch1.Ex14"><mml:math id="M160" display="block"><mml:mrow><mml:mo>〈</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>w</mml:mi><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mo>〈</mml:mo><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi>w</mml:mi><mml:mo>〉</mml:mo><mml:mo>+</mml:mo><mml:mo>〈</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi>w</mml:mi><mml:mo>〉</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mi>w</mml:mi><mml:mo>∈</mml:mo><mml:mi>V</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          This weak formulation is important: a direct discrete update <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M162" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M163" display="inline"><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> <inline-formula><mml:math id="M164" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:mrow></mml:math></inline-formula> does not yield the same accuracy, whereas the variational form ensures consistency and better convergence. In practice, the projection can also be implemented component-wise to avoid assembling a large coupled system.</p>
      <p id="d2e4172">For the compressible case, <inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:mi mathvariant="script">C</mml:mi><mml:mo>(</mml:mo><mml:mi>u</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M167" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>u</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and the projection takes the weighted form

            <disp-formula id="Ch1.Ex15"><mml:math id="M169" display="block"><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          so that <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M171" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M172" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> is satisfied exactly. This weighted projection is the natural extension of the Helmholtz–Hodge decomposition to density-dependent flows.</p>
      <p id="d2e4338">Although projection methods of this type are standard in computational fluid dynamics, they have not been used previously as post-processing corrections in geodynamics. As we show in Sect. 3, this step reduces accumulated divergence errors and improves the long-term accuracy of mantle convection benchmarks.</p>
      <p id="d2e4341">A related approach in particle-in-cell methods is the conservative velocity interpolation (CVI) scheme <xref ref-type="bibr" rid="bib1.bibx52" id="paren.23"/>, which enforces local mass conservation during interpolation but follows a different formulation from the projection-based correction used here. The CVI approach is specifically designed for quadrilateral Q1P0 elements, whereas our projection method is element-independent and applicable to general finite element discretizations. 
<inline-graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-g01.png"/>
</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Numerical Implementation</title>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Finite Element Framework and Parallel Environment</title>
      <p id="d2e4371">We implemented the proposed algorithms using the open-source finite element library FEniCS (version 2019.2.0.13) <xref ref-type="bibr" rid="bib1.bibx33 bib1.bibx1" id="paren.24"/>. FEniCS provides a Python interface that simplifies variational form expression and automates finite element matrix assembly, which is useful in geodynamics where PDE systems often involve strongly variable rheologies <xref ref-type="bibr" rid="bib1.bibx55 bib1.bibx51 bib1.bibx53 bib1.bibx31" id="paren.25"/>. To solve the large sparse linear systems from discretizing the Stokes equations, we coupled FEniCS with PETSc <xref ref-type="bibr" rid="bib1.bibx6" id="paren.26"/>. We used GMRES and CG with algebraic multigrid (AMG) preconditioning. Solver configurations were adjusted through PETSc runtime parameters.</p>
      <p id="d2e4383">All algorithms were implemented within the standard FEniCS–PETSc environment without custom code. This portability shows that the approach is reproducible, extendable, and transferable to other platforms, in line with current practices in large-scale geodynamic modeling.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Solver configuration and benchmark setup</title>
      <p id="d2e4394">Each Uzawa iteration with projection requires solving three linear systems: (i) the momentum equation for velocity, (ii) an <inline-formula><mml:math id="M173" 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>-projection in the pressure space for residual representation and scalar potential projection, and (iii) a Poisson system for velocity correction.</p>
      <p id="d2e4408">The <inline-formula><mml:math id="M174" 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>-projection system was solved with CG preconditioned by block Jacobi, which works well for the diagonally dominant mass matrices from finite element discretizations. The Poisson system for velocity correction was also solved with CG and BoomerAMG. All solvers used relative and absolute tolerances of <inline-formula><mml:math id="M175" display="inline"><mml:mrow><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="M176" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">12</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, so that the convergence behavior observed in our benchmarks is governed by the outer Uzawa iteration rather than by inner solver accuracy. For reference, the ASPECT code <xref ref-type="bibr" rid="bib1.bibx30" id="paren.27"/> uses default inner solve tolerances of 10<sup>−2</sup> for the velocity block and 10<sup>−6</sup> for the Schur complement block.</p>
      <p id="d2e4478">Uzawa iterations were terminated using a normalized divergence residual

            <disp-formula id="Ch1.Ex16"><mml:math id="M179" display="block"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>‖</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><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:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>‖</mml:mo><mml:msup><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msup><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:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which measures how well the continuity constraint is satisfied. We used relaxed thresholds in long mantle convection runs to balance efficiency and accuracy.</p>
      <p id="d2e4536">All benchmarks were discretized with Taylor–Hood (P2-P1) finite elements. Geodynamic models often use quadrilateral or hexahedral meshes, but we used structured triangular and tetrahedral meshes generated by splitting each cell along its diagonals. In two dimensions, this diagonal subdivision yields a symmetric “union-jack” pattern that preserves benchmark symmetry. This configuration provides robust velocity-pressure stability and straightforward implementation in FEniCS. Further discussion on finite element selection for geodynamic Stokes modeling can be found in <xref ref-type="bibr" rid="bib1.bibx49" id="paren.28"/>. Viscosity <inline-formula><mml:math id="M180" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> is represented as a finite-element field and evaluated at quadrature points during local assembly of element matrices.</p>
      <p id="d2e4550">To evaluate accuracy, we report the relative <inline-formula><mml:math id="M181" 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> errors:

            <disp-formula id="Ch1.Ex17"><mml:math id="M182" display="block"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>‖</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="normal">exact</mml:mi></mml:msub><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:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>‖</mml:mo><mml:msub><mml:mi mathvariant="bold">u</mml:mi><mml:mi mathvariant="normal">exact</mml:mi></mml:msub><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:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>‖</mml:mo><mml:mi>p</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">exact</mml:mi></mml:msub><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:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>‖</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">exact</mml:mi></mml:msub><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:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Baseline comparison of Uzawa variants</title>
      <p id="d2e4678">We first establish a baseline solver among the three Uzawa variants: standard Uzawa (S-U), adaptive Uzawa (A-U), and conjugate-directions Uzawa (CD-U). For this comparison, we use two complementary tests. The ABC flow with constant viscosity assesses convergence behavior in an ideal setting and is used to compare S-U, A-U, and CD-U directly. The SolCx problem with a viscosity contrast of 10<sup>6</sup> provides a stress test under strong heterogeneity; here we focus on CD-U and contrast three residual formulations – vector (algebraic), <inline-formula><mml:math id="M184" 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> inner-product, and the viscosity-weighted CD-U-<inline-formula><mml:math id="M185" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> – to examine robustness. In both tests, we track the relative <inline-formula><mml:math id="M186" 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> errors in velocity and pressure and the normalized divergence residual over iterations, and select the most effective configuration for the remainder of the paper.</p>
<sec id="Ch1.S3.SS3.SSS1">
  <label>3.3.1</label><title>ABC Flow (smooth analytical solution)</title>
      <p id="d2e4727">The ABC (Arnold–Beltrami–Childress) flow <xref ref-type="bibr" rid="bib1.bibx56" id="paren.29"/> is used as a smooth manufactured benchmark to compare the three Uzawa variants (S-U, A-U, CD-U) and to select a baseline solver. With constant viscosity (<inline-formula><mml:math id="M187" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M188" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1.0), all residual formulations reduce to the trivial case <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M190" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. This setting isolates the algorithmic differences among the variants without interference from viscosity contrasts.</p>
      <p id="d2e4777">The exact velocity and pressure fields are

              <disp-formula id="Ch1.Ex18"><mml:math id="M192" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="bold">u</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:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>y</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><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:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e4942">Figure <xref ref-type="fig" rid="F1"/> shows the relative velocity and pressure errors together with the normalized continuity residual <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as functions of iteration count. S-U converges very slowly and is highly sensitive to the relaxation parameter. A-U improves robustness but stagnates at higher error levels. CD-U, in contrast, converges rapidly and monotonically for all quantities. These results support choosing CD-U as the baseline solver for the following benchmarks.</p>

      <fig id="F1" specific-use="star"><label>Figure 1</label><caption><p id="d2e4961">ABC flow benchmark on a 32 <inline-formula><mml:math id="M194" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 32 <inline-formula><mml:math id="M195" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 32 mesh with P2-P1 elements. <bold>(a)</bold> Relative velocity error <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(b)</bold> relative pressure error <inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <bold>(c)</bold> normalized continuity residual <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as functions of iteration count for the S-U, A-U, and CD-U algorithms.</p></caption>
            <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f01.png"/>

          </fig>

</sec>
<sec id="Ch1.S3.SS3.SSS2">
  <label>3.3.2</label><title>SolCx (viscosity contrast benchmark)</title>
      <p id="d2e5035">The SolCx problem <xref ref-type="bibr" rid="bib1.bibx57" id="paren.30"/> is a standard two-dimensional benchmark for testing solver performance under strong viscosity contrasts. It is posed on <inline-formula><mml:math id="M199" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M200" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:msup><mml:mo>]</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> with a discontinuous viscosity,

              <disp-formula id="Ch1.Ex19"><mml:math id="M202" display="block"><mml:mrow><mml:mi mathvariant="italic">η</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:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>x</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">6</mml:mn></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>x</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            and a density field <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</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:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M204" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. A gravitational acceleration of unit magnitude (<inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:mo>|</mml:mo><mml:mi>g</mml:mi><mml:mo>|</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M207" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1) was applied in the vertical direction, and reference solutions were taken from Underworld <xref ref-type="bibr" rid="bib1.bibx34 bib1.bibx37" id="paren.31"/>.</p>
      <p id="d2e5207">This benchmark poses a challenging test for Uzawa-type solvers. Here we compare three variants of the Conjugate-Directions Uzawa method. The first is the discrete residual update (Algorithm <xref ref-type="other" rid="Ch1.Prog3"/>), where the residual is updated in purely algebraic (vector) form. The second is the <inline-formula><mml:math id="M208" 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> inner-product formulation, in which the residual is defined variationally as in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>), and the update coefficients are computed using the inner-product relations in Eq. (<xref ref-type="disp-formula" rid="Ch1.E4"/>). Finally, we consider the viscosity-weighted extension CD-U-<inline-formula><mml:math id="M209" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> (Algorithm <xref ref-type="other" rid="Ch1.Prog4"/>), which realizes a preconditioned conjugate-gradient method on the Schur complement with a physically motivated <inline-formula><mml:math id="M210" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted mass matrix.</p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e5246">SolCx benchmark with P2-P1 elements. <bold>(a)</bold> Relative velocity error <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, (b) relative pressure error <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <bold>(c)</bold> normalized divergence residual <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as functions of iteration count for CD-U with discrete update, <inline-formula><mml:math id="M214" 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> inner-product update, and <inline-formula><mml:math id="M215" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted update.</p></caption>
            <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f02.png"/>

          </fig>

      <p id="d2e5314">Figure <xref ref-type="fig" rid="F2"/> shows that the discrete CD-U update converges slowly and stagnates at high pressure error. The <inline-formula><mml:math id="M216" 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> inner-product version achieves faster convergence but with oscillations in <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The <inline-formula><mml:math id="M218" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted variant provides the most rapid initial reduction of velocity and pressure errors and reaches much lower <inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> within a few iterations. At later steps, <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> shows a mild increase. This occurs when <italic>conjugacy</italic> – the orthogonality of successive search directions in the preconditioned Schur complement inner product – degrades due to inexact inner solves for <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M222" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:msup><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:msup><mml:mi>w</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M225" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>. Loss of conjugacy means that a new step partly points back toward earlier directions. Progress measured in the physical <inline-formula><mml:math id="M227" 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> divergence can be reversed locally, even though the preconditioned CG energy still decreases.</p>
      <p id="d2e5453">In our numerical experiments, we found that restarts or periodic reinitialization could alleviate this effect. We did not apply them here because the iteration counts are not large enough to require it. Subsequent benchmarks remain stable without reinitialization. The small increase in <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a characteristic of the baseline <inline-formula><mml:math id="M229" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>-weighted formulation rather than a practical limitation.</p>
</sec>
<sec id="Ch1.S3.SS3.SSS3">
  <label>3.3.3</label><title>Multisinker benchmark</title>
      <p id="d2e5483">The multisinker problem consists of multiple high-viscosity circular inclusions embedded in a low-viscosity medium, driven downward by a gravity-like body force. Unlike the SolCx benchmark with its single planar viscosity discontinuity, the multisinker configuration produces localized viscosity jumps at multiple locations, generating irregular and multiscale flow fields representative of geodynamic settings such as subducting slabs or cratonic roots. We follow the problem setup described in <xref ref-type="bibr" rid="bib1.bibx41" id="paren.32"/>.</p>
      <p id="d2e5489">We consider this problem in two dimensions on the domain <inline-formula><mml:math id="M230" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M231" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:msup><mml:mo>]</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> with 8 high-viscosity sinkers centered at prescribed locations <inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">c</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula>. The viscosity field is defined as

              <disp-formula id="Ch1.Ex20"><mml:math id="M235" display="block"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>max⁡</mml:mo></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>min⁡</mml:mo></mml:msub></mml:mrow></mml:mfenced><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mn mathvariant="normal">8</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold">x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>min⁡</mml:mo></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where the indicator function <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mn mathvariant="normal">8</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> accumulates the sinker regions through a product of smoothed Gaussian functions,

              <disp-formula id="Ch1.Ex21"><mml:math id="M237" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mn mathvariant="normal">8</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold">x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munderover><mml:mo movablelimits="false">∏</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">8</mml:mn></mml:munderover><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>exp⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo movablelimits="false">max⁡</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold">c</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="bold">x</mml:mi><mml:mo>|</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M238" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M239" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 200 controlling the sharpness of the viscosity transition and <inline-formula><mml:math id="M240" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M241" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.05 the radius of each sinker. Inside the sinkers <inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mn mathvariant="normal">8</mml:mn></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>≈</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>max⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>, while in the background <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mn mathvariant="normal">8</mml:mn></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>≈</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>min⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>. The dynamic ratio DR<inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M247" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>max⁡</mml:mo></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>min⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> was varied from 10<sup>2</sup> to 10<sup>10</sup>, with <inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>min⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M252" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> DR<sup>−1∕2</sup> and <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mo>max⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M255" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> DR<sup>1∕2</sup>. The body force <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:mi mathvariant="bold">f</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M258" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mn mathvariant="normal">8</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold">x</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M260" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M261" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>5</sup> acts only inside the sinkers, driving them downward through the lighter, low-viscosity medium. The domain was discretized with 256 <inline-formula><mml:math id="M263" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 256 triangular P2-P1 Taylor–Hood elements, and reference solutions were computed using the MUMPS direct solver. Figure <xref ref-type="fig" rid="F3"/> shows the viscosity field and the vertical component of the body force for DR<inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M265" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>10</sup>.</p>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e6032">Multisinker benchmark configuration with 8 sinkers and DR<inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M268" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>10</sup>. <bold>(a)</bold> Viscosity field and <bold>(b)</bold> vertical component of the body force.</p></caption>
            <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f03.png"/>

          </fig>

      <p id="d2e6076">Since this problem has no analytical solution, convergence was evaluated by measuring relative errors in velocity and pressure against the MUMPS reference solution. Figure <xref ref-type="fig" rid="F4"/> shows the convergence history of the CD-U-<inline-formula><mml:math id="M270" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> solver across dynamic ratios from 10<sup>2</sup> to 10<sup>10</sup>.</p>

      <fig id="F4" specific-use="star"><label>Figure 4</label><caption><p id="d2e6108">Multisinker benchmark with P2-P1 elements on a 256 <inline-formula><mml:math id="M273" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 256 mesh. Convergence of the CD-U-<inline-formula><mml:math id="M274" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> solver across dynamic ratios from 10<sup>2</sup> to 10<sup>10</sup>. <bold>(a)</bold> Relative velocity error <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <bold>(b)</bold> relative pressure error <inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as functions of iteration count.</p></caption>
            <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f04.png"/>

          </fig>

      <p id="d2e6178">Figure <xref ref-type="fig" rid="F4"/> shows that at low dynamic ratios (DR <inline-formula><mml:math id="M279" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>2</sup>), the solver converges rapidly. As the dynamic ratio increases, an extended plateau develops in the early iterations before convergence accelerates. This is characteristic of conjugate gradient methods with a poor initial guess. In all experiments, the initial pressure was set to zero, which is far from the true solution for high-viscosity-contrast problems. A better initial pressure estimate could reduce this plateau, but developing such strategies is beyond the scope of this work. For  DR <inline-formula><mml:math id="M281" display="inline"><mml:mo>≥</mml:mo></mml:math></inline-formula> 10<sup>6</sup>, the convergence curves nearly overlap, indicating that the solver becomes insensitive to further increases in viscosity contrast. The pressure error consistently lags behind the velocity error during the initial phase. The adaptive AAR strategy was triggered only for DR <inline-formula><mml:math id="M283" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>8</sup> and 10<sup>10</sup> near the final iterations. For this benchmark, stagnation was detected when <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:mo>|</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mo>|</mml:mo><mml:mo>&lt;</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> for two consecutive iterations, with a reduction factor of 0.01 and pointwise lower bound <inline-formula><mml:math id="M287" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M288" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>−8</sup>.</p>
</sec>
</sec>
<sec id="Ch1.S3.SS4">
  <label>3.4</label><title>Post-processing strategies for incompressible problems</title>
      <p id="d2e6318">We next examine the effect of the post-processing correction in two incompressible tests: linear mantle convection with variable viscosity and the block sinking problem with sharp density and viscosity contrasts. In both tests the mesh, boundary conditions, and time stepping are kept identical; the only change is in the Stokes solver. Results from CD-U-<inline-formula><mml:math id="M290" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> are compared with those from CD-U-<inline-formula><mml:math id="M291" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> combined with post-processing. Reference solutions are obtained with the direct LU solver MUMPS <xref ref-type="bibr" rid="bib1.bibx2" id="paren.33"/>, which solves the discrete system to near machine precision.</p>
      <p id="d2e6338">Performance is evaluated by the relative <inline-formula><mml:math id="M292" 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> errors of velocity and scalar fields (temperature, composition, or density) and by the normalized continuity residual <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. A breakdown of solver cost is also reported, showing that the post-processing step adds little to the total runtime, while momentum solves remain the dominant cost.</p>
<sec id="Ch1.S3.SS4.SSS1">
  <label>3.4.1</label><title>Linear mantle convection</title>
      <p id="d2e6370">The linear mantle convection benchmark was solved on <inline-formula><mml:math id="M294" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M295" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M297" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> using a 320 <inline-formula><mml:math id="M299" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 160 structured grid, subdivided into triangular P2-P1 Taylor–Hood elements for velocity and pressure. Viscosity followed a depth- and temperature-dependent exponential law <xref ref-type="bibr" rid="bib1.bibx9" id="paren.34"/>,

              <disp-formula id="Ch1.Ex22"><mml:math id="M300" 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="italic">η</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:mo>=</mml:mo><mml:mi>exp⁡</mml:mi><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:mi>b</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>T</mml:mi><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>T</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mi>c</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mi>log⁡</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2.5</mml:mn><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mi>log⁡</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2.0</mml:mn><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e6530">The body force in the Stokes equations was given by thermal and compositional buoyancy,

              <disp-formula id="Ch1.Ex23"><mml:math id="M301" display="block"><mml:mrow><mml:mi mathvariant="bold">f</mml:mi><mml:mo>=</mml:mo><mml:mo mathsize="1.1em">(</mml:mo><mml:mi>R</mml:mi><mml:msub><mml:mi>a</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mi>R</mml:mi><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo mathsize="1.1em">)</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mover accent="true"><mml:mi mathvariant="bold">g</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi mathvariant="bold">g</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with Rayleigh numbers

              <disp-formula id="Ch1.Ex24"><mml:math id="M302" display="block"><mml:mrow><mml:mi>R</mml:mi><mml:msub><mml:mi>a</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>R</mml:mi><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">6</mml:mn></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e6633">Initial temperature was prescribed from boundary-layer theory <xref ref-type="bibr" rid="bib1.bibx50" id="paren.35"/>, and the composition field <inline-formula><mml:math id="M303" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula> was initialized as a dense basal layer <xref ref-type="bibr" rid="bib1.bibx48" id="paren.36"/>. Boundary conditions were no-slip at the bottom and free-slip elsewhere for velocity; <inline-formula><mml:math id="M304" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M305" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 at the bottom and <inline-formula><mml:math id="M306" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M307" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0 at the top with insulating sidewalls; and <inline-formula><mml:math id="M308" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M309" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1 at the bottom with homogeneous Neumann elsewhere. The transport equations for temperature <inline-formula><mml:math id="M310" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and composition <inline-formula><mml:math id="M311" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula> are

              <disp-formula id="Ch1.Ex25"><mml:math id="M312" display="block"><mml:mrow><mml:msub><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:msub><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>T</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M313" display="inline"><mml:mi mathvariant="italic">κ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M314" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M315" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> denotes the thermal diffusivity, with <inline-formula><mml:math id="M316" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> the thermal conductivity, <inline-formula><mml:math id="M317" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> the density, and <inline-formula><mml:math id="M318" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the specific heat capacity. For this benchmark, we set <inline-formula><mml:math id="M319" display="inline"><mml:mi mathvariant="italic">κ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M320" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1. Both fields were discretized with P1 discontinuous Galerkin elements using upwind fluxes. Time integration employed the second-order BDF2 scheme, initialized by backward Euler. The Stokes system was solved at each step with CD-U-<inline-formula><mml:math id="M321" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> or CD-U-<inline-formula><mml:math id="M322" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M323" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> Post-processing. Iterations were stopped once the normalized continuity residual <inline-formula><mml:math id="M324" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> fell below 10<sup>−3</sup>.</p>
      <p id="d2e6900">Figure <xref ref-type="fig" rid="F5"/> shows that the post-processing step improves accuracy in all fields. Velocity errors remain smaller at every stage, and the normalized continuity residual <inline-formula><mml:math id="M326" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is consistently lower. Since the composition and temperature fields are advected by the velocity, they also benefit and show clear error reductions. Over 5000 steps, these corrections accumulate, yielding higher long-term accuracy compared with the baseline solver.</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e6919">Mantle convection benchmark over 5000 time steps (<inline-formula><mml:math id="M327" 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="M328" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>). Comparison of CD-U-<inline-formula><mml:math id="M330" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with and without projection post-processing: <bold>(a)</bold> relative velocity error, <bold>(b)</bold> composition error, <bold>(c)</bold> temperature error, and <bold>(d)</bold> normalized divergence residual <inline-formula><mml:math id="M331" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p></caption>
            <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f05.png"/>

          </fig>

      <p id="d2e6988">Figure <xref ref-type="fig" rid="F6"/> shows composition and temperature errors at the final step. CD-U-<inline-formula><mml:math id="M332" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> alone produces noticeable errors near the interface, especially in the composition field. With post-processing, these localized errors are reduced, and the solution is closer to the reference from the direct LU solver MUMPS, which is effectively exact for the discrete system. This demonstrates that post-processing improves accuracy and aligns the iterative solution more closely with that of a direct solver.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e7002">Mantle convection benchmark at time step 5000. Reference fields: <bold>(a)</bold> composition and <bold>(b)</bold> temperature. Absolute errors for CD-U-<inline-formula><mml:math id="M333" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>: <bold>(c)</bold> composition and <bold>(d)</bold> temperature. Absolute errors for CD-U-<inline-formula><mml:math id="M334" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with projection: <bold>(e)</bold> composition and <bold>(f)</bold> temperature.</p></caption>
            <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f06.png"/>

          </fig>

      <p id="d2e7044">Table <xref ref-type="table" rid="T1"/> summarizes the solver cost for CD-U and CD-U-<inline-formula><mml:math id="M335" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with post-processing. The viscosity-weighted variant reduces the average number of momentum solves per step (2.40 vs. 3.05) under the same tolerance, leading to an overall runtime reduction of about 10 %. The extra mass-matrix operations in CD-U-<inline-formula><mml:math id="M336" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> (two solves per iteration instead of one) are inexpensive, contributing only about 1 %–2 % of the total cost. Similarly, the post-processing corrections, consisting of a Poisson solve and velocity update, account for only a small fraction of the runtime compared with the dominant momentum solves. The main benefit of CD-U-<inline-formula><mml:math id="M337" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> is therefore the reduction in momentum iterations, while the additional scalar operations have a negligible impact on efficiency.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e7073">Cost breakdown for 5000 steps (<inline-formula><mml:math id="M338" 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="M339" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>, tolerance 10<sup>−3</sup>, 32 cores). Only solver execution time is included. Both CD-U and CD-U-<inline-formula><mml:math id="M342" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> are shown with post-processing.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right" colsep="1"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col4" align="center" colsep="1">CD-U (Total 2036 s) </oasis:entry>
         <oasis:entry rowsep="1" namest="col5" nameend="col7" align="center">CD-U-<inline-formula><mml:math id="M343" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> (Total 1849 s) </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Step</oasis:entry>
         <oasis:entry colname="col2">Total Solves</oasis:entry>
         <oasis:entry colname="col3">% Time</oasis:entry>
         <oasis:entry colname="col4">Solves/step</oasis:entry>
         <oasis:entry colname="col5">Total Solves</oasis:entry>
         <oasis:entry colname="col6">% Time</oasis:entry>
         <oasis:entry colname="col7">Solves/step</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Momentum solves</oasis:entry>
         <oasis:entry colname="col2">15 264</oasis:entry>
         <oasis:entry colname="col3">73.2 %</oasis:entry>
         <oasis:entry colname="col4">3.05</oasis:entry>
         <oasis:entry colname="col5">11 998</oasis:entry>
         <oasis:entry colname="col6">69.1 %</oasis:entry>
         <oasis:entry colname="col7">2.40</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Mass-matrix solves (in Uzawa)</oasis:entry>
         <oasis:entry colname="col2">15 264</oasis:entry>
         <oasis:entry colname="col3">0.5 %</oasis:entry>
         <oasis:entry colname="col4">3.05</oasis:entry>
         <oasis:entry colname="col5">23 996</oasis:entry>
         <oasis:entry colname="col6">1.4 %</oasis:entry>
         <oasis:entry colname="col7">4.80</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Post-processing (Poisson)</oasis:entry>
         <oasis:entry colname="col2">5000</oasis:entry>
         <oasis:entry colname="col3">2.6 %</oasis:entry>
         <oasis:entry colname="col4">1.00</oasis:entry>
         <oasis:entry colname="col5">5000</oasis:entry>
         <oasis:entry colname="col6">3.0 %</oasis:entry>
         <oasis:entry colname="col7">1.00</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Post-processing (velocity)</oasis:entry>
         <oasis:entry colname="col2">5000</oasis:entry>
         <oasis:entry colname="col3">2.1 %</oasis:entry>
         <oasis:entry colname="col4">1.00</oasis:entry>
         <oasis:entry colname="col5">5000</oasis:entry>
         <oasis:entry colname="col6">2.3 %</oasis:entry>
         <oasis:entry colname="col7">1.00</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Composition advection</oasis:entry>
         <oasis:entry colname="col2">5000</oasis:entry>
         <oasis:entry colname="col3">3.3 %</oasis:entry>
         <oasis:entry colname="col4">1.00</oasis:entry>
         <oasis:entry colname="col5">5000</oasis:entry>
         <oasis:entry colname="col6">3.8 %</oasis:entry>
         <oasis:entry colname="col7">1.00</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Temperature advection</oasis:entry>
         <oasis:entry colname="col2">5000</oasis:entry>
         <oasis:entry colname="col3">18.3 %</oasis:entry>
         <oasis:entry colname="col4">1.00</oasis:entry>
         <oasis:entry colname="col5">5000</oasis:entry>
         <oasis:entry colname="col6">20.4 %</oasis:entry>
         <oasis:entry colname="col7">1.00</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
<sec id="Ch1.S3.SS4.SSS2">
  <label>3.4.2</label><title>Block sinking problem</title>
      <p id="d2e7352">The block sinking benchmark <xref ref-type="bibr" rid="bib1.bibx20" id="paren.37"/> is a two-material Stokes flow test designed to evaluate solver robustness under sharp density and viscosity contrasts. A dense, low-viscosity block sinks into a lighter and more viscous fluid. The interface was represented by a DG0 level-set field (<inline-formula><mml:math id="M344" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula>), positive inside the block, negative outside, and zero on the interface. The level-set was advected in time without reinitialization.</p>
      <p id="d2e7365">The domain <inline-formula><mml:math id="M345" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M346" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M347" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:msup><mml:mo>]</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> was discretized with 256 <inline-formula><mml:math id="M348" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 256 triangular P2-P1 Taylor–Hood elements for velocity and pressure. The block initially occupied 0.4 <inline-formula><mml:math id="M349" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M350" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M351" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> 0.6, 0.7 <inline-formula><mml:math id="M352" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M353" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M354" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> 0.9. Material properties showed strong contrasts: density 4200 vs. 2800, viscosity 0.1 vs. 100. All sides had free-slip boundaries, and the pressure was initialized uniformly. The body force was buoyancy,

              <disp-formula id="Ch1.Ex26"><mml:math id="M355" display="block"><mml:mrow><mml:mi mathvariant="bold">f</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</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:mspace linebreak="nobreak" width="0.125em"/><mml:mover accent="true"><mml:mi mathvariant="bold">g</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi mathvariant="bold">g</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M356" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> defined by the block geometry. The level-set was advanced using a Crank–Nicolson scheme.</p>
      <p id="d2e7515">Solver iterations used a relaxed stopping condition <inline-formula><mml:math id="M357" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M358" display="inline"><mml:mo>&lt;</mml:mo></mml:math></inline-formula> 0.2 due to the strong viscosity contrasts and interface-driven complexity. This avoided excessive momentum solves under a strict tolerance while still allowing an effective test of the post-processing step. The reference solution was computed with the direct LU solver MUMPS.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e7539">Block sinking benchmark over 1500 time steps (<inline-formula><mml:math id="M359" 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="M360" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M361" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>). Comparison of CD-U-<inline-formula><mml:math id="M363" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with and without projection: <bold>(a)</bold> relative velocity error <inline-formula><mml:math id="M364" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(b)</bold> density error <inline-formula><mml:math id="M365" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(c)</bold> level-set error <inline-formula><mml:math id="M366" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <bold>(d)</bold> normalized divergence residual <inline-formula><mml:math id="M367" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p></caption>
            <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f07.png"/>

          </fig>

      <p id="d2e7649">Figure <xref ref-type="fig" rid="F7"/> shows errors in velocity, density, level-set, and <inline-formula><mml:math id="M368" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the block sinking problem. Post-processing decreases both velocity and density errors and suppresses divergence. The irregular pattern in the density error comes from discontinuities along the block interface introduced by the DG0 scheme. The level-set error profile appears smoother. We observed that this reflects the nearly uniform field inside and outside the block. Post-processing helps maintain mass balance and improves agreement with the direct solver.</p>
      <p id="d2e7665">Figure <xref ref-type="fig" rid="F8"/> shows the density and level-set fields at the final step. Large density errors indicate loss of mass conservation, while post-processing reduces these errors and brings the results closer to the reference solution.</p>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e7672">Block sinking benchmark at the final step (1500, <inline-formula><mml:math id="M369" 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="M370" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M371" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>). Density field: <bold>(a)</bold> reference (MUMPS), <bold>(b)</bold> CD-U-<inline-formula><mml:math id="M373" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>, and <bold>(c)</bold> CD-U-<inline-formula><mml:math id="M374" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with projection. Level-set field: <bold>(d)</bold> reference (MUMPS), <bold>(e)</bold> CD-U-<inline-formula><mml:math id="M375" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>, and <bold>(f)</bold> CD-U-<inline-formula><mml:math id="M376" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with projection.</p></caption>
            <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f08.png"/>

          </fig>

      <p id="d2e7765">Table <xref ref-type="table" rid="T2"/> compares the solver cost for CD-U and CD-U-<inline-formula><mml:math id="M377" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with post-processing in the block sinking problem. The viscosity-weighted variant reduces the average number of momentum solves per step from 22.2 to 8.35, lowering the total runtime from 4168 to 1735 s. The extra mass-matrix solves in CD-U-<inline-formula><mml:math id="M378" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> are inexpensive, contributing only 1 %–2 % of the total. Post-processing corrections and level-set advection also remain minor. The main benefit of CD-U-<inline-formula><mml:math id="M379" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> is therefore the smaller iteration count in the momentum equations, while the additional scalar operations add little overhead.</p>

<table-wrap id="T2" specific-use="star"><label>Table 2</label><caption><p id="d2e7795">Solver cost breakdown for the block sinking simulation (1500 steps, <inline-formula><mml:math id="M380" 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="M381" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M382" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>, tolerance 0.2, 32 cores). Only solver execution time is included.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right" colsep="1"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col4" align="center" colsep="1">CD-U (Total 4168 s) </oasis:entry>
         <oasis:entry rowsep="1" namest="col5" nameend="col7" align="center">CD-U-<inline-formula><mml:math id="M384" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> (Total 1735 s) </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Step</oasis:entry>
         <oasis:entry colname="col2">Total Solves</oasis:entry>
         <oasis:entry colname="col3">% Time</oasis:entry>
         <oasis:entry colname="col4">Solves/step</oasis:entry>
         <oasis:entry colname="col5">Total Solves</oasis:entry>
         <oasis:entry colname="col6">% Time</oasis:entry>
         <oasis:entry colname="col7">Solves/step</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Momentum solves</oasis:entry>
         <oasis:entry colname="col2">33 359</oasis:entry>
         <oasis:entry colname="col3">98.5 %</oasis:entry>
         <oasis:entry colname="col4">22.2</oasis:entry>
         <oasis:entry colname="col5">12 523</oasis:entry>
         <oasis:entry colname="col6">97.2 %</oasis:entry>
         <oasis:entry colname="col7">8.35</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Mass-matrix solves (in Uzawa)</oasis:entry>
         <oasis:entry colname="col2">33 359</oasis:entry>
         <oasis:entry colname="col3">0.8 %</oasis:entry>
         <oasis:entry colname="col4">22.2</oasis:entry>
         <oasis:entry colname="col5">25 046</oasis:entry>
         <oasis:entry colname="col6">1.4 %</oasis:entry>
         <oasis:entry colname="col7">16.7</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Post-processing (Poisson)</oasis:entry>
         <oasis:entry colname="col2">1500</oasis:entry>
         <oasis:entry colname="col3">0.3 %</oasis:entry>
         <oasis:entry colname="col4">1.00</oasis:entry>
         <oasis:entry colname="col5">1500</oasis:entry>
         <oasis:entry colname="col6">0.7 %</oasis:entry>
         <oasis:entry colname="col7">1.00</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Post-processing (velocity)</oasis:entry>
         <oasis:entry colname="col2">1500</oasis:entry>
         <oasis:entry colname="col3">0.3 %</oasis:entry>
         <oasis:entry colname="col4">1.00</oasis:entry>
         <oasis:entry colname="col5">1500</oasis:entry>
         <oasis:entry colname="col6">0.8 %</oasis:entry>
         <oasis:entry colname="col7">1.00</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Level-set advection</oasis:entry>
         <oasis:entry colname="col2">1500</oasis:entry>
         <oasis:entry colname="col3">0.1 %</oasis:entry>
         <oasis:entry colname="col4">1.00</oasis:entry>
         <oasis:entry colname="col5">1500</oasis:entry>
         <oasis:entry colname="col6">0.2 %</oasis:entry>
         <oasis:entry colname="col7">1.00</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
</sec>
<sec id="Ch1.S3.SS5">
  <label>3.5</label><title>Compressible mantle convection</title>
      <p id="d2e8038">We next consider mantle convection under the Anelastic Liquid Approximation (ALA) <xref ref-type="bibr" rid="bib1.bibx44 bib1.bibx29" id="paren.38"/>, which incorporates depth-dependent density while filtering out fast acoustic modes. This benchmark follows <xref ref-type="bibr" rid="bib1.bibx29" id="paren.39"/> with Rayleigh number <italic>Ra</italic> <inline-formula><mml:math id="M385" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>5</sup> and dissipation number <italic>Di</italic> <inline-formula><mml:math id="M387" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.5. This case extends the projection-based correction to compressible formulations, where mass conservation is weighted by the background density profile.</p>
      <p id="d2e8077">Under ALA, mass conservation is expressed as

            <disp-formula id="Ch1.Ex27"><mml:math id="M388" display="block"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><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:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>exp⁡</mml:mi><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>D</mml:mi><mml:mi>i</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The momentum equation is

            <disp-formula id="Ch1.Ex28"><mml:math id="M389" display="block"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:msup><mml:mi>p</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:mi>R</mml:mi><mml:mi>a</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">α</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>T</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mover accent="true"><mml:mi mathvariant="bold">k</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>-</mml:mo><mml:mo mathsize="1.5em">(</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>D</mml:mi><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi>v</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="1.5em">)</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:msub><mml:mi mathvariant="italic">χ</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:msup><mml:mi>p</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold">k</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where

            <disp-formula id="Ch1.Ex29"><mml:math id="M390" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">μ</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">2</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">μ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><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 mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo mathsize="1.1em">(</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold">u</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:msup><mml:mi mathvariant="bold">u</mml:mi><mml:mo>⊤</mml:mo></mml:msup><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e8364">The temperature equation, including advection, diffusion, adiabatic heating, and viscous dissipation, is

            <disp-formula id="Ch1.Ex30"><mml:math id="M391" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:msub><mml:mi>c</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:msub><mml:mi>T</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>+</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:msub><mml:mi>c</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="bold">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mspace linebreak="nobreak" width="-0.125em"/><mml:mo mathsize="1.1em">(</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>T</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>+</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>+</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi>D</mml:mi><mml:mi>i</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi>u</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>T</mml:mi></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:mrow><mml:mi>D</mml:mi><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>R</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>:</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold">u</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          with the background profile

            <disp-formula id="Ch1.Ex31"><mml:math id="M392" display="block"><mml:mrow><mml:mover accent="true"><mml:mi>T</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>exp⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>D</mml:mi><mml:mi>i</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e8560">Time discretization used a second-order Crank–Nicolson scheme. Since viscosity is constant, CD-U and CD-U-<inline-formula><mml:math id="M393" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> coincide; the focus here is therefore on testing the robustness of the projection-based correction under compressible mass conservation.</p>
      <p id="d2e8571">To enforce the weighted continuity constraint after each Uzawa iteration, a <inline-formula><mml:math id="M394" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>-weighted velocity correction was applied. Given an intermediate velocity <inline-formula><mml:math id="M395" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>, we solved

            <disp-formula id="Ch1.Ex32"><mml:math id="M396" display="block"><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mo mathsize="1.1em">(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="bold">u</mml:mi><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          ensuring <inline-formula><mml:math id="M397" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> at the discrete level.</p>
      <p id="d2e8689">The computational domain <inline-formula><mml:math id="M398" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M399" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M400" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:msup><mml:mo>]</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> was discretized into 160 <inline-formula><mml:math id="M401" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 160 triangular Taylor–Hood (P2-P1) elements for velocity and pressure, and P1 discontinuous Galerkin elements for temperature. Viscosity was constant (<inline-formula><mml:math id="M402" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M403" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1). Free-slip boundaries were imposed on the horizontal sides and no-slip on the vertical sides. The temperature was fixed at the bottom (<inline-formula><mml:math id="M404" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M405" display="inline"><mml:mo>≈</mml:mo></mml:math></inline-formula> 0.09) and top (<inline-formula><mml:math id="M406" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M407" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0), with insulated sidewalls. Initial conditions included sinusoidal perturbations of the background temperature, and pressure was initialized to zero. The Uzawa method with conjugate directions (CD-U) was used as the baseline solver, with convergence tolerance <inline-formula><mml:math id="M408" display="inline"><mml:mrow><mml:msubsup><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:msubsup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M409" display="inline"><mml:mo>&lt;</mml:mo></mml:math></inline-formula> 10<sup>−3</sup>, and was compared against CD-U with projection-based correction. Reference solutions were computed using the direct solver MUMPS.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e8813">Compressible mantle convection under ALA over 5000 time steps (<inline-formula><mml:math id="M411" 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="M412" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>). <bold>(a)</bold> Relative velocity error <inline-formula><mml:math id="M414" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <bold>(b)</bold> relative temperature error <inline-formula><mml:math id="M415" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, comparing CD-U-<inline-formula><mml:math id="M416" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with and without <inline-formula><mml:math id="M417" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>-weighted velocity correction.</p></caption>
          <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f09.png"/>

        </fig>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e8899">Compressible mantle convection at the final step (5000, <inline-formula><mml:math id="M418" 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="M419" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>). <bold>(a)</bold> Reference temperature field (MUMPS), <bold>(b)</bold> absolute temperature error for CD-U-<inline-formula><mml:math id="M421" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>, and <bold>(c)</bold> absolute temperature error for CD-U-<inline-formula><mml:math id="M422" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> with <inline-formula><mml:math id="M423" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>-weighted correction.</p></caption>
          <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f10.png"/>

        </fig>

      <p id="d2e8971">Figure <xref ref-type="fig" rid="F9"/> shows that with constant viscosity the CD-U solver alone is already robust, but the <inline-formula><mml:math id="M424" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>-weighted correction further reduces errors in velocity and temperature. Figure <xref ref-type="fig" rid="F10"/> confirms improved accuracy near steep thermal gradients.</p>
      <p id="d2e8989">In terms of cost, the constant-viscosity ALA setup required only about 2–3 momentum solves per step on average, making it considerably cheaper than variable-viscosity cases. The <inline-formula><mml:math id="M425" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>-weighted correction added less than 20 % to the runtime, confirming that its accuracy benefits come at modest overhead.</p>
</sec>
</sec>
<sec id="Ch1.S4" sec-type="conclusions">
  <label>4</label><title>Conclusions</title>
      <p id="d2e9011">We revisited Uzawa-type algorithms for Stokes equations in geodynamics and propose two enhancements. The residual calculation was reformulated in variational form, which provides a natural preconditioner. We then extended this to a viscosity weighting version (CD-U-<inline-formula><mml:math id="M426" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>). This can be interpreted as a preconditioned conjugate gradient method for the Schur complement. The second enhancement applies a Helmholtz–Hodge projection as post-processing to the velocity field. This enforces the constraint more accurately. Through several benchmark tests, we confirmed that these two approaches help the algorithm obtain more accurate solutions.</p>
      <p id="d2e9021">Our benchmarks include smooth analytical flows, high-contrast SolCx, SolKz, multisinker, linear mantle convection, block sinking with multiphase interfaces, and compressible mantle convection under ALA. CD-U-<inline-formula><mml:math id="M427" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> converged faster and stayed robust under large viscosity contrasts. The projection step improved constraint satisfaction and enhanced long-term accuracy. In time-dependent simulations, small corrections at each step accumulated and substantially improved transported fields such as temperature, composition, and density.</p>
      <p id="d2e9032">In our benchmark tests, the additional cost of <inline-formula><mml:math id="M428" 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> residual and projection corrections was modest – less than 5 % of total solver time. Momentum solves remained the dominant component. The enhancements do not significantly change the overall cost. As the problem size increases, the relative cost of these corrections should decrease further since momentum solves become more dominant. Additionally, the viscosity-weighted variant helps reduce momentum iterations, further improving computational efficiency.</p>
      <p id="d2e9046">It is important to note that the projection step only corrects the velocity field and does not directly enhance pressure convergence. This highlights an inherent limitation of projection-based strategies, which are designed to enforce incompressibility. Since pressure plays a critical role in many geodynamic applications, its convergence remains governed by the underlying Uzawa iteration. Our focus here was to improve velocity and advected fields. Improving pressure convergence represents an important direction for future research.</p>
      <p id="d2e9050">In conclusion, projection-enhanced Uzawa solvers provide an algorithmic perspective on Schur complement preconditioning grounded in finite element variational principles. Since the entire formulation relies on inner products and variational forms, it naturally fits within general-purpose FEM libraries coupled with PETSc, and works across different platforms. The method performs well for both incompressible and compressible mantle convection problems with strong rheological complexity. These findings suggest that projection-enhanced Uzawa solvers can serve as a useful baseline for future work in geodynamic modeling.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Mesh refinement study using the SolKz benchmark</title>
      <p id="d2e9065">One of the most important properties of a numerical method is its behavior under mesh refinement, which verifies that the discrete solution converges to the continuous solution at the expected rate. All experiments in the main body use a fixed discretization, so we present here a systematic mesh refinement study.</p>
      <p id="d2e9068">We use the SolKz benchmark <xref ref-type="bibr" rid="bib1.bibx18" id="paren.40"/>, a two-dimensional Stokes problem on the unit square <inline-formula><mml:math id="M429" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M430" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M431" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:msup><mml:mo>]</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> with a smooth, exponentially varying viscosity <inline-formula><mml:math id="M432" display="inline"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>(</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M433" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M434" display="inline"><mml:mrow><mml:mi>exp⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>c</mml:mi><mml:mi>y</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and a dynamic ratio of <inline-formula><mml:math id="M435" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">6</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. The body force is chosen so that the analytical solution is known. We chose SolKz over the SolCx benchmark presented in Sect. 3 because the discontinuous viscosity in SolCx reduces solution regularity and prevents observation of optimal convergence rates with P2-P1 Taylor–Hood elements. The domain was discretized with structured triangular meshes from 32 <inline-formula><mml:math id="M436" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 32 to 1024 <inline-formula><mml:math id="M437" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1024 using P2-P1 Taylor–Hood elements, and reference solutions were obtained from the Underworld software <xref ref-type="bibr" rid="bib1.bibx34" id="paren.41"/>.</p>
      <p id="d2e9173">Table <xref ref-type="table" rid="TA1"/> reports the relative errors and the corresponding convergence orders. The method achieves the optimal convergence rates for P2-P1 Taylor–Hood elements: third order for velocity and second order for pressure. These rates are maintained consistently across all resolutions.</p>

<table-wrap id="TA1"><label>Table A1</label><caption><p id="d2e9182">Mesh refinement results for the SolKz benchmark using CD-U-<inline-formula><mml:math id="M438" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="center"/>
     <oasis:colspec colnum="3" colname="col3" align="center"/>
     <oasis:colspec colnum="4" colname="col4" align="center"/>
     <oasis:colspec colnum="5" colname="col5" align="center"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Resolution</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M439" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">Order</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M440" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">Order</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">32 <inline-formula><mml:math id="M441" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 32</oasis:entry>
         <oasis:entry colname="col2">1.877 <inline-formula><mml:math id="M442" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup></oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">1.591 <inline-formula><mml:math id="M444" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−2</sup></oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">64 <inline-formula><mml:math id="M446" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 64</oasis:entry>
         <oasis:entry colname="col2">2.316 <inline-formula><mml:math id="M447" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−4</sup></oasis:entry>
         <oasis:entry colname="col3">3.02</oasis:entry>
         <oasis:entry colname="col4">3.970 <inline-formula><mml:math id="M449" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup></oasis:entry>
         <oasis:entry colname="col5">2.00</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">128 <inline-formula><mml:math id="M451" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 128</oasis:entry>
         <oasis:entry colname="col2">2.888 <inline-formula><mml:math id="M452" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−5</sup></oasis:entry>
         <oasis:entry colname="col3">3.00</oasis:entry>
         <oasis:entry colname="col4">9.872 <inline-formula><mml:math id="M454" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−4</sup></oasis:entry>
         <oasis:entry colname="col5">2.01</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">256 <inline-formula><mml:math id="M456" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 256</oasis:entry>
         <oasis:entry colname="col2">3.610 <inline-formula><mml:math id="M457" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−6</sup></oasis:entry>
         <oasis:entry colname="col3">3.00</oasis:entry>
         <oasis:entry colname="col4">2.401 <inline-formula><mml:math id="M459" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−4</sup></oasis:entry>
         <oasis:entry colname="col5">2.04</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">512 <inline-formula><mml:math id="M461" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 512</oasis:entry>
         <oasis:entry colname="col2">4.514 <inline-formula><mml:math id="M462" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−7</sup></oasis:entry>
         <oasis:entry colname="col3">3.00</oasis:entry>
         <oasis:entry colname="col4">5.845 <inline-formula><mml:math id="M464" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−5</sup></oasis:entry>
         <oasis:entry colname="col5">2.04</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">1024 <inline-formula><mml:math id="M466" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1024</oasis:entry>
         <oasis:entry colname="col2">5.648 <inline-formula><mml:math id="M467" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−8</sup></oasis:entry>
         <oasis:entry colname="col3">3.00</oasis:entry>
         <oasis:entry colname="col4">1.490 <inline-formula><mml:math id="M469" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−5</sup></oasis:entry>
         <oasis:entry colname="col5">1.97</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e9617">For resolutions up to 256 <inline-formula><mml:math id="M471" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 256, the solver converged with AAR <inline-formula><mml:math id="M472" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1.0 without requiring adaptation. At 512 <inline-formula><mml:math id="M473" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 512, AAR adjustment occurred occasionally. At 1024 <inline-formula><mml:math id="M474" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1024, the adaptive AAR strategy described in Sect. 2.2 was essential for convergence. For this benchmark, stagnation was detected when <inline-formula><mml:math id="M475" display="inline"><mml:mrow><mml:mo>|</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mo>|</mml:mo><mml:mo>&lt;</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> for two consecutive iterations, and the AAR parameter was reduced by a factor of 0.1 at each trigger. The pointwise lower bound was set to <inline-formula><mml:math id="M476" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M477" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>.</p>
</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Projection post-processing vs. additional iterations</title>
      <p id="d2e9725">In time-dependent geodynamic simulations, the Stokes system must be solved at every time step. Iterating to tight convergence tolerances at each step is computationally expensive, since the dominant cost is the momentum solve. In practice, relaxed tolerances are often used to reduce runtime. However, the divergence residual that remains after each solve accumulates over thousands of time steps, degrading the accuracy of advected fields such as temperature, composition, and density. The projection post-processing introduced in Sect. 2.3 offers a potential remedy by enforcing the divergence-free constraint at the cost of only one additional Poisson solve per time step. An alternative strategy is simply to perform additional Uzawa iterations per step. To compare these two approaches in terms of cost and accuracy, we tested both on the mantle convection and block sinking benchmarks from Sect. 3.</p>
      <p id="d2e9728">In the results below, CD-U-<inline-formula><mml:math id="M479" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(<inline-formula><mml:math id="M480" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>iter) denotes <inline-formula><mml:math id="M481" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> iterations of the CD-U-<inline-formula><mml:math id="M482" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> solver per time step, and <inline-formula><mml:math id="M483" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>Proj indicates projection post-processing. Numbers in parentheses show the projection overhead.</p>
      <p id="d2e9766">Table <xref ref-type="table" rid="TB1"/> shows results for the mantle convection benchmark over 5000 steps with <inline-formula><mml:math id="M484" 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="M485" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>.</p>
      <p id="d2e9800">Table <xref ref-type="table" rid="TB2"/> shows results for the block sinking benchmark over 1500 steps with <inline-formula><mml:math id="M487" 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="M488" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M489" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−6</sup>. For this benchmark, the initial step iterates to tolerance, while subsequent steps use fixed iteration counts with the previous solution as an initial guess.</p>

<table-wrap id="TB1"><label>Table B1</label><caption><p id="d2e9846">Cost and accuracy comparison for the mantle convection benchmark.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Uzawa time</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M491" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M492" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M493" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">CD-U-<inline-formula><mml:math id="M494" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(2iter)</oasis:entry>
         <oasis:entry colname="col2">1277 s</oasis:entry>
         <oasis:entry colname="col3">0.0177</oasis:entry>
         <oasis:entry colname="col4">0.0138</oasis:entry>
         <oasis:entry colname="col5">0.00447</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CD-U-<inline-formula><mml:math id="M495" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(2iter)<inline-formula><mml:math id="M496" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>Proj</oasis:entry>
         <oasis:entry colname="col2">1355 s (<inline-formula><mml:math id="M497" display="inline"><mml:mo lspace="0mm">+</mml:mo></mml:math></inline-formula>78 s)</oasis:entry>
         <oasis:entry colname="col3">0.000633</oasis:entry>
         <oasis:entry colname="col4">0.00144</oasis:entry>
         <oasis:entry colname="col5">0.000120</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CD-U-<inline-formula><mml:math id="M498" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(3iter)</oasis:entry>
         <oasis:entry colname="col2">1704 s</oasis:entry>
         <oasis:entry colname="col3">0.00775</oasis:entry>
         <oasis:entry colname="col4">0.00975</oasis:entry>
         <oasis:entry colname="col5">0.00187</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CD-U-<inline-formula><mml:math id="M499" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(3iter)<inline-formula><mml:math id="M500" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>Proj</oasis:entry>
         <oasis:entry colname="col2">1783 s (<inline-formula><mml:math id="M501" display="inline"><mml:mo lspace="0mm">+</mml:mo></mml:math></inline-formula>79 s)</oasis:entry>
         <oasis:entry colname="col3">0.0000970</oasis:entry>
         <oasis:entry colname="col4">0.000263</oasis:entry>
         <oasis:entry colname="col5">0.0000178</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="TB2"><label>Table B2</label><caption><p id="d2e10047">Cost and accuracy comparison for the block sinking benchmark.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Uzawa time</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M502" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M503" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M504" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi mathvariant="italic">ρ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">CD-U-<inline-formula><mml:math id="M505" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(5iter)</oasis:entry>
         <oasis:entry colname="col2">1253 s</oasis:entry>
         <oasis:entry colname="col3">0.0449</oasis:entry>
         <oasis:entry colname="col4">0.0234</oasis:entry>
         <oasis:entry colname="col5">0.0236</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CD-U-<inline-formula><mml:math id="M506" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(5iter)<inline-formula><mml:math id="M507" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>Proj</oasis:entry>
         <oasis:entry colname="col2">1278 s (<inline-formula><mml:math id="M508" display="inline"><mml:mo lspace="0mm">+</mml:mo></mml:math></inline-formula>25 s)</oasis:entry>
         <oasis:entry colname="col3">0.00200</oasis:entry>
         <oasis:entry colname="col4">0.00384</oasis:entry>
         <oasis:entry colname="col5">0.00127</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CD-U-<inline-formula><mml:math id="M509" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(6iter)</oasis:entry>
         <oasis:entry colname="col2">1463 s</oasis:entry>
         <oasis:entry colname="col3">0.0336</oasis:entry>
         <oasis:entry colname="col4">0.0198</oasis:entry>
         <oasis:entry colname="col5">0.0160</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CD-U-<inline-formula><mml:math id="M510" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>(6iter)<inline-formula><mml:math id="M511" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>Proj</oasis:entry>
         <oasis:entry colname="col2">1485 s (<inline-formula><mml:math id="M512" display="inline"><mml:mo lspace="0mm">+</mml:mo></mml:math></inline-formula>22 s)</oasis:entry>
         <oasis:entry colname="col3">0.00875</oasis:entry>
         <oasis:entry colname="col4">0.00608</oasis:entry>
         <oasis:entry colname="col5">0.00113</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e10244">Both benchmarks show that projection adds only a small fraction of the total runtime while substantially improving accuracy. This efficiency comes from the cost difference between the two strategies: each additional Uzawa iteration requires solving the momentum equation, which is the most expensive component, whereas projection requires only one Poisson solve per time step. Moreover, since projection operates as a post-processing step, it is not limited to the Uzawa framework and can be combined with any iterative Stokes solver.</p>
</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>Three-dimensional thermochemical convection</title>
      <p id="d2e10257">To verify that the CD-U-<inline-formula><mml:math id="M513" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> algorithm and the projection post-processing operate correctly in three dimensions, we extend the two-dimensional thermochemical convection benchmark of Sect. 3.4.1 by adding a unit-depth lateral dimension. This test also demonstrates the algorithm with Mini elements (P1<inline-formula><mml:math id="M514" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>Bubble/P1), which satisfy the LBB stability condition independently of the Taylor–Hood elements used in all two-dimensional experiments. Since Mini elements carry fewer degrees of freedom per element than P2-P1 Taylor–Hood elements, they allow finer meshes to be used within the same computational budget, which is particularly advantageous in three dimensions.</p>
      <p id="d2e10274">The physical setup follows Sect. 3.4.1, extended to the three-dimensional domain <inline-formula><mml:math id="M515" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M516" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M517" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M518" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M519" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> discretized with a 100 <inline-formula><mml:math id="M520" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 50 <inline-formula><mml:math id="M521" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 50 structured tetrahedral mesh. Free-slip boundary conditions were applied on the additional sidewalls (<inline-formula><mml:math id="M522" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M523" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0 and <inline-formula><mml:math id="M524" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M525" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 1), with insulating conditions for temperature and homogeneous Neumann for composition. All other parameters, including the Rayleigh numbers, viscosity law, initial conditions, and transport discretization, are identical to Sect. 3.4.1. We adopted a fixed time step of <inline-formula><mml:math id="M526" 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="M527" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10<sup>−5</sup>, ten times larger than in the two-dimensional case, since the purpose of this test is to verify the algorithmic behavior rather than to assess solution accuracy, and the BDF2 time integration remains stable at this step size. The solution was advanced to the same target time <inline-formula><mml:math id="M529" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M530" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M531" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup>. The Stokes system was solved at each step with CD-U-<inline-formula><mml:math id="M533" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula>, with and without projection post-processing. Iterations were stopped once the normalized continuity residual <inline-formula><mml:math id="M534" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> fell below 10<sup>−3</sup>.</p>

      <fig id="FC1"><label>Figure C1</label><caption><p id="d2e10478">Three-dimensional thermochemical convection at <inline-formula><mml:math id="M536" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M537" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M538" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup> solved with CD-U-<inline-formula><mml:math id="M540" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M541" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> projection on a 100 <inline-formula><mml:math id="M542" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 50 <inline-formula><mml:math id="M543" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 50 Mini element mesh. <bold>(a)</bold> Composition field showing entrainment of the basal dense layer. <bold>(b)</bold> Normalized temperature field.</p></caption>
        
        <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f11.png"/>

      </fig>

      <p id="d2e10558">Since a direct solver reference solution is not feasible at this mesh resolution in three dimensions, the comparison focuses on the effect of the projection strategy rather than on accuracy relative to a reference.</p>
      <p id="d2e10562">Figure <xref ref-type="fig" rid="FC1"/> shows the composition and temperature fields at <inline-formula><mml:math id="M544" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M545" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M546" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup>, where thermal plumes and entrainment of the basal dense layer are consistent with the two-dimensional results.</p>
      <p id="d2e10600">Figure <xref ref-type="fig" rid="FC2"/>a and b show that the projection suppresses the divergence error throughout the domain, with the localized concentrations near the plume regions in (a) largely eliminated in (b). The <inline-formula><mml:math id="M548" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> history in Fig. <xref ref-type="fig" rid="FC2"/>c confirms that this reduction is maintained consistently across all time steps, with the projection lowering <inline-formula><mml:math id="M549" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> by approximately a factor of two, consistent with the two-dimensional results.</p><fig id="FC2"><label>Figure C2</label><caption><p id="d2e10631">Spatial distribution of <inline-formula><mml:math id="M550" display="inline"><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">u</mml:mi></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M551" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M552" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 5 <inline-formula><mml:math id="M553" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10<sup>−3</sup> for <bold>(a)</bold> CD-U-<inline-formula><mml:math id="M555" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> only and <bold>(b)</bold> CD-U-<inline-formula><mml:math id="M556" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M557" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> projection. <bold>(c)</bold> Evolution of the normalized weak divergence residual <inline-formula><mml:math id="M558" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">div</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> over 501 time steps for CD-U-<inline-formula><mml:math id="M559" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> only and CD-U-<inline-formula><mml:math id="M560" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M561" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> projection.</p></caption>
        
        <graphic xlink:href="https://se.copernicus.org/articles/17/1167/2026/se-17-1167-2026-f12.png"/>

      </fig>

</app>
  </app-group><notes notes-type="codeavailability"><title>Code availability</title>

      <p id="d2e10755">The numerical benchmarks used in this study (ABC flow, SolCx, SolKz, multisinker, mantle convection, block sinking, and compressible convection) are publicly available and documented in the cited references. All simulations were performed using the open-source finite element library FEniCS (version 2019.2.0.13) coupled with PETSc. The implementation code is available at <ext-link xlink:href="https://doi.org/10.5281/zenodo.22135967" ext-link-type="DOI">10.5281/zenodo.22135967</ext-link> <xref ref-type="bibr" rid="bib1.bibx27" id="paren.42"/>. Specific solver configurations and benchmark parameters are described in Sect. 3.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e10767">D.-K. J. designed the algorithms, implemented the software, and prepared the first draft of the manuscript.</p>

      <p id="d2e10770">K.-M. L. carried out the numerical experiments, performed the data analysis and contributed to the review of the manuscript.</p>

      <p id="d2e10773">C. T. contributed substantially to shaping the core ideas of the paper through revisions and provided major input during the manuscript editing process.</p>

      <p id="d2e10776">W.-H. C. assisted in numerical implementation, provided feedback on data interpretation, and contributed to securing financial support.</p>

      <p id="d2e10779">B.-D. S. supervised the project, acquired funding, and revised the manuscript.</p>

      <p id="d2e10783">All authors discussed the results and contributed to the final version of the paper.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

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

      <p id="d2e10795">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="d2e10803">This work was supported by the National Research Foundation of Korea (NRF) grants funded by the Korea government (no. RS-2025-00519120 to Deok-Kyu Jang, nos. RS-2025-25415913 and NRF-2022R1C2011689 to Whan-Hyuk Choi, and nos. RS-2019-NR040076, RS-2023-00256330 and RS-2025-02293161 to Byung-Dal So).</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e10808">This research has been supported by the National Research Foundation of Korea (grant nos. RS-2025-00519120, RS-2025-25415913, NRF-2022R1C2011689, RS-2019-NR040076, RS-2023-00256330, and RS-2025-02293161).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e10814">This paper was edited by Taras Gerya and reviewed by G. Stadler and Stefan Markus Schmalholz.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Alnæs et al.(2015)</label><mixed-citation>Alnæs, M., Blechta, J., Hake, J., Johansson, A., Kehlet, B., Logg, A.,  Richardson, C., Ring, J., Rognes, M. E., and Wells, G. N.: The FEniCS project  version 1.5, Archive of Numerical Software, 3,  <ext-link xlink:href="https://doi.org/10.11588/ans.2015.100.20553" ext-link-type="DOI">10.11588/ans.2015.100.20553</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Amestoy et al.(2000)</label><mixed-citation>Amestoy, P. R., Duff, I. S., L'Excellent, J.-Y., and Koster, J.: MUMPS: a  general purpose distributed memory sparse solver, in: International Workshop  on Applied Parallel Computing, Springer, 121–130, <ext-link xlink:href="https://doi.org/10.1007/3-540-70734-4_16" ext-link-type="DOI">10.1007/3-540-70734-4_16</ext-link>, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Arrow et al.(1958)</label><mixed-citation> Arrow, K. J., Hurwicz, L., Uzawa, H., Chenery, H. B., Johnson, S., and Karlin, S.: Studies in linear and non-linear programming, vol. 2, Stanford University Press Stanford, 229 pp., 1958.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Babuška(1973)</label><mixed-citation>Babuška, I.: The finite element method with Lagrangian multipliers,  Numer. Math., 20, 179–192, <ext-link xlink:href="https://doi.org/10.1007/BF01436561" ext-link-type="DOI">10.1007/BF01436561</ext-link>, 1973.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bai and Wang(2008)</label><mixed-citation>Bai, Z.-Z. and Wang, Z.-Q.: On parameterized inexact Uzawa methods for  generalized saddle point problems, Linear Algebra Appl., 428, 2900–2932, <ext-link xlink:href="https://doi.org/10.1016/j.laa.2008.01.018" ext-link-type="DOI">10.1016/j.laa.2008.01.018</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Balay et al.(2024)</label><mixed-citation> Balay, S., Abhyankar, S., Adams, M. F., Benson, S., Brown, J., Brune, P., Buschelman, K., Constantinescu, E. M., Dalcin, L., Dener, A., Eijkhout, V., Faibussowitsch, J., Gropp, W. D., Hapla, V., Isaac, T., Jolivet, P., Karpeev, D., Kaushik, D., Knepley, M. G., Kong, F., Kruger, S., May, D. A., McInnes, L. C., Mills, R. T., Mitchell, L., Munson, T., Roman, J. E., Rupp, K., Sanan, P., Sarich, J., Smith, B. F., Suh, H., Zampini, S., Zhang, H., Zhang, H., and Zhang, J.: PETSc/TAO Users Manual Revision 3.22, Tech. rep., ANL-21/39 Rev. 3.22, Argonne National Laboratory (ANL), Argonne, IL, United States,  2024.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Bell et al.(1989)</label><mixed-citation>Bell, J. B., Colella, P., and Glaz, H. M.: A second-order projection method for the incompressible Navier-Stokes equations, J. Comput. Phys., 85, 257–283, <ext-link xlink:href="https://doi.org/10.1016/0021-9991(89)90151-4" ext-link-type="DOI">10.1016/0021-9991(89)90151-4</ext-link>, 1989.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Benzi et al.(2005)</label><mixed-citation>Benzi, M., Golub, G. H., and Liesen, J.: Numerical solution of saddle point  problems, Acta Numer., 14, 1–137, <ext-link xlink:href="https://doi.org/10.1017/S0962492904000212" ext-link-type="DOI">10.1017/S0962492904000212</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Blankenbach et al.(1989)</label><mixed-citation>Blankenbach, B., Busse, F., Christensen, U., Cserepes, L., Gunkel, D., Hansen, U., Harder, H., Jarvis, G., Koch, M., Marquart, G., Moore, D., Olson, P., Schmeling, H., and Schnaubelt, T.: A benchmark comparison for mantle convection codes, Geophys. J. Int., 98, 23–38, <ext-link xlink:href="https://doi.org/10.1111/j.1365-246X.1989.tb05511.x" ext-link-type="DOI">10.1111/j.1365-246X.1989.tb05511.x</ext-link>, 1989.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Braess(2001)</label><mixed-citation> Braess, D.: Finite elements: Theory, fast solvers, and applications in solid  mechanics, 2nd edn., ISBN 978-0-521-01195-2, Cambridge University Press, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Brezzi(1974)</label><mixed-citation>Brezzi, F.: On the existence, uniqueness and approximation of saddle-point problems arising from Lagrangian multipliers, RAIRO Anal. Numér., 8, 129–151, <ext-link xlink:href="https://doi.org/10.1051/m2an/197408R201291" ext-link-type="DOI">10.1051/m2an/197408R201291</ext-link>, 1974.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Brown et al.(2001)</label><mixed-citation>Brown, D. L., Cortez, R., and Minion, M. L.: Accurate projection methods for  the incompressible Navier–Stokes equations, J. Comput. Phys., 168, 464–499, <ext-link xlink:href="https://doi.org/10.1006/jcph.2001.6715" ext-link-type="DOI">10.1006/jcph.2001.6715</ext-link>, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Brune et al.(2012)</label><mixed-citation>Brune, S., Popov, A. A., and Sobolev, S. V.: Modeling suggests that oblique  extension facilitates rifting and continental break-up, J. Geophys. Res.-Sol. Ea., 117, <ext-link xlink:href="https://doi.org/10.1029/2011JB008860" ext-link-type="DOI">10.1029/2011JB008860</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Cahouet and Chabard(1988)</label><mixed-citation>Cahouet, J. and Chabard, J.-P.: Some fast 3D finite element solvers for the  generalized Stokes problem, Int. J. Numer. Meth. Fl., 8, 869–895, <ext-link xlink:href="https://doi.org/10.1002/fld.1650080802" ext-link-type="DOI">10.1002/fld.1650080802</ext-link>, 1988.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Chen(1998)</label><mixed-citation>Chen, X.: On preconditioned Uzawa methods and SOR methods for saddle-point  problems, J. Computat. Appl. Math., 100, 207–224,  <ext-link xlink:href="https://doi.org/10.1016/S0377-0427(98)00197-6" ext-link-type="DOI">10.1016/S0377-0427(98)00197-6</ext-link>, 1998.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Chorin(1967)</label><mixed-citation>Chorin, A. J.: The numerical solution of the Navier-Stokes equations for an  incompressible fluid, B. Am. Math. Soc., 73, 928–931, <ext-link xlink:href="https://doi.org/10.1090/S0002-9904-1967-11853-6" ext-link-type="DOI">10.1090/S0002-9904-1967-11853-6</ext-link>, 1967.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Do et al.(2023)</label><mixed-citation>Do, S.-H., So, B.-D., Kim, Y.-G., and Kim, G.-B.: Lithospheric strength  inferred from modeling of buckling structure: Implications for stress state  of the East Sea (Japan Sea), Tectonophysics, 858, 229859,  <ext-link xlink:href="https://doi.org/10.1016/j.tecto.2023.229859" ext-link-type="DOI">10.1016/j.tecto.2023.229859</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Duretz et al.(2011)</label><mixed-citation>Duretz, T., May, D. A., Gerya, T., and Tackley, P.: Discretization errors and  free surface stabilization in the finite difference and marker-in-cell method  for applied geodynamics: A numerical study, Geochem. Geophy. Geosy., 12, <ext-link xlink:href="https://doi.org/10.1029/2011GC003567" ext-link-type="DOI">10.1029/2011GC003567</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Elman and Golub(1994)</label><mixed-citation>Elman, H. C. and Golub, G. H.: Inexact and preconditioned Uzawa algorithms for saddle point problems, SIAM J. Numer. Anal., 31, 1645–1661,  <ext-link xlink:href="https://doi.org/10.1137/0731085" ext-link-type="DOI">10.1137/0731085</ext-link>, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Gerya(2019)</label><mixed-citation>Gerya, T.: Introduction to numerical geodynamic modelling, Cambridge University Press, <ext-link xlink:href="https://doi.org/10.1017/9781316534243" ext-link-type="DOI">10.1017/9781316534243</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Gerya(2022)</label><mixed-citation>Gerya, T.: Numerical modeling of subduction: State of the art and future  directions, Geosphere, 18, 503–561, <ext-link xlink:href="https://doi.org/10.1130/GES02416.1" ext-link-type="DOI">10.1130/GES02416.1</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Gmeiner et al.(2016)</label><mixed-citation>Gmeiner, B., Huber, M., John, L., Rüde, U., and Wohlmuth, B.: A  quantitative performance study for Stokes solvers at the extreme scale, J. Comput. Sci., 17, 509–521, <ext-link xlink:href="https://doi.org/10.1016/j.jocs.2016.06.006" ext-link-type="DOI">10.1016/j.jocs.2016.06.006</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Guermond and Quartapelle(1998)</label><mixed-citation>Guermond, J.-L. and Quartapelle, L.: On the approximation of the unsteady  Navier–Stokes equations by finite element projection methods, Numer. Math., 80, 207–238, <ext-link xlink:href="https://doi.org/10.1007/s002110050366" ext-link-type="DOI">10.1007/s002110050366</ext-link>, 1998.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Hestenes and Stiefel(1952)</label><mixed-citation>Hestenes, M. R. and Stiefel, E.: Methods of conjugate gradients for solving linear systems, J. Res. Nat. Bur. Stand., 49, 409–436, <ext-link xlink:href="https://doi.org/10.6028/jres.049.044" ext-link-type="DOI">10.6028/jres.049.044</ext-link>, 1952.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Huismans et al.(2001)</label><mixed-citation>Huismans, R. S., Podladchikov, Y. Y., and Cloetingh, S.: Dynamic modeling of the transition from passive to active rifting, application to the Pannonian basin, Tectonics, 20, 1021–1039, <ext-link xlink:href="https://doi.org/10.1029/2001TC900010" ext-link-type="DOI">10.1029/2001TC900010</ext-link>, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Ismail-Zadeh et al.(2006)</label><mixed-citation>Ismail-Zadeh, A., Schubert, G., Tsepelev, I., and Korotkii, A.:  Three-dimensional forward and backward numerical modeling of mantle plume  evolution: Effects of thermal diffusion, J. Geophys. Res.-Sol. Ea., 111, <ext-link xlink:href="https://doi.org/10.1029/2005JB003782" ext-link-type="DOI">10.1029/2005JB003782</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Jang et al.(2026)</label><mixed-citation>Jang, D.-K., Lee, K.-M., Thieulot, C., Choi, W.-H., and So, B.-D.: Efficient  Uzawa Algorithms with Projection Strategies for Geodynamic Stokes Flow, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.22135967" ext-link-type="DOI">10.5281/zenodo.22135967</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Kim and So(2020)</label><mixed-citation>Kim, D.-H. and So, B.-D.: Effects of rheology and mantle temperature structure on edge-driven convection: Implications for partial melting and dynamic topography, Phys. Earth Planet. In., 303, 106487,  <ext-link xlink:href="https://doi.org/10.1016/j.pepi.2020.106487" ext-link-type="DOI">10.1016/j.pepi.2020.106487</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>King et al.(2008)</label><mixed-citation> King, S., Lee, C., Leng, W., Zhong, S., van Keken, P., Tan, E., Gurnis, M., and Tosi, N.: A Community Benchmark for 2D Cartesian Compressible Convection, AGU Fall Meeting Abstracts, 2008, DI31A–1772, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Kronbichler et al.(2012)</label><mixed-citation>Kronbichler, M., Heister, T., and Bangerth, W.: High accuracy mantle convection simulation through modern numerical methods, Geophys. J. Int., 191, 12–29, <ext-link xlink:href="https://doi.org/10.1111/j.1365-246X.2012.05609.x" ext-link-type="DOI">10.1111/j.1365-246X.2012.05609.x</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Lee et al.(2024)</label><mixed-citation>Lee, K.-M., Kim, H.-I., Jang, D.-K., and So, B.-D.: A comparative study of 2D  numerical simulations using vector and potential methods for extending 3D  modeling of planetary evolution, Geosci. J., 28, 465–481,  <ext-link xlink:href="https://doi.org/10.1007/s12303-024-0013-5" ext-link-type="DOI">10.1007/s12303-024-0013-5</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Li and Gurnis(2023)</label><mixed-citation>Li, Y. and Gurnis, M.: A simple force balance model of subduction initiation,  Geophys. J. Int., 232, 128–146, <ext-link xlink:href="https://doi.org/10.1093/gji/ggac332" ext-link-type="DOI">10.1093/gji/ggac332</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Logg et al.(2012)</label><mixed-citation>Logg, A., Mardal, K.-A., and Wells, G. (Eds.): Automated solution of differential  equations by the finite element method: The FEniCS book, vol. 84, Springer  Science &amp; Business Media, <ext-link xlink:href="https://doi.org/10.1007/978-3-642-23099-8" ext-link-type="DOI">10.1007/978-3-642-23099-8</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Mansour et al.(2020)</label><mixed-citation>Mansour, J. A., Giordani, J., Moresi, L., Beucher, R., Kaluza, O., Velic, M.,  Farrington, R., Quenette, S., and Beall, A.: Underworld2: Python geodynamics  modelling for desktop, HPC and cloud, Journal of Open Source Software, 5,  1797, <ext-link xlink:href="https://doi.org/10.21105/joss.01797" ext-link-type="DOI">10.21105/joss.01797</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>May and Moresi(2008)</label><mixed-citation>May, D. A. and Moresi, L.: Preconditioned iterative methods for Stokes flow  problems arising in computational geodynamics, Phys. Earth Planet. In., 171, 33–47, <ext-link xlink:href="https://doi.org/10.1016/j.pepi.2008.07.036" ext-link-type="DOI">10.1016/j.pepi.2008.07.036</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Moresi and Gurnis(1996)</label><mixed-citation>Moresi, L. and Gurnis, M.: The accuracy of finite element solutions of Stokes  flow with strongly varying viscosity, Phys. Earth Planet. In., 97, 83–94, <ext-link xlink:href="https://doi.org/10.1016/0031-9201(96)03163-9" ext-link-type="DOI">10.1016/0031-9201(96)03163-9</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Moresi et al.(2007)</label><mixed-citation>Moresi, L., Quenette, S., Lemiale, V., Meriaux, C., Appelbe, B., and  Mühlhaus, H.-B.: Computational approaches to studying non-linear dynamics  of the crust and mantle, Phys. Earth Planet. In., 163, 69–82, <ext-link xlink:href="https://doi.org/10.1016/j.pepi.2007.06.009" ext-link-type="DOI">10.1016/j.pepi.2007.06.009</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Negredo et al.(2022)</label><mixed-citation>Negredo, A. M., van Hunen, J., Rodríguez-González, J., and Fullea, J.: On the origin of the Canary Islands: Insights from mantle convection  modelling, Earth Planet. Sc. Lett., 584, 117506,  <ext-link xlink:href="https://doi.org/10.1016/j.epsl.2022.117506" ext-link-type="DOI">10.1016/j.epsl.2022.117506</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Pyo and Shen(2007)</label><mixed-citation>Pyo, J.-H. and Shen, J.: Gauge–Uzawa methods for incompressible flows with  variable density, J. Computat. Phys., 221, 181–197,  <ext-link xlink:href="https://doi.org/10.1016/j.jcp.2006.06.013" ext-link-type="DOI">10.1016/j.jcp.2006.06.013</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Ramage and Wathen(1994)</label><mixed-citation>Ramage, A. and Wathen, A. J.: Iterative solution techniques for the Stokes and Navier-Stokes equations, Int. J. Numer. Meth. Fl., 19, 67–83, <ext-link xlink:href="https://doi.org/10.1002/fld.1650190106" ext-link-type="DOI">10.1002/fld.1650190106</ext-link>, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Rudi et al.(2017)Rudi, Stadler, and Ghattas</label><mixed-citation>Rudi, J., Stadler, G., and Ghattas, O.: Weighted BFBT preconditioner for Stokes flow problems with highly heterogeneous viscosity, SIAM J. Sci.  Comput., 39, S272–S297, <ext-link xlink:href="https://doi.org/10.1137/16M108450X" ext-link-type="DOI">10.1137/16M108450X</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Saad(2003)</label><mixed-citation>Saad, Y.: Iterative methods for sparse linear systems, SIAM,  <ext-link xlink:href="https://doi.org/10.1137/1.9780898718003" ext-link-type="DOI">10.1137/1.9780898718003</ext-link>, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Saad and Schultz(1986)</label><mixed-citation>Saad, Y. and Schultz, M. H.: GMRES: A generalized minimal residual algorithm  for solving nonsymmetric linear systems, SIAM J. Sci. Stat. Comp., 7, 856–869, <ext-link xlink:href="https://doi.org/10.1137/0907058" ext-link-type="DOI">10.1137/0907058</ext-link>, 1986.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Schubert et al.(2001)</label><mixed-citation>Schubert, G., Turcotte, D. L., and Olson, P.: Mantle Convection in the Earth  and Planets, Cambridge University Press, <ext-link xlink:href="https://doi.org/10.1017/CBO9780511612879" ext-link-type="DOI">10.1017/CBO9780511612879</ext-link>,  2001.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Silvester and Wathen(1994)</label><mixed-citation>Silvester, D. and Wathen, A.: Fast iterative solution of stabilised Stokes  systems Part II: Using general block preconditioners, SIAM J. Numer. Anal., 31, 1352–1367, <ext-link xlink:href="https://doi.org/10.1137/0731070" ext-link-type="DOI">10.1137/0731070</ext-link>, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Sime et al.(2024)</label><mixed-citation>Sime, N., Wilson, C. R., and van Keken, P. E.: Thermal modeling of subduction  zones with prescribed and evolving 2D and 3D slab geometries, Progress in  Earth and Planetary Science, 11, 14, <ext-link xlink:href="https://doi.org/10.1186/s40645-024-00611-4" ext-link-type="DOI">10.1186/s40645-024-00611-4</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>So and Yuen(2015)</label><mixed-citation>So, B.-D. and Yuen, D. A.: Generation of tectonic over-pressure inside  subducting oceanic lithosphere involving phase-loop of olivine–wadsleyite  transition, Earth Planet. Sc. Lett., 413, 59–69,  <ext-link xlink:href="https://doi.org/10.1016/j.epsl.2014.12.048" ext-link-type="DOI">10.1016/j.epsl.2014.12.048</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Tan and Gurnis(2005)</label><mixed-citation>Tan, E. and Gurnis, M.: Metastable superplumes and mantle compressibility,  Geophys. Res. Lett., 32, <ext-link xlink:href="https://doi.org/10.1029/2005GL024190" ext-link-type="DOI">10.1029/2005GL024190</ext-link>, 2005. </mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Thieulot and Bangerth(2025)</label><mixed-citation>Thieulot, C. and Bangerth, W.: On the choice of finite element for applications in geodynamics – Part 2: A comparison of simplex and hypercube elements, Solid Earth, 16, 457–476, <ext-link xlink:href="https://doi.org/10.5194/se-16-457-2025" ext-link-type="DOI">10.5194/se-16-457-2025</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>van Keken(1997)</label><mixed-citation>van Keken, P.: Evolution of starting mantle plumes: a comparison between  numerical and laboratory models, Earth Planet. Sc. Lett., 148, 1–11, <ext-link xlink:href="https://doi.org/10.1016/S0012-821X(97)00042-3" ext-link-type="DOI">10.1016/S0012-821X(97)00042-3</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>Vynnytska et al.(2013)</label><mixed-citation>Vynnytska, L., Rognes, M. E., and Clark, S.: Benchmarking FEniCS for mantle  convection simulations, Comput. Geosci., 50, 95–105,  <ext-link xlink:href="https://doi.org/10.1016/j.cageo.2012.05.012" ext-link-type="DOI">10.1016/j.cageo.2012.05.012</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>Wang et al.(2015)</label><mixed-citation>Wang, H., Agrusta, R., and van Hunen, J.: Advantages of a conservative velocity interpolation (CVI) scheme for particle-in-cell methods with application in geodynamic modeling, Geochem. Geophy. Geosy., 16, 4148–4166,  <ext-link xlink:href="https://doi.org/10.1002/2015GC005824" ext-link-type="DOI">10.1002/2015GC005824</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>Wilson et al.(2017)</label><mixed-citation>Wilson, C. R., Spiegelman, M., and van Keken, P. E.: Terra FERMA: The  Transparent Finite Element Rapid Model Assembler for multiphysics problems in  Earth sciences, Geochem. Geophy. Geosy., 18, 769–810,  <ext-link xlink:href="https://doi.org/10.1002/2016GC006702" ext-link-type="DOI">10.1002/2016GC006702</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Xie et al.(2024)</label><mixed-citation>Xie, R., Chen, L., Morgan, J. P., and Chen, Y. J.: Various lithospheric deformation patterns derived from rheological contrasts between continental terranes: insights from 2-D numerical simulations, Solid Earth, 15, 789–806, <ext-link xlink:href="https://doi.org/10.5194/se-15-789-2024" ext-link-type="DOI">10.5194/se-15-789-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>Zhamaletdinov et al.(2011)</label><mixed-citation>Zhamaletdinov, A., Shevtsov, A., Korotkova, T., Kopytenko, Y. A., Ismagilov,  V. S., Petrishev, M. S., Efimov, B. V., Barannik, M. B., Kolobov, V. V., Prokopchuk, P. I., Smirnov, M. Yu., Vagin, S. A., Pertel, M. I., Tereshchenko, E. D., Vasil’ev, A. N., Grigoryev, V. F., Gokhberg, M. B., Trofimchik, V. I., Yampolsky, Yu. M., Koloskov, A. V., Fedorov, A. V., and Korja, T.: Deep electromagnetic sounding of the lithosphere  in the Eastern Baltic (Fennoscandian) shield with high-power controlled  sources and industrial power transmission lines (FENICS experiment), Izvestiya, Physics of the Solid Earth, 47, 22, <ext-link xlink:href="https://doi.org/10.1134/S1069351311010149" ext-link-type="DOI">10.1134/S1069351311010149</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx56"><label>Zhao et al.(1993)</label><mixed-citation>Zhao, X.-H., Kwek, K.-H., Li, J.-B., and Huang, K.-L.: Chaotic and resonant  streamlines in the ABC flow, SIAM J. Appl. Math., 53, 71–77,  <ext-link xlink:href="https://doi.org/10.1137/0153005" ext-link-type="DOI">10.1137/0153005</ext-link>, 1993.</mixed-citation></ref>
      <ref id="bib1.bibx57"><label>Zhong(1996)</label><mixed-citation>Zhong, S.: Analytic solutions for Stokes' flow with lateral variations in  viscosity, Geophys. J. Int., 124, 18–28,  <ext-link xlink:href="https://doi.org/10.1111/j.1365-246X.1996.tb06349.x" ext-link-type="DOI">10.1111/j.1365-246X.1996.tb06349.x</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx58"><label>Zhong et al.(2000)</label><mixed-citation>Zhong, S., Zuber, M. T., Moresi, L., and Gurnis, M.: Role of  temperature-dependent viscosity and surface plates in spherical shell models  of mantle convection, J. Geophys. Res.-Sol. Ea., 105, 11063–11082, <ext-link xlink:href="https://doi.org/10.1029/2000JB900003" ext-link-type="DOI">10.1029/2000JB900003</ext-link>, 2000.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Efficient Uzawa algorithms with projection strategies for geodynamic Stokes flow</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Alnæs et al.(2015)</label><mixed-citation>
      
Alnæs, M., Blechta, J., Hake, J., Johansson, A., Kehlet, B., Logg, A.,  Richardson, C., Ring, J., Rognes, M. E., and Wells, G. N.: The FEniCS project  version 1.5, Archive of Numerical Software, 3,  <a href="https://doi.org/10.11588/ans.2015.100.20553" target="_blank">https://doi.org/10.11588/ans.2015.100.20553</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Amestoy et al.(2000)</label><mixed-citation>
      
Amestoy, P. R., Duff, I. S., L'Excellent, J.-Y., and Koster, J.: MUMPS: a  general purpose distributed memory sparse solver, in: International Workshop  on Applied Parallel Computing, Springer, 121–130, <a href="https://doi.org/10.1007/3-540-70734-4_16" target="_blank">https://doi.org/10.1007/3-540-70734-4_16</a>, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Arrow et al.(1958)</label><mixed-citation>
      
Arrow, K. J., Hurwicz, L., Uzawa, H., Chenery, H. B., Johnson, S., and Karlin, S.: Studies in linear and non-linear programming, vol. 2, Stanford University Press Stanford, 229 pp., 1958.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Babuška(1973)</label><mixed-citation>
      
Babuška, I.: The finite element method with Lagrangian multipliers,  Numer. Math., 20, 179–192, <a href="https://doi.org/10.1007/BF01436561" target="_blank">https://doi.org/10.1007/BF01436561</a>, 1973.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bai and Wang(2008)</label><mixed-citation>
      
Bai, Z.-Z. and Wang, Z.-Q.: On parameterized inexact Uzawa methods for  generalized saddle point problems, Linear Algebra Appl., 428, 2900–2932, <a href="https://doi.org/10.1016/j.laa.2008.01.018" target="_blank">https://doi.org/10.1016/j.laa.2008.01.018</a>, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Balay et al.(2024)</label><mixed-citation>
      
Balay, S., Abhyankar, S., Adams, M. F., Benson, S., Brown, J., Brune, P., Buschelman, K., Constantinescu, E. M., Dalcin, L., Dener, A., Eijkhout, V., Faibussowitsch, J., Gropp, W. D., Hapla, V., Isaac, T., Jolivet, P., Karpeev, D., Kaushik, D., Knepley, M. G., Kong, F., Kruger, S., May, D. A., McInnes, L. C., Mills, R. T., Mitchell, L., Munson, T., Roman, J. E., Rupp, K., Sanan, P., Sarich, J., Smith, B. F., Suh, H., Zampini, S., Zhang, H., Zhang, H., and Zhang, J.: PETSc/TAO Users Manual Revision 3.22, Tech. rep., ANL-21/39 Rev. 3.22, Argonne National Laboratory (ANL), Argonne, IL, United States,  2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Bell et al.(1989)</label><mixed-citation>
      
Bell, J. B., Colella, P., and Glaz, H. M.: A second-order projection method for the incompressible Navier-Stokes equations, J. Comput. Phys., 85, 257–283, <a href="https://doi.org/10.1016/0021-9991(89)90151-4" target="_blank">https://doi.org/10.1016/0021-9991(89)90151-4</a>, 1989.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Benzi et al.(2005)</label><mixed-citation>
      
Benzi, M., Golub, G. H., and Liesen, J.: Numerical solution of saddle point  problems, Acta Numer., 14, 1–137, <a href="https://doi.org/10.1017/S0962492904000212" target="_blank">https://doi.org/10.1017/S0962492904000212</a>, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Blankenbach et al.(1989)</label><mixed-citation>
      
Blankenbach, B., Busse, F., Christensen, U., Cserepes, L., Gunkel, D., Hansen, U., Harder, H., Jarvis, G., Koch, M., Marquart, G., Moore, D., Olson, P., Schmeling, H., and Schnaubelt, T.: A benchmark comparison for mantle convection codes, Geophys. J. Int., 98, 23–38, <a href="https://doi.org/10.1111/j.1365-246X.1989.tb05511.x" target="_blank">https://doi.org/10.1111/j.1365-246X.1989.tb05511.x</a>, 1989.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Braess(2001)</label><mixed-citation>
      
Braess, D.: Finite elements: Theory, fast solvers, and applications in solid  mechanics, 2nd edn., ISBN&thinsp;978-0-521-01195-2, Cambridge University Press, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Brezzi(1974)</label><mixed-citation>
      
Brezzi, F.: On the existence, uniqueness and approximation of saddle-point problems arising from Lagrangian multipliers, RAIRO Anal. Numér., 8, 129–151, <a href="https://doi.org/10.1051/m2an/197408R201291" target="_blank">https://doi.org/10.1051/m2an/197408R201291</a>, 1974.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Brown et al.(2001)</label><mixed-citation>
      
Brown, D. L., Cortez, R., and Minion, M. L.: Accurate projection methods for  the incompressible Navier–Stokes equations, J. Comput. Phys., 168, 464–499, <a href="https://doi.org/10.1006/jcph.2001.6715" target="_blank">https://doi.org/10.1006/jcph.2001.6715</a>, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Brune et al.(2012)</label><mixed-citation>
      
Brune, S., Popov, A. A., and Sobolev, S. V.: Modeling suggests that oblique  extension facilitates rifting and continental break-up, J. Geophys. Res.-Sol. Ea., 117, <a href="https://doi.org/10.1029/2011JB008860" target="_blank">https://doi.org/10.1029/2011JB008860</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Cahouet and Chabard(1988)</label><mixed-citation>
      
Cahouet, J. and Chabard, J.-P.: Some fast 3D finite element solvers for the  generalized Stokes problem, Int. J. Numer. Meth. Fl., 8, 869–895, <a href="https://doi.org/10.1002/fld.1650080802" target="_blank">https://doi.org/10.1002/fld.1650080802</a>, 1988.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Chen(1998)</label><mixed-citation>
      
Chen, X.: On preconditioned Uzawa methods and SOR methods for saddle-point  problems, J. Computat. Appl. Math., 100, 207–224,  <a href="https://doi.org/10.1016/S0377-0427(98)00197-6" target="_blank">https://doi.org/10.1016/S0377-0427(98)00197-6</a>, 1998.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Chorin(1967)</label><mixed-citation>
      
Chorin, A. J.: The numerical solution of the Navier-Stokes equations for an  incompressible fluid, B. Am. Math. Soc., 73, 928–931, <a href="https://doi.org/10.1090/S0002-9904-1967-11853-6" target="_blank">https://doi.org/10.1090/S0002-9904-1967-11853-6</a>, 1967.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Do et al.(2023)</label><mixed-citation>
      
Do, S.-H., So, B.-D., Kim, Y.-G., and Kim, G.-B.: Lithospheric strength  inferred from modeling of buckling structure: Implications for stress state  of the East Sea (Japan Sea), Tectonophysics, 858, 229859,  <a href="https://doi.org/10.1016/j.tecto.2023.229859" target="_blank">https://doi.org/10.1016/j.tecto.2023.229859</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Duretz et al.(2011)</label><mixed-citation>
      
Duretz, T., May, D. A., Gerya, T., and Tackley, P.: Discretization errors and  free surface stabilization in the finite difference and marker-in-cell method  for applied geodynamics: A numerical study, Geochem. Geophy. Geosy., 12, <a href="https://doi.org/10.1029/2011GC003567" target="_blank">https://doi.org/10.1029/2011GC003567</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Elman and Golub(1994)</label><mixed-citation>
      
Elman, H. C. and Golub, G. H.: Inexact and preconditioned Uzawa algorithms for saddle point problems, SIAM J. Numer. Anal., 31, 1645–1661,  <a href="https://doi.org/10.1137/0731085" target="_blank">https://doi.org/10.1137/0731085</a>, 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Gerya(2019)</label><mixed-citation>
      
Gerya, T.: Introduction to numerical geodynamic modelling, Cambridge University Press, <a href="https://doi.org/10.1017/9781316534243" target="_blank">https://doi.org/10.1017/9781316534243</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Gerya(2022)</label><mixed-citation>
      
Gerya, T.: Numerical modeling of subduction: State of the art and future  directions, Geosphere, 18, 503–561, <a href="https://doi.org/10.1130/GES02416.1" target="_blank">https://doi.org/10.1130/GES02416.1</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Gmeiner et al.(2016)</label><mixed-citation>
      
Gmeiner, B., Huber, M., John, L., Rüde, U., and Wohlmuth, B.: A  quantitative performance study for Stokes solvers at the extreme scale, J. Comput. Sci., 17, 509–521, <a href="https://doi.org/10.1016/j.jocs.2016.06.006" target="_blank">https://doi.org/10.1016/j.jocs.2016.06.006</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Guermond and Quartapelle(1998)</label><mixed-citation>
      
Guermond, J.-L. and Quartapelle, L.: On the approximation of the unsteady  Navier–Stokes equations by finite element projection methods, Numer. Math., 80, 207–238, <a href="https://doi.org/10.1007/s002110050366" target="_blank">https://doi.org/10.1007/s002110050366</a>, 1998.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Hestenes and Stiefel(1952)</label><mixed-citation>
      
Hestenes, M. R. and Stiefel, E.: Methods of conjugate gradients for solving linear systems, J. Res. Nat. Bur. Stand., 49, 409–436, <a href="https://doi.org/10.6028/jres.049.044" target="_blank">https://doi.org/10.6028/jres.049.044</a>, 1952.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Huismans et al.(2001)</label><mixed-citation>
      
Huismans, R. S., Podladchikov, Y. Y., and Cloetingh, S.: Dynamic modeling of the transition from passive to active rifting, application to the Pannonian basin, Tectonics, 20, 1021–1039, <a href="https://doi.org/10.1029/2001TC900010" target="_blank">https://doi.org/10.1029/2001TC900010</a>, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Ismail-Zadeh et al.(2006)</label><mixed-citation>
      
Ismail-Zadeh, A., Schubert, G., Tsepelev, I., and Korotkii, A.:  Three-dimensional forward and backward numerical modeling of mantle plume  evolution: Effects of thermal diffusion, J. Geophys. Res.-Sol. Ea., 111, <a href="https://doi.org/10.1029/2005JB003782" target="_blank">https://doi.org/10.1029/2005JB003782</a>, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Jang et al.(2026)</label><mixed-citation>
      
Jang, D.-K., Lee, K.-M., Thieulot, C., Choi, W.-H., and So, B.-D.: Efficient  Uzawa Algorithms with Projection Strategies for Geodynamic Stokes Flow, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.22135967" target="_blank">https://doi.org/10.5281/zenodo.22135967</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Kim and So(2020)</label><mixed-citation>
      
Kim, D.-H. and So, B.-D.: Effects of rheology and mantle temperature structure on edge-driven convection: Implications for partial melting and dynamic topography, Phys. Earth Planet. In., 303, 106487,  <a href="https://doi.org/10.1016/j.pepi.2020.106487" target="_blank">https://doi.org/10.1016/j.pepi.2020.106487</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>King et al.(2008)</label><mixed-citation>
      
King, S., Lee, C., Leng, W., Zhong, S., van Keken, P., Tan, E., Gurnis, M., and Tosi, N.: A Community Benchmark for 2D Cartesian Compressible Convection, AGU Fall Meeting Abstracts, 2008, DI31A–1772, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Kronbichler et al.(2012)</label><mixed-citation>
      
Kronbichler, M., Heister, T., and Bangerth, W.: High accuracy mantle convection simulation through modern numerical methods, Geophys. J. Int., 191, 12–29, <a href="https://doi.org/10.1111/j.1365-246X.2012.05609.x" target="_blank">https://doi.org/10.1111/j.1365-246X.2012.05609.x</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Lee et al.(2024)</label><mixed-citation>
      
Lee, K.-M., Kim, H.-I., Jang, D.-K., and So, B.-D.: A comparative study of 2D  numerical simulations using vector and potential methods for extending 3D  modeling of planetary evolution, Geosci. J., 28, 465–481,  <a href="https://doi.org/10.1007/s12303-024-0013-5" target="_blank">https://doi.org/10.1007/s12303-024-0013-5</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Li and Gurnis(2023)</label><mixed-citation>
      
Li, Y. and Gurnis, M.: A simple force balance model of subduction initiation,  Geophys. J. Int., 232, 128–146, <a href="https://doi.org/10.1093/gji/ggac332" target="_blank">https://doi.org/10.1093/gji/ggac332</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Logg et al.(2012)</label><mixed-citation>
      
Logg, A., Mardal, K.-A., and Wells, G. (Eds.): Automated solution of differential  equations by the finite element method: The FEniCS book, vol. 84, Springer  Science &amp; Business Media, <a href="https://doi.org/10.1007/978-3-642-23099-8" target="_blank">https://doi.org/10.1007/978-3-642-23099-8</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Mansour et al.(2020)</label><mixed-citation>
      
Mansour, J. A., Giordani, J., Moresi, L., Beucher, R., Kaluza, O., Velic, M.,  Farrington, R., Quenette, S., and Beall, A.: Underworld2: Python geodynamics  modelling for desktop, HPC and cloud, Journal of Open Source Software, 5,  1797, <a href="https://doi.org/10.21105/joss.01797" target="_blank">https://doi.org/10.21105/joss.01797</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>May and Moresi(2008)</label><mixed-citation>
      
May, D. A. and Moresi, L.: Preconditioned iterative methods for Stokes flow  problems arising in computational geodynamics, Phys. Earth Planet. In., 171, 33–47, <a href="https://doi.org/10.1016/j.pepi.2008.07.036" target="_blank">https://doi.org/10.1016/j.pepi.2008.07.036</a>, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Moresi and Gurnis(1996)</label><mixed-citation>
      
Moresi, L. and Gurnis, M.: The accuracy of finite element solutions of Stokes  flow with strongly varying viscosity, Phys. Earth Planet. In., 97, 83–94, <a href="https://doi.org/10.1016/0031-9201(96)03163-9" target="_blank">https://doi.org/10.1016/0031-9201(96)03163-9</a>, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Moresi et al.(2007)</label><mixed-citation>
      
Moresi, L., Quenette, S., Lemiale, V., Meriaux, C., Appelbe, B., and  Mühlhaus, H.-B.: Computational approaches to studying non-linear dynamics  of the crust and mantle, Phys. Earth Planet. In., 163, 69–82, <a href="https://doi.org/10.1016/j.pepi.2007.06.009" target="_blank">https://doi.org/10.1016/j.pepi.2007.06.009</a>, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Negredo et al.(2022)</label><mixed-citation>
      
Negredo, A. M., van Hunen, J., Rodríguez-González, J., and Fullea, J.: On the origin of the Canary Islands: Insights from mantle convection  modelling, Earth Planet. Sc. Lett., 584, 117506,  <a href="https://doi.org/10.1016/j.epsl.2022.117506" target="_blank">https://doi.org/10.1016/j.epsl.2022.117506</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Pyo and Shen(2007)</label><mixed-citation>
      
Pyo, J.-H. and Shen, J.: Gauge–Uzawa methods for incompressible flows with  variable density, J. Computat. Phys., 221, 181–197,  <a href="https://doi.org/10.1016/j.jcp.2006.06.013" target="_blank">https://doi.org/10.1016/j.jcp.2006.06.013</a>, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Ramage and Wathen(1994)</label><mixed-citation>
      
Ramage, A. and Wathen, A. J.: Iterative solution techniques for the Stokes and Navier-Stokes equations, Int. J. Numer. Meth. Fl., 19, 67–83, <a href="https://doi.org/10.1002/fld.1650190106" target="_blank">https://doi.org/10.1002/fld.1650190106</a>, 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Rudi et al.(2017)Rudi, Stadler, and Ghattas</label><mixed-citation>
      
Rudi, J., Stadler, G., and Ghattas, O.: Weighted BFBT preconditioner for Stokes flow problems with highly heterogeneous viscosity, SIAM J. Sci.  Comput., 39, S272–S297, <a href="https://doi.org/10.1137/16M108450X" target="_blank">https://doi.org/10.1137/16M108450X</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Saad(2003)</label><mixed-citation>
      
Saad, Y.: Iterative methods for sparse linear systems, SIAM,  <a href="https://doi.org/10.1137/1.9780898718003" target="_blank">https://doi.org/10.1137/1.9780898718003</a>, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Saad and Schultz(1986)</label><mixed-citation>
      
Saad, Y. and Schultz, M. H.: GMRES: A generalized minimal residual algorithm  for solving nonsymmetric linear systems, SIAM J. Sci. Stat. Comp., 7, 856–869, <a href="https://doi.org/10.1137/0907058" target="_blank">https://doi.org/10.1137/0907058</a>, 1986.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Schubert et al.(2001)</label><mixed-citation>
      
Schubert, G., Turcotte, D. L., and Olson, P.: Mantle Convection in the Earth  and Planets, Cambridge University Press, <a href="https://doi.org/10.1017/CBO9780511612879" target="_blank">https://doi.org/10.1017/CBO9780511612879</a>,  2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Silvester and Wathen(1994)</label><mixed-citation>
      
Silvester, D. and Wathen, A.: Fast iterative solution of stabilised Stokes  systems Part II: Using general block preconditioners, SIAM J. Numer. Anal., 31, 1352–1367, <a href="https://doi.org/10.1137/0731070" target="_blank">https://doi.org/10.1137/0731070</a>, 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Sime et al.(2024)</label><mixed-citation>
      
Sime, N., Wilson, C. R., and van Keken, P. E.: Thermal modeling of subduction  zones with prescribed and evolving 2D and 3D slab geometries, Progress in  Earth and Planetary Science, 11, 14, <a href="https://doi.org/10.1186/s40645-024-00611-4" target="_blank">https://doi.org/10.1186/s40645-024-00611-4</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>So and Yuen(2015)</label><mixed-citation>
      
So, B.-D. and Yuen, D. A.: Generation of tectonic over-pressure inside  subducting oceanic lithosphere involving phase-loop of olivine–wadsleyite  transition, Earth Planet. Sc. Lett., 413, 59–69,  <a href="https://doi.org/10.1016/j.epsl.2014.12.048" target="_blank">https://doi.org/10.1016/j.epsl.2014.12.048</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Tan and Gurnis(2005)</label><mixed-citation>
      
Tan, E. and Gurnis, M.: Metastable superplumes and mantle compressibility,  Geophys. Res. Lett., 32, <a href="https://doi.org/10.1029/2005GL024190" target="_blank">https://doi.org/10.1029/2005GL024190</a>, 2005.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Thieulot and Bangerth(2025)</label><mixed-citation>
      
Thieulot, C. and Bangerth, W.: On the choice of finite element for applications in geodynamics – Part 2: A comparison of simplex and hypercube elements, Solid Earth, 16, 457–476, <a href="https://doi.org/10.5194/se-16-457-2025" target="_blank">https://doi.org/10.5194/se-16-457-2025</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>van Keken(1997)</label><mixed-citation>
      
van Keken, P.: Evolution of starting mantle plumes: a comparison between  numerical and laboratory models, Earth Planet. Sc. Lett., 148, 1–11, <a href="https://doi.org/10.1016/S0012-821X(97)00042-3" target="_blank">https://doi.org/10.1016/S0012-821X(97)00042-3</a>, 1997.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Vynnytska et al.(2013)</label><mixed-citation>
      
Vynnytska, L., Rognes, M. E., and Clark, S.: Benchmarking FEniCS for mantle  convection simulations, Comput. Geosci., 50, 95–105,  <a href="https://doi.org/10.1016/j.cageo.2012.05.012" target="_blank">https://doi.org/10.1016/j.cageo.2012.05.012</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>Wang et al.(2015)</label><mixed-citation>
      
Wang, H., Agrusta, R., and van Hunen, J.: Advantages of a conservative velocity interpolation (CVI) scheme for particle-in-cell methods with application in geodynamic modeling, Geochem. Geophy. Geosy., 16, 4148–4166,  <a href="https://doi.org/10.1002/2015GC005824" target="_blank">https://doi.org/10.1002/2015GC005824</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Wilson et al.(2017)</label><mixed-citation>
      
Wilson, C. R., Spiegelman, M., and van Keken, P. E.: Terra FERMA: The  Transparent Finite Element Rapid Model Assembler for multiphysics problems in  Earth sciences, Geochem. Geophy. Geosy., 18, 769–810,  <a href="https://doi.org/10.1002/2016GC006702" target="_blank">https://doi.org/10.1002/2016GC006702</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Xie et al.(2024)</label><mixed-citation>
      
Xie, R., Chen, L., Morgan, J. P., and Chen, Y. J.: Various lithospheric deformation patterns derived from rheological contrasts between continental terranes: insights from 2-D numerical simulations, Solid Earth, 15, 789–806, <a href="https://doi.org/10.5194/se-15-789-2024" target="_blank">https://doi.org/10.5194/se-15-789-2024</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>Zhamaletdinov et al.(2011)</label><mixed-citation>
      
Zhamaletdinov, A., Shevtsov, A., Korotkova, T., Kopytenko, Y. A., Ismagilov,  V. S., Petrishev, M. S., Efimov, B. V., Barannik, M. B., Kolobov, V. V., Prokopchuk, P. I., Smirnov, M. Yu., Vagin, S. A., Pertel, M. I., Tereshchenko, E. D., Vasil’ev, A. N., Grigoryev, V. F., Gokhberg, M. B., Trofimchik, V. I., Yampolsky, Yu. M., Koloskov, A. V., Fedorov, A. V., and Korja, T.: Deep electromagnetic sounding of the lithosphere  in the Eastern Baltic (Fennoscandian) shield with high-power controlled  sources and industrial power transmission lines (FENICS experiment), Izvestiya, Physics of the Solid Earth, 47, 22, <a href="https://doi.org/10.1134/S1069351311010149" target="_blank">https://doi.org/10.1134/S1069351311010149</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Zhao et al.(1993)</label><mixed-citation>
      
Zhao, X.-H., Kwek, K.-H., Li, J.-B., and Huang, K.-L.: Chaotic and resonant  streamlines in the ABC flow, SIAM J. Appl. Math., 53, 71–77,  <a href="https://doi.org/10.1137/0153005" target="_blank">https://doi.org/10.1137/0153005</a>, 1993.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib57"><label>Zhong(1996)</label><mixed-citation>
      
Zhong, S.: Analytic solutions for Stokes' flow with lateral variations in  viscosity, Geophys. J. Int., 124, 18–28,  <a href="https://doi.org/10.1111/j.1365-246X.1996.tb06349.x" target="_blank">https://doi.org/10.1111/j.1365-246X.1996.tb06349.x</a>, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib58"><label>Zhong et al.(2000)</label><mixed-citation>
      
Zhong, S., Zuber, M. T., Moresi, L., and Gurnis, M.: Role of  temperature-dependent viscosity and surface plates in spherical shell models  of mantle convection, J. Geophys. Res.-Sol. Ea., 105, 11063–11082, <a href="https://doi.org/10.1029/2000JB900003" target="_blank">https://doi.org/10.1029/2000JB900003</a>, 2000.

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