<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">GMD</journal-id><journal-title-group>
    <journal-title>Geoscientific Model Development</journal-title>
    <abbrev-journal-title abbrev-type="publisher">GMD</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Geosci. Model Dev.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1991-9603</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/gmd-19-2333-2026</article-id><title-group><article-title>A fully implicit second order method for viscous free surface  Stokes flow – application to glacier simulations</article-title><alt-title>Fully implicit schemes for viscous free surface flow</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1 aff2 aff3">
          <name><surname>Ahlkrona</surname><given-names>Josefin</given-names></name>
          <email>ahlkrona@math.su.se</email>
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1 aff2">
          <name><surname>Henry</surname><given-names>A. Clara J.</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-3894-5117</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1 aff2">
          <name><surname>Löfgren</surname><given-names>André</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-0102-9676</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Department of Mathematics, Stockholm University, Stockholm, Sweden</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Bolin Centre for Climate Research, Stockholm University, Stockholm, Sweden</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>Swedish e-Science Research Centre, Stockholm, Sweden</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Josefin Ahlkrona (ahlkrona@math.su.se)</corresp></author-notes><pub-date><day>23</day><month>March</month><year>2026</year></pub-date>
      
      <volume>19</volume>
      <issue>6</issue>
      <fpage>2333</fpage><lpage>2348</lpage>
      <history>
        <date date-type="received"><day>5</day><month>September</month><year>2025</year></date>
           <date date-type="rev-request"><day>1</day><month>October</month><year>2025</year></date>
           <date date-type="rev-recd"><day>16</day><month>February</month><year>2026</year></date>
           <date date-type="accepted"><day>1</day><month>March</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Josefin Ahlkrona 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://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026.html">This article is available from https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e113">We present a fully implicit finite element method for viscous free surface Stokes problems which are common in glaciology and geodynamics. Standard fully implicit iterative solvers diverge for such problems when using large time steps. We address this by incorporating a stabilization term that vanishes upon convergence. This approach enables the use of large time steps, thereby significantly improving the efficiency of simulations. Furthermore, we leverage the fully implicit solver to develop second-order time-stepping schemes that mitigate the high errors associated with first-order methods for large time steps. The methods are tested and evaluated on model domains relevant to geodynamics and glaciology.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Vetenskapsrådet</funding-source>
<award-id>2021-04001</award-id>
</award-group>
<award-group id="gs2">
<funding-source>Knut och Alice Wallenbergs Stiftelse</funding-source>
<award-id>2021.0275</award-id>
</award-group>
<award-group id="gs3">
<funding-source>Swedish e-Science Research Centre</funding-source>
<award-id>-</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="d2e125">Viscous, gravity-driven, free surface problems are prevalent in geoscientific applications such as mantle convection and glaciology <xref ref-type="bibr" rid="bib1.bibx12 bib1.bibx26" id="paren.1"/>. Such simulations involve solving the Stokes equations for the velocity and pressure, (<inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">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:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M2" display="inline"><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:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>), and a free-surface equation for the upper surface height <inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:mi>h</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>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> that determines the geometry, see Fig. <xref ref-type="fig" rid="F1"/>. A key computational challenge arises from the strong coupling between the evolving geometry and the velocity field, which can lead to numerical stability issues and imposes severe restrictions on the time-step size, ultimately reducing computational efficiency. Fully implicit methods would overcome these time-step limitations, but the strong coupling introduces convergence issues that prevent practical usage.</p>
      <p id="d2e207">In ice-sheet and glacier modeling, the time-step size restriction is a prominent problem <xref ref-type="bibr" rid="bib1.bibx8 bib1.bibx22 bib1.bibx23" id="paren.2"/>. Ice-sheet and glacier models describe the movement of the ice covering Antarctica and Greenland, or that of smaller mountain glaciers and ice caps. Under the long time scales that are relevant to ice dynamics, ice deforms as a viscous fluid. It slowly creeps under its own weight from the interior of a continent to the coast, where it melts due to lower altitudes and meeting the warm ocean. Accurately calculating the geometry and the rate of flow towards the ocean is crucial in estimating the future rise in sea level in response to climate change. However, the computational challenges of ice-sheet modeling limit the accuracy of projections <xref ref-type="bibr" rid="bib1.bibx25" id="paren.3"/>. Due to the coupling between geometry and ice velocity, the full problem can be likened to solving the heat equation, but the state-of-the-art numerical methods are explicit in time. To maintain stability, time-steps are therefore often limited to around 0.1–1.0 years <xref ref-type="bibr" rid="bib1.bibx19" id="paren.4"/>, which is a bottleneck. Implicit iterations would increase the largest stable time-steps but are challenging and have so far only been achieved for approximate models <xref ref-type="bibr" rid="bib1.bibx5" id="paren.5"/>. For models based on the full Stokes equations there is, to our knowledge, no working implicit method based on iterations. A monolithic implicit solver was constructed in <xref ref-type="bibr" rid="bib1.bibx17" id="text.6"/> for geodynamics. The great promise of implicit methods was recognized by <xref ref-type="bibr" rid="bib1.bibx6" id="text.7"/> who later conjectured that such schemes should be well-posed <xref ref-type="bibr" rid="bib1.bibx7" id="paren.8"/>.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e235">Illustration of a viscous free surface problem in the form of a mountain glacier. The ice is formed by accumulated snow and flows down the mountain due to the force of gravity. The surface height <inline-formula><mml:math id="M4" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> indicates the distance from <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> to the surface <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The domain <inline-formula><mml:math id="M7" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> is the projection of the full domain <inline-formula><mml:math id="M8" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> from <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The vertical position of the line <inline-formula><mml:math id="M11" display="inline"><mml:mo>|</mml:mo></mml:math></inline-formula>———–<inline-formula><mml:math id="M12" display="inline"><mml:mo>|</mml:mo></mml:math></inline-formula> used to denote <inline-formula><mml:math id="M13" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> is arbitrary chosen. Adapted from <xref ref-type="bibr" rid="bib1.bibx23" id="text.9"/>, published in <italic>The Cryosphere</italic>, licensed under CC BY 4.0.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f01.png"/>

      </fig>

      <p id="d2e345">In this paper, we present a numerically stable and accurate fully implicit method by introducing boundary terms in the Stokes equations, which vanish during convergence. We argue that the convergence issues of standard implicit iterations are connected to the stability issues that are seen for explicit methods (since the first iteration has to be explicit), and we introduce a method that circumvents these issues in a computationally efficient way. The method relies on the Free Surface Stabilization Algorithm (FSSA), which was originally developed for mantle convection problems <xref ref-type="bibr" rid="bib1.bibx16" id="paren.10"/> and later adapted for ice sheet simulations <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx23" id="paren.11"/>. The FSSA relaxes the time-step restrictions for explicit solvers by adding additional boundary terms. We adapt this method to the context of fully-implicit solvers. The boundary terms vanish as convergence is reached. This method allows for very large time-steps and ensures consistency. We then utilize the new implicit method to construct second-order accurate time-stepping schemes and demonstrate efficiency and accuracy on setups relevant to geodynamics and glacier simulations.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Governing equations and their finite element discretization</title>
      <p id="d2e362">The surface height position <inline-formula><mml:math id="M14" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>, the velocity <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and the pressure <inline-formula><mml:math id="M16" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> are the solution to a system of coupled partial differential equations, namely the <inline-formula><mml:math id="M17" display="inline"><mml:mi mathvariant="fraktur">p</mml:mi></mml:math></inline-formula>-Stokes-coupled free-surface equation:

              <disp-formula specific-use="align" content-type="numbered"><mml:math id="M18" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E1"><mml:mtd><mml:mtext>1</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mfenced close="}" open=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">S</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>p</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">in</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E2"><mml:mtd><mml:mtext>2</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>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:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">on</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

        Here, <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>⊂</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:mi>d</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, is an open and bounded domain with a boundary <inline-formula><mml:math id="M21" display="inline"><mml:mi mathvariant="normal">Γ</mml:mi></mml:math></inline-formula>, of which one part is the upper free surface <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> which is located at a height <inline-formula><mml:math id="M23" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>, see Fig. <xref ref-type="fig" rid="F1"/> for an illustration from glaciology. The free-surface equation (Eq. <xref ref-type="disp-formula" rid="Ch1.E2"/>) is solved on <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, which represents a projection of the upper ice surface <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> onto a flat two-dimensional plane. The ice-flow dynamics are driven by the gravitational term <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi></mml:mrow></mml:math></inline-formula>. The free-surface equation can be forced by the term <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which in a glaciological context represents accumulation and ablation. The deviatoric stress tensor <inline-formula><mml:math id="M28" display="inline"><mml:mi mathvariant="bold">S</mml:mi></mml:math></inline-formula> depends on the strain-rate tensor <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="bold">D</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> according to a constitutive law

          <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M30" display="block"><mml:mrow><mml:mi mathvariant="bold">S</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        where

          <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M31" display="block"><mml:mrow><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>:=</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mi mathvariant="bold-italic">u</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:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi mathvariant="italic">ε</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo>|</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:msup><mml:mo>|</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfenced><mml:mstyle scriptlevel="+1"><mml:mfrac><mml:mrow><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:msup><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>∈</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>]</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        is the viscosity function, dependent on the effective strain rate <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:mo>|</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>|</mml:mo></mml:mrow></mml:math></inline-formula>; <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ε</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> is a regularisation term to avoid infinite viscosity at zero shear strain rate. The relation is linear for <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>, as for Newtonian dynamics and non-linear for non-Newtonian materials such as glacial ice for which <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M36" display="inline"><mml:mi mathvariant="fraktur">p</mml:mi></mml:math></inline-formula> is usually stated in terms of the Glen's parameter <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. We consider a very viscous flow, so that <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is large.</p>
      <p id="d2e931">A key challenge in the time discretization of such problems arises from the fact that the computational domain <inline-formula><mml:math id="M39" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> is coupled to the time-dependent height of the ice surface <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:mi>h</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>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> so that <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. The dependence of the domain on the surface elevation <inline-formula><mml:math id="M42" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> means that the velocity field also implicitly depends on <inline-formula><mml:math id="M43" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>. At the same time, these velocity components appear as coefficients in the free surface evolution equation that governs the changes in <inline-formula><mml:math id="M44" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>. The mutual dependence between <inline-formula><mml:math id="M45" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M46" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula> limits the numerical stability of explicit methods.</p>
      <p id="d2e1030">The Stokes equations are solved under the following boundary conditions: At the top surface <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> a stress-free boundary condition is applied

          <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M48" display="block"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="bold">S</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold">I</mml:mi><mml:mi>p</mml:mi><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">on</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

        Here, <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) denotes the outward pointing normal and <inline-formula><mml:math id="M50" display="inline"><mml:mi mathvariant="bold">I</mml:mi></mml:math></inline-formula> the identity matrix. The lateral boundaries, <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">W</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="normal">Γ</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (see Fig. <xref ref-type="fig" rid="F1"/>), are assumed to be rigid in this study so that an impenetrability condition applies,

          <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M53" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">on</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">W</mml:mi></mml:msub><mml:mo>∪</mml:mo><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

        Lastly, at the base or bedrock, <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, we apply either a no-slip condition

          <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M55" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">on</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        or an impenetrability condition combined with a so-called Weertman sliding law

          <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M56" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>C</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">on</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        where <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are tangent vectors that span the lower ice surface and <inline-formula><mml:math id="M58" display="inline"><mml:mi>C</mml:mi></mml:math></inline-formula> is the friction coefficient. Note that the methods in this article are not restricted to the specific boundary conditions on <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">W</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e1322">We consider a finite element discretization in space, which is commonly used in both ice sheet modeling and geodynamics <xref ref-type="bibr" rid="bib1.bibx11 bib1.bibx18 bib1.bibx16 bib1.bibx26" id="paren.12"/>. The weak formulation of the Stokes problem is to find the velocity and pressure (<inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:msubsup><mml:mi>W</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="fraktur">p</mml:mi></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>)</mml:mo><mml:msup><mml:mo>]</mml:mo><mml:mi mathvariant="normal">d</mml:mi></mml:msup><mml:mo>×</mml:mo><mml:msup><mml:mi>L</mml:mi><mml:mrow><mml:msup><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> so that

          <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M63" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="bold">S</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold">D</mml:mi><mml:mi mathvariant="bold-italic">v</mml:mi><mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi><mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub><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:mo>(</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>∈</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:msubsup><mml:mi>W</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">p</mml:mi></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">d</mml:mi></mml:msup><mml:mo>×</mml:mo><mml:msup><mml:mi>L</mml:mi><mml:mrow><mml:msup><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

        where <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> denotes the <inline-formula><mml:math id="M65" 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> scalar product, e.g. <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi></mml:munder><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula>. The appropriate spaces for the continuous problem are the Sobolev space <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:msubsup><mml:mi>W</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="fraktur">p</mml:mi></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>)</mml:mo><mml:msup><mml:mo>]</mml:mo><mml:mi mathvariant="normal">d</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and the Lebesgue space <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:msup><mml:mi>L</mml:mi><mml:mrow><mml:msup><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx15" id="paren.13"><named-content content-type="pre">e.g.,</named-content></xref>.</p>
      <p id="d2e1696">In this work, we discretize the weak form using Taylor-Hood <xref ref-type="bibr" rid="bib1.bibx28" id="paren.14"/> elements, i.e. linear elements for the pressure and quadratic elements for the velocity. Such a discretization is inf-sup stable <xref ref-type="bibr" rid="bib1.bibx4" id="paren.15"/>.</p>
      <p id="d2e1705">The weak form of the free surface equation is to find the surface height <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mi>h</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi>W</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> such that

          <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M71" display="block"><mml:mrow><mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><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>q</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi>W</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

        In this paper, it is useful to note that the equation can be written equivalently as

          <disp-formula id="Ch1.E11" content-type="numbered"><label>11</label><mml:math id="M72" display="block"><mml:mrow><mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

        The equivalence is easily seen by changing from integration on the surface to the two-dimensional footprint <inline-formula><mml:math id="M73" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>, and considering that the normal vector pointing out of a surface is <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mo>‖</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>‖</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:msub><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:msub><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. This derivation takes the form

          <disp-formula id="Ch1.E12" content-type="numbered"><label>12</label><mml:math id="M76" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi><mml:msub><mml:mo>)</mml:mo><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mi mathvariant="italic">ω</mml:mi></mml:munder><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mi>q</mml:mi><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:msub><mml:mi>h</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:msub><mml:mi>h</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt><mml:mi mathvariant="normal">d</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mi mathvariant="italic">ω</mml:mi></mml:munder><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:msub><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:msub><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfenced><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:msub><mml:mi>h</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:msub><mml:mi>h</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mfrac></mml:mstyle><mml:mi>q</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:msub><mml:mi>h</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:msub><mml:mi>h</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt><mml:mi mathvariant="normal">d</mml:mi><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mi mathvariant="italic">ω</mml:mi></mml:munder><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:msub><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:msub><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfenced><mml:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mi mathvariant="italic">ω</mml:mi></mml:munder><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi>x</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

        The free surface equation is discretized using linear elements.</p>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Low-order time-stepping schemes and the free surface stabilization algorithm</title>
      <p id="d2e2287">The standard approach to solving the coupled system (Eqs. <xref ref-type="disp-formula" rid="Ch1.E1"/> and <xref ref-type="disp-formula" rid="Ch1.E2"/>) is to solve the Stokes equations once per time step on a mesh that reflects the geometry from the preceding step, (Algorithm 1). An explicit Euler discretization of the free surface can thus be written as

          <disp-formula id="Ch1.E13" content-type="numbered"><label>13</label><mml:math id="M77" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>⋅</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:msup><mml:mi>s</mml:mi><mml:mi>k</mml:mi></mml:msup><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>q</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi>W</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

        where <inline-formula><mml:math id="M78" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> is the current time step and <inline-formula><mml:math id="M79" 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> is the next time step. In this explicit Euler discretization, the velocity, <inline-formula><mml:math id="M80" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula>, is, by necessity, always evaluated on time step <inline-formula><mml:math id="M81" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>. It is easy to change to an implicit treatment of the surface height, <inline-formula><mml:math id="M82" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>, by evaluating it at step <inline-formula><mml:math id="M83" 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> instead, but as was shown in <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx23" id="text.16"/>, it is the treatment of the velocity <inline-formula><mml:math id="M84" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula> that determines the stability properties of the overall system. The explicit treatment of velocities is essentially analogous to solving the heat equation using an explicit Euler time-stepping scheme, and therefore, the time-step size is limited by stability constraints rather than by accuracy considerations.</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog1"><label>Algorithm 1</label><caption><p id="d2e2570">Standard explicit ice sheet model algorithm.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{1}"><list>

    <list-item>

      <p id="d2e2577" specific-use="STATE">Create mesh</p>
          </list-item>

    <list-item>

      <p id="d2e2583" specific-use="FOR"><bold>for</bold> each time-step <inline-formula><mml:math id="M85" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d2e2601" specific-use="STATE">Solve Stokes Eq. for (<inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M87" display="inline"><mml:mrow><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="d2e2628" specific-use="STATE">Solve free surface equation for <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d2e2648" specific-use="STATE">Update mesh to get <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi mathvariant="normal">h</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:mrow></mml:math></inline-formula></p></list-item></list></p>
          </list-item>

    <list-item>

      <p id="d2e2671" specific-use="ENDFOR"><bold>end</bold> <bold>for</bold></p>
          </list-item>
        </list></disp-quote></boxed-text>
      <p id="d2e2680">To avoid the restriction on the time-step, an implicit solver could in theory be used. A natural approach to such a solver is to iterate between the free surface solver and the Stokes solver until convergence. Unfortuntaely, the iterations do not converge for large time-steps. Here we adress this issue.</p>
      <p id="d2e2683">To relax the stability restriction without implicit iterations, the FSSA method was introduced in geodynamics in <xref ref-type="bibr" rid="bib1.bibx16" id="text.17"/> and subsequently adapted to ice-sheet modeling in <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx23" id="text.18"/>. One way of understanding the FSSA stabilization method is by applying the Reynolds transport theorem to the gravitational force on weak form, assuming that <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>g</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, which leads to:

          <disp-formula id="Ch1.E14" content-type="numbered"><label>14</label><mml:math id="M91" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

        An explicit Euler discretization of the above relation gives an expression for how the driving stress on time-step <inline-formula><mml:math id="M92" 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> relates to the driving stress on time-step <inline-formula><mml:math id="M93" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>: 

          <disp-formula id="Ch1.E15" content-type="numbered"><label>15</label><mml:math id="M94" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>t</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:mfenced></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>≈</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="normal">Ω</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>t</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">x</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="normal">Ω</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>t</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mi mathvariant="normal">stabilization</mml:mi></mml:munder><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        where the last term is the FSSA stabilization term. Note that the original FSSA method of <xref ref-type="bibr" rid="bib1.bibx16" id="paren.19"/> includes a parameter <inline-formula><mml:math id="M95" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> in front of the stabilization term which will not be used here. The stabilization is added to the Stokes equations (Eq. <xref ref-type="disp-formula" rid="Ch1.E1"/>) rather than the free-surface equation (Eq. <xref ref-type="disp-formula" rid="Ch1.E2"/>). Due to the impenetrability condition, the FSSA term vanishes on all surfaces except <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Since the flow is gravity driven, it appears to be sufficient to represent the force of gravity implicitly (which FSSA does approximately) to yield an implicit solution. Note, however, that it is not a true fully implicit solver. The FSSA method has proved remarkably successful in increasing the largest stable time step in marine ice sheet models, by up to a factor of approximately 100 <xref ref-type="bibr" rid="bib1.bibx14" id="paren.20"/>.</p>
      <p id="d2e3005">An observation that will be useful for creating the fully implicit solver is that the FSSA term is similar to the right-hand side of the discretized free surface equation (Eq. <xref ref-type="disp-formula" rid="Ch1.E13"/>), the difference lies in the test function (which determines which equation the term is added to) and the scaling <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>g</mml:mi></mml:mrow></mml:math></inline-formula> which is only in the FSSA term.</p>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>A fully implicit solver using FSSA</title>
      <p id="d2e3028">A true fully implicit solver requires iterations between the free surface equation and Stokes equations in each time step, as in Algorithm .</p><boxed-text content-type="algorithm" position="float" id="Ch1.Prog2"><label>Algorithm 2</label><caption><p id="d2e3032">Fully Implicit first order method.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{1}"><list>

    <list-item>

      <p id="d2e3039" specific-use="STATE">Create initial mesh <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mn mathvariant="normal">0</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula></p>
          </list-item>

    <list-item>

      <p id="d2e3057" specific-use="FOR"><bold>for</bold> each time-step <inline-formula><mml:math id="M99" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d2e3075" specific-use="STATE"><inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mn mathvariant="normal">0</mml:mn><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:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d2e3103" specific-use="STATE"><inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn><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:msup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d2e3131" specific-use="WHILE"><bold>while</bold> <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:mo>‖</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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>h</mml:mi><mml:mi>r</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:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M103" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> tolerance and <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d2e3205" specific-use="STATE">Solve Stokes Eq. for (<inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>r</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:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msubsup><mml:mi>p</mml:mi><mml:mi>r</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:mrow></mml:math></inline-formula>)</p></list-item>
    <list-item>
      <p id="d2e3246" specific-use="STATE">Solve <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d2e3386" specific-use="STATE">Update mesh to get <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>r</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:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d2e3408" specific-use="STATE"><inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula></p></list-item></list></p></list-item>
    <list-item>
      <p id="d2e3423" specific-use="ENDWHILE"><bold>end</bold> <bold>while</bold></p></list-item>
    <list-item>
      <p id="d2e3432" specific-use="STATE"><inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mrow></mml:math></inline-formula></p></list-item>
    <list-item>
      <p id="d2e3461" specific-use="STATE"><inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula></p></list-item></list></p>
          </list-item>

    <list-item>

      <p id="d2e3477" specific-use="ENDFOR"><bold>end</bold> <bold>for</bold></p>
          </list-item>
        </list></disp-quote></boxed-text>
      <p id="d2e3486">Note that in step 6 of Algorithm 2 the time-discretized free surface equation is written on strong form for brevity of presentation, while in practice it is solved on weak form. Since for the first implicit iteration <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, the Stokes equations is solved on <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn><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:msup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>, the first step is indeed explicit, i.e. <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mn mathvariant="normal">0</mml:mn><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>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn><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:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>k</mml:mi></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:mrow></mml:math></inline-formula>.</p>
      <p id="d2e3581">In theory, a fully implicit solver should be unconditionally stable. However, in practice the implicit iterations (index <inline-formula><mml:math id="M115" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> in Algorithm 2) do not converge for large time steps, making the fully implicit solver no more useful than an explicit one. This is perhaps not surprising, as the first iteration in the implicit loop always consists of an explicit step in the velocity-pressure solution, which can induce instability for larger time steps and renders a poor first guess for the velocity coefficients in the free-surface equation (see the line labeled Explicit Euler in Fig. <xref ref-type="fig" rid="F4"/>b.</p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e3596">Illustration of the displacement estimate that is the basis of the stabilization method used for implicit iterations. The arrows mark the displacement from <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> in two different implicit iterations. The vertical bar measures the difference between the two arrows, which is the displacement between two implicit iterations.</p></caption>
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f02.png"/>

      </fig>

      <p id="d2e3632">The main goal of this paper is to stabilize the implicit iterations using two slightly different FSSA terms subtracted from each other. At the first non-linear iteration, <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, of each time step, an explicit FSSA-stabilized method is used just as for the purely explicit solver of Sect. <xref ref-type="sec" rid="Ch1.S3"/>. This renders a first guess that is close enough to the true implicit solution for the iterations to converge, this is the line labeled FSSA in Fig. <xref ref-type="fig" rid="F4"/>b. For large time steps, the subsequent iterations must also be stabilized to avoid the growth of spurious oscillations, but applying the FSSA again would be erroneous since FSSA predicts the surface position at the next time step, not the next iteration. To create an appropriate stabilization term, we observe that the surface at implicit iteration <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, i.e. <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, is computed as

          <disp-formula id="Ch1.E16" content-type="numbered"><label>16</label><mml:math id="M121" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mfenced close="" open="("><mml:mfenced close="" open="("><mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mfenced close=")" open=""><mml:mrow><mml:mfenced open="" close=")"><mml:mrow><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mrow><mml:mi mathvariant="normal">s</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi></mml:mrow><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>r</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 mathvariant="bold-italic">n</mml:mi><mml:mi>r</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:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:msubsup><mml:mi>s</mml:mi><mml:mi>r</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:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

        while the surface at the previous implicit iteration, <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mrow></mml:math></inline-formula>, is computed as

          <disp-formula id="Ch1.E17" content-type="numbered"><label>17</label><mml:math id="M123" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mfenced open="(" close=""><mml:mfenced close="" open="("><mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mfenced close=")" open=""><mml:mrow><mml:mfenced close=")" open=""><mml:mrow><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mrow><mml:mi mathvariant="normal">s</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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 mathvariant="bold-italic">n</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:msubsup><mml:mi>s</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

        Therefore, the difference between two subsequent surfaces in the implicit iterations is

          <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M124" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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:mi>q</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mfenced close="" open="("><mml:mrow><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>r</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 mathvariant="bold-italic">n</mml:mi><mml:mi>r</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:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:msubsup><mml:mi>s</mml:mi><mml:mi>r</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:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mfenced close=")" open=""><mml:mrow><mml:mo>-</mml:mo><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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 mathvariant="bold-italic">n</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mi>q</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:msubsup><mml:mi>s</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        see Fig. <xref ref-type="fig" rid="F2"/> for a conceptual illustration. Recalling the similarity between the terms of the right-hand side of Eq. (<xref ref-type="disp-formula" rid="Ch1.E13"/>) and the expression above, we claim that the FSSA term must be augmented to be consistent with Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>). The FSSA term of the previous iterations is thus subtracted from the FSSA term on the current iteration, leading to:

          <disp-formula id="Ch1.E19" content-type="numbered"><label>19</label><mml:math id="M125" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>r</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 mathvariant="bold-italic">n</mml:mi><mml:mi>r</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:mi mathvariant="normal">d</mml:mi><mml:msubsup><mml:mi>s</mml:mi><mml:mi>r</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:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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 mathvariant="bold-italic">n</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mi mathvariant="normal">d</mml:mi><mml:msubsup><mml:mi>s</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        Here, we have introduced the parameters <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> for later convenience. We will call this method the <italic>subtraction-FSSA</italic>, and  we will use Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) to stabilize the fully implicit discretization for <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. By the subtraction-FSSA, the term <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">n</mml:mi></mml:mrow></mml:math></inline-formula> in Eq. (<xref ref-type="disp-formula" rid="Ch1.E15"/>), which is the net distance traveled by the surface from one time step to another, is replaced by Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>) to ensure that the correct surface displacement is used in the Reynolds transport theorem.  Setting <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> results in the original FSSA term and, for the new subtraction-FSSA, <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Exactly like for the original FSSA, the subtraction-FSSA of Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) is added to the Stokes equations. A key observation is that, if the iteration converges

          <disp-formula id="Ch1.E20" content-type="numbered"><label>20</label><mml:math id="M133" display="block"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mo>-</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mi>q</mml:mi></mml:mrow></mml:mfenced><mml:mo>→</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">as</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>r</mml:mi><mml:mo>→</mml:mo><mml:mi mathvariant="normal">∞</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        i.e. as the implicit discretizations converge, the difference between the surfaces at consecutive iterations tend to zero and thereby the stabilization also approaches zero. The iterations should therefore converge to the unstabilized implicit solution.</p>
      <p id="d2e4831">In some software programs, like Elmer/Ice, it is difficult to access the mesh and normal vector from iteration <inline-formula><mml:math id="M134" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>, required in Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>). For this purpose we introduce a simplified subtraction-FSSA, which only requires the velocity to be accessible from the previous iteration 

          <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M135" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>r</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 mathvariant="bold-italic">n</mml:mi><mml:mi>r</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:mi mathvariant="normal">d</mml:mi><mml:msubsup><mml:mi>s</mml:mi><mml:mi>r</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:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msubsup><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>r</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:munder><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold-italic">v</mml:mi><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><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 mathvariant="bold-italic">n</mml:mi><mml:mi>r</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:mi mathvariant="normal">d</mml:mi><mml:msubsup><mml:mi>s</mml:mi><mml:mi>r</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:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>A second order implicit time-stepping scheme</title>
      <p id="d2e5015">For first order Euler discretizations of the free surface equation, the numerical error increases linearly with the time step. The increased stability of FSSA and fully implicit solutions allows for large time steps, which can introduce large errors. To reduce errors, we now construct higher order time-stepping schemes. It is of course trivial to exchange the discretization of the free surface equation with a higher-order scheme. However, the FSSA stabilization term was derived from a first-order discretization of the Reynold's transport theorem, and higher-order effects of the <inline-formula><mml:math id="M136" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>-dependency of terms other than the body force term were ignored. The FSSA-stabilization will thus reduce the overall accuracy to first order. However, with the new implicit scheme introduced in Sect. <xref ref-type="sec" rid="Ch1.S4"/> it is possible to achieve higher-order accuracy since the stabilization term of Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) tends to zero. Thus, a standard implicit higher-order scheme can be applied to the free surface. Here, we choose a second-order Crank–Nicolson scheme as well as a second-order Backward Differentiation (BDF2) scheme. We present these schemes on strong form and drop the index <inline-formula><mml:math id="M137" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> for brevity of presentation. The Crank–Nicolson scheme is

          <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M138" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mfenced open="(" close=""><mml:mrow><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:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>y</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mfenced open="" close=")"><mml:mrow><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:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>x</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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>y</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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><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:msubsup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        
        where <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">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> is the solution retrieved from the implicit iterations and <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is the solution of the previous time step. The BDF2-scheme is

          <disp-formula id="Ch1.E23" content-type="numbered"><label>23</label><mml:math id="M141" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>x</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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>y</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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><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:msubsup><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S6">
  <label>6</label><title>Idealized numerical experiments</title>
<sec id="Ch1.S6.SS1">
  <label>6.1</label><title>Overview</title>
      <p id="d2e5424">To evaluate the error, the convergence order and the efficiency of the subtraction-FSSA in its full and simplified form, we run the same idealized experiments as in <xref ref-type="bibr" rid="bib1.bibx22" id="text.21"/>. The setup is relevant to mantle convection, and the experiments are inspired by the mantle convection experiments of, e.g. <xref ref-type="bibr" rid="bib1.bibx26" id="text.22"/> and <xref ref-type="bibr" rid="bib1.bibx3" id="text.23"/>. The software used is Biceps <xref ref-type="bibr" rid="bib1.bibx21" id="paren.24"/>, which is a C<inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> finite element library developed specifically to solve two-dimensional Stokes-coupled free-surface problems. It relies on the Eigen3 library <xref ref-type="bibr" rid="bib1.bibx13" id="paren.25"/> for storing and solving linear systems. Biceps includes its own suite of finite element utilities, providing users with fine-grained control over the assembly process.</p>
</sec>
<sec id="Ch1.S6.SS2">
  <label>6.2</label><title>Experimental setup</title>
      <p id="d2e5461">The simulation domain consists of a two-dimensional horizontal slab of ice with an undulating upper surface, defined over the interval <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>=</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>L</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> m, where the length of the domain <inline-formula><mml:math id="M144" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> is 100 km, see Fig. <xref ref-type="fig" rid="F3"/>. The mean ice thickness is set to <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:mi>H</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.0</mml:mn></mml:mrow></mml:math></inline-formula> km, and the surface elevation varies sinusoidally with amplitude <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula> km.

            <disp-formula id="Ch1.Ex1"><mml:math id="M147" display="block"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>H</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>cos⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi>x</mml:mi></mml:mrow><mml:mi>L</mml:mi></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The ice is treated as a Newtonian fluid (<inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>) with <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">12</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> Pa s<sup>−1</sup>. Gravity is acting in the vertical direction with magnitude <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:mi>g</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9.8</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−2</sup>, and the ice density is set to <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">910</mml:mn></mml:mrow></mml:math></inline-formula> kg m<sup>−3</sup>. The surface is a material surface, i.e. <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="F3"><label>Figure 3</label><caption><p id="d2e5687">Experimental setup. Outlined is the bulk domain <inline-formula><mml:math id="M157" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula>, the free-surface domain <inline-formula><mml:math id="M158" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>, the surface <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, the height of the surface <inline-formula><mml:math id="M160" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>, and the bedrock <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The surface will relax to the equilibrium configuration (black dashed line) as time progresses.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f03.png"/>

        </fig>

      <p id="d2e5739">The computational mesh is structured and consists of 50 elements in the horizontal direction and 5 elements in the vertical. In <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx23" id="text.26"/> the mesh dependence of the stability properties was studied in detail. Triangular elements are used with a polynomial degree of 2 for velocity, 1 for pressure, and 1 for surface height. The time integration spans a final simulation time of <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:mi>T</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20.0</mml:mn></mml:mrow></mml:math></inline-formula> years, which allows the surface to evolve significantly, yet remains far enough away from the steady-state configuration.</p>
      <p id="d2e5758">We perform experiments with first-order Euler schemes, Crank–Nicolson and BDF2, with and without stabilization, and with the maximum number of implicit iterations <inline-formula><mml:math id="M163" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> being 1 (no implicitness), 2 (minimum implicitness) and 100 (allowing full implicitness). The convergence tolerance for the implicit iterations is set to <inline-formula><mml:math id="M164" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> unless otherwise stated. Experiments are performed with time step sizes of <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.001</mml:mn></mml:mrow></mml:math></inline-formula>, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 2.5, 5, 10, and 20 years. For each experiment, we measure the error and count the number of iterations, i.e. Stokes solves.</p>
      <p id="d2e5804">To measure the errors, we construct a reference solution by running a second-order Adams–Bashforth time-stepping scheme

            <disp-formula id="Ch1.E24" content-type="numbered"><label>24</label><mml:math id="M166" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mfenced open="(" close=""><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mi>k</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mfenced open="" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>x</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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>h</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>u</mml:mi><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:msubsup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          for a very small time step of <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.00001</mml:mn></mml:mrow></mml:math></inline-formula> without FSSA-stabilization. Note that Adams–Bashforth is an explicit method, which is unstable for large time steps but stable for <inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.00001</mml:mn></mml:mrow></mml:math></inline-formula>. The convergence of the surface elevation is monitored using a normalized <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>-like metric:

            <disp-formula id="Ch1.Ex2"><mml:math id="M170" display="block"><mml:mrow><mml:mo>‖</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>h</mml:mi><mml:mo>‖</mml:mo><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>n</mml:mi></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:munderover><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mi>H</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>r</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:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mi>r</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> denote the surface height at two consecutive implicit iterations and <inline-formula><mml:math id="M173" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> is the surface mesh node.</p>
</sec>
<sec id="Ch1.S6.SS3">
  <label>6.3</label><title>Results</title>
<sec id="Ch1.S6.SS3.SSS1">
  <label>6.3.1</label><title>First order schemes</title>
      <p id="d2e6157">The results are shown in Figs. <xref ref-type="fig" rid="F4"/> and <xref ref-type="fig" rid="F5"/>, where errors in surface position are plotted against time-step size. The largest time step for which even the unstabilized explicit Euler scheme is stable is <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.01</mml:mn></mml:mrow></mml:math></inline-formula> years, see Fig. <xref ref-type="fig" rid="F5"/>a. The unstabilized implicit solver (i.e. the backward Euler or BDF1 solver) is also only stable for time steps up to <inline-formula><mml:math id="M175" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.01</mml:mn></mml:mrow></mml:math></inline-formula> years; see Fig. <xref ref-type="fig" rid="F5"/>c. For <inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.01</mml:mn></mml:mrow></mml:math></inline-formula>, one can see that the surface of the FSSA-stabilized “explicit” Euler discretization lies between the unstabilized and the fully implicit BDF1 method Fig. <xref ref-type="fig" rid="F4"/>a. This is expected since FSSA only modifies the integration domain of the right-hand side of the Stokes equations, while the left-hand-side integration domains are still treated explicitly, so the discretization is a hybrid between explicit and implicit approaches. However, the FSSA-stabilized solution is close to the implicit solution, perhaps indicating that since the flow is gravity driven, the implicit treatment of the left-hand side is not as important as that of the right-hand side.</p>

      <fig id="F4"><label>Figure 4</label><caption><p id="d2e6215">Explicit Euler with (orange) and without FSSA (green), as well as the implicit solution (blue). The top panel <bold>(a)</bold> shows the solutions for a single small time-step of size <inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.01</mml:mn></mml:mrow></mml:math></inline-formula> years, for which all methods are stable. The inserted box is a zoom in around <inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.0808</mml:mn></mml:mrow></mml:math></inline-formula>. The bottom panel <bold>(b)</bold> shows the solutions after one single large time step of size <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula> years for which the unstabilized Explicit Euler solution is unstable.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f04.png"/>

          </fig>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e6285">Error in surface position <inline-formula><mml:math id="M181" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> (in km) as computed with first order schemes for different time-steps <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> (in years). The results in panel <bold>(a)</bold> are computed using Forward Euler for the free surface, and no FSSA. The very large errors for intermediate time-step sizes are due to high frequency oscillations. For the three largest time steps, the solution is smooth but erroneous. The results of in panel <bold>(b)</bold> are computed using Forward Euler, with FSSA (<inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>). The results in panel <bold>(c)</bold> are computed using the fully implicit solver, without FSSA while the results of panel <bold>(d)</bold> are computed using the fully implicit solver with the subtraction-FSSA. For the implicit solver, a maximum of 100 implicit iterations is permitted per time step and the convergence tolerance <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> was. The reference solution is computed with <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.00001</mml:mn></mml:mrow></mml:math></inline-formula> years and the final time is 20 years.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f05.png"/>

          </fig>

      <p id="d2e6387">In Fig. <xref ref-type="fig" rid="F4"/>b, all three solutions are shown for a large time step of <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula>. The unstabilized explicit Euler scheme is unstable, and the instability is a low-frequency sloshing or ”drunken sailor” type of instability similar to those of e.g. <xref ref-type="bibr" rid="bib1.bibx16" id="text.27"/>. The FSSA-stabilized solution and the implicit solution stabilized by Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) are stable and close to each other, differing mostly at the inflection point. Interestingly, the overall error as shown in Fig. <xref ref-type="fig" rid="F5"/> is not lower for the fully implicit solver, indicating that the FSSA error is lower than the overall discretization error for first-order schemes.</p>
      <p id="d2e6413">Note that the behavior of the implicit solver depends on the convergence tolerance. If the convergence tolerance is lower than the overall discretization error, it will use up unnecessarily many iterations, and high-frequency errors will eventually start to grow. These high frequency oscillations can be mitigated by, for example, an artificial viscosity approach on the free surface equation, but we instead choose to terminate the iterative solver if <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:mo>‖</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>h</mml:mi><mml:mo>‖</mml:mo></mml:mrow></mml:math></inline-formula> grows, as this is more efficient. Note also that even though the FSSA solution from the first iteration is close to the converged implicit solution, it is not possible to only use FSSA in the first time-step, i.e. <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> is necessary for all iterations.</p>
</sec>
<sec id="Ch1.S6.SS3.SSS2">
  <label>6.3.2</label><title>Second order schemes</title>
      <p id="d2e6453">The results are shown in Figs. <xref ref-type="fig" rid="F6"/> and <xref ref-type="fig" rid="F7"/>. Just like the the first-order Euler method, the simulations are unstable without the stabilization. Simply adding the FSSA stabilization renders first-order convergence, while our idea of subtracting two FSSA terms from different iterations according to Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) renders second-order convergence for both Crank–Nicolson and BDF2. An interesting result of this is that only two iterations (Stokes solves) are needed in each time step to achieve second-order convergence. This is very advantageous for efficiency. For example, if a user requires an accuracy of 10<sup>−4</sup>, a time step <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is needed for the first-order method, that is, <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:mn mathvariant="normal">20</mml:mn><mml:mo>/</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">000</mml:mn></mml:mrow></mml:math></inline-formula> time steps are needed. The most efficient first-order method is to choose one implicit iteration, i.e., without implicitness, only FSSA stabilization. Then one Stokes solve is needed per time-step, which results in 20 000 Stokes solves. For Crank–Nicolson and BDF2, this accuracy is reached for <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula>, i.e., <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:mn mathvariant="normal">20</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">200</mml:mn></mml:mrow></mml:math></inline-formula> time steps are needed. With two Stokes solves per time step, this means that 400 Stokes solves are needed in total. The speedup should thus be about <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:mn mathvariant="normal">20000</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">400</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">50</mml:mn></mml:mrow></mml:math></inline-formula>, which is remarkable.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e6568">Error in surface position <inline-formula><mml:math id="M196" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> (in km) as computed with non-working “second order” schemes for different time-steps <inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> (in years). Panel <bold>(a)</bold> and <bold>(b)</bold> shows results computed with Crank–Nicolson and BDF2 respectively, without implicit iterations, and FSSA is instead used to approximate <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. Panel <bold>(c)</bold> and <bold>(d)</bold> shows results computed with Crank–Nicolson and BDF2 respectively, with implicit iterations but without stabilization. In panel <bold>(a)</bold> and <bold>(b)</bold> first order accuracy is seen, while second order accuracy is seen in panel <bold>(c)</bold> and <bold>(d)</bold> but only for very small time-steps. The reference solution is computed with <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.00001</mml:mn></mml:mrow></mml:math></inline-formula> years and the final time is 20 years.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f06.png"/>

          </fig>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e6652">Error in surface position <inline-formula><mml:math id="M200" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> (in km) as computed with working second order schemes for different time-steps <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> (in years). All results are computed using the fully implicit solver stabilized with the subtraction-FSSA. Panel <bold>(a)</bold> and <bold>(b)</bold> shows results computed with Crank–Nicolson and BDF2 respectively, permitting a maximum of 100 implicit iterations per time step and with a  convergence tolerance of <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. Panel <bold>(c)</bold> and <bold>(d)</bold> shows results computed with Crank–Nicolson and BDF2 respectively but only permitting a maximum of 2 implicit iterations and keeping the convergence tolerance at <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The reference solution is computed with <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.00001</mml:mn></mml:mrow></mml:math></inline-formula> years and the final time is 20 years.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f07.png"/>

            
          </fig>

</sec>
<sec id="Ch1.S6.SS3.SSS3">
  <label>6.3.3</label><title>The simplified subtraction-FSSA</title>
      <p id="d2e6751">The simplified scheme of Eq. (<xref ref-type="disp-formula" rid="Ch1.E21"/>) performs as well as the exact method of Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) for both first order and second order schemes, see Fig. <xref ref-type="fig" rid="F8"/>. Just as with the full subtraction FSSA, achieving second-order convergence requires only two coupled iterations. as for the full subtraction-FSSA, only two coupled iterations are needed to obtain second order convergence.</p>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e6762">Results computed using a fully implicit solver stabilzed by the simplified stabilization method of Eq. (<xref ref-type="disp-formula" rid="Ch1.E21"/>). Panel <bold>(a)</bold> and <bold>(b)</bold> shows results computed with BDF1 and BDF2 respectively, permitting a maximum of 100 implicit iterations per time-step. The results of panel <bold>(c)</bold> are computed using BDF2 but only permitting a maximum of 2 implicit iterations per time-step. The convergence tolerance is <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> in all simulations. As with the exact stabilization of Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>), 2 coupled iterations are enough to reach second order convergence. The reference solution is computed with <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.00001</mml:mn></mml:mrow></mml:math></inline-formula> and the final time is 20 years.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f08.png"/>

          </fig>

</sec>
</sec>
</sec>
<sec id="Ch1.S7">
  <label>7</label><title>Application to glacier simulations</title>
<sec id="Ch1.S7.SS1">
  <label>7.1</label><title>Overview</title>
      <p id="d2e6834">An important application of the methods in this paper is in the simulation of glaciers and ice sheets. These types of simulations exhibit two key characteristics which the idealized mantle convection setup of the previous section does not: <list list-type="bullet"><list-item>
      <p id="d2e6839">Non-linear rheology, with <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> in Eq. (<xref ref-type="disp-formula" rid="Ch1.E4"/>).</p></list-item><list-item>
      <p id="d2e6861">A constraint on the free surface, <inline-formula><mml:math id="M208" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>, ensuring that the surface stays above the bedrock.</p></list-item></list>
The non-linear rheology means that each Stokes solve is more expensive due to internal Picard fixed-point iterations that resolve the nonlinear viscosity. Reducing the number of time-steps would therefore be even more beneficial. The constraint on the free surface is implemented in such a way that it can impact the number of implicit iterations and possibly the accuracy of the methods, which is investigated in the experiments.</p>
      <p id="d2e6875">We evaluate the accuracy and efficiency of glacier simulations using the popular ice sheet simulation code Elmer/Ice <xref ref-type="bibr" rid="bib1.bibx11" id="paren.28"/>. Since accessing the mesh at a previous iteration in Elmer/Ice is nontrivial, we implement the simplified version of the stabilization method as in Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>). It should be noted that without stabilization, the free surface of glaciers and ice sheets is prone to instabilities, and therefore relaxation of this solution is routinely used in Elmer/ice, which might be unnecessary in simulations with FSSA.</p>
      <p id="d2e6883">We choose to model a so-called Perlin glacier similar to that of <xref ref-type="bibr" rid="bib1.bibx23" id="text.29"/>, a setup that allows for relatively fast simulations and thus thorough experimentation with parameter choices. Note that this type of mountain glacier is more stable than an ice sheet (compare the results of <xref ref-type="bibr" rid="bib1.bibx23" id="altparen.30"/> to <xref ref-type="bibr" rid="bib1.bibx22" id="altparen.31"/>), but that it has the important feature of a moving glacier front, which activates the constraint on the surface <inline-formula><mml:math id="M209" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>. In the following section, we outline the strategy used in Elmer/Ice to handle the constraint as described in <xref ref-type="bibr" rid="bib1.bibx9" id="text.32"/> and <xref ref-type="bibr" rid="bib1.bibx11" id="text.33"/>.</p>
</sec>
<sec id="Ch1.S7.SS2">
  <label>7.2</label><title>The free surface constraint</title>
      <p id="d2e6917">To prevent the ice surface from falling below the bedrock elevation <inline-formula><mml:math id="M210" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>, a constraint is imposed on the free surface:

            <disp-formula id="Ch1.E25" content-type="numbered"><label>25</label><mml:math id="M211" display="block"><mml:mrow><mml:mi>h</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:mi>b</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> avoids remeshing near the glacier front.</p>
      <p id="d2e6984">Discretizing the free surface equation (Eq. <xref ref-type="disp-formula" rid="Ch1.E10"/>) results in the linear system

            <disp-formula id="Ch1.E26" content-type="numbered"><label>26</label><mml:math id="M213" display="block"><mml:mrow><mml:mi mathvariant="bold">A</mml:mi><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          with <inline-formula><mml:math id="M214" display="inline"><mml:mi mathvariant="bold">A</mml:mi></mml:math></inline-formula> s the finite element matrix, <inline-formula><mml:math id="M215" display="inline"><mml:mi mathvariant="bold-italic">h</mml:mi></mml:math></inline-formula> the surface elevation vector, and <inline-formula><mml:math id="M216" display="inline"><mml:mi mathvariant="bold-italic">f</mml:mi></mml:math></inline-formula> the forcing vector that includes the vertical velocity and surface mass balance. The nodes on the surface boundary <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are labeled as <italic>inactive</italic> if they satisfy the constraint and <italic>active</italic> if they do not. The system is solved iteratively: First, the discretized free-surface equation (Eq. <xref ref-type="disp-formula" rid="Ch1.E26"/>) is solved. Each node is then classified as either active or inactive. A previously inactive node that violates the constraint is reclassified as active. To determine whether a previously active node should become inactive, the residual <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is evaluated: if <inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, the node is reclassified as inactive; if <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, it remains active. For active nodes, a Dirichlet condition is enforced by modifying the system such that <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:msubsup><mml:mi>A</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi>b</mml:mi></mml:mrow></mml:math></inline-formula>, setting the surface to the minimum allowable thickness, which may increase the residual in those nodes. The system (Eq. <xref ref-type="disp-formula" rid="Ch1.E26"/>) is then solved again, which requires a new check for active and inactive nodes. This iterative process continues until the solution <inline-formula><mml:math id="M223" display="inline"><mml:mi mathvariant="bold-italic">h</mml:mi></mml:math></inline-formula> converges. The full details of this procedure are described in Sect. 3.5 in <xref ref-type="bibr" rid="bib1.bibx9" id="text.34"/> and Sect. 6.5 in <xref ref-type="bibr" rid="bib1.bibx11" id="text.35"/>.</p>
      <p id="d2e7152">Note that the standard approach in glaciology is to <italic>not</italic> use implicit iterations. This does not allow the velocity to update in the system (Eq. <xref ref-type="disp-formula" rid="Ch1.E26"/>) within one time step, which for large time steps could affect behavior close to the areas where the constraint is active, i.e., close to the glacier front.</p>
</sec>
<sec id="Ch1.S7.SS3">
  <label>7.3</label><title>Experimental setup</title>
      <p id="d2e7169">The Perlin glacier is a synthetic two-dimensional glacier flowing down a mountainside (Fig. <xref ref-type="fig" rid="F9"/>). The bedrock elevation is constructed using so-called Perlin noise <xref ref-type="bibr" rid="bib1.bibx24" id="paren.36"/> and takes the form

            <disp-formula id="Ch1.E27" content-type="numbered"><label>27</label><mml:math id="M224" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mi>b</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>C</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msup><mml:msub><mml:mi mathvariant="normal">octave</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msup><mml:mi>C</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:msub><mml:mi mathvariant="normal">octave</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:msup><mml:mi>C</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:msub><mml:mi mathvariant="normal">octave</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e7284">The surface elevation, <inline-formula><mml:math id="M225" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>, of the Perlin glacier after a 400-year simulation, with varying parameters. Panels <bold>(a)</bold> and <bold>(b)</bold> show the surface elevation computed with BDF1 across the time step sizes 0.1, 5 and 10 years with subtraction-FSSA and the original FSSA formulation, along with the reference simulation with no FSSA stabilization. Panel <bold>(c)</bold> shows a comparison between BDF order 1 and 2 across simulations with time step sizes of 0.1, 5 and 10 years, all of which include the subtraction-FSSA. Panel <bold>(d)</bold> shows simulations with time step sizes of 0.1, 5 and 10 years with and without relaxation of the free-surface solver. Lastly, panel <bold>(e)</bold> shows the surface elevation with and without coupled iterations for time step sizes of 0.1, 5 and 10 years. Across all figures, the black line indicates the bed elevation.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f09.png"/>

        </fig>

      <p id="d2e7316">where <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8000</mml:mn></mml:mrow></mml:math></inline-formula> m is the horizontal extent of the domain and <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula> controls the mean slope of the bedrock. The octaves, <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">octave</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, represent noise of various frequencies, and are piecewise cubic splines where the nodes of the interpolation have an equidistant spacing of <inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:mn mathvariant="normal">2000</mml:mn><mml:mo>/</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and the gradients at the nodes are randomly generated, see Appendix A in <xref ref-type="bibr" rid="bib1.bibx23" id="text.37"/>. The approach results in a topography that resembles natural bedrock <xref ref-type="bibr" rid="bib1.bibx23" id="paren.38"/>. The topography chosen corresponds to the <inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula> simulation in <xref ref-type="bibr" rid="bib1.bibx23" id="text.39"/>.</p>
      <p id="d2e7407">At the initial time <inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, the glacier domain contains an artificial ice layer of thickness 10 m, corresponding to the minimum allowed ice thickness <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The glacier is then built up by surface accumulation, prescribed at the rate 

            <disp-formula id="Ch1.E28" content-type="numbered"><label>28</label><mml:math id="M233" display="block"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">max</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          During the simulation, the glaciated area is defined as the region where the ice thickness exceeds <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Areas with thickness equal to or less than <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are considered ice-free, consistent with standard Elmer/Ice procedures. Simulations are run until 400 years.</p>
      <p id="d2e7499">The viscosity is defined by <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:mi mathvariant="fraktur">p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M237" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msup><mml:mi>A</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, where the Glen exponent <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> and the ice fluidity factor <inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:mi>A</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> yr<sup>−1</sup> MPa<sup>−3</sup>, that is, the ice is very viscous and shear-thinning. The density of ice is 910 kg m<sup>−3</sup> and the acceleration of gravity is <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9.8</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−2</sup>. At the bottom <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> we use a linear Weertman sliding law (Eq. <xref ref-type="disp-formula" rid="Ch1.E8"/>) with friction coefficient <inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:mi>C</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula> MPa m<sup>−1</sup> a, which differs from the friction law used in <xref ref-type="bibr" rid="bib1.bibx23" id="text.40"/>, but results in a similar ice geometry.</p>
      <p id="d2e7717">Triangular elements are used with a polynomial degree of 1 for velocity, 1 for pressure, and 1 for surface height. To circumvent the inf-sup condition, we employ the stabilization method of <xref ref-type="bibr" rid="bib1.bibx10" id="text.41"/>, a common choice in Elmer/Ice. The mesh is structured with 10 vertical layers and 1000 horizontal elements. During the simulation, the mesh deforms vertically to fit the evolving free surface, and the minimum thickness <inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> prevents the elements from degenerating to zero thickness.</p>
      <p id="d2e7735">The nonlinear viscosity is resolved using Picard fixed-point iterations with a convergence tolerance of 10<sup>−8</sup> and a relaxation factor of 2/3. The linearized system is solved at each nonlinear iteration with the MUMPS direct solver <xref ref-type="bibr" rid="bib1.bibx2" id="paren.42"/>. The free surface equation is stabilized with streamline upwind Petrov-Galerkin stabilization (SUPG) <xref ref-type="bibr" rid="bib1.bibx11" id="paren.43"/> and the resulting linear system is solved with the BiCGStab method, using a convergence tolerance of 10<sup>−9</sup>. The convergence tolerance for the implicit iterations is set to <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> as in the idealized experiments, but no divergence (growing <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:mo>‖</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>h</mml:mi><mml:mo>‖</mml:mo></mml:mrow></mml:math></inline-formula>) check is needed to terminate the iterations, probably due to the use of SUPG.</p>
      <p id="d2e7801">The experiments aim to study how the geometry of the glacier front and CPU time depend on <list list-type="bullet"><list-item>
      <p id="d2e7806">the time step sizes <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>,</p></list-item><list-item>
      <p id="d2e7832">the number of maximum allowed implicit iterations <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, 3, 100,</p></list-item><list-item>
      <p id="d2e7851">FSSA stabilization (<inline-formula><mml:math id="M256" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, 1, <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, 1),</p></list-item><list-item>
      <p id="d2e7885">the order of discretization of the free surface (1 or 2), and the relaxation of the free surface (0, 0.5).</p></list-item></list></p>
      <p id="d2e7888">The simulations with a time step of 0.1 are used to produce reference solutions. The time steps of 5 and 10 years are very large. The second-order free surface discretization of choice is BDF2, since this approach is common in Elmer/Ice and showed results, which performed as well as Crank–Nicolson in the idealized experiments.</p>
</sec>
<sec id="Ch1.S7.SS4">
  <label>7.4</label><title>Results</title>
      <p id="d2e7899">In Fig. <xref ref-type="fig" rid="F9"/> the glacier geometry is shown for all the simulations performed, while the efficiency is illustrated in Fig. <xref ref-type="fig" rid="F10"/>. The stability limit for the unstabilized method lies between 1 and 5 years, which is why the case <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> is not shown for <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>. The largest stable time-step of similar simulations was studied at length in <xref ref-type="bibr" rid="bib1.bibx23" id="text.44"/>.</p>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e7951">The top panels show the average number of Picard fixed point iterations per implicit iteration, and the bottom panels show the CPU time for the same simulations as in Fig. <xref ref-type="fig" rid="F9"/>. Panels <bold>(a)</bold> and <bold>(e)</bold> illustrate the effect of the FSSA formulation (subtraction-FSSA, <inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, the original FSSA <inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and no FSSA, <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>) across the time step sizes 0.1, 5 and 10 years. These simulations are performed with BDF1 and <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula>, and with no surface relaxation. Panels <bold>(b)</bold> and <bold>(f)</bold> illustrate the effect of the BDF order in simulations with <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula>, no surface relaxation and subtraction-FSSA stabilization applied. Panels <bold>(c)</bold> and <bold>(g)</bold> illustrate the effect of surface relaxation in simulations with BDF1, <inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula>, with and without subtraction-FSSA. Lastly, panels <bold>(d)</bold> and <bold>(h)</bold> show the effect of the maximum allowed implicit iterations <inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, in simulations with BDF1, <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula>, with and without subtraction-FSSA.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/2333/2026/gmd-19-2333-2026-f10.png"/>

        </fig>

      <p id="d2e8130">Figure <xref ref-type="fig" rid="F9"/>a and the zoomed in version of Fig. <xref ref-type="fig" rid="F9"/>b show the glacier front for first-order Euler schemes with implicit iterations (i.e., BDF1). The maximum allowed implicit iterations is <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> and no surface relaxation is used. It can be seen that the glacier front is in approximately the same position for the stabilized simulations (<inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>) with large time steps <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> as it is for the reference solutions where <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula>, although the shape is smoother. The front is more accurate for the new subtracted-FSSA method (<inline-formula><mml:math id="M273" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>) than it is for the original FSSA method (<inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), and as expected, <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> gives a better result than <inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>. The CPU time is dominated by the number of linear Stokes solves, which is the number of Picard iterations per implicit iteration <inline-formula><mml:math id="M277" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> number of implicit iterations <inline-formula><mml:math id="M278" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> number of time steps. As expected, the number of nonlinear Picard iterations decreases somewhat for small time steps and with an increased number of implicit iterations (Fig. <xref ref-type="fig" rid="F10"/>a). This expected since the initial guess to the Picard solver is better in these cases (the initial is the solution from the previous time step and implicit iteration). The decreased number of time steps still renders the large time-step simulations much more efficient, as can be seen in Fig. <xref ref-type="fig" rid="F10"/>e.</p>
      <p id="d2e8278">Figure <xref ref-type="fig" rid="F9"/>c shows the effect of using a higher-order BDF2 scheme instead of the first-order Euler (BDF1) scheme. BDF2 is more accurate than BDF1, and notably it is more accurate to run a time step of <inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> using BDF2 than a time-step of <inline-formula><mml:math id="M280" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> using BDF1. As can be seen in Fig. <xref ref-type="fig" rid="F10"/>b and f, there is a very small computational cost associated with switching to BDF2. In Fig. <xref ref-type="fig" rid="F9"/>d, the effect of switching on the free surface relaxation is illustrated. The accuracy is severely affected by doing so, while the efficiency is not impacted (see Fig. <xref ref-type="fig" rid="F10"/>c and g).</p>
      <p id="d2e8318">Finally, Fig. <xref ref-type="fig" rid="F9"/>e, the impact of restricting the number of implicit iterations <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is shown. For <inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, i.e. without implicit iterations, the front is delayed for the large time steps. This is likely due to the fact that the iterations used to impose the constraint described in Sect. <xref ref-type="sec" rid="Ch1.S7.SS2"/> benefit from the velocity updates that the implicit iterations offer. In the idealized experiments, we showed that <inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> is enough to yield accurate results. However, for the Perlin glacier, <inline-formula><mml:math id="M284" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> still yields a delayed front, while <inline-formula><mml:math id="M285" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> yields as accurate results as <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula>. The extra iteration needed in the glacier experiments compared to idealized experiments is probably due to the constraint of the free surface. The computational cost is the highest for <inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="F9"/>h) but is not 100 times higher, as expected, since the number of coupled iterations is terminated by the convergence tolerance check rather than the maximum number of iterations, and since the number of Picard iterations per coupled iteration is lower for <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="F9"/>d). Setting <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> slightly reduces the computational cost, whilst retaining good accuracy.</p>
</sec>
</sec>
<sec id="Ch1.S8" sec-type="conclusions">
  <label>8</label><title>Conclusion</title>
      <p id="d2e8471">We have developed a fully implicit method that allows for very large time-steps as well as second-order accuracy in simulations of viscous free-surface flow simulations. The method has important applications in e.g. ice sheet and glacier modelling and geodynamics. The implicitness allows for large time-steps and thereby simulation speedup, while second order schemes keep accuracy high. The key is a new stabilization scheme, the <italic>subtraction-FSSA</italic>, which extends the original FSSA approach of <xref ref-type="bibr" rid="bib1.bibx16" id="text.45"/>, <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx23" id="text.46"/> and <xref ref-type="bibr" rid="bib1.bibx14" id="text.47"/>. Compared to the original FSSA stabilization, our new scheme increases accuracy, not only because it enables second-order time-stepping schemes but also because it allows for a more accurate representation of the free-surface constraint preventing negative thickness at ice sheet and glacier margins. We further find that a simplified, easy-to-implement variant of the implicit iterations performs equally well as the full method and requires only access to the velocity of the previous iteration.</p>
      <p id="d2e8486">For first-order schemes, our implicit solver matches the accuracy of explicit FSSA in unconstrained geodynamic problems, confirming that FSSA already approximates an implicit solution well in such cases. In contrast, for moving glacier fronts, implicit iterations are substantially more accurate. It is overall more computationally efficient to use large time steps with three implicit iterations compared to using smaller time-steps with no implicit iterations.</p>
      <p id="d2e8489">Second-order schemes improve accuracy for both unconstrained and constrained (glacier) problems, requiring only two implicit iterations for the former and three for the latter, keeping computational costs low. The approach of using implicit iterations to construct higher order schemes appears especially appealing for glacier and ice sheet simulations, where the implicit iterations are needed regardless for resolving the minimum thickness constraint with large time-steps. Implementations such as BDF2 add minimal overhead, needing only a small modification to the left-hand side of the free-surface equation (Eq. <xref ref-type="disp-formula" rid="Ch1.E23"/>). Overall, second-order implicit time-stepping with large time-steps is generally more efficient than first-order explicit schemes.</p>
      <p id="d2e8495">Future work will refine stopping criteria for implicit iterations and explore how to further increase accuracy near the glacier front, where a minimum thickness constraint is needed. None-the-less, subtraction-FSSA represents a major advance in accuracy and efficiency. Its integration into Elmer/Ice makes it readily available to the ice sheet community, paving the way for faster, more precise glacier and ice sheet simulations.</p>
</sec>

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

      <p id="d2e8502">The idealized experiments were performed with <italic>Biceps</italic> (<ext-link xlink:href="https://doi.org/10.5281/zenodo.17371013" ext-link-type="DOI">10.5281/zenodo.17371013</ext-link>, <xref ref-type="bibr" rid="bib1.bibx20" id="altparen.48"/> and <uri>https://github.com/andrelofgrenSU/biceps</uri>, <xref ref-type="bibr" rid="bib1.bibx21" id="altparen.49"/>). The Perlin glacier experiments were carried out using <italic>Elmer</italic> version 9.0 (<ext-link xlink:href="https://doi.org/10.5281/zenodo.7892181" ext-link-type="DOI">10.5281/zenodo.7892181</ext-link>, <xref ref-type="bibr" rid="bib1.bibx27" id="altparen.50"/>). Additional details and scripts to reproduce the figures of this paper are can be found at <ext-link xlink:href="https://doi.org/10.5281/zenodo.17475634" ext-link-type="DOI">10.5281/zenodo.17475634</ext-link> <xref ref-type="bibr" rid="bib1.bibx1" id="paren.51"/>.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e8539">JA conceptualized the subtraction-FSSA in discussion with AL. ACJH conceptualized the simplified version of the subtraction-FSSA in discussion with all authors. AL and JA implemented the full and simplified method in Biceps, while ACJH implemented the simplified method in Elmer in discussion with JA. AL designed the Biceps experimental set up while AL and AJCH designed the experimental setup in Elmer. JA performed the Biceps-simulations and ACJH performed the Elmer-simulations. All authors contributed to creating figures. JA wrote the original draft, which was edited by all authors</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e8545">The contact author has declared that none of the authors has any competing interests.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e8552">The paper was written with the assistance of ChatGPT (4 and 5), which was used to clarify the text, summarize the parameter settings in the experiment sections, write bash scripts for running experiments, and write scripts to generate the Python script that was used to create Fig. <xref ref-type="fig" rid="F2"/>. The AI-powered tool Writefull was used to polish the text. Finally we would like to thank the reviewers for helping us to improve this manuscript.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e8559">This research was funded by the Swedish Research Council, grant number 2021-04001, as well as the Swedish e-Science Research Centre (SeRC) and the Wallenberg Foundation (KAW 2021.0275).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e8565">This paper was edited by Ludovic Räss and reviewed by Boris Kaus and one anonymous referee.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Ahlkrona et al.(2025)Ahlkrona, Henry, and Lfgren</label><mixed-citation>Ahlkrona, J., Henry, C., and Löfgren, A.: Code for the publication “A Fully Implicit Second Order Method for Viscous Free Surface Stokes Flow – Application to Glacier Simulations” by Josefin Ahlkrona, André Löfgren and A. Clara J. Henry, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.17475634" ext-link-type="DOI">10.5281/zenodo.17475634</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Amestoy et al.(2001)Amestoy, Duff, Koster, and L'Excellent</label><mixed-citation>Amestoy, P., Duff, I. S., Koster, J., and L'Excellent, J.-Y.: A Fully Asynchronous Multifrontal Solver Using Distributed Dynamic Scheduling, SIAM J. Matrix Anal. Appl., 23, 15–41, <ext-link xlink:href="https://doi.org/10.1137/S0895479899358194" ext-link-type="DOI">10.1137/S0895479899358194</ext-link>, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Andrés-Martínez et al.(2015)Andrs-Martnez, Morgan, Prez-Gussiny, and Rpke</label><mixed-citation>Andrés-Martínez, M., Morgan, J. P., Pérez-Gussinyé, M., and Rüpke, L.: A new free-surface stabilization algorithm for geodynamical modelling: Theory and numerical tests, Phys. Earth Planet. Inter., 246, 41–51, <ext-link xlink:href="https://doi.org/10.1016/j.pepi.2015.07.003" ext-link-type="DOI">10.1016/j.pepi.2015.07.003</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Brezzi and Fortin(1991)</label><mixed-citation> Brezzi, F. and Fortin, M.: Mixed and Hybrid Finite Element Methods, Springer-Verlag, Inc., New York, NY, USA, ISBN 0-387-97582-9, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bueler(2016)</label><mixed-citation>Bueler, E.: Stable finite volume element schemes for the shallow-ice Approximation, J. Glaciol., 62, 230–242, <ext-link xlink:href="https://doi.org/10.1017/jog.2015.3" ext-link-type="DOI">10.1017/jog.2015.3</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Bueler(2022)</label><mixed-citation>Bueler, E.: Performance analysis of high-resolution ice-sheet simulations, J. Glaciol., 69, 930–935, <ext-link xlink:href="https://doi.org/10.1017/jog.2022.113" ext-link-type="DOI">10.1017/jog.2022.113</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Bueler(2024)</label><mixed-citation>Bueler, E.: Surface elevation errors in finite element Stokes models for glacier evolution, arXiv [preprint], <ext-link xlink:href="https://doi.org/10.48550/arXiv.2408.06470" ext-link-type="DOI">10.48550/arXiv.2408.06470</ext-link>, 2024. </mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Cheng et al.(2017)Cheng, Lötstedt, and von Sydow</label><mixed-citation>Cheng, G., Lötstedt, P., and von Sydow, L.: Accurate and stable time stepping in ice sheet modeling, J. Comput. Phys., 329, 29–47, <ext-link xlink:href="https://doi.org/10.1016/j.jcp.2016.10.060" ext-link-type="DOI">10.1016/j.jcp.2016.10.060</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Durand et al.(2009)Durand, Gagliardini, de Fleurian, Zwinger, and Le Meur</label><mixed-citation>Durand, G., Gagliardini, O., de Fleurian, B., Zwinger, T., and Le Meur, E.: Marine ice sheet dynamics: Hysteresis and neutral equilibrium, J. Geophys. Res.-Earth., 114, <ext-link xlink:href="https://doi.org/10.1029/2008JF001170" ext-link-type="DOI">10.1029/2008JF001170</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Franca and Frey(1992)</label><mixed-citation>Franca, L. P. and Frey, S. L.: Stabilized finite element methods: II. The incompressible Navier–Stokes equations, Comput. Meth. Appl. Mech. Eng., 99, 209–233, <ext-link xlink:href="https://doi.org/10.1016/0045-7825(92)90041-H" ext-link-type="DOI">10.1016/0045-7825(92)90041-H</ext-link>, 1992.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Gagliardini et al.(2013)Gagliardini, Zwinger, Gillet-Chaulet, and et al.</label><mixed-citation>Gagliardini, O., Zwinger, T., Gillet-Chaulet, F., Durand, G., Favier, L., de Fleurian, B., Greve, R., Malinen, M., Martín, C., Råback, P., Ruokolainen, J., Sacchettini, M., Schäfer, M., Seddik, H., and Thies, J.: Capabilities and performance of Elmer/Ice, a new-generation ice sheet model, Geosci. Model Dev., 6, 1299–1318, <ext-link xlink:href="https://doi.org/10.5194/gmd-6-1299-2013" ext-link-type="DOI">10.5194/gmd-6-1299-2013</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Greve and Blatter(2009)</label><mixed-citation>Greve, R. and Blatter, H.: Dynamics of Ice Sheets and Glaciers, Advances in Geophysical and Environmental Mechanics and Mathematics (AGEM<sup>2</sup>), Springer, Berlin, ISBN 978-3-642-03414-5, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Guennebaud and Jacob(2010)Guennebaud, Jacob et al.</label><mixed-citation>Guennebaud, G. and Jacob, B.: Eigen v3, <uri>http://eigen.tuxfamily.org</uri> (last access: 1 April 2025), 2010.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Henry et al.(2025)Henry, Zwinger, and Ahlkrona</label><mixed-citation>Henry, A. C. J., Zwinger, T., and Ahlkrona, J.: Grounding-line dynamics in a Stokes ice-flow model (Elmer/Ice v9.0): Improved numerical stability allows larger time steps, EGUsphere [preprint], <ext-link xlink:href="https://doi.org/10.5194/egusphere-2025-4192" ext-link-type="DOI">10.5194/egusphere-2025-4192</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Hirn(2013)</label><mixed-citation> Hirn, A.: Finite Element Approximation Of Singular Power-Law Systems, Math. Comput., 82, 1247–1268, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Kaus et al.(2010)Kaus, Mühlhaus, and May</label><mixed-citation>Kaus, B. J., Mühlhaus, H., and May, D. A.: A stabilization algorithm for geodynamic numerical simulations with a free surface, Phys. Earth Planet. Inter., 181, 12–20, <ext-link xlink:href="https://doi.org/10.1016/j.pepi.2010.04.007" ext-link-type="DOI">10.1016/j.pepi.2010.04.007</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Kramer et al.(2012)Kramer, Wilson, and Davies</label><mixed-citation>Kramer, S. C., Wilson, C. R., and Davies, D. R.: An implicit free surface algorithm for geodynamical simulations, Phys. Earth Planet. Inter., 194-195, 25–37, <ext-link xlink:href="https://doi.org/10.1016/j.pepi.2012.01.001" ext-link-type="DOI">10.1016/j.pepi.2012.01.001</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Larour et al.(2012)Larour, Seroussi, Morlighem, and Rignot</label><mixed-citation>Larour, E., Seroussi, H., Morlighem, M., and Rignot, E.: Continental scale, high order, high spatial resolution, ice sheet modeling using the Ice Sheet System Model (ISSM), J. Geophys. Res., 117, F01022, <ext-link xlink:href="https://doi.org/10.1029/2011JF002140" ext-link-type="DOI">10.1029/2011JF002140</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Leguy et al.(2021)Leguy, Lipscomb, and Asay-Davis</label><mixed-citation>Leguy, G. R., Lipscomb, W. H., and Asay-Davis, X. S.: Marine ice sheet experiments with the Community Ice Sheet Model, The Cryosphere, 15, 3229003253, <ext-link xlink:href="https://doi.org/10.5194/tc-15-3229-2021" ext-link-type="DOI">10.5194/tc-15-3229-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Löfgren(2025a)</label><mixed-citation>Löfgren, A.: andrelofgrenSU/biceps: v1.0-implicit-higher-order, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.17371013" ext-link-type="DOI">10.5281/zenodo.17371013</ext-link>, 2025a.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Löfgren(2025b)</label><mixed-citation>Löfgren, A.: Biceps: A prognostic two-dimensional full-Stokes ice-sheet solver, GitHub [code], <uri>https://github.com/andrelofgrenSU/biceps</uri> (last access: 23 April 2025), 2025b.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Löfgren et al.(2022)Löfgren, Ahlkrona, and Helanow</label><mixed-citation>Löfgren, A., Ahlkrona, J., and Helanow, C.: Increasing stable time-step sizes of the free-surface problem arising in ice-sheet simulations, J. Comput. Phys. X, 16, 100114, <ext-link xlink:href="https://doi.org/10.1016/j.jcpx.2022.100114" ext-link-type="DOI">10.1016/j.jcpx.2022.100114</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Löfgren et al.(2024)Löfgren, Zwinger, Råback, Helanow, and Ahlkrona</label><mixed-citation>Löfgren, A., Zwinger, T., Råback, P., Helanow, C., and Ahlkrona, J.: Increasing numerical stability of mountain valley glacier simulations: implementation and testing of free-surface stabilization in Elmer/Ice, The Cryosphere, 18, 3453–3470, <ext-link xlink:href="https://doi.org/10.5194/tc-18-3453-2024" ext-link-type="DOI">10.5194/tc-18-3453-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Perlin(1985)</label><mixed-citation>Perlin, K.: An image synthesizer, ACM Siggr. Comput. Graph., 19, 287–296, <ext-link xlink:href="https://doi.org/10.1145/325334.325247" ext-link-type="DOI">10.1145/325334.325247</ext-link>, 1985.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Pörtner et al.(2019)Pörtner, Roberts, and et al. (eds.)</label><mixed-citation>Pörtner, H.-O., Roberts, D. C., Masson-Delmotte, V., Zhai, P., Tignor, M., Poloczanska, E., Mintenbeck, K., Alegría, A., Nicolai, M., Okem, A., Petzold, J., Rama, B., and Weyer, N. M. (Eds.): IPCC Special Report on the Ocean and Cryosphere in a Changing Climate, Cambridge University Press, <ext-link xlink:href="https://doi.org/10.1017/9781009157964" ext-link-type="DOI">10.1017/9781009157964</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Rose et al.(2017)Rose, Buffett, and Heister</label><mixed-citation>Rose, I., Buffett, B., and Heister, T.: Stability and accuracy of free surface time integration in viscous flows, Phys. Earth Plan. Inter., 262, 90–100, <ext-link xlink:href="https://doi.org/10.1016/j.pepi.2016.11.007" ext-link-type="DOI">10.1016/j.pepi.2016.11.007</ext-link>, 2017. </mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Ruokolainen et al.(2023)Ruokolainen, Malinen, Råback, Zwinger, Takala, Kataja, Gillet-Chaulet, Ilvonen, Gladstone, Byckling, Chekki, Gong, Ponomarev, van Dongen, Robertsen, Wheel, Cook, t7saeki, luzpaz, and Rich_B</label><mixed-citation>Ruokolainen, J., Malinen, M., Råback, P., Zwinger, T., Takala, E., Kataja, J., Gillet-Chaulet, F., Ilvonen, S., Gladstone, R., Byckling, M., Chekki, M., Gong, C., Ponomarev, P., van Dongen, E., Robertsen, F., Wheel, I., Cook, S., t7saeki, luzpaz, and Rich_B: ElmerCSC/elmerfem: Elmer 9.0, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.7892181" ext-link-type="DOI">10.5281/zenodo.7892181</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Taylor and Hood(1974)</label><mixed-citation>Taylor, C. and Hood, P.: Navier Stokes equations using mixed interpolation, in: Int. Symp. on Finite Element Methods in Flow Problems, 121–132, <uri>https://api.semanticscholar.org/CorpusID:126311790</uri> (last access: 19 March 2026), 1974.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>A fully implicit second order method for viscous free surface  Stokes flow – application to glacier simulations</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Ahlkrona et al.(2025)Ahlkrona, Henry, and
Lfgren</label><mixed-citation>
      
Ahlkrona, J., Henry, C., and Löfgren, A.: Code for the publication “A Fully Implicit Second Order Method for Viscous Free Surface Stokes Flow –
Application to Glacier Simulations” by Josefin Ahlkrona, André Löfgren and A. Clara J. Henry, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.17475634" target="_blank">https://doi.org/10.5281/zenodo.17475634</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Amestoy et al.(2001)Amestoy, Duff, Koster, and L'Excellent</label><mixed-citation>
      
Amestoy, P., Duff, I. S., Koster, J., and L'Excellent, J.-Y.: A Fully
Asynchronous Multifrontal Solver Using Distributed Dynamic Scheduling, SIAM J. Matrix Anal. Appl., 23, 15–41, <a href="https://doi.org/10.1137/S0895479899358194" target="_blank">https://doi.org/10.1137/S0895479899358194</a>, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Andrés-Martínez et al.(2015)Andrs-Martnez, Morgan,
Prez-Gussiny, and Rpke</label><mixed-citation>
      
Andrés-Martínez, M., Morgan, J. P., Pérez-Gussinyé, M., and Rüpke, L.: A new free-surface stabilization algorithm for geodynamical modelling: Theory and numerical tests, Phys. Earth Planet. Inter., 246, 41–51, <a href="https://doi.org/10.1016/j.pepi.2015.07.003" target="_blank">https://doi.org/10.1016/j.pepi.2015.07.003</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Brezzi and Fortin(1991)</label><mixed-citation>
      
Brezzi, F. and Fortin, M.: Mixed and Hybrid Finite Element Methods,
Springer-Verlag, Inc., New York, NY, USA, ISBN 0-387-97582-9, 1991.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bueler(2016)</label><mixed-citation>
      
Bueler, E.: Stable finite volume element schemes for the shallow-ice
Approximation, J. Glaciol., 62, 230–242, <a href="https://doi.org/10.1017/jog.2015.3" target="_blank">https://doi.org/10.1017/jog.2015.3</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Bueler(2022)</label><mixed-citation>
      
Bueler, E.: Performance analysis of high-resolution ice-sheet simulations, J. Glaciol., 69, 930–935, <a href="https://doi.org/10.1017/jog.2022.113" target="_blank">https://doi.org/10.1017/jog.2022.113</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Bueler(2024)</label><mixed-citation>
      
Bueler, E.: Surface elevation errors in finite element Stokes models for
glacier evolution, arXiv [preprint], <a href="https://doi.org/10.48550/arXiv.2408.06470" target="_blank">https://doi.org/10.48550/arXiv.2408.06470</a>, 2024.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Cheng et al.(2017)Cheng, Lötstedt, and von Sydow</label><mixed-citation>
      
Cheng, G., Lötstedt, P., and von Sydow, L.: Accurate and stable time
stepping in ice sheet modeling, J. Comput. Phys., 329, 29–47,
<a href="https://doi.org/10.1016/j.jcp.2016.10.060" target="_blank">https://doi.org/10.1016/j.jcp.2016.10.060</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Durand et al.(2009)Durand, Gagliardini, de Fleurian, Zwinger, and
Le Meur</label><mixed-citation>
      
Durand, G., Gagliardini, O., de Fleurian, B., Zwinger, T., and Le Meur, E.:
Marine ice sheet dynamics: Hysteresis and neutral equilibrium, J. Geophys. Res.-Earth., 114, <a href="https://doi.org/10.1029/2008JF001170" target="_blank">https://doi.org/10.1029/2008JF001170</a>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Franca and Frey(1992)</label><mixed-citation>
      
Franca, L. P. and Frey, S. L.: Stabilized finite element methods: II. The
incompressible Navier–Stokes equations, Comput. Meth. Appl. Mech. Eng., 99, 209–233, <a href="https://doi.org/10.1016/0045-7825(92)90041-H" target="_blank">https://doi.org/10.1016/0045-7825(92)90041-H</a>, 1992.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Gagliardini et al.(2013)Gagliardini, Zwinger, Gillet-Chaulet, and
et al.</label><mixed-citation>
      
Gagliardini, O., Zwinger, T., Gillet-Chaulet, F., Durand, G., Favier, L., de Fleurian, B., Greve, R., Malinen, M., Martín, C., Råback, P., Ruokolainen, J., Sacchettini, M., Schäfer, M., Seddik, H., and Thies, J.: Capabilities and performance of Elmer/Ice, a new-generation ice sheet model, Geosci. Model Dev., 6, 1299–1318, <a href="https://doi.org/10.5194/gmd-6-1299-2013" target="_blank">https://doi.org/10.5194/gmd-6-1299-2013</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Greve and Blatter(2009)</label><mixed-citation>
      
Greve, R. and Blatter, H.: Dynamics of Ice Sheets and Glaciers,
Advances in Geophysical and Environmental Mechanics and Mathematics (AGEM<sup>2</sup>), Springer, Berlin, ISBN 978-3-642-03414-5, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Guennebaud and Jacob(2010)Guennebaud, Jacob et al.</label><mixed-citation>
      
Guennebaud, G. and Jacob, B.: Eigen v3, <a href="http://eigen.tuxfamily.org" target="_blank"/> (last access: 1 April 2025), 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Henry et al.(2025)Henry, Zwinger, and Ahlkrona</label><mixed-citation>
      
Henry, A. C. J., Zwinger, T., and Ahlkrona, J.: Grounding-line dynamics in a Stokes ice-flow model (Elmer/Ice v9.0): Improved numerical stability allows larger time steps, EGUsphere [preprint], <a href="https://doi.org/10.5194/egusphere-2025-4192" target="_blank">https://doi.org/10.5194/egusphere-2025-4192</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Hirn(2013)</label><mixed-citation>
      
Hirn, A.: Finite Element Approximation Of Singular Power-Law Systems, Math. Comput., 82, 1247–1268, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Kaus et al.(2010)Kaus, Mühlhaus, and May</label><mixed-citation>
      
Kaus, B. J., Mühlhaus, H., and May, D. A.: A stabilization algorithm for
geodynamic numerical simulations with a free surface, Phys. Earth Planet.
Inter., 181, 12–20, <a href="https://doi.org/10.1016/j.pepi.2010.04.007" target="_blank">https://doi.org/10.1016/j.pepi.2010.04.007</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Kramer et al.(2012)Kramer, Wilson, and Davies</label><mixed-citation>
      
Kramer, S. C., Wilson, C. R., and Davies, D. R.: An implicit free surface
algorithm for geodynamical simulations, Phys. Earth Planet. Inter., 194-195, 25–37, <a href="https://doi.org/10.1016/j.pepi.2012.01.001" target="_blank">https://doi.org/10.1016/j.pepi.2012.01.001</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Larour et al.(2012)Larour, Seroussi, Morlighem, and Rignot</label><mixed-citation>
      
Larour, E., Seroussi, H., Morlighem, M., and Rignot, E.: Continental scale,
high order, high spatial resolution, ice sheet modeling using the Ice
Sheet System Model (ISSM), J. Geophys. Res., 117, F01022,
<a href="https://doi.org/10.1029/2011JF002140" target="_blank">https://doi.org/10.1029/2011JF002140</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Leguy et al.(2021)Leguy, Lipscomb, and Asay-Davis</label><mixed-citation>
      
Leguy, G. R., Lipscomb, W. H., and Asay-Davis, X. S.: Marine ice sheet
experiments with the Community Ice Sheet Model, The Cryosphere, 15, 3229003253, <a href="https://doi.org/10.5194/tc-15-3229-2021" target="_blank">https://doi.org/10.5194/tc-15-3229-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Löfgren(2025a)</label><mixed-citation>
      
Löfgren, A.: andrelofgrenSU/biceps: v1.0-implicit-higher-order,
Zenodo [code], <a href="https://doi.org/10.5281/zenodo.17371013" target="_blank">https://doi.org/10.5281/zenodo.17371013</a>, 2025a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Löfgren(2025b)</label><mixed-citation>
      
Löfgren, A.: Biceps: A prognostic two-dimensional full-Stokes ice-sheet
solver, GitHub [code], <a href="https://github.com/andrelofgrenSU/biceps" target="_blank"/> (last access: 23 April 2025), 2025b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Löfgren et al.(2022)Löfgren, Ahlkrona, and Helanow</label><mixed-citation>
      
Löfgren, A., Ahlkrona, J., and Helanow, C.: Increasing stable time-step
sizes of the free-surface problem arising in ice-sheet simulations, J. Comput. Phys. X, 16, 100114, <a href="https://doi.org/10.1016/j.jcpx.2022.100114" target="_blank">https://doi.org/10.1016/j.jcpx.2022.100114</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Löfgren et al.(2024)Löfgren, Zwinger, Råback, Helanow, and Ahlkrona</label><mixed-citation>
      
Löfgren, A., Zwinger, T., Råback, P., Helanow, C., and Ahlkrona, J.:
Increasing numerical stability of mountain valley glacier simulations:
implementation and testing of free-surface stabilization in Elmer/Ice, The
Cryosphere, 18, 3453–3470, <a href="https://doi.org/10.5194/tc-18-3453-2024" target="_blank">https://doi.org/10.5194/tc-18-3453-2024</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Perlin(1985)</label><mixed-citation>
      
Perlin, K.: An image synthesizer, ACM Siggr. Comput. Graph., 19, 287–296, <a href="https://doi.org/10.1145/325334.325247" target="_blank">https://doi.org/10.1145/325334.325247</a>, 1985.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Pörtner et al.(2019)Pörtner, Roberts, and et al.
(eds.)</label><mixed-citation>
      
Pörtner, H.-O., Roberts, D. C., Masson-Delmotte, V., Zhai, P., Tignor, M., Poloczanska, E., Mintenbeck, K., Alegría, A., Nicolai, M., Okem, A., Petzold, J., Rama, B., and Weyer, N. M. (Eds.): IPCC Special Report on the Ocean and Cryosphere in a Changing Climate, Cambridge University Press, <a href="https://doi.org/10.1017/9781009157964" target="_blank">https://doi.org/10.1017/9781009157964</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Rose et al.(2017)Rose, Buffett, and Heister</label><mixed-citation>
      
Rose, I., Buffett, B., and Heister, T.: Stability and accuracy of free surface time integration in viscous flows, Phys. Earth Plan. Inter., 262, 90–100, <a href="https://doi.org/10.1016/j.pepi.2016.11.007" target="_blank">https://doi.org/10.1016/j.pepi.2016.11.007</a>, 2017.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Ruokolainen et al.(2023)Ruokolainen, Malinen, Råback, Zwinger,
Takala, Kataja, Gillet-Chaulet, Ilvonen, Gladstone, Byckling, Chekki, Gong,
Ponomarev, van Dongen, Robertsen, Wheel, Cook, t7saeki, luzpaz, and
Rich_B</label><mixed-citation>
      
Ruokolainen, J., Malinen, M., Råback, P., Zwinger, T., Takala, E., Kataja, J., Gillet-Chaulet, F., Ilvonen, S., Gladstone, R., Byckling, M., Chekki, M., Gong, C., Ponomarev, P., van Dongen, E., Robertsen, F., Wheel, I., Cook, S., t7saeki, luzpaz, and Rich_B: ElmerCSC/elmerfem: Elmer 9.0,
Zenodo [code], <a href="https://doi.org/10.5281/zenodo.7892181" target="_blank">https://doi.org/10.5281/zenodo.7892181</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Taylor and Hood(1974)</label><mixed-citation>
      
Taylor, C. and Hood, P.: Navier Stokes equations using mixed interpolation,
in: Int. Symp. on Finite Element Methods in Flow Problems, 121–132, <a href="https://api.semanticscholar.org/CorpusID:126311790" target="_blank"/> (last access: 19 March 2026), 1974.

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