<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "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">
  <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-13-955-2020</article-id><title-group><article-title>Modelling thermomechanical ice deformation using an implicit pseudo-transient method (FastICE v1.0) based on graphical processing units (GPUs)</article-title><alt-title>Modelling thermomechanical ice</alt-title>
      </title-group><?xmltex \runningtitle{Modelling thermomechanical ice}?><?xmltex \runningauthor{L. R\"{a}ss et al.}?>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1 aff5 aff6">
          <name><surname>Räss</surname><given-names>Ludovic</given-names></name>
          <email>ludovic.rass@gmail.com</email>
        <ext-link>https://orcid.org/0000-0002-1136-899X</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2 aff3">
          <name><surname>Licul</surname><given-names>Aleksandar</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2 aff3">
          <name><surname>Herman</surname><given-names>Frédéric</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff3 aff4">
          <name><surname>Podladchikov</surname><given-names>Yury Y.</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-6369-7277</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Suckale</surname><given-names>Jenny</given-names></name>
          
        </contrib>
        <aff id="aff1"><label>1</label><institution>Stanford University, Geophysics Department, 397 Panama Mall, Stanford, CA 94305, USA</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Institute of Earth Surface Dynamics, University of Lausanne, 1015 Lausanne, Switzerland</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>Swiss Geocomputing Centre, University of Lausanne, 1015 Lausanne, Switzerland</institution>
        </aff>
        <aff id="aff4"><label>4</label><institution>Institute of Earth Sciences, University of Lausanne, 1015 Lausanne, Switzerland</institution>
        </aff>
        <aff id="aff5"><label>a</label><institution>now at: Laboratory of Hydraulics, Hydrology and Glaciology (VAW), ETH Zurich, Zurich, Switzerland</institution>
        </aff>
        <aff id="aff6"><label>b</label><institution>now at: Swiss Federal Institute for Forest, Snow and Landscape Research (WSL), Birmensdorf, Switzerland</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Ludovic Räss (ludovic.rass@gmail.com)</corresp></author-notes><pub-date><day>6</day><month>March</month><year>2020</year></pub-date>
      
      <volume>13</volume>
      <issue>3</issue>
      <fpage>955</fpage><lpage>976</lpage>
      <history>
        <date date-type="received"><day>3</day><month>September</month><year>2019</year></date>
           <date date-type="rev-request"><day>9</day><month>September</month><year>2019</year></date>
           <date date-type="rev-recd"><day>6</day><month>December</month><year>2019</year></date>
           <date date-type="accepted"><day>5</day><month>February</month><year>2020</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2020 </copyright-statement>
        <copyright-year>2020</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/.html">This article is available from https://gmd.copernicus.org/articles/.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/.pdf</self-uri>
      <abstract><title>Abstract</title>
    <p id="d1e151">Ice sheets lose  the majority of their mass through outlet glaciers or ice streams, corridors of fast ice moving multiple orders of magnitude more rapidly than the surrounding ice. The future stability of these corridors of fast-moving ice depends sensitively on the behaviour of their boundaries, namely shear margins, grounding zones and the basal sliding interface, where the stress field is complex and fundamentally three-dimensional. These boundaries are prone to thermomechanical localisation, which can be captured numerically only with high temporal and spatial resolution. Thus, better understanding the coupled physical processes that govern the response of these boundaries to climate change necessitates a non-linear, full Stokes model that affords high resolution and scales well in three dimensions. This paper's goal is to contribute to the growing toolbox for modelling thermomechanical deformation in ice by leveraging   graphical processing unit (GPU) accelerators' parallel scalability. We propose FastICE, a numerical model that relies on pseudo-transient iterations to solve the implicit thermomechanical coupling between ice motion and temperature involving shear heating and a temperature-dependent ice viscosity. FastICE is based on the finite-difference discretisation, and we implement the pseudo-time integration in a matrix-free way. We benchmark the mechanical Stokes solver against the finite-element code Elmer/Ice and report good agreement among the results. We showcase a parallel version of FastICE to run on GPU-accelerated distributed memory machines, reaching a parallel efficiency of 99 %. We show that our model is particularly useful for improving our process-based understanding of flow localisation in the complex transition zones bounding rapidly moving ice.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d1e163">The fourth IPCC report <xref ref-type="bibr" rid="bib1.bibx59" id="paren.1"/> concludes that existing ice-sheet flow models do not accurately describe polar ice-sheet discharge <xref ref-type="bibr" rid="bib1.bibx17 bib1.bibx44" id="paren.2"><named-content content-type="pre">e.g.</named-content></xref> owing to their inability to simultaneously model slow and fast ice motion <xref ref-type="bibr" rid="bib1.bibx17 bib1.bibx5" id="paren.3"/>. This issue results from the fact that many ice-flow models are based on simplified approximations of non-linear Stokes equations, such as first-order Stokes <xref ref-type="bibr" rid="bib1.bibx47 bib1.bibx61" id="paren.4"/>, shallow shelf <xref ref-type="bibr" rid="bib1.bibx5" id="paren.5"/> and shallow ice <xref ref-type="bibr" rid="bib1.bibx1 bib1.bibx57 bib1.bibx22 bib1.bibx14 bib1.bibx49" id="paren.6"/> models. Shallow ice models are computationally more tractable and describe the motion of large homogeneous portions of ice as a function of the basal friction. However, this category of models fails to capture the coupled multiscale processes that govern the behaviour of the boundaries of streaming ice, including shear margins,<?pagebreak page956?> grounding zones and the basal interface. These boundaries dictate the stability of the current main drainage routes from Antarctica and Greenland, and predicting their future evolution is critical for understanding polar ice-sheet discharge.</p>
      <p id="d1e187">Full Stokes models <xref ref-type="bibr" rid="bib1.bibx16 bib1.bibx17 bib1.bibx30 bib1.bibx31 bib1.bibx35 bib1.bibx36 bib1.bibx37 bib1.bibx3 bib1.bibx29" id="paren.7"/> provide a complete mechanical description of deformation by capturing the entire stress rate and strain rate tensor. In three dimensions (3-D), full Stokes calculations set a high demand on computational resources that requires a parallel and high-performance computing approach to achieve reasonable times to solution. An added challenge in full Stokes models is the strongly non-linear thermomechanics of ice. Ice viscosity significantly depends on both temperature and strain rate <xref ref-type="bibr" rid="bib1.bibx54 bib1.bibx27 bib1.bibx39" id="paren.8"/>, which can lead to spontaneous localisation of shear <xref ref-type="bibr" rid="bib1.bibx13 bib1.bibx51" id="paren.9"><named-content content-type="pre">e.g.</named-content></xref>. Particularly challenging is the scale separation associated with localisation, which leads to microscale physical interaction generating mesoscale features such as thermally activated shear zones or preferential flow paths in macroscale ice domains. Thus, both high spatial and temporal resolutions are important for numerical models to capture and resolve spontaneous localisation.</p>
      <p id="d1e201">The main contribution of this paper is to leverage the unprecedented parallel performance of modern graphical processing units (GPUs) to accelerate the time to solution for thermomechanically coupled full Stokes models in 3-D utilising a pseudo-transient (PT) iterative scheme – FastICE <xref ref-type="bibr" rid="bib1.bibx52" id="paren.10"/>. FastICE is a process-based model that focuses specifically on improving our ability to better model and understand spontaneous englacial instabilities such as thermomechanical localisation at the scale of individual field sites. Thermomechanical localisation arises in a self-consistent way in shear margins, at the grounding zone and in the vicinity of the basal sliding interface, making our model particularly well suited for assessing the complex physical feedbacks in the boundaries of fast-moving ice. FastICE is a complement to existing models by providing a multi-physics platform for studying the transition between fast and slow ice motion rather than addressing the large-scale evolution of the entire ice sheet.</p>
      <p id="d1e207">Recent trends in the computing industry show a shift from single-core to many-core architectures as an effective way to increase computational performance. This trend is common to both central processing unit (CPU) and GPU hardware architectures <xref ref-type="bibr" rid="bib1.bibx10" id="paren.11"/>. GPUs are compact, affordable and relatively programmable devices that offer high-performance throughput (close to TB per second peak memory throughput) and a good price-to-performance ratio. GPUs offer an attractive alternative to conventional CPUs owing to their massively parallel architecture featuring thousands of cores. The programming model behind GPUs is based on a parallel principle called single instruction multiple data (SIMD). This principle entails every single instruction being executed on different data. The same instruction block is executed by every thread. GPUs' massive parallelism and the related high performance is achieved by executing thousands of threads concurrently using multi-threading in order to effectively hide latency. Numerical stencil-based techniques such as the finite-difference method allow one to take advantage of GPU hardware, since spatial derivatives are approximated by differences between two (or more) adjacent grid points. This results in minimal, local and regular memory access patterns. The operations performed on each stencil are identical for each grid point throughout the entire computational domain. Combined with a matrix-free discretisation of the equations and iterative PT updates, the finite-difference stencil evaluation is well suited for the SIMD programming philosophy of GPUs. Each operation on the GPU assigns one thread to compute the update of a given grid point. Since on the GPU device, one core can simultaneously execute several threads, the operation set is executed on the entire computational domain almost concurrently.</p>
      <p id="d1e214">We tailor our numerical method to optimally exploit the massive parallelism of GPU hardware, taking inspiration from recent successful GPU-based implementations of viscous and coupled flow problems <xref ref-type="bibr" rid="bib1.bibx42 bib1.bibx50 bib1.bibx51 bib1.bibx13" id="paren.12"/>. Our work is most comparable to the few land–ice dynamical cores targeting many-core architectures such as GPUs <xref ref-type="bibr" rid="bib1.bibx2 bib1.bibx63" id="paren.13"/>. Our numerical implementation relies on an iterative and matrix-free method to solve the mechanical and thermal problems using a finite-difference discretisation on a Cartesian staggered grid. We ensure optimal performance, minimising the memory footprint bottleneck while ensuring optimal data alignment in computer memory. Our accelerated PT algorithm <xref ref-type="bibr" rid="bib1.bibx15 bib1.bibx12 bib1.bibx48 bib1.bibx32 bib1.bibx33" id="paren.14"/> utilises an analogy of transient physics to converge to the steady-state problem at every time step. One advantage of this approach is that the iterative stability criterion is physically motivated and intuitive to adjust and to generalise. Using transient physics for numerical purposes allows us to define local CFL-like (Courant–Friedrich–Lewy) criteria in each computational cell to be used to minimise residuals. This approach enables a maximal convergence rate simultaneously in the entire domain and avoids costly global reduction operations from becoming a bottleneck in parallel computing.</p>
      <?pagebreak page957?><p id="d1e226">We verify the numerical implementation of our mechanical Stokes solver against available benchmark studies including EISMINT <xref ref-type="bibr" rid="bib1.bibx28" id="paren.15"/> and ISMIP <xref ref-type="bibr" rid="bib1.bibx44" id="paren.16"/>. There is only one model inter-comparison that investigates the coupled thermomechanical dynamics, EISMINT 2 <xref ref-type="bibr" rid="bib1.bibx46" id="paren.17"/>. Unfortunately, experiments in EISMINT 2 are usually performed using a coupled thermomechanical first-order shallow ice model <xref ref-type="bibr" rid="bib1.bibx45 bib1.bibx55 bib1.bibx25 bib1.bibx26 bib1.bibx6 bib1.bibx4" id="paren.18"/>, making the comparison to our full Stokes implementation less immediate. Although thermomechanically coupled Stokes models exist <xref ref-type="bibr" rid="bib1.bibx66 bib1.bibx37 bib1.bibx56 bib1.bibx20 bib1.bibx65 bib1.bibx23" id="paren.19"/>, very few studies have investigated key aspects of the implemented model, such as convergence among grid refinement and impacts of one-way vs. two-way couplings, with few exceptions <xref ref-type="bibr" rid="bib1.bibx13" id="paren.20"><named-content content-type="pre">e.g.</named-content></xref>.</p>
      <p id="d1e250">We start by providing an overview of the mathematical model, describing ice dynamics and its numerical implementation. We then discuss GPU capabilities and explain our GPU implementation. We further report model comparison against a selection of benchmark studies, followed by sharing the results and performance measurements. Finally, we discuss pros and cons of the method and highlight glaciological contexts in which our model could prove useful. The code examples based on the PT method in both the MATLAB and CUDA C programming language are available for download from Bitbucket at: <uri>https://bitbucket.org/lraess/fastice/</uri> (last access: 2 March 2020) and from: <uri>http://wp.unil.ch/geocomputing/software/</uri> (last access: 2 March 2020).</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>The model</title>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>The mathematical model</title>
      <p id="d1e274">We capture the flow of an incompressible, non-linear, viscous fluid – including a temperature-dependent rheology. Since ice is approximately incompressible, the equation for conservation of mass reduces to
            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M1" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the velocity component in the spatial direction <inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d1e330">Neglecting inertial forces, ice's flow is driven by gravity and is resisted by internal deformation and basal stress:
            <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M4" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><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:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>g</mml:mi><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</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">0</mml:mn><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mi>cot⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> is the external force. Ice density is denoted by <inline-formula><mml:math id="M6" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M7" display="inline"><mml:mi>g</mml:mi></mml:math></inline-formula> is the gravitational acceleration and <inline-formula><mml:math id="M8" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> is the characteristic bed slope. <inline-formula><mml:math id="M9" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula> is the isotropic pressure and <inline-formula><mml:math id="M10" display="inline"><mml:mrow><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> is the deviatoric stress tensor. The deviatoric stress tensor <inline-formula><mml:math id="M11" display="inline"><mml:mrow><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> is obtained by decomposing the Cauchy stress tensor <inline-formula><mml:math id="M12" display="inline"><mml:mrow><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> in terms of deviatoric stress <inline-formula><mml:math id="M13" display="inline"><mml:mrow><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 isotropic pressure <inline-formula><mml:math id="M14" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula>.</p>
      <p id="d1e531">In the absence of phase transitions, the temporal evolution of temperature in deforming, incompressible ice is governed by advection, diffusion and shear heating:
            <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M15" display="block"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>c</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>k</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><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:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M16" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> represents the temperature deviation from the initial temperature <inline-formula><mml:math id="M17" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M18" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula> is the specific heat capacity, <inline-formula><mml:math id="M19" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> is the spatially varying thermal conductivity and <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the strain rate tensor. The term <inline-formula><mml:math id="M21" display="inline"><mml:mrow><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:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> represents the shear heating, a source term that emerges from the mechanical model.</p>
      <p id="d1e712">Shear heating could locally raise the temperature in the ice to the pressure melting point. Once ice has reached the melting point, any additional heating is converted to latent heat, which prevents further temperature increase. Thus, we impose a temperature cap at the pressure melting point, following <xref ref-type="bibr" rid="bib1.bibx60" id="text.21"/>, by describing the melt production using a Heaviside function <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>:
            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M23" display="block"><mml:mrow><?xmltex \hack{\hbox\bgroup\fontsize{8.8}{8.8}\selectfont$\displaystyle}?><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>c</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>k</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="italic">χ</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>)</mml:mo><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:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo><?xmltex \hack{$\egroup}?></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> stands for the ice melting temperature. We balance the heat produced by shear heating with a sink term in regions where the melting temperature is reached. The volume of produced meltwater can be calculated in a similar way as proposed by <xref ref-type="bibr" rid="bib1.bibx60" id="text.22"/>.</p>
      <p id="d1e883">We approximate the rheology of ice through Glen's flow law <xref ref-type="bibr" rid="bib1.bibx21 bib1.bibx40" id="paren.23"/>:
            <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M25" display="block"><mml:mrow><?xmltex \hack{\hbox\bgroup\fontsize{9}{9}\selectfont$\displaystyle}?><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml: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 open="(" close=")"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:msup><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">II</mml:mi></mml:msub><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mi>exp⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>Q</mml:mi><mml:mrow><mml:mi>R</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><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:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo><?xmltex \hack{$\egroup}?></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the pre-exponential factor, <inline-formula><mml:math id="M27" display="inline"><mml:mi>R</mml:mi></mml:math></inline-formula> is the universal gas constant, <inline-formula><mml:math id="M28" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula> is the activation energy, <inline-formula><mml:math id="M29" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> is the stress exponent and <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">II</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the second invariant of the stress tensor defined by <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">II</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><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: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:msqrt></mml:mrow></mml:math></inline-formula>. Glen's flow law posits an exponent of <inline-formula><mml:math id="M32" 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>.</p>
      <p id="d1e1107">At the ice-top surface <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, we impose the upper surface boundary condition <inline-formula><mml:math id="M34" display="inline"><mml:mrow><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:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">atm</mml:mi></mml:msub><mml:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> denotes the normal unit vector at the ice surface boundary and <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">atm</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the atmospheric pressure. Because atmospheric pressure is negligible relative to pressure within the ice column, we can also use a standard stress-free simplification of the upper surface boundary condition <inline-formula><mml:math id="M37" display="inline"><mml:mrow><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:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. On the bottom ice–bedrock interface, we can impose two different boundary conditions. For the parts of the ice–bedrock interface <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> where the ice is frozen to the ground, we impose a zero velocity <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and thus no sliding boundary condition. On the parts of the ice–bedrock interface <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> where the ice is at the melting point, we impose a Rayleigh friction boundary condition – the so-called linear sliding law – given by
            <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M41" display="block"><mml:mtable class="split" columnspacing="1em" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub><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:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where the parameter <inline-formula><mml:math id="M42" 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> denotes a given sliding coefficient, <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> denotes the normal unit vector at the ice–bedrock interface and <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> denotes any unit vector tangential to the bottom surface. On the side or lateral boundaries, we impose either Dirichlet boundary conditions if the velocities are known or periodic boundary conditions, mimicking an infinitely extended domain.</p>
</sec>
<?pagebreak page958?><sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Non-dimensionalisation</title>
      <p id="d1e1369">For numerical purposes and for ease of generalisation, it is often preferable to use non-dimensional variables. This allows one to limit truncation errors (especially relevant for single-precision calculations) and to scale the results to various different initial configurations. Here, we use two different scale sets, depending on whether we solve the purely mechanical part of the model or the thermomechanically coupled system of equations.</p>
      <p id="d1e1372">In the case of an isothermal model, we use ice thickness, <inline-formula><mml:math id="M45" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula>, and gravitational driving stress to non-dimensionalise the governing equations:
            <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M46" display="block"><mml:mtable class="split" columnspacing="1em" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi>L</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mi>H</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">τ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>g</mml:mi><mml:mover accent="true"><mml:mi>L</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mi>n</mml:mi></mml:msup><mml:msub><mml:mi>A</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mi>L</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:msup><mml:mover accent="true"><mml:mi mathvariant="italic">τ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>n</mml:mi></mml:msup><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the isothermal deformation rate factor and <inline-formula><mml:math id="M48" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> is the mean bed slope. We can then rewrite the governing equations in their non-dimensional form as follows:
            <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M49" display="block"><mml:mtable columnspacing="1em" class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>P</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml: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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:msup><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">II</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> is now defined as <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mi>cot⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>. The model parameters are the mean bed slope <inline-formula><mml:math id="M52" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> and domain size in each horizontal direction, i.e. <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>x</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>y</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d1e1796">Reducing the thermomechanically coupled equations to a non-dimensional form requires not only length and stress, but also temperature and time. We choose the characteristic scales such that the coefficients in front of the diffusion and shear heating terms in the temperature evolution Eq. (<xref ref-type="disp-formula" rid="Ch1.E3"/>) reduce to 1:
            <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M55" display="block"><mml:mtable columnspacing="1em" class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi>T</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>n</mml:mi><mml:mi>R</mml:mi><mml:msup><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mi>Q</mml:mi></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">τ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mover accent="true"><mml:mi>T</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi>t</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:msubsup><mml:mi>a</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:msup><mml:mover accent="true"><mml:mi mathvariant="italic">τ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mo>-</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mi>exp⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>Q</mml:mi><mml:mrow><mml:mi>R</mml:mi><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi>L</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>k</mml:mi><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mover accent="true"><mml:mi>t</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:msqrt><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          These choices entail the velocity scale in the thermomechanical model being <inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi>L</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi>t</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>. We obtain the non-dimensional (primed variables) by using the characteristic scales given in Eq. (<xref ref-type="disp-formula" rid="Ch1.E9"/>), which leads to<?xmltex \hack{\newpage}?>
            <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M57" display="block"><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>P</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>T</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>T</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:msup><mml:mi>T</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:msub><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml: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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>v</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msubsup><mml:mi>x</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="1em"/><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:msup><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">II</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mi>exp⁡</mml:mi><mml:mo mathsize="2.5em">(</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>n</mml:mi><mml:msup><mml:mi>T</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msup><mml:mi>T</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:msubsup><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.5em">)</mml:mo><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> is now defined as <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msubsup><mml:mi>F</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mi>cot⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>g</mml:mi><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">α</mml:mi><mml:mo>)</mml:mo><mml:mover accent="true"><mml:mi>L</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">τ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>. The model parameters are the non-dimensional initial temperature <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:msubsup><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, the stress exponent <inline-formula><mml:math id="M62" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>, the non-dimensional force <inline-formula><mml:math id="M63" display="inline"><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>, the mean bed slope <inline-formula><mml:math id="M64" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, non-dimensional domain height <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>z</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, and the horizontal domain size <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>x</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>y</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="Ch1.F3"/>). We motivate the chosen characteristic scales by their usage in other studies of thermomechanical strain localisation <xref ref-type="bibr" rid="bib1.bibx13 bib1.bibx34" id="paren.24"/>. In the interest of a simple notation, we will omit the prime symbols on all non-dimensional variables in the remainder of the paper.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>A simplified 1-D semi-analytical solution</title>
      <p id="d1e2543">We consider a specific 1-D mathematical case in which all horizontal derivatives vanish (<inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>). The only remaining shear stress component <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and pressure <inline-formula><mml:math id="M70" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula> are determined by analytical integration and are constant in time considering a fixed domain. We assume that stresses vanish at the surface, and we set both horizontal and vertical basal velocity components to <inline-formula><mml:math id="M71" display="inline"><mml:mn mathvariant="normal">0</mml:mn></mml:math></inline-formula>. We then integrate the 1-D mechanical equation in the vertical direction and substitute it into the temperature equation, which leads to
            <disp-formula id="Ch1.E11" content-type="numbered"><label>11</label><mml:math id="M72" display="block"><mml:mtable columnspacing="1em" class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</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:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>T</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:mrow><mml:mo>∂</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml: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:mrow></mml:msup><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mrow><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:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>z</mml:mi><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mrow><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:mi>exp⁡</mml:mi><mml:mo mathsize="2.5em">(</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>n</mml:mi><mml:mi>T</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:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi>T</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:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.5em">)</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml: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:mrow></mml:msup><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi>n</mml:mi></mml:msup><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi>z</mml:mi></mml:munderover><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>z</mml:mi><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi>exp⁡</mml:mi><mml:mo mathsize="2.5em">(</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>n</mml:mi><mml:mi>T</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:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi>T</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:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.5em">)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi>z</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          Notably, the velocity and shear heating terms (Eq. <xref ref-type="disp-formula" rid="Ch1.E11"/>) are now a function only of temperature and thus of depth and time. To obtain a solution to the coupled system, one only<?pagebreak page959?> needs to numerically solve for the temperature evolution profile, while the velocity can then be obtained diagnostically by a simple numerical integration.</p>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>The numerical implementation</title>
      <p id="d1e2935">We discretise the coupled thermomechanical Stokes equations (Eq. <xref ref-type="disp-formula" rid="Ch1.E10"/>) using the finite-difference method on a staggered Cartesian grid. Among many numerical methods currently used to solve partial differential equations, the finite-difference method is commonly used and has been successfully applied in solving a similar equation set relating to geophysical problems in geodynamics <xref ref-type="bibr" rid="bib1.bibx24 bib1.bibx41 bib1.bibx18" id="paren.25"/>. The staggering of the grid provides second-order accuracy of the method <xref ref-type="bibr" rid="bib1.bibx62 bib1.bibx43 bib1.bibx19 bib1.bibx38" id="paren.26"/>, avoids oscillatory pressure modes <xref ref-type="bibr" rid="bib1.bibx58" id="paren.27"/> and produces simple yet highly compact stencils. The different physical variables are located at different locations on the staggered grid. Pressure nodes and normal components of the strain rate tensor are located at the cell centres. Velocity components are located at the cell mid-faces (Fig. <xref ref-type="fig" rid="Ch1.F1"/>), while shear stress components are located at the cell vertices in 2-D <xref ref-type="bibr" rid="bib1.bibx24" id="paren.28"><named-content content-type="pre">e.g.</named-content></xref>. The resulting algorithms are well suited for taking advantage of modern many-core parallel accelerators, such as graphical processing units (GPUs) <xref ref-type="bibr" rid="bib1.bibx42 bib1.bibx50 bib1.bibx51 bib1.bibx13" id="paren.29"/>. Efficient parallel solvers utilising modern hardware provide a viable solution to resolve the computationally challenging coupled thermomechanical full Stokes calculations in 3-D. The power-law viscous ice rheology (Eq. <xref ref-type="disp-formula" rid="Ch1.E5"/>) exhibits a non-linear dependence on both the temperature and the strain rate:
            <disp-formula id="Ch1.E12" content-type="numbered"><label>12</label><mml:math id="M73" display="block"><mml:mrow><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mi mathvariant="normal">II</mml:mi></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mstyle scriptlevel="+1"><mml:mfrac><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>n</mml:mi></mml:mrow><mml:mi>n</mml:mi></mml:mfrac></mml:mstyle></mml:msup><mml:mi>exp⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>T</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi>T</mml:mi><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi mathvariant="normal">II</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the square root of the second invariant of the strain rate tensor <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi mathvariant="normal">II</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msqrt></mml:mrow></mml:math></inline-formula>. We regularise the strain rate and temperature-dependent viscosity <inline-formula><mml:math id="M76" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> to prevent non-physical values for negligible strain rates, <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">reg</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="italic">η</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><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>. We use a harmonic mean to obtain a naturally smooth transition to background viscosity values at negligible strain rate <inline-formula><mml:math id="M78" 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>.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F1"><?xmltex \currentcnt{1}?><label>Figure 1</label><caption><p id="d1e3142">Setup of the staggered grid in 2-D. Variable <inline-formula><mml:math id="M79" display="inline"><mml:mi>C</mml:mi></mml:math></inline-formula> is located at the cell centre, <inline-formula><mml:math id="M80" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula> depicts variables located at cell vertices, and M<inline-formula><mml:math id="M81" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and M<inline-formula><mml:math id="M82" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> represent variables located at cell mid-faces in the <inline-formula><mml:math id="M83" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> or <inline-formula><mml:math id="M84" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> direction.</p></caption>
          <?xmltex \igopts{width=142.26378pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f01.png"/>

        </fig>

      <p id="d1e3194">We define temperature on the cell centres within our staggered grid. We discretise the temperature equation's advection term using a first-order upwind scheme, doing the physical time integration using either an implicit backward Euler or a Crank–Nicolson <xref ref-type="bibr" rid="bib1.bibx11" id="paren.30"/> scheme. To ensure that our numerical results are not confounded by numerical diffusion, the grid Peclet number must be smaller than the physical Peclet number. Limiting numerical diffusion is one motivation for using high numerical resolution in our computations.</p>
      <p id="d1e3201">We rely on a pseudo-transient (PT) continuation or relaxation method to solve the system of coupled non-linear partial differential equations (Eq. <xref ref-type="disp-formula" rid="Ch1.E10"/>) in an iterative and matrix-free way <xref ref-type="bibr" rid="bib1.bibx15 bib1.bibx12 bib1.bibx48 bib1.bibx32 bib1.bibx33" id="paren.31"/>. To this end, we reformulate the thermomechanical Eq. (<xref ref-type="disp-formula" rid="Ch1.E10"/>) in a residual form:
            <disp-formula id="Ch1.E13" content-type="numbered"><label>13</label><mml:math id="M85" display="block"><mml:mtable rowspacing="0.2ex" class="split" columnspacing="1em" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><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:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><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:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          The right-hand-side terms <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are the non-linear continuity, momentum and temperature residuals, respectively, and quantify the magnitude of the imbalance of the corresponding equations.</p>
      <?pagebreak page960?><p id="d1e3442">We augment the steady-state equations with PT terms using the analogy of physical transient processes such as the bulk compressibility or the inertial terms within the momentum equations <xref ref-type="bibr" rid="bib1.bibx13" id="paren.32"/>. This formulation enables us to integrate the equation forward in pseudo-time <inline-formula><mml:math id="M87" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> until we reach the steady state (i.e. the pseudo-time derivatives vanish). Relying on transient physics within the iterative process provides well-defined (maximal) iterative time step limiters. We reformulate Eq. (<xref ref-type="disp-formula" rid="Ch1.E10"/>):
            <disp-formula id="Ch1.E14" content-type="numbered"><label>14</label><mml:math id="M88" display="block"><mml:mtable rowspacing="0.2ex" class="split" columnspacing="1em" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><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:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msup><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><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:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>T</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where we introduced the pseudo-time derivatives <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:math></inline-formula> for the continuity <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mo>∂</mml:mo><mml:mi>P</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>p</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the momentum <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and the temperature <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mo>∂</mml:mo><mml:mi>T</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> equation.</p>
      <p id="d1e3779">For every non-linear iteration <inline-formula><mml:math id="M93" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>, we update the effective viscosity <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msup><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> in the logarithmic space by taking a fraction <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of the actual physical viscosity <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">η</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> using the current strain rate and temperature solution fields and a fraction <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> of the effective viscosity calculated in the previous iteration <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msup><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>:
            <disp-formula id="Ch1.E15" content-type="numbered"><label>15</label><mml:math id="M99" display="block"><mml:mrow><mml:msup><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi>exp⁡</mml:mi><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:mi>ln⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi mathvariant="italic">η</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>ln⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          We use the scalar <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>≤</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to select the fraction of a given non-linear quantity, here the effective viscosity <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, to be updated each iteration. When <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, we would always use the initial guess, while for <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, we would take <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:mn mathvariant="normal">100</mml:mn><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> of the current non-linear quantity. We usually define theta to be in the range of <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> in order to account for some time to fully relax the non-linear viscosity as the non-linear problem may not be sufficiently converged at the beginning of the iterations. This approach is in a way similar to an under-relaxation scheme and was successfully implemented in the ice-sheet model development by <xref ref-type="bibr" rid="bib1.bibx61" id="text.33"/>, for example.</p>
      <p id="d1e4069">The pseudo-time integration of Eq. (<xref ref-type="disp-formula" rid="Ch1.E14"/>) leads to the definition of pseudo-time steps <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the continuity, momentum and temperature equations, respectively. Transient physical processes such as compressibility (continuity equation) or acceleration (momentum equation) dictate the maximal allowed explicit pseudo-time step to be utilised in the transient process. Using the largest stable steps allows one to minimise the iteration count required to reach the steady state:
            <disp-formula id="Ch1.E16" content-type="numbered"><label>16</label><mml:math id="M108" display="block"><mml:mtable class="split" columnspacing="1em" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2.1</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">dim</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">eff</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>max⁡</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>min⁡</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2.1</mml:mn><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">dim</mml:mi></mml:msub><mml:msubsup><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">eff</mml:mi><mml:mi>k</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2.1</mml:mn><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">dim</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>min⁡</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where <inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">dim</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the number of dimensions, and <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are the grid spacing and the number of grid points in the <inline-formula><mml:math id="M112" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> direction (<inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> in 1-D, <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> in 2-D and <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> in 3-D), respectively. The physical time step, <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula>, advances the temperature in time. The pseudo-time step <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is an explicit Courant–Friedrich–Lewy (CFL) time step that combines temperature advection and diffusion. Similarly, <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the explicit CFL time step for viscous flow, representing the diffusion of strain rates with viscosity as the diffusion coefficient. It is modified to account for the numerical equivalent of a bulk viscosity <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. We choose <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to be the inverse of <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> to ensure that the pressure update is proportional to the effective viscosity, while the velocity update is sensitive to the inverse of the viscosity. This interdependence reduces the iterative method's sensitivity to the variations in the ice's viscosity.</p>
      <p id="d1e4476">During the iterative procedure, we allow for finite compressibility in the ice, <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>P</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, while ensuring that the PT iterations eventually reach the incompressible solution. The relaxation of the incompressibility constraint is analogous to the penalisation of pressure pioneered by <xref ref-type="bibr" rid="bib1.bibx7 bib1.bibx8" id="text.34"/> and subsequently extended by others. Compared to projection-type methods, it has the advantage that no pressure boundary condition is necessary that will lead to numerical boundary layers <xref ref-type="bibr" rid="bib1.bibx64" id="paren.35"/>. We use the parameter <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to balance the divergence-free formulation of strain rates in the normal stress component evaluation, wherein it is multiplied with the pressure residual <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Thus, normal stress is given by <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">η</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. With convergence of the method, the pressure residual <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> vanishes and the incompressible form of the normal stresses is recovered.</p>
      <p id="d1e4585">Combining the residual notation introduced in Eq. (<xref ref-type="disp-formula" rid="Ch1.E13"/>) with the pseudo-time derivatives in Eq. (<xref ref-type="disp-formula" rid="Ch1.E14"/>) leads to the update rules:
            <disp-formula id="Ch1.E17" content-type="numbered"><label>17</label><mml:math id="M127" display="block"><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi>P</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mi>P</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>P</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi>T</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mi>T</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>T</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where the pressure, velocity and temperature iterative increments represent the current residual <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> multiplied by the pseudo-time step:
            <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M129" display="block"><mml:mtable columnspacing="1em" class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>P</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:msup><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:msup><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>T</mml:mi><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:msup><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <?pagebreak page961?><p id="d1e4906">The straightforward update rule (Eq. <xref ref-type="disp-formula" rid="Ch1.E17"/>) is based on a first-order scheme <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. In 1-D, it implies that one needs <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msup><mml:mi>N</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> iterations to converge to the stationary solution, where <inline-formula><mml:math id="M132" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> stands for the total number of grid points. This behaviour arises because the time step limiter <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> implies a second-order dependence on the spatial derivatives for the strain rates. In contrast, a second-order scheme <xref ref-type="bibr" rid="bib1.bibx15" id="paren.36"/>, <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:msup><mml:mo>∂</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> invokes a wave-like transient physical process for the iterations. The main advantage is the scaling of the limiter as <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> instead of <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> in the explicit pseudo-transient time step definition. We can reformulate the velocity update as
            <disp-formula id="Ch1.E19" content-type="numbered"><label>19</label><mml:math id="M137" display="block"><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:msup><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mrow><mml:mo>[</mml:mo><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          where <inline-formula><mml:math id="M138" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> can be expanded to <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and acts like a damping term on the momentum residual. A similar damping approach is used for elastic rheology in the FLAC <xref ref-type="bibr" rid="bib1.bibx12" id="paren.37"/> geotechnical software in order to significantly reduce the number of iterations needed for the algorithm to converge. The optimal value of the introduced parameter <inline-formula><mml:math id="M140" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> is found to be in a range <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and it is usually problem-dependent. This approach was successfully implemented in recent PT developments by <xref ref-type="bibr" rid="bib1.bibx50 bib1.bibx51" id="text.38"/> and <xref ref-type="bibr" rid="bib1.bibx13" id="text.39"/>. The iteration count increases with the numerical problem size for second-order PT solvers and scales close-to-ideal multi-grid implementations. However, the main advantage of the PT approach is its conciseness and the fact that only one additional read/write operation needs to be included – keeping additional memory transfers to the strict minimum.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F2"><?xmltex \currentcnt{2}?><label>Figure 2</label><caption><p id="d1e5192">Schematic chip representation for both the central processing unit (CPU) and graphical processing unit (GPU) architecture. The GPU architecture consists of thousands of arithmetic and logical units (ALUs). On the CPU, most of the on-chip space is devoted to controlling units and cache memory, while the number of ALUs is significantly reduced.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f02.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F3" specific-use="star"><?xmltex \currentcnt{3}?><label>Figure 3</label><caption><p id="d1e5203">Model configuration for the numerical experiments: <bold>(a)</bold> 2-D model and <bold>(b)</bold> 3-D model. Both the surface and bed topography are flat but inclined at a constant angle of <inline-formula><mml:math id="M142" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>. We show both the model coordinate axes and the prescribed boundary conditions.</p></caption>
          <?xmltex \igopts{width=483.69685pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f03.png"/>

        </fig>

      <p id="d1e5225">Notably, the PT solution procedure leads to a two-way numerical coupling between temperature and deformation (mechanics), which enables us to recover an implicit solution to the entire system of non-linear partial differential equations. Besides the coupling terms, rheology is also treated implicitly; i.e. the shear viscosity <inline-formula><mml:math id="M143" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> is always evaluated using the current physical temperature, <inline-formula><mml:math id="M144" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula>, and strain rate, <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi mathvariant="normal">II</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Our method is fully local. At no point during the iterative procedure does one need to perform a global reduction, nor to access values that are not directly collocated. These considerations are crucial when designing a solution strategy that targets parallel hardware such as many-core GPU accelerators. We implemented the PT method in the MATLAB and CUDA C programming languages. Computations in CUDA C can be performed in both double- and single-precision arithmetic. The computations in CUDA C shown in the remainder of the paper were performed using double-precision arithmetic if not specified otherwise.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Leveraging hardware accelerators</title>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Implementation on graphical processing units</title>
      <p id="d1e5272">Our GPU algorithm development effort is motivated by the aim to resolve the coupled thermomechanical system of equations (Eqs. <xref ref-type="disp-formula" rid="Ch1.E12"/>–<xref ref-type="disp-formula" rid="Ch1.E13"/>) with high spatial and temporal accuracy in 3-D. To this end, we exploit the low-level intrinsic parallelism of shared memory devices, particularly targeting GPUs. A GPU is a massively parallel device originally devoted to rendering the colour values for pixels on a screen independently from one another whereby the latency can be masked by high throughput (i.e. compute as many jobs as possible in a reasonable time). A schematic representation (Fig. <xref ref-type="fig" rid="Ch1.F2"/>) highlights the conceptual discrepancy between a GPU and CPU. On the GPU chip, most of the area is devoted to the arithmetic units, while on the CPU, a large area of the chip hosts scheduling and control microsystems.</p>
      <p id="d1e5281">The development of GPU-based solvers requires time to be devoted to the design of new algorithms that leverage the massively parallel potential of the current GPU architectures. Considerations such as limiting the memory transfers to the mandatory minimum, avoiding complex data layouts, preferring matrix-free solvers with low memory footprint and optimal parallel scalability instead of classical direct–iterative solver types <xref ref-type="bibr" rid="bib1.bibx51" id="paren.40"/> are key in order to achieve optimal performance.</p>
      <p id="d1e5287">Our implementation does not rely on the CUDA unified virtual memory (UVM) features. UVM avoids the need to explicitly define data transfers between the host (CPU) and device (GPU) arrays but results in about 1 order of magnitude lower performance. We suspect the internal memory handling to be responsible for continuously synchronising the host and device memory, which is not needed in our case.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Multi-GPU implementation</title>
      <p id="d1e5298">We rely on a distributed memory parallelisation using the message passing interface (MPI) library to overcome the on-device memory limitation inherent to modern GPUs and exploit supercomputers' computing power. Access to a large number of parallel processes enables us to tackle larger computational domains or to refine grid resolution. We rely on domain decomposition to split our global computational domain into local domains, each executing on a single GPU handled by an MPI process. Each local process has its boundary conditions defined by (a) physics if on the global boundary or (b) exchanged information from the neighbouring process in the case of internal boundaries. We use CUDA-aware non-blocking MPI messages to exchange the internal boundaries among neighbouring processes. CUDA awareness allows us to bypass explicit buffer copies on the host memory by directly exchanging GPU pointers, resulting in an enhanced workflow pipelining. Our algorithm implementation and solver require no global reduction. Thus, there is no need for global MPI communication, eliminating an important potential scaling bottleneck. Although the proposed iterative and matrix-free solver features a high locality and should scale by construction, the growing number of MPI processes may deprecate the parallel runtime performance by about 20 % owing to the increasing number of messages and overall machine occupancy <xref ref-type="bibr" rid="bib1.bibx53" id="paren.41"/>. We address<?pagebreak page962?> this limitation by overlapping MPI communication and the computation of the inner points of the local domains using streams, a native CUDA feature. CUDA streams allow one to assign asynchronous kernel execution and thus enable the overlap between communication and computation, resulting in optimal parallel efficiency.</p>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>The model configuration</title>
      <p id="d1e5313">To verify the numerical implementation of the developed FastICE solver, we consider three numerical experiments based on a box inclined at a mean slope angle of <inline-formula><mml:math id="M146" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>. We perform these numerical experiments on both 2-D and 3-D computational domains (Fig. <xref ref-type="fig" rid="Ch1.F3"/>a and b, respectively). The non-dimensional computational domains are <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="normal">D</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>]</mml:mo><mml:mo>×</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="normal">D</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>]</mml:mo><mml:mo>×</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>]</mml:mo><mml:mo>×</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> for 2-D and 3-D domains, respectively. The difference between the 2-D and the 3-D configurations lies in the boundary conditions imposed at the base and at the lateral sides. At the surface, the zero stress <inline-formula><mml:math id="M149" display="inline"><mml:mrow><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:msub><mml:mi>n</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> boundary condition is prescribed in all experiments. Experiment 2's model configuration corresponds to the ISMIP benchmark <xref ref-type="bibr" rid="bib1.bibx44" id="paren.42"/>, wherein experiment C relates to the 3-D case and experiment D relates to the 2-D case.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T1" specific-use="star"><?xmltex \currentcnt{1}?><label>Table 1</label><caption><p id="d1e5453">Experiments 1 and 2: non-dimensional model parameters and the dimensional values <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:mfenced open="(" close=")"><mml:msup><mml:mi/><mml:mi mathvariant="normal">D</mml:mi></mml:msup></mml:mfenced></mml:mrow></mml:math></inline-formula> for comparison.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="9">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="center"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="center"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:colspec colnum="8" colname="col8" align="right"/>
     <oasis:colspec colnum="9" colname="col9" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Experiment</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M153" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M154" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M155" 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></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>x</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8"><inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>y</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col9"><inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>z</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Exp. 1     2-D</oasis:entry>
         <oasis:entry colname="col2">10</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">10</oasis:entry>
         <oasis:entry colname="col5">3</oasis:entry>
         <oasis:entry colname="col6">–</oasis:entry>
         <oasis:entry colname="col7">2 km</oasis:entry>
         <oasis:entry colname="col8">–</oasis:entry>
         <oasis:entry colname="col9">200 m</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Exp. 1    3-D</oasis:entry>
         <oasis:entry colname="col2">10</oasis:entry>
         <oasis:entry colname="col3">4</oasis:entry>
         <oasis:entry colname="col4">10</oasis:entry>
         <oasis:entry colname="col5">3</oasis:entry>
         <oasis:entry colname="col6">–</oasis:entry>
         <oasis:entry colname="col7">2 km</oasis:entry>
         <oasis:entry colname="col8">800 m</oasis:entry>
         <oasis:entry colname="col9">200 m</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Exp. 2    2-D</oasis:entry>
         <oasis:entry colname="col2">10</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">0.1</oasis:entry>
         <oasis:entry colname="col5">3</oasis:entry>
         <oasis:entry colname="col6">0.1942</oasis:entry>
         <oasis:entry colname="col7">10 km</oasis:entry>
         <oasis:entry colname="col8">–</oasis:entry>
         <oasis:entry colname="col9">1 km</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Exp. 2    3-D</oasis:entry>
         <oasis:entry colname="col2">10</oasis:entry>
         <oasis:entry colname="col3">10</oasis:entry>
         <oasis:entry colname="col4">0.1</oasis:entry>
         <oasis:entry colname="col5">3</oasis:entry>
         <oasis:entry colname="col6">0.1942</oasis:entry>
         <oasis:entry colname="col7">10 km</oasis:entry>
         <oasis:entry colname="col8">10 km</oasis:entry>
         <oasis:entry colname="col9">1 km</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T2" specific-use="star"><?xmltex \currentcnt{2}?><label>Table 2</label><caption><p id="d1e5726">Experiment 3: non-dimensional model parameters and the dimensional values <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:mfenced close=")" open="("><mml:msup><mml:mi/><mml:mi mathvariant="normal">D</mml:mi></mml:msup></mml:mfenced></mml:mrow></mml:math></inline-formula> for comparison.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="12">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="center"/>
     <oasis:colspec colnum="5" colname="col5" align="center"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="center"/>
     <oasis:colspec colnum="8" colname="col8" align="center"/>
     <oasis:colspec colnum="9" colname="col9" align="right"/>
     <oasis:colspec colnum="10" colname="col10" align="right"/>
     <oasis:colspec colnum="11" colname="col11" align="center"/>
     <oasis:colspec colnum="12" colname="col12" align="center"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Experiment</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M160" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M163" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M164" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M165" display="inline"><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8"><inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col9"><inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>x</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col10"><inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>y</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col11"><inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msubsup><mml:mi>L</mml:mi><mml:mi>z</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col12"><inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:msubsup><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">D</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Exp. 3     1-D</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">10</oasis:entry>
         <oasis:entry colname="col6">3</oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.8</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">8</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8">9.15</oasis:entry>
         <oasis:entry colname="col9">–</oasis:entry>
         <oasis:entry colname="col10">–</oasis:entry>
         <oasis:entry colname="col11">300 m</oasis:entry>
         <oasis:entry colname="col12"><inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M174" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>C</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Exp. 3     2-D</oasis:entry>
         <oasis:entry colname="col2">10 <inline-formula><mml:math id="M175" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">10</oasis:entry>
         <oasis:entry colname="col6">3</oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.8</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">8</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8">9.15</oasis:entry>
         <oasis:entry colname="col9">3 km</oasis:entry>
         <oasis:entry colname="col10">–</oasis:entry>
         <oasis:entry colname="col11">300 m</oasis:entry>
         <oasis:entry colname="col12"><inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M179" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>C</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Exp. 3     3-D</oasis:entry>
         <oasis:entry colname="col2">10 <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">4 <inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">10</oasis:entry>
         <oasis:entry colname="col6">3</oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.8</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">8</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8">9.15</oasis:entry>
         <oasis:entry colname="col9">3 km</oasis:entry>
         <oasis:entry colname="col10">1.2 km</oasis:entry>
         <oasis:entry colname="col11">300 m</oasis:entry>
         <oasis:entry colname="col12"><inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M185" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>C</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d1e6211">Experiments 1 and 2 seek to first verify the implementation of the mechanical part of the Stokes solver, which is the computationally most expensive part (Eq. <xref ref-type="disp-formula" rid="Ch1.E8"/>). For these experiments, we assume that the ice is isothermal and neglect temperature. We compare our numerical solutions to the solutions obtained by the commonly used finite-element Stokes solver Elmer/Ice <xref ref-type="bibr" rid="bib1.bibx17" id="paren.43"/>, which has been thoroughly tested <xref ref-type="bibr" rid="bib1.bibx44 bib1.bibx16" id="paren.44"/>. Experiment 3 is a thermomechanically coupled case. The model parameters are the stress exponent <inline-formula><mml:math id="M186" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>, the mean bed slope <inline-formula><mml:math id="M187" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, and the two horizontal distances <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in their respective dimensions (<inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:math></inline-formula>), which appear in Table <xref ref-type="table" rid="Ch1.T1"/>. If a linear basal sliding law (Eq. <xref ref-type="disp-formula" rid="Ch1.E6"/>) is prescribed, the respective 2-D and 3-D sliding coefficients are<?xmltex \hack{\newpage}?>
          <disp-formula id="Ch1.E20" content-type="numbered"><label>20</label><mml:math id="M191" display="block"><mml:mtable rowspacing="0.2ex" class="split" columnspacing="1em" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>(</mml:mo><mml:mi>x</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:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mi>sin⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi><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:mfenced></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mi>sin⁡</mml:mi><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi><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:mfenced><mml:mi>sin⁡</mml:mi><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
        where <inline-formula><mml:math id="M192" 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 a chosen non-dimensional constant. Differences may arise depending on the prescribed values for the parameters <inline-formula><mml:math id="M193" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M196" 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>. Experiment 2 represents the ISMIP experiments C and D for <inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> km <xref ref-type="bibr" rid="bib1.bibx44" id="paren.45"/>, but in our case using non-dimensional variables.</p>
      <p id="d1e6471">The mechanical part of Experiment 3 is analogous to Experiment 2. The boundary conditions are periodic in the <inline-formula><mml:math id="M198" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M199" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> directions unless specified otherwise. The thermal problem requires additional boundary conditions in terms of temperature or fluxes. We set the surface temperature <inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> to 0. At the bottom, we set the vertical flux <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to 0 and, on the sides, we impose periodic boundary conditions. The model parameters used in Experiment 3 are compiled in Table <xref ref-type="table" rid="Ch1.T2"/>. We employ the semi-analytical 1-D model (Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>) as an independent benchmark for the Experiment 3 calculations.</p>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>Results and performance</title>
<sec id="Ch1.S5.SS1">
  <label>5.1</label><title>Experiment 1: Stokes flow without basal sliding</title>
      <p id="d1e6531">We compare our numerical solutions obtained with the GPU-based PT method using a CUDA C implementation (FastICE) to the reference Elmer/Ice model. We report all the values in their non-dimensional form, and the horizontal axes are scaled with their aspect ratio. We impose a no-slip boundary condition on all velocity components at the base and prescribe free-slip boundary conditions on all lateral domain sides. We prescribe a stress-free upper boundary in the vertical direction.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F4"><?xmltex \currentcnt{4}?><label>Figure 4</label><caption><p id="d1e6536">Comparison of the non-dimensional simulation results for the 2-D configuration of Experiment 1. We show <bold>(a)</bold> the horizontal component of the surface velocity, <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <bold>(b)</bold> the vertical component of surface velocity, <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, across the ice slab for both our FastICE model and Elmer/Ice. For context, the maximum horizontal velocity (<inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0.0365</mml:mn></mml:mrow></mml:math></inline-formula>) corresponds to <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">174</mml:mn></mml:mrow></mml:math></inline-formula> m yr<inline-formula><mml:math id="M206" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The horizontal distance is 2 km, while the ice thickness is 200 m. The box is inclined at 10<inline-formula><mml:math id="M207" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f04.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F5" specific-use="star"><?xmltex \currentcnt{5}?><label>Figure 5</label><caption><p id="d1e6622">Non-dimensional simulation results for the 3-D configuration of Experiment 1. We report <bold>(a)</bold> the horizontal surface velocity component <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(c)</bold> the horizontal surface velocity component <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <bold>(e)</bold> the vertical surface velocity component <inline-formula><mml:math id="M210" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The black solid line depicts the position at which <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula>.
Panels <bold>(b)</bold>, <bold>(d)</bold> and <bold>(f)</bold> show the surface velocity components <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, respectively, at <inline-formula><mml:math id="M214" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> and compare them against the results from the Elmer/Ice model.</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f05.png"/>

        </fig>

      <?pagebreak page963?><p id="d1e6752">In the 2-D configuration (Fig. <xref ref-type="fig" rid="Ch1.F4"/>), the horizontal velocity component vanishes at the left and right boundary, <inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, and thus the maximum velocity values in the horizontal direction are located in the middle of the slab. On the left side (<inline-formula><mml:math id="M216" display="inline"><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:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), the ice is pushed down (compression); thus, the vertical velocity values were negative. On the right side (<inline-formula><mml:math id="M217" display="inline"><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:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>), the ice is pulled up (extension), and the vertical velocity values were positive. Our FastICE results agree well with the numerical solutions produced by Elmer/Ice. The numerical resolution of the Elmer/Ice model is <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:mn mathvariant="normal">1001</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">275</mml:mn></mml:mrow></mml:math></inline-formula> grid points in the <inline-formula><mml:math id="M219" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M220" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions (<inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">8.25</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> degrees of freedom – DOFs), while we employed <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:mn mathvariant="normal">2047</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">511</mml:mn></mml:mrow></mml:math></inline-formula> grid points (<inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">3.13</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">6</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs) within our PT method. We use higher numerical grid resolution within FastICE to jointly verify agreement with Elmer/Ice and convergence. The fact that we obtain matching results when increasing grid resolution significantly suggests that we have sufficiently resolved the relevant physical processes, even at relatively low resolution. We report an exception to this trend in the 3-D case of Experiment 2. The PT method's efficiency enables simulations with a large number of grid points without affecting the runtime. The DOFs represent three variables in 2-D (<inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>P</mml:mi></mml:mrow></mml:math></inline-formula>) and four variables in 3-D (<inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>P</mml:mi></mml:mrow></mml:math></inline-formula>) multiplied by the number of grid points involved.</p>
      <p id="d1e6935">We find good agreement between the two model solutions in the 3-D configuration as well (Fig. <xref ref-type="fig" rid="Ch1.F5"/>). We employed a numerical grid resolution of <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:mn mathvariant="normal">319</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">159</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">119</mml:mn></mml:mrow></mml:math></inline-formula> grid points in the <inline-formula><mml:math id="M227" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M228" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M229" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions (<inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">2.41</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">7</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs) and used a numerical grid resolution of <inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:mn mathvariant="normal">61</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">61</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">21</mml:mn></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">3.1</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs) in Elmer/Ice. Scaling our result to dimensional values (Table <xref ref-type="table" rid="Ch1.T1"/>) results in a maximal horizontal velocity (<inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) of <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">105</mml:mn></mml:mrow></mml:math></inline-formula> m yr<inline-formula><mml:math id="M235" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The horizontal distance is 2 km in the <inline-formula><mml:math id="M236" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction and 800 m in the <inline-formula><mml:math id="M237" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> direction, and the ice thickness is 200 m. The box is inclined at 10<inline-formula><mml:math id="M238" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>.</p>
</sec>
<sec id="Ch1.S5.SS2">
  <label>5.2</label><title>Experiment 2: Stokes flow with basal sliding</title>
      <p id="d1e7095">We then consider the case in which ice is sliding at the base (ISMIP experiments C and D). We prescribe periodic boundary conditions at the lateral boundaries and apply a linear sliding law at the base. The top boundary remains stress-free in the vertical direction.</p>
      <p id="d1e7098">We performed the 2-D simulation of Experiment 2 (Fig. <xref ref-type="fig" rid="Ch1.F6"/>) using a numerical grid resolution of <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mn mathvariant="normal">511</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn></mml:mrow></mml:math></inline-formula> grid points (<inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">1.95</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs) for the FastICE solver and computed the Elmer/Ice solution using a numerical grid resolution of <inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:mn mathvariant="normal">241</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">120</mml:mn></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">8.7</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs). We show both <inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> velocity components at the slab's surface. The two models' results agree well.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F6"><?xmltex \currentcnt{6}?><label>Figure 6</label><caption><p id="d1e7186">Non-dimensional simulation results for the 2-D configuration of Experiment 2. We plot <bold>(a)</bold> the horizontal surface velocity component <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <bold>(b)</bold> the vertical surface velocity component <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> across the slab for both our FastICE model and Elmer/Ice. In dimensional terms, the maximum horizontal velocity (<inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">5.58</mml:mn></mml:mrow></mml:math></inline-formula>) corresponds to <inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">16.9</mml:mn></mml:mrow></mml:math></inline-formula> m yr<inline-formula><mml:math id="M249" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The horizontal distance is 10 km, while the ice thickness is 1 km. The box is inclined at 0.1<inline-formula><mml:math id="M250" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f06.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F7" specific-use="star"><?xmltex \currentcnt{7}?><label>Figure 7</label><caption><p id="d1e7273">Non-dimensional simulation results for the 3-D configuration of Experiment 2. We report <bold>(a)</bold> the horizontal surface velocity component <inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(c)</bold> the horizontal surface velocity component <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <bold>(e)</bold> the vertical surface velocity component <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The black solid line depicts the position at which <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula>.
Panels <bold>(b)</bold>, <bold>(d)</bold> and <bold>(f)</bold> show the surface velocity components <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M256" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, respectively, at <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> and compare them against the results from the Elmer/Ice model.</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f07.png"/>

        </fig>

      <p id="d1e7402">We performed the 3-D simulation of Experiment 2 (Fig. <xref ref-type="fig" rid="Ch1.F7"/>) using a numerical grid resolution of <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:mn mathvariant="normal">63</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">63</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">21</mml:mn></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">3.33</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs) for our FastICE solver and a numerical grid resolution of <inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:mn mathvariant="normal">61</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">61</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">21</mml:mn></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">3.12</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs) in the Elmer/Ice model. In dimensional units, the maximum horizontal velocity (<inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) corresponds to <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">16.4</mml:mn></mml:mrow></mml:math></inline-formula> m yr<inline-formula><mml:math id="M264" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The horizontal distance is 10 km in the <inline-formula><mml:math id="M265" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction 10 km in the <inline-formula><mml:math id="M266" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> direction, and the ice thickness is 1 km. The box is inclined at 0.1<inline-formula><mml:math id="M267" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>.</p>
      <?pagebreak page964?><p id="d1e7530">We find good agreement between the two numerical implementations. Since the flow is mainly oriented in the <inline-formula><mml:math id="M268" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction, the <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> velocity component is more than 2 orders of magnitude smaller than the <inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> velocity component. Numerical errors in <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are more apparent than in the leading velocity component <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. We report a 1 order of magnitude increase in the time to solution in Experiment 2 compared to the Experiment 1 configuration owing to the periodicity on the lateral boundaries.</p>
      <p id="d1e7584">We employ a matching numerical resolution between FastICE and Elmer/Ice in this particular benchmark case. Using higher resolution for FastICE results in minor discrepancy between the two solutions, suggesting that the resolution in Fig. <xref ref-type="fig" rid="Ch1.F7"/> is insufficient to capture small-scale physical processes. We discuss this issue more in Sect. <xref ref-type="sec" rid="Ch1.S5.SS5"/> where we test the convergence of the FastICE numerical implementation upon grid refinement.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F8"><?xmltex \currentcnt{8}?><label>Figure 8</label><caption><p id="d1e7593">Non-dimensional simulation results for <bold>(a)</bold> the temperature deviation <inline-formula><mml:math id="M273" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and <bold>(b)</bold> the horizontal velocity component <inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the 1-D, 2-D and 3-D FastICE models at three different non-dimensional times <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.7</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> compared to the 1-D reference model results. We employ a vertical grid resolution <inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of <inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:mn mathvariant="normal">31</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">95</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M280" display="inline"><mml:mn mathvariant="normal">201</mml:mn></mml:math></inline-formula> grid points. We sample the 1-D profiles at location <inline-formula><mml:math id="M281" display="inline"><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:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> in 2-D and at <inline-formula><mml:math id="M282" display="inline"><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:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> in 3-D. The shaded areas correspond to the part of the solution that is above the melting temperature, since we do not account for phase transitions in this case.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f08.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F9" specific-use="star"><?xmltex \currentcnt{9}?><label>Figure 9</label><caption><p id="d1e7763">Spatial distribution of <bold>(a)</bold> the temperature deviation from the initial temperature <inline-formula><mml:math id="M284" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and <bold>(b)</bold> the horizontal velocity component <inline-formula><mml:math id="M285" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for 3-D <bold>(a)</bold> and 2-D <bold>(b)</bold> in non-dimensional units. We scale the domain extent with <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. We compare the numerical solutions at non-dimensional times <inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.7</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>.</p></caption>
          <?xmltex \igopts{width=483.69685pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f09.png"/>

        </fig>

</sec>
<sec id="Ch1.S5.SS3">
  <label>5.3</label><title>Experiment 3a: thermomechanically coupled Stokes flow without basal sliding</title>
      <p id="d1e7867">We first verify that the 1-D, 2-D and 3-D model configurations from Experiment 3 produce identical results, assuming periodic boundary conditions on all lateral sides. In this case, all the variations in the <inline-formula><mml:math id="M290" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> or <inline-formula><mml:math id="M291" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> directions vanish (<inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:math></inline-formula>); thus, both the 2-D and 3-D models reduce to the 1-D problem. We employ a numerical grid resolution of <inline-formula><mml:math id="M294" display="inline"><mml:mrow><mml:mn mathvariant="normal">127</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn></mml:mrow></mml:math></inline-formula> grid points in the <inline-formula><mml:math id="M295" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M296" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M297" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction, <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:mn mathvariant="normal">127</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn></mml:mrow></mml:math></inline-formula> grid points in the <inline-formula><mml:math id="M299" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M300" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions, and <inline-formula><mml:math id="M301" display="inline"><mml:mn mathvariant="normal">127</mml:mn></mml:math></inline-formula> grid points in the <inline-formula><mml:math id="M302" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction for the 3-D, 2-D and 1-D problems, respectively.</p>
      <?pagebreak page965?><p id="d1e7991">We ensure that all results collapse onto the semi-analytical 1-D model solution (Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>), which we obtained by analytically integrating the velocity field and solving the decoupled thermal problem separately (Eq. <xref ref-type="disp-formula" rid="Ch1.E11"/>). From a computational perspective, we numerically solve Eq. (<xref ref-type="disp-formula" rid="Ch1.E11"/>) using a high spatial and temporal accuracy and therefore minimise the occurrence of numerical errors. We establish the 1-D reference solution for both the temperature and the velocity profile, solving Eq. (<xref ref-type="disp-formula" rid="Ch1.E11"/>) on a regular grid, reducing the physical time steps until we converge to a stable reference solution. Our reference simulation involves <inline-formula><mml:math id="M303" display="inline"><mml:mn mathvariant="normal">4000</mml:mn></mml:math></inline-formula> grid points and a non-dimensional time step of <inline-formula><mml:math id="M304" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> (using a backward Euler time integration). We reach the total simulation time of <inline-formula><mml:math id="M305" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> within 580 physical time steps.</p>
      <p id="d1e8040">We report overall good agreement of all model solutions (1-D, 2-D, 3-D and 1-D reference) at the three reported stages for this scenario (Fig. <xref ref-type="fig" rid="Ch1.F8"/>). As expected from the 1-D model solution, temperature varies only as a function of time and depth, with the highest value obtained close to the base and for longer simulation times. Similarly, the velocity profile is equivalent to the 1-D profile, and the largest velocity value is located at the surface. We only report the horizontal velocity component <inline-formula><mml:math id="M306" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the 2-D and the 3-D models, since <inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M308" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> feature negligible magnitudes. Thus, we only observe spatial variation in the vertical <inline-formula><mml:math id="M309" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> direction. We report the non-dimensional temperature <inline-formula><mml:math id="M310" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="Ch1.F9"/>a) and horizontal velocity <inline-formula><mml:math id="M311" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="Ch1.F9"/>b) fields for both the 3-D and the 2-D configurations compared at non-dimensional time <inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.7</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M314" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. The dimensional results from Experiment 3 correspond to a <inline-formula><mml:math id="M315" display="inline"><mml:mn mathvariant="normal">300</mml:mn></mml:math></inline-formula> m thick ice slab inclined at a 10<inline-formula><mml:math id="M316" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> angle with an initial surface temperature of <inline-formula><mml:math id="M317" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M318" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>C. The maximum initial velocity for the isothermal ice slab corresponds to <inline-formula><mml:math id="M319" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">486</mml:mn></mml:mrow></mml:math></inline-formula> m yr<inline-formula><mml:math id="M320" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, while the maximum velocity just before the melting point is reached corresponds to 830 m yr<inline-formula><mml:math id="M321" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The comparison snapshot times are <inline-formula><mml:math id="M322" display="inline"><mml:mn mathvariant="normal">1.6</mml:mn></mml:math></inline-formula>, <inline-formula><mml:math id="M323" display="inline"><mml:mn mathvariant="normal">3.2</mml:mn></mml:math></inline-formula> and <inline-formula><mml:math id="M324" display="inline"><mml:mn mathvariant="normal">4.4</mml:mn></mml:math></inline-formula> years.</p>
      <p id="d1e8245">The semi-analytical 1-D solution enables us to evaluate the influence of the numerical coupling method and time integration and to quantify when and why high spatial resolution is required in thermomechanical ice-flow simulations. We compare the 1-D semi-analytical reference solution (Eq. <xref ref-type="disp-formula" rid="Ch1.E11"/>) to the results obtained with the 1-D FastICE solver for three spatial numerical resolutions (<inline-formula><mml:math id="M325" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">31</mml:mn></mml:mrow></mml:math></inline-formula>, 95 and 201 grid points) at three non-dimensional times <inline-formula><mml:math id="M326" 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:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M327" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M328" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="Ch1.F10"/>). The grey area in Fig. <xref ref-type="fig" rid="Ch1.F10"/> highlights where the melting temperature is exceeded. Since our semi-analytical reference solution does not include phase transitions, we also neglect this component in the numerical results. During the early stages of the simulation, the thermomechanical coupling is still minor, and solutions at all resolution levels are in good agreement with one another and with the reference. The low-resolution solution starts to deviate from the reference (Fig. <xref ref-type="fig" rid="Ch1.F10"/>b) when the coupling becomes more pronounced close to the thermal runaway point <xref ref-type="bibr" rid="bib1.bibx9" id="paren.46"/>. The high-spatial-resolution solution is satisfactory at all stages. We conclude that high spatial resolution<?pagebreak page966?> is required to accurately capture the non-linear coupled behaviour in regimes close to the thermal runaway, which is seldom the case in the models reported in the literature.</p>
      <p id="d1e8321">Thermomechanical strain localisation may significantly impact the long-term evolution of a coupled system. A recent study by <xref ref-type="bibr" rid="bib1.bibx13" id="text.47"/> suggested that partial coupling may result in underestimating the thermomechanical localisation compared to the fully coupled approach, as reported in their Fig. 8. We compare three coupling methods (Fig. <xref ref-type="fig" rid="Ch1.F11"/>): (1) a fully coupled implicit PT method, as described in the numerical section, whereby the viscosity and the shear heating term are implicitly determined by using the current guess; (2) an implicit numerically uncoupled mechanical and thermal model; and
(3) an explicit numerically uncoupled mechanical and thermal model. The numerical time integration in physical time is performed using an implicit backward Euler method for (1) and (2) and a forward Euler explicit time integration method for (3). We utilise the identical non-dimensional time step for both the explicit and the implicit numerical time integration.
We perform 580 time steps, reaching a simulation time of <inline-formula><mml:math id="M329" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. We employ a vertical grid resolution of <inline-formula><mml:math id="M330" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">201</mml:mn></mml:mrow></mml:math></inline-formula> grid points for all models. The chosen time step for the explicit integration of the heat diffusion equation is below the CFL stability condition given by <inline-formula><mml:math id="M331" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2.1</mml:mn></mml:mrow></mml:math></inline-formula> in 1-D, where <inline-formula><mml:math id="M332" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> represents the grid spacing in a vertical direction.</p>
      <p id="d1e8387">Physically, the viscosity and shear heating terms are coupled and are a function of temperature and strain rates, but we update the viscosity and the shear heating term based on temperature values from the previous physical time step. Thus, the shear heating term can be considered a constant source term in the temperature evolution equation during the time step, leading to a semi-explicit rheology. We show the 1-D numerical solutions of (blue) the fully coupled method with a backward Euler (implicit) time integration and the two uncoupled methods with either (green) backward (implicit) or (red) forward (explicit) Euler time integration (Fig. <xref ref-type="fig" rid="Ch1.F11"/>) and compare them to the 1-D reference model solution. Surprisingly, and in contrast to <xref ref-type="bibr" rid="bib1.bibx13" id="text.48"/>, we observe a good agreement between all methods, suggesting that the different coupling strategies capture the coupled flow physics with sufficient accuracy given high enough spatial and temporal resolution. However, for a longer-term evolution, the uncoupled approaches may predict lower temperature and velocity values than the fully coupled approach.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F10"><?xmltex \currentcnt{10}?><label>Figure 10</label><caption><p id="d1e8397">Non-dimensional simulation results for <bold>(a)</bold> the temperature deviation <inline-formula><mml:math id="M333" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and <bold>(b)</bold> the horizontal velocity component <inline-formula><mml:math id="M334" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to test solver performance at three resolutions. The vertical resolutions are <inline-formula><mml:math id="M335" display="inline"><mml:mrow><mml:mi mathvariant="normal">LR</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">31</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M336" display="inline"><mml:mrow><mml:mi mathvariant="normal">MR</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">95</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M337" display="inline"><mml:mrow><mml:mi mathvariant="normal">HR</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">201</mml:mn></mml:mrow></mml:math></inline-formula> grid points for low-, mid- and high-resolution runs, respectively. We compare the results for non-dimensional time <inline-formula><mml:math id="M338" 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:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M339" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M340" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. The shaded areas correspond to the part of the solution that is above the melting temperature, since we do not account for phase transitions in this benchmark.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f10.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F11"><?xmltex \currentcnt{11}?><label>Figure 11</label><caption><p id="d1e8514">Non-dimensional simulation results for <bold>(a)</bold> the temperature deviation <inline-formula><mml:math id="M341" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and <bold>(b)</bold> the horizontal velocity component <inline-formula><mml:math id="M342" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to evaluate different numerical time integration schemes. We consider three non-dimensional times <inline-formula><mml:math id="M343" 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:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M344" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M345" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and compare our numerical estimates to the reference model. As before, the shaded areas correspond to the part of the solution that is above the melting temperature, since we neglect phase transitions in this comparison.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f11.png"/>

        </fig>

</sec>
<sec id="Ch1.S5.SS4">
  <label>5.4</label><title>Experiment 3b: thermomechanically coupled Stokes flow in a finite domain</title>
      <p id="d1e8601">Boundary conditions corresponding to immobile regions in the computational domain may induce localisation of deformation and flow observed in locations such as shear margins, grounding zones or bedrock interactions. Dimensionality plays a key role in such configurations, causing the stress distribution to be variable among the considered directions.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F12"><?xmltex \currentcnt{12}?><label>Figure 12</label><caption><p id="d1e8606">Non-dimensional simulation results for <bold>(a)</bold> the temperature deviation <inline-formula><mml:math id="M346" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and <bold>(b)</bold> the horizontal velocity component <inline-formula><mml:math id="M347" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the 1-D, 2-D and 3-D FastICE models at three non-dimensional times <inline-formula><mml:math id="M348" 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:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M349" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M350" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.5</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> compared to our analytical solution. We sample the 1-D profiles at location <inline-formula><mml:math id="M351" display="inline"><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:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> in 2-D and at <inline-formula><mml:math id="M352" display="inline"><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:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M353" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> in 3-D. The shaded area corresponds to the part of the solution that is above the melting temperature, approximately 0.35 of the temperature deviation.</p></caption>
          <?xmltex \igopts{width=213.395669pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f12.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F13" specific-use="star"><?xmltex \currentcnt{13}?><label>Figure 13</label><caption><p id="d1e8744">Non-dimensional simulation results of <bold>(a)</bold> the temperature deviation from the initial temperature <inline-formula><mml:math id="M354" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and <bold>(b)</bold> the horizontal velocity component <inline-formula><mml:math id="M355" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for Experiment 3 at three non-dimensional times <inline-formula><mml:math id="M356" 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:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M357" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M358" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.5</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> for both the 2-D and 3-D configurations.</p></caption>
          <?xmltex \igopts{width=483.69685pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f13.png"/>

        </fig>

      <?pagebreak page967?><p id="d1e8824">We used the configuration in Experiment 3 to investigate the spatial variations in temperature and velocity distributions by defining no-slip conditions on the lateral boundaries for the mechanical problem and prescribing zero heat flux through those boundaries. We employ a numerical grid resolution of <inline-formula><mml:math id="M359" display="inline"><mml:mrow><mml:mn mathvariant="normal">511</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">255</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn></mml:mrow></mml:math></inline-formula> grid points, <inline-formula><mml:math id="M360" display="inline"><mml:mrow><mml:mn mathvariant="normal">511</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn></mml:mrow></mml:math></inline-formula> grid points and <inline-formula><mml:math id="M361" display="inline"><mml:mn mathvariant="normal">201</mml:mn></mml:math></inline-formula> grid points for the 3-D, 2-D and 1-D case, respectively. We prescribe a non-dimensional time step of <inline-formula><mml:math id="M362" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. We perform 500 numerical time steps and reach a total non-dimensional simulation time of <inline-formula><mml:math id="M363" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.5</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. We then compare the temperature <inline-formula><mml:math id="M364" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> and horizontal velocity component <inline-formula><mml:math id="M365" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> at three times obtained with the 1-D, 2-D and 3-D FastICE solver to the reference solution (Fig. <xref ref-type="fig" rid="Ch1.F12"/>). We use 1-D profiles for comparison, taken at location <inline-formula><mml:math id="M366" display="inline"><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:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> in the 2-D model and at location <inline-formula><mml:math id="M367" display="inline"><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:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M368" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> in the 3-D model. We also report the temperature variation <inline-formula><mml:math id="M369" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="Ch1.F13"/>a) and the horizontal velocity component <inline-formula><mml:math id="M370" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="Ch1.F13"/>b) for both the 2-D and 3-D simulations. The melting temperature approximately corresponds to 0.35 of the temperature deviation. The reported results correspond to a 2.3-, 4.6- and 5.8-year evolution.</p>
      <p id="d1e8996">All three models start with identical initial conditions for the thermal problem, i.e. <inline-formula><mml:math id="M371" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>T</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> throughout the entire ice slab. The difference between the models arises owing to different stress distributions in 1-D, 2-D or 3-D. For instance, the additional stress components inherent in 2-D and 3-D are of the same order of magnitude as the 1-D shear stress for the considered aspect ratio, reducing the horizontal velocity <inline-formula><mml:math id="M372" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the 2-D and 3-D models. This also impacts the shear heating term, reducing the source term in the temperature evolution equation. In the 1-D configuration, the unique shear stress tensor component is a function only of depth. On the other endmember, the 3-D configurations allow for a spatially more distributed stress state. They lower strain rates in this scenario and reduce the magnitude of shear heating in higher dimensions. The spatially heterogeneous temperature and strain rate fields in all directions require the utilisation of<?pagebreak page968?> sufficiently high spatial numerical resolution in all directions in order to accurately resolve spontaneous localisation.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F14"><?xmltex \currentcnt{14}?><label>Figure 14</label><caption><p id="d1e9026">Experiment 3 includes a phase transition owing to melting. We report the evolution in time of non-dimensional temperature variation <inline-formula><mml:math id="M373" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula> along a vertical profile picked at location <inline-formula><mml:math id="M374" display="inline"><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:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> within a 2-D run from Experiment 3. For this purpose, we run the 2-D FastICE models from Experiment 3 for a duration of <inline-formula><mml:math id="M375" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">9</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f14.png"/>

        </fig>

      <p id="d1e9079">We did not consider phase transition in the previous experiments for the sake of model comparison and because the analytical solution excluded this process. The existence of a phase transition caps the temperature at the pressure melting point in regions with pronounced shear heating, as illustrated in 2-D in Fig. <xref ref-type="fig" rid="Ch1.F14"/>. The simulation represents the thermomechanically coupled Experiment 3 with no sliding and thermally impermeable walls (similar to Fig. <xref ref-type="fig" rid="Ch1.F13"/>). Meltwater production consumes excess heat generated by shear heating. Thus, melting provides a physical mechanism that avoids thermal runaway in shear-heating-dominated zones in the ice. The experiment duration in dimensional units is 70 years, and the maximal temperature increase is 10 <inline-formula><mml:math id="M376" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>C upon reaching the melting point.
<?xmltex \hack{\newpage}?></p>
</sec>
<sec id="Ch1.S5.SS5">
  <label>5.5</label><title>Verification of the FastICE numerical implementation</title>
      <p id="d1e9105">In order to confirm the accuracy of the FastICE numerical implementation, we report truncation errors (L2 norms) upon numerical grid refinement. We consider both the 2-D and 3-D configurations of Experiment 2 for this convergence test. We vary the numerical grid resolution, keeping the relative grid step <inline-formula><mml:math id="M377" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M378" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:math></inline-formula> (and <inline-formula><mml:math id="M379" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> in 3-D) ratio. We utilise a high-resolution numerical simulation as a reference and perform three additional simulations in which we keep dividing the number of grid points in both the <inline-formula><mml:math id="M380" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M381" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> (and <inline-formula><mml:math id="M382" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> in 3-D) direction by a factor of 2. We report the L2 norms,
            <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M383" display="block"><mml:mtable rowspacing="0.2ex" class="split" columnspacing="1em" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">err</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:msub><mml:mo>|</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">ref</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">coarse</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:msub><mml:mo>|</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mi mathvariant="normal">err</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:msub><mml:mo>|</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mi mathvariant="normal">ref</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mi mathvariant="normal">coarse</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:msub><mml:mo>|</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          for both the pressure <inline-formula><mml:math id="M384" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula> and the horizontal downslope <inline-formula><mml:math id="M385" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> velocity component on a logarithmic plot for both the 2-D (Fig. <xref ref-type="fig" rid="Ch1.F15"/>a) and 3-D configurations (Fig. <xref ref-type="fig" rid="Ch1.F15"/>b). The FastICE numerical implementation converges with increasing numerical resolution, and we report linear fitting slopes of <inline-formula><mml:math id="M386" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.19</mml:mn></mml:mrow></mml:math></inline-formula> for pressure and about <inline-formula><mml:math id="M387" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.4</mml:mn></mml:mrow></mml:math></inline-formula> for horizontal the velocity component.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F15"><?xmltex \currentcnt{15}?><label>Figure 15</label><caption><p id="d1e9318">Evolution of velocity and pressure truncation errors (L2 norm) upon grid refinement for <bold>(a)</bold> the 2-D configuration and <bold>(b)</bold> the 3-D configuration of Experiment 2.</p></caption>
          <?xmltex \igopts{width=199.169291pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f15.png"/>

        </fig>

      <p id="d1e9333">We additionally report the behaviour of the residuals' converge as a function of the non-linear iterations <inline-formula><mml:math id="M388" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">iter</mml:mi><mml:mi mathvariant="normal">nonlin</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> for the FastICE GPU-based implementation (Fig. <xref ref-type="fig" rid="Ch1.F16"/>a). The reported convergence history stands for a 2-D configuration of Experiment 3 and a numerical grid resolution of <inline-formula><mml:math id="M389" display="inline"><mml:mrow><mml:mn mathvariant="normal">511</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn></mml:mrow></mml:math></inline-formula> grid points. The optimal damping parameter used in this case is <inline-formula><mml:math id="M390" display="inline"><mml:mrow><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> (Eq. <xref ref-type="disp-formula" rid="Ch1.E19"/>). We further report the sensitivity of the accelerated PT scheme on the damping parameter <inline-formula><mml:math id="M391" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="Ch1.F16"/>b). We show that selecting the optimal damping parameter (in the reported case <inline-formula><mml:math id="M392" display="inline"><mml:mrow><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>) ensures a relatively low number of iterations to converge both the linear and non-linear thermomechanical problem.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F16"><?xmltex \currentcnt{16}?><label>Figure 16</label><caption><p id="d1e9402">Residual evolution and convergence efficiency of the 2-D FastICE GPU-based implementation for a numerical grid resolution of <inline-formula><mml:math id="M393" display="inline"><mml:mrow><mml:mn mathvariant="normal">511</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn></mml:mrow></mml:math></inline-formula> grid points targeting a relative non-linear tolerance of <inline-formula><mml:math id="M394" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">tol</mml:mi><mml:mi mathvariant="normal">nonlin</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mi>e</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula>. <bold>(a)</bold> Relative total non-linear residuals <inline-formula><mml:math id="M395" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>=</mml:mo><mml:mo>max⁡</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>  as a function of non-linear iterations and <bold>(b)</bold> the non-linear iteration count as a function of the damping parameter <inline-formula><mml:math id="M396" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> (Eq. <xref ref-type="disp-formula" rid="Ch1.E19"/>).</p></caption>
          <?xmltex \igopts{width=199.169291pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f16.png"/>

        </fig>

</sec>
<sec id="Ch1.S5.SS6">
  <label>5.6</label><title>The computational performance</title>
      <p id="d1e9507">We used two metrics to assess the performance of the developed FastICE PT algorithm: the effective memory throughput (<inline-formula><mml:math id="M397" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) and the wall time. We first compare the effective memory throughput of the vectorised MATLAB CPU implementation and the single-GPU CUDA C implementation. We employ double-precision (DP) floating-point arithmetic in CUDA C for fair comparison. Second, we employ the wall-time metric to compare the performance of our various implementations (MATLAB, CUDA C) and compare these to the time to solution of the Elmer/Ice solver.</p>
      <p id="d1e9521">We use two methods to solve the linear system in Elmer/Ice. In the 2-D experiments, we use a direct method, and in 3-D, we use an iterative method. The direct method used in 2-D relies on the UMFPACK routines to solve the linear system. To solve the 3-D experiments, we employ the available bi-conjugate gradient-stabilised method (BICGstab) with an ILU0 preconditioning. We employ the<?pagebreak page969?> configuration in Experiment 1 for all the performance measurements. We use an Intel i7 4960HQ 2.6 GHz (Haswell) four-core CPU to benchmark all the CPU-based calculations. For simplicity, we only ran single-core CPU tests, staying away from any CPU parallelisation of the algorithms. Thus, our MATLAB or the Elmer/Ice single-core CPU results are not representative of the CPU hardware capabilities and are only reported for reference.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F17"><?xmltex \currentcnt{17}?><label>Figure 17</label><caption><p id="d1e9526">Performance evaluation of the FastICE mechanical solver in terms of <bold>(a)</bold> the effective memory throughput <inline-formula><mml:math id="M398" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in GB per second and <bold>(b)</bold> the wall time (in seconds) to converge the Stokes solver to a relative non-linear tolerance of <inline-formula><mml:math id="M399" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">tol</mml:mi><mml:mi mathvariant="normal">nonlin</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. We report the results obtained using a 2-D CPU-based single-core vectorised MATLAB implementation of FastICE, a 2-D and 3-D GPU-based CUDA C implementation of FastICE, and a 2-D (direct) and 3-D (iterative) solver within the Elmer/Ice FEM single-core CPU-based model. The CPU codes are executed on an Intel i7 4960HQ CPU processor with 8 GB of RAM, and the GPU codes are launched on a Nvidia Titan X (Maxwell) GPU with 12 GB of on-board memory. All the computations are performed in double-precision arithmetic, with the only exception for the two single-precision GPU-based runs depicted with larger red (2-D) and orange (3-D) symbols. The single-core FastICE CPU MATLAB and Elmer/Ice results are shown for reference; they are not meant for performance comparison because we did not enable multi-threading in MATLAB and did not have access to a parallel version of Elmer/Ice.</p></caption>
          <?xmltex \igopts{width=184.942913pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f17.png"/>

        </fig>

      <?pagebreak page970?><p id="d1e9574">The FastICE PT solver relies on evaluating a finite-difference stencil. Each cell of the computational domain needs to access neighbouring values in order to approximate derivatives. These memory access operations are the performance bottleneck of the algorithm, making it memory-bounded. Thus, the algorithm's performance depends crucially on the memory transfer speed, and not the rate of the floating-point operations. Memory-bounded algorithms place additional pressure on modern many-core processors, since the current chip design tends toward large flop-to-byte ratios. Over the past years and decades, the memory bandwidth increase has been much slower compared to the increase in the rate of floating-point operations.</p>
      <?pagebreak page971?><p id="d1e9577">As shown by <xref ref-type="bibr" rid="bib1.bibx42" id="text.49"/> and <xref ref-type="bibr" rid="bib1.bibx51" id="text.50"/>, a relevant metric to assess the performance of memory-bounded algorithms is the effective memory throughput (<inline-formula><mml:math id="M400" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) (Eq. <xref ref-type="disp-formula" rid="Ch1.E22"/>). The <inline-formula><mml:math id="M401" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> determines how efficiently data are transferred between the main memory and the arithmetic units and is inversely proportional to the execution time:
            <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M402" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">iter</mml:mi></mml:msub><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">IO</mml:mi></mml:msub><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msup><mml:mn mathvariant="normal">1024</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">nt</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="2em"/><mml:mfenced open="[" close="]"><mml:mrow><mml:mtext>GB</mml:mtext><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mtext>s</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          <?xmltex \hack{\newpage}?>where <inline-formula><mml:math id="M403" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:msub><mml:mi>n</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> stands for the total number of grid points, <inline-formula><mml:math id="M404" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">iter</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the total number of numerical iterations performed, <inline-formula><mml:math id="M405" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the arithmetic precision (single – 4 bytes or double – 8 bytes), <inline-formula><mml:math id="M406" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">nt</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the wall time in seconds needed to compute the <inline-formula><mml:math id="M407" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">iter</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> iterations and <inline-formula><mml:math id="M408" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">IO</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the performed number of memory accesses. It represents the minimum number of memory operations (read-and-write or read only) required to solve a given physical problem. For instance, in the mechanical Stokes solver for Experiment 1, we have to update (read-and-write) three arrays (<inline-formula><mml:math id="M409" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M410" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula>) at every iteration in 2-D and four arrays (<inline-formula><mml:math id="M411" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M412" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula>) at every iteration in 3-D. Thus, the update of the mandatory arrays requires a minimum of six (eight) read-and-write operations in 2-D (3-D). One additional read-and-write is needed to resolve the non-linear viscosity; thus, <inline-formula><mml:math id="M413" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">IO</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> in the 2-D case and <inline-formula><mml:math id="M414" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">IO</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">12</mml:mn></mml:mrow></mml:math></inline-formula> in 3-D.</p>
      <p id="d1e9862">We report <inline-formula><mml:math id="M415" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values obtained with the FastICE algorithm for both the vectorised MATLAB (CPU) and the CUDA C (GPU) implementations in double-precision arithmetic (Fig. <xref ref-type="fig" rid="Ch1.F17"/>a). We also show the GPU performance using single-precision arithmetic (Fig. <xref ref-type="fig" rid="Ch1.F17"/>a – green diamonds). The results we obtain should be compared to the peak memory throughput value <inline-formula><mml:math id="M416" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">peak</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the specific hardware used. The <inline-formula><mml:math id="M417" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">peak</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> reports the memory transfer rates delivered only by performing memory copy operations with no computations. This value reflects the hardware performance limit and the maximal effective memory bandwidth. We measure <inline-formula><mml:math id="M418" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">peak</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values for the Intel i7 4960HQ CPU of 20 GB s<inline-formula><mml:math id="M419" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and of 260 GB s<inline-formula><mml:math id="M420" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> for the Nvidia Titan X GPU. The single-core vectorised MATLAB CPU implementation achieves about <inline-formula><mml:math id="M421" display="inline"><mml:mn mathvariant="normal">0.7</mml:mn></mml:math></inline-formula> GB s<inline-formula><mml:math id="M422" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, and the CUDA C implementation <inline-formula><mml:math id="M423" display="inline"><mml:mn mathvariant="normal">16</mml:mn></mml:math></inline-formula> GB s<inline-formula><mml:math id="M424" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. Thus, the MATLAB single-core CPU implementation reaches 3.5 % of the (CPU) hardware peak value, and the CUDA C (GPU) implementation at about 6.15 % and 11 % of the (GPU) hardware peak value using double-precision and single-precision arithmetic, respectively. Further improvement of the GPU <inline-formula><mml:math id="M425" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values can be achieved by optimising the GPU code using more on-the-fly calculations and advanced kernel scheduling.</p>
      <p id="d1e9988">We investigate the wall time to solve one time step with the FastICE GPU solver for both the 2-D and the 3-D configurations (Fig. <xref ref-type="fig" rid="Ch1.F17"/>b). We found wall times of about 15 min to solve <inline-formula><mml:math id="M426" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">2.4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">7</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs with double-precision arithmetic and only 3 min when using single-precision arithmetic on a Nvidia Titan X (Maxwell) GPU. In future investigations, one may consider comparing wall times obtained by CPU algorithms fully enabling all cores of the CPU against wall times for GPUs within the same price and power consumption range.</p>
      <p id="d1e10010">The 3-D performance results obtained on various available Nvidia GPUs are summarised in Fig. <xref ref-type="fig" rid="Ch1.F18"/>. We performed all the calculations using double-precision arithmetic. We compare the <inline-formula><mml:math id="M427" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and wall-time values as functions of the DOFs. We tested GPUs from various price ranges and chip generations, targeting entry-level GPUs such as the Nvidia Quadro P1000 (Pascal), high-end gaming cards such as the Nvidia Titan Black (Kepler) or the Nvidia Titan X (Maxwell), and data-centre-class GPU accelerators such as the Nvidia Tesla V100 PCIe (Volta). The MATLAB implementation peak <inline-formula><mml:math id="M428" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values are about <inline-formula><mml:math id="M429" display="inline"><mml:mn mathvariant="normal">0.46</mml:mn></mml:math></inline-formula> GB s<inline-formula><mml:math id="M430" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, the Quadro P1000 (Pascal) values about <inline-formula><mml:math id="M431" display="inline"><mml:mn mathvariant="normal">4.3</mml:mn></mml:math></inline-formula> GB s<inline-formula><mml:math id="M432" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, the Titan Black (Kepler) <inline-formula><mml:math id="M433" display="inline"><mml:mn mathvariant="normal">12.4</mml:mn></mml:math></inline-formula> GB s<inline-formula><mml:math id="M434" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, the Titan X (Maxwell) <inline-formula><mml:math id="M435" display="inline"><mml:mn mathvariant="normal">16.7</mml:mn></mml:math></inline-formula> GB s<inline-formula><mml:math id="M436" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and the Tesla V100 (Volta) <inline-formula><mml:math id="M437" display="inline"><mml:mn mathvariant="normal">83.2</mml:mn></mml:math></inline-formula> GB s<inline-formula><mml:math id="M438" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. The <inline-formula><mml:math id="M439" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values directly impact the wall time, since the memory bandwidth is the bottleneck in FastICE. We solved a 3-D problem involving <inline-formula><mml:math id="M440" display="inline"><mml:mrow><mml:mn mathvariant="normal">511</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">255</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">127</mml:mn></mml:mrow></mml:math></inline-formula> grid points (<inline-formula><mml:math id="M441" display="inline"><mml:mrow><mml:mn mathvariant="normal">6.6</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">7</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> DOFs) in about 1 h on the Titan Black GPU, 40 min on the Titan X GPU, and only 8 min on the Tesla V100 GPU. Notably, at this resolution, we employed about 4.5 GB of memory to solve the isothermal Stokes model. The results suggest that more recent GPUs such as the data-centre Tesla V100 (Volta) offer a more significant (order of magnitude higher) performance increase than entry-level GPU accelerators, such as the Quadro P1000.</p>
      <p id="d1e10176">We share the performance of the GPU-MPI implementation of FastICE to execute on distributed memory machines. We achieve a weak scaling parallel efficiency of 99 % on the 512 Nvidia K80 (Kepler) GPUs on the Xstream Cray CS-Storm GPU compute cluster at the Stanford Research Computing Facility. As our baseline, we use a non-MPI single-GPU calculation. We then repeat the experiment using 1 to 512 MPI processes (thus GPUs) and report the normalised execution time (Fig. <xref ref-type="fig" rid="Ch1.F19"/>). The effective drop in parallel efficiency is only 1 % involving 1 to 512 MPI processes. We achieve this close-to-optimal parallel efficiency by overlapping MPI message communication and local domain stencil calculations. We specifically employ distinct CUDA streams in order to execute the communication and computation overlap asynchronously. We repeat a similar experiment on both the Volta node, an 8 Nvidia Tesla V100 32 GB (Nvlink Volta) GPU compute node (analogous to Nvidia's DGX-1 box), and the octopus supercomputer hosting 128 consumer electronics Nvidia Titan X (Maxwell) GPUs at the Swiss Geocomputing Centre, University of Lausanne, Switzerland. On the Volta node, we report a weak scaling parallel efficiency of 0.985 % for a single MPI process running at 0.99 % of the non-MPI reference. On the octopus supercomputer, we report a parallel efficiency of 95.5 % with an effective drop in parallel efficiency of only 2 % involving 1 to 128 MPI processes.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F18"><?xmltex \currentcnt{18}?><label>Figure 18</label><caption><p id="d1e10184">Performance evaluation of the FastICE mechanical solver in terms of <bold>(a)</bold> effective memory throughput <inline-formula><mml:math id="M442" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">MTP</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in GB per second and <bold>(b)</bold> wall time (in seconds) to converge the Stokes solver to a relative non-linear tolerance of <inline-formula><mml:math id="M443" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">tol</mml:mi><mml:mi mathvariant="normal">nonlin</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. We report the results from a 3-D CPU-based single-core vectorised MATLAB implementation and a 3-D GPU-based CUDA C implementation of FastICE running on different GPU chip architectures. The CPU codes are executed on an Intel i7 4960HQ CPU processor with 8 GB of RAM. The GPU codes were launched on a Nvidia Titan Black (Kepler) GPU with 6 GB, a Nvidia Titan X (Maxwell) GPU 12 GB, a Nvidia Quadro P1000 (Pascal) 4 GB and a Nvidia Tesla V100 PCIe (Volta) 32 GB.</p></caption>
          <?xmltex \igopts{width=184.942913pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f18.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F19" specific-use="star"><?xmltex \currentcnt{19}?><label>Figure 19</label><caption><p id="d1e10233">MPI weak scaling of the 3-D thermomechanically coupled GPU-based FastICE software. We report the parallel efficiency (–) of the numerical application on three different Nvidia hardware accelerators, the 1-512 Tesla K80 12 GB data-centre GPUs, the 1-8 Tesla V100 32 GB Nvlink data-centre GPUs and the 1-128 Titan X (Maxwell) 12 GB consumer electronics GPUs. These accelerators are available via the Xstream supercomputer, the Volta node and the octopus supercomputer, respectively. Note that the execution time baseline used to compute the parallel efficiency represents a non-MPI calculation. We report the highest numerical grid resolution <inline-formula><mml:math id="M444" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> achieved on each distributed memory machine.</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://gmd.copernicus.org/articles/13/955/2020/gmd-13-955-2020-f19.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S6">
  <label>6</label><title>Discussion</title>
      <p id="d1e10267">Numerically resolving thermomechanical processes in ice is vital for improving our understanding of the physical processes that govern the transition from fast to slow ice in a changing climate. To date, very few studies have investigated the numerical aspects of thermomechanically coupled Stokes solvers <xref ref-type="bibr" rid="bib1.bibx13" id="paren.51"><named-content content-type="pre">e.g.</named-content></xref>. Existing assessments <xref ref-type="bibr" rid="bib1.bibx65" id="paren.52"><named-content content-type="pre">e.g.</named-content></xref> usually employ low spatial resolution and<?pagebreak page972?> do not address the influence of the numerical implementation of multi-physics coupling strategies or the role of numerical time integration. To avoid the significant computational expense of a thermomechanically coupled full Stokes model, many studies relied either on the computationally less expensive shallow ice approximations, linear or linearised Stokes models, or low spatial resolutions. None of the approaches have resolved the multi-physics and multiscale processes governing the boundaries of streaming ice, including shear margins, grounding zones and the basal interface.</p>
      <p id="d1e10280">To address these limitations, we have developed FastICE, a new parallel GPU-based numerical model. The goal of FastICE is to better understand the physical processes that govern englacial instabilities such as thermomechanical localisation at the field site, rather than the regional, scale. It hence targets different scientific problems than many existing land–ice models and complements these previous models. FastICE is based on an iterative pseudo-transient finite-difference method. Our discretisation yields a concise matrix-free algorithm well suited to use the intrinsic parallelism of modern hardware accelerators such as GPUs. Our choices enable high-resolution 2-D and 3-D thermomechanically coupled simulations to efficiently perform on desktop computers and to scale linearly on supercomputers, both featuring GPU accelerators.</p>
      <p id="d1e10283">The significant temperature dependence of ice's shear viscosity leads to pronounced spatial variations in the viscosity, which affects the convergence rate of our iterative PT method. Resolving shear flow localisation is challenging in this context, since it requires the simultaneous minimisation of errors in locations of the computational domain that are governed by different characteristic timescales. Our PT approach allows us to capture the resulting spatial heterogeneity and offers a physically motivated strategy to locally ensure the stability of the iterative scheme using local pseudo-time steps, analogous to diagonal preconditioning in matrix-based direct approaches. The conciseness and simplicity of the implementation allows us to explore influences of various coupling methods and time integrations in a straightforward way. The PT approach is an interesting choice for educational purposes and research problems given its conciseness and efficiency, respectively.</p>
      <p id="d1e10286">We quantify the scalability of our approach through extensive performance tests, whereby we investigated both the time to solution and the efficiency of exploiting the current hardware capabilities at their maximal capacities. To verify the accuracy and the coherence of the proposed results, we performed a set of benchmark experiments, obtaining excellent agreement with results from the widely used glacier flow model Elmer/Ice. Experiment 3 verifies that, under the assumption of periodic configurations, the 1-D, 2-D and 3-D models return matching results.</p>
      <p id="d1e10290">Further, we have tested the accuracy of our numerical solutions for different time integration schemes, including forward (explicit) and backward (implicit) Euler and different physical time steps. The value of the numerical time step must be chosen as sufficiently small so as to resolve the relevant physical processes. We limited the maximal time step in the explicit time integration scheme by the CFL stability criterion for temperature diffusion. For high spatial numerical resolutions, the CFL-based time step restriction is sufficient to resolve the coupled thermomechanical process. However, this conclusion is not valid for low spatial resolutions (e.g. fewer than 20 grid points). At low resolution, the CFL-based stability condition predicts time step values larger than the non-dimensional time (<inline-formula><mml:math id="M445" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">8</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>) needed to raise the temperature. Thus, we did not sufficiently resolve the physical process. An implicit scheme for the time integration remedies<?pagebreak page973?> the stability issue but does not guarantee accuracy. Independent of the numerical time integration scheme used, the range of time step values that resolve the coupled physics is close to the explicit stability criterion.</p>
      <p id="d1e10308">Our multi-GPU implementation of the thermomechanical FastICE solver achieves a close-to-ideal parallel efficiency featuring a runtime drop of only 1 % and 2 % compared to a single MPI process execution on 1-512 Nvidia K80 GPUs and on 1-128 Nvidia Titan X (Maxwell) GPUs, respectively (representing a 1 % and 4.5 % deviation from a non-MPI single-GPU runtime). We achieve this optimal domain decomposition parallelisation by overlapping communication and computation using native CUDA streams. This CUDA feature enables asynchronous compute kernel execution. Similar implementation and parallel scaling results were recently reported for hydromechanical couplings <xref ref-type="bibr" rid="bib1.bibx51 bib1.bibx53" id="paren.53"/>. Discrepancies in the parallel efficiency among the three tested distributed memory machines mainly result from the various hardware type and age, as well as from the interconnect specifications. The Xstream supercomputer features Nvidia Tesla K80 GPUs based on Kepler chip architecture launched in late 2014 as well as single-rail Mellanox FDR Infiniband interconnect. The octopus supercomputer features consumer electronics Nvidia Titan X GPUs based on the Maxwell chip architecture launched in mid-2015 as well as dual-rail Mellanox FDR Infiniband interconnect. The Volta node features the latest Nvidia Tesla V100 GPUs based on Volta chip architecture launched in mid-2018 and Nvlink technology as intra-node interconnect. More recent chip architectures reduce the relative computation time and may provide less room for hiding the MPI communication. Dual-rail interconnect doubles the inter-node throughput and thus reduces the communication time among distinct compute nodes. Note that Xstream features 16 GPUs per node, which may reduce the inter-node communication compared to octopus that features 4 GPUs per node.</p>
</sec>
<sec id="Ch1.S7" sec-type="conclusions">
  <label>7</label><title>Conclusions</title>
      <p id="d1e10322">In this study, we develop FastICE, an iterative solver that efficiently exploits the capabilities of modern hardware accelerators such as GPUs. We achieve rapid execution times on single GPUs monitoring and optimising memory transfers. We achieve close-to-ideal parallel efficiency (99 % and 95.5 %) on a weak scaling test up to 512 and 128 GPUs on heterogenous hardware by overlapping MPI communication and computations.
The technical advances and utilisation of GPU accelerators enable us to resolve thermomechanically coupled ice flow in 3-D at high spatial and temporal resolution.</p>
      <p id="d1e10325">We benchmark the mechanical solver of FastICE  against the community model Elmer/Ice, focusing specifically on explicit as opposed to implicit coupling and time integration strategies. We find that the physical time step must be chosen with care. Sufficiently high temporal resolution is necessary in order to accurately resolve the coupled physics. Although minor differences arise among uncoupled and coupled approaches, we observe less localisation for uncoupled models compared to the fully coupled ones. In additional to high<?pagebreak page974?> temporal resolution, a relatively high spatial numerical resolution of more than 100 grid points in the vertical direction is necessary to resolve thermomechanical localisation for typical ice-sheet thicknesses on the order of hundreds of metres.
The presented models enable us to gain further process-based understanding of ice-flow localisation. Resolving the coupled processes at very high spatial and temporal resolutions provides future avenues to address current challenges in accurately predicting ice-sheet dynamics.</p>
</sec>

      
      </body>
    <back><notes notes-type="codeavailability"><title>Code availability</title>

      <p id="d1e10332">The FastICE software developed in this study is licensed under the GPLv3 free software licence. The latest version of the code is available for download from Bitbucket at: <uri>https://bitbucket.org/lraess/fastice/</uri> (last access: 2 March 2020) and from: <uri>http://wp.unil.ch/geocomputing/software/</uri> (last access: 2 March 2020). Past and future FastICE versions are available from a permanent DOI repository (Zenodo) at: <ext-link xlink:href="https://doi.org/10.5281/zenodo.3461171" ext-link-type="DOI">10.5281/zenodo.3461171</ext-link> <xref ref-type="bibr" rid="bib1.bibx52" id="paren.54"/>. The FastICE software includes code examples based on the PT method in both the MATLAB and CUDA C programming languages. The GPU routines run on a CUDA-capable GPU device. The multi-GPU version of the 3-D code requires CUDA-aware MPI to be installed. On the octopus GPU supercomputer, we installed CUDA 10.0 and built Open MPI 2.1.5 with CUDA 10.0 and GCC 6.5 on a CentOS 6.9 system.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d1e10350">LR participated in the early model and numerical method development stages, implemented the MPI version of the code, performed the scaling analysis, and reshaped the final version of the paper. AL realised the first version of the study, performed the benchmarks, and drafted the paper outline as the second chapter of his PhD thesis. FH and YP supervised the early stages of the study. JS contributed to the capped thermal model and provided feedback on the paper in the final stage. All authors have reviewed and approved the final version of the paper.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d1e10356">The authors declare that they have no conflict of interest.</p>
  </notes><ack><title>Acknowledgements</title><p id="d1e10362">We thank Samuel Omlin,  Thibault Duretz and Mathieu Gravey for their technical and scientific support. We thank Thomas Zwinger and two anonymous reviewers for valuable comments, which enhanced the study. We acknowledge the Swiss Geocomputing Centre for computing resources on the octopus supercomputer and are grateful to Philippe Logean for continuous technical support. Ludovic Räss acknowledges support from the Swiss National Science Foundation's Early Postdoc Mobility Fellowship 178075. This research was supported by the National Science Foundation through the Office of Polar Programs awards PLR-1744758 and PLR-1739027. This material is based upon work supported in part by the U.S. Army Research Office under contract/grant number W911NF-12-R0012-04 (PECASE). This work used the XStream computational resource, supported by the National Science Foundation Major Research Instrumentation programme (ACI-1429830).</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d1e10367">This research has been supported by the Swiss National Science Foundation's Early Postdoc Mobility Fellowship (grant no. 178075), the National Science Foundation through the Office of Polar Programs (grant nos. PLR-1744758 and PLR-1739027), and the The U.S. Army Research Laboratory and the U.S. Army Research Office (grant no. W911NF-12-R0012-04). This work used the XStream computational resource, supported by the National Science Foundation Major Research Instrumentation programme (ACI-1429830).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

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

      <ref id="bib1.bibx1"><label>Bassis(2010)</label><?label bassis2010?><mixed-citation>
Bassis, J.: Hamilton-type principles applied to ice-sheet dynamics: new
approximations for large-scale ice sheet flow, J. Glaciol.,
97, 497–513, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx2"><?xmltex \def\ref@label{{Br{\ae}dstrup et~al.(2014)}}?><label>Brædstrup et al.(2014)</label><?label braedstrup2014?><mixed-citation>
Brædstrup, C., Damsgaard, A., and Egholm, D. L.: Ice-sheet modelling
accelerated by graphics cards, Comput. Geosci., 72, 210–220,
2014.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Brinkerhoff and Johnson(2013)</label><?label brinkerhoff2013?><mixed-citation>Brinkerhoff, D. J. and Johnson, J. V.: Data assimilation and prognostic whole ice sheet modelling with the variationally derived, higher order, open source, and fully parallel ice sheet model VarGlaS, The Cryosphere, 7, 1161–1184, <ext-link xlink:href="https://doi.org/10.5194/tc-7-1161-2013" ext-link-type="DOI">10.5194/tc-7-1161-2013</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Brinkerhoff and Johnson(2015)</label><?label brinkerhoff2015?><mixed-citation>
Brinkerhoff, D. J. and Johnson, J. V.: Dynamics of thermally induced ice
streams simulated with a higher-order flow model, J. Geophys.
Res.-Earth, 120, 1743–1770, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bueler and Brown(2009)</label><?label bueler2009?><mixed-citation>Bueler, E. and Brown, J.: Shallow shelf approximation as a “sliding law” in a
thermomechanically coupled ice sheet model, J. Geophys. Res.,
114, F03008, <ext-link xlink:href="https://doi.org/10.1029/2008JF001179" ext-link-type="DOI">10.1029/2008JF001179</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Bueler et al.(2007)</label><?label bueler2007?><mixed-citation>
Bueler, E., Brown, J., and Lingle, C.: Exact solutions to the
thermomechanically coupled shallow-ice approximation: effective tools for
verification, J. Glaciol., 53, 499–516, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Chorin(1967)</label><?label chorin1967numerical?><mixed-citation>
Chorin, A. J.: The numerical solution of the Navier-Stokes equations for an
incompressible fluid, B. Am. Math. Soc., 73,
928–931, 1967.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Chorin(1968)</label><?label chorin1968numerical?><mixed-citation>
Chorin, A. J.: Numerical solution of the Navier-Stokes equations, Math. Comput., 22, 745–762, 1968.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Clarke et al.(1977)</label><?label clarke1977?><mixed-citation>
Clarke, G. K. C., Nitsan, U., and Paterson, W. S. B.: Strain heating and creep
instability in glaciers and ice sheets, Rev. Geophys. Space
Phys., 15, 235–247, 1977.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Cook(2012)</label><?label cook2012?><mixed-citation>
Cook, S.: CUDA Programming, Morgan Kaufmann, Elsevier, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Crank and Nicolson(1947)</label><?label crank_nicolson_1947?><mixed-citation>Crank, J. and Nicolson, P.: A practical method for numerical evaluation of
solutions of partial differential equations of the heat-conduction type,
Mathe. Proc. Cambridge Philos. Soc., 43, 50–67,
<ext-link xlink:href="https://doi.org/10.1017/S0305004100023197" ext-link-type="DOI">10.1017/S0305004100023197</ext-link>, 1947.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Cundall et al.(1993)</label><?label cundall1993?><mixed-citation>
Cundall, P., Coetzee, M., Hart, R., and Varona, P.: FLAC users manual, Itasca
Consulting Group,   23–26, 1993.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Duretz et al.(2019)</label><?label duretz2019?><mixed-citation>
Duretz, T., Räss, L., Podladchikov, Y., and Schmalholz, S.: Resolving
thermomechanical coupling in two and three dimensions: spontaneous strain
localization owing to shear heating, Geophys. J. Int., 216,
365–379, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Egholm et al.(2011)</label><?label egholm2011?><mixed-citation>Egholm, D., M.F., K., Clark, C., and Lesemann, J.: Modeling the flow of
glaciers in steep terrains: The integrated se<?pagebreak page975?>cond-order shallow ice
approximation (iSOSIA), J. Geophys. Res.-Earth, 116,
F02012, <ext-link xlink:href="https://doi.org/10.1029/2010JF001900" ext-link-type="DOI">10.1029/2010JF001900</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Frankel(1950)</label><?label frankel1950?><mixed-citation>
Frankel, S. P.: Convergence rates of iterative treatments of partial
differential equations, Mathe. Tables Other Aids Comput.,
4, 65–75, 1950.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Gagliardini and Zwinger(2008)</label><?label gagliardini2008?><mixed-citation>Gagliardini, O. and Zwinger, T.: The ISMIP-HOM benchmark experiments performed using the Finite-Element code Elmer, The Cryosphere, 2, 67–76, <ext-link xlink:href="https://doi.org/10.5194/tc-2-67-2008" ext-link-type="DOI">10.5194/tc-2-67-2008</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Gagliardini et al.(2013)</label><?label gagliardini2013?><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.bibx18"><label>Gerya(2009)</label><?label gerya2009?><mixed-citation>
Gerya, T.: Introduction to Numerical Geodynamic Modelling, Cambridge
University Press, Cambridge, United Kingdom, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Gerya and Yuen(2003)</label><?label gerya2003?><mixed-citation>
Gerya, T. V. and Yuen, D. A.: Characteristics-based marker-in-cell method with
conservative finite-differences schemes for modeling geological flows with
strongly variable transport properties, Phys. Earth  Planet.
Int., 140, 293–318, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Gilbert et al.(2014)</label><?label gilbert2014?><mixed-citation>
Gilbert, A., Gagliardini, O., Vincent, C., and Wagnon, P.: A 3-D thermal
regime model suitable for cold accumulation zones of polythermal mountain
glaciers, J. Geophys. Res.-Earth, 119, 876–1893,
2014.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Glen(1952)</label><?label glen1952?><mixed-citation>
Glen, J. W.: The flow law of ice from measurements in glacier tunnels,
laboratory experiments and the Jungfraufirn borehole experiment, J.  Glaciol., 2, 111–114, 1952.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Goldberg(2011)</label><?label goldberg2011?><mixed-citation>
Goldberg, D.: A variationally-derived, depth-integrated approximation to the
Blatter Pattyn balance, J. Glaciol., 57, 157–170, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Gong et al.(2018)</label><?label gong2018?><mixed-citation>Gong, Y., Zwinger, T., Åström, J., Altena, B., Schellenberger, T., Gladstone, R., and Moore, J. C.: Simulating the roles of crevasse routing of surface water and basal friction on the surge evolution of Basin 3, Austfonna ice cap, The Cryosphere, 12, 1563–1577, <ext-link xlink:href="https://doi.org/10.5194/tc-12-1563-2018" ext-link-type="DOI">10.5194/tc-12-1563-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Harlow and Welch(1965)</label><?label harlow1965?><mixed-citation>
Harlow, F. H. and Welch, E.: Numerical calculation of time-dependent viscous
flow of fluid with free surface, Phys. Fluids, 8, 2182–2189, 1965.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Hindmarsh(2006)</label><?label hindmarsh2006?><mixed-citation>Hindmarsh, R. C. A.: Stress gradient damping of thermoviscous ice flow
instabilities, J. Geophys. Res.-Earth., 111, B12409, <ext-link xlink:href="https://doi.org/10.1029/2005JB004019" ext-link-type="DOI">10.1029/2005JB004019</ext-link>,
2006.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Hindmarsh(2009)</label><?label hindmarsh2009?><mixed-citation>Hindmarsh, R. C. A.: Consistent generation of ice-streams via thermo-viscous
instabilities modulated by membrane stresses, Geophys. Res. Lett.,
36, L06502, <ext-link xlink:href="https://doi.org/10.1029/2008GL036877" ext-link-type="DOI">10.1029/2008GL036877</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Hutter(1983)</label><?label hutter1983theoretical?><mixed-citation>
Hutter, K.: Theoretical glaciology: material science of ice and the mechanics
of glaciers and ice sheets, Vol. 1, Springer, 1983.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Huybrechts and Payne(1996)</label><?label huybrechts1996?><mixed-citation>
Huybrechts, P. and Payne, T.: The EISMINT benchmarks for testing ice-sheet
models, Ann. Glaciol., 23, 1–12, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Isaac et al.(2015)</label><?label isaac2015?><mixed-citation>Isaac, T., Stadler, G., and Ghattas, O.: Solution of Nonlinear Stokes
Equations Discretized by High-order Finite Elements on Nonconforming and
Anisotropic Meshes, with Application to Ice Sheet Dynamics, SIAM J.
Sci. Comput., 37,
B804–B833, <ext-link xlink:href="https://doi.org/10.1137/140974407" ext-link-type="DOI">10.1137/140974407</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Jarosch(2008)</label><?label jarosch2008?><mixed-citation>
Jarosch, A.: Icetools: a full Stokes finite element model for glaciers,
Comput. Geosci., 34, 1005–1014, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Jouvet et al.(2008)</label><?label jouvet2008?><mixed-citation>
Jouvet, G., Picasso, M., Rappaz, J., and Blatter, H.: A new algorithm to
simulate the dynamics of a glacier: theory and applications, J.
Glaciol., 54, 801–811, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Kelley and Keyes(1998)</label><?label kelley1998?><mixed-citation>
Kelley, C. T. and Keyes, D. E.: Convergence Analysis of Pseudo-Transient
Continuation, SIAM J. Numer. Anal., 35, 508–523, 1998.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Kelley and Liao(2013)</label><?label kelley2013?><mixed-citation>
Kelley, C. T. and Liao, L.-Z.: Explicit pseudo-transient continuation,
Pacific J. Optim., 9, 77–91, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Kiss et al.(2019)</label><?label kiss2019?><mixed-citation>Kiss, D., Podladchikov, Y., Duretz, T., and Schmalholz, S. M.: Spontaneous
generation of ductile shear zones by thermal softening: Localization
criterion, 1D to 3D modelling and application to the lithosphere, Earth
Planet. Sci. Lett., 519, 284–296, <ext-link xlink:href="https://doi.org/10.1016/j.epsl.2019.05.026" ext-link-type="DOI">10.1016/j.epsl.2019.05.026</ext-link>,
2019.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Larour et al.(2012)</label><?label larour2012?><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, 1–20, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Leng et al.(2012)</label><?label leng2012?><mixed-citation>Leng, W., Ju, L., Gunzburger, M., and Ringler, T.: A parallel high- order
accurate finite element nonlinear Stokes ice sheet model and benchmark
experiments, J. Geophys. Res., 117, F01001,  <ext-link xlink:href="https://doi.org/10.1029/2011JF001962" ext-link-type="DOI">10.1029/2011JF001962</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Leng et al.(2014)</label><?label leng2014?><mixed-citation>
Leng, W., Ju, L., Gunzburger, M., and Price, S.: A Parallel Computational
Model for Three-Dimensional, Thermo-Mechanical Stokes Flow Simulations of
Glaciers and Ice Sheets, Comput. Phys. Commun., 16,  1056–1080,
2014.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>McKee et al.(2008)</label><?label McKee2008?><mixed-citation>McKee, S., Tomé, M., Ferreira, V., Cuminato, J., Castelo, A., Sousa, F.,
and Mangiavacchi, N.: The MAC method, Comput. Fluid., 37, 907–930,
<ext-link xlink:href="https://doi.org/10.1016/j.compfluid.2007.10.006" ext-link-type="DOI">10.1016/j.compfluid.2007.10.006</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Morland(1984)</label><?label morland1984?><mixed-citation>
Morland, L.: Thermomechanical balances of ice sheet flows, Geophys.
Astrophys. Fluid Dynam., 29, 237–266, 1984.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Nye(1953)</label><?label nye1953?><mixed-citation>
Nye, J. F.: The flow law of ice from measurements in glacier tunnels,
laboratory experiments and the Jungfraufirn borehole experiment, Proc. Royal Soc. A, 219, 477–489, 1953.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Ogawa et al.(1991)</label><?label ogawa1991?><mixed-citation>
Ogawa, M., Schubert, G., and Zebib, A.: Numerical simulations of
three-dimensional thermal convection in a fluid with strongly temperature
dependent viscosity, J. Fluid Mech., 233, 299–328, 1991.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Omlin(2017)</label><?label omlin2017?><mixed-citation>
Omlin, S.: Development of massively parallel near peak performance solvers for   three-dimensional geodynamic modelling, PhD thesis, University of Lausanne,   2017.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Patankar(1980)</label><?label patankar1980?><mixed-citation>
Patankar, S.: Numerical Heat Transfer and Fluid Flow, Comput. Methods Mech.
Thermal Sci. Ser., CRC Press, Boca Raton,Fla, 1980.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Pattyn et al.(2008)</label><?label pattyn2008?><mixed-citation>Pattyn, F., Perichon, L., Aschwanden, A., Breuer, B., de Smedt, B., Gagliardini, O., Gudmundsson, G. H., Hindmarsh, R. C. A., Hubbard, A., Johnson, J. V., Kleiner, T., Konovalov, Y., Martin, C., Payne, A. J., Pollard, D., Price, S., Rückamp, M., Saito, F., Souček, O., Sugiyama, S., and Zwinger, T.: Benchmark experiments for higher-order and full-Stokes ice sheet models (ISMIP-HOM), The Cryosphere, 2, 95–108, <ext-link xlink:href="https://doi.org/10.5194/tc-2-95-2008" ext-link-type="DOI">10.5194/tc-2-95-2008</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Payne and Baldwin(2000)</label><?label payne2000b?><mixed-citation>
Payne, T. and Baldwin, D.: Analysis of ice-flow instabilities identified in
the EISMINT intercomparison exercise, Ann. Glaciol., 30, 204–210,
2000.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Payne et al.(2000)</label><?label payne2000a?><mixed-citation>
Payne, T., Huybrechts, P., Abe-Ouchi, A., Calov, R., Fastook, J., Greve, R.,
Marshall, S., Marsiat, I., Ritz, C., Tarasov, L., and Thomassen, M.: Results
from the EISMINT model intercomparison: the effects of thermomechanical
coupling, J. Glaciol., 46, 227–238, 2000.</mixed-citation></ref>
      <?pagebreak page976?><ref id="bib1.bibx47"><label>Perego et al.(2012)</label><?label perego2012?><mixed-citation>
Perego, M., Gunzburger, M., and Burkardt, J.: Parallel finite element
implementation for higher order ice-sheet models, J. Glaciol.,
58, 76–88, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Poliakov et al.(1993)</label><?label poliakov1993?><mixed-citation>
Poliakov, A. N. B., Cundall, P. A., Podladchikov, Y. Y., and Lyakhovsky, V. A.:
An explicit inertial method for the simulation of viscoelastic flow: An
evaluation of elastic effects on diapiric flow in two- and three-layers
models, Flow and Creep in the Solar Systems: Observations, Modeling and
Theory,  175–195, 1993.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Pollard and DeConto(2012)</label><?label pollard2012?><mixed-citation>Pollard, D. and DeConto, R. M.: Description of a hybrid ice sheet-shelf model, and application to Antarctica, Geosci. Model Dev., 5, 1273–1295, <ext-link xlink:href="https://doi.org/10.5194/gmd-5-1273-2012" ext-link-type="DOI">10.5194/gmd-5-1273-2012</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx50"><?xmltex \def\ref@label{{R{\"{a}}ss et~al.(2018)}}?><label>Räss et al.(2018)</label><?label rass2018?><mixed-citation>Räss, L., Simon, N., and Podladchikov, Y.: Spontaneous formation of
fluid escape pipes from subsurface reservoirs, Sci. Rep., 8,  11116, <ext-link xlink:href="https://doi.org/10.1038/s41598-018-29485-5" ext-link-type="DOI">10.1038/s41598-018-29485-5</ext-link>,  2018.</mixed-citation></ref>
      <ref id="bib1.bibx51"><?xmltex \def\ref@label{{R{\"{a}}ss et~al.(2019a)}}?><label>Räss et al.(2019a)</label><?label rass2019?><mixed-citation>Räss, L., Duretz, T., and Podladchikov, Y. Y.: Resolving
hydro-mechanical coupling in two and three dimensions: Spontaneous
channelling of porous fluids owing to decompaction weakening, Geophys.
J. Int., 218,  1591–1616, <ext-link xlink:href="https://doi.org/10.1093/gji/ggz239" ext-link-type="DOI">10.1093/gji/ggz239</ext-link>, 2019a.</mixed-citation></ref>
      <ref id="bib1.bibx52"><?xmltex \def\ref@label{{R{\"{a}}ss et~al.(2019b)}}?><label>Räss et al.(2019b)</label><?label FastICE?><mixed-citation>Räss, L., Licul, A., Herman, F., Podladchikov, Y., and Suckale, J.:
FastICE, <ext-link xlink:href="https://doi.org/10.5281/zenodo.3461171" ext-link-type="DOI">10.5281/zenodo.3461171</ext-link>, 2019b.</mixed-citation></ref>
      <ref id="bib1.bibx53"><?xmltex \def\ref@label{{R{\"{a}}ss et~al.(2019c)R{\"{a}}ss, Omlin, and
Podladchikov}}?><label>Räss et al.(2019c)Räss, Omlin, and
Podladchikov</label><?label gtc2019?><mixed-citation>Räss, L., Omlin, S., and Podladchikov, Y. Y.: Resolving Spontaneous
Nonlinear Multi-Physics Flow Localization in 3-D: Tackling Hardware Limit,
available at: <uri>https://developer.nvidia.com/gtc/2019/video/S9368</uri> (last access: 2 March 2020), GTC
Silicon Valley, 2019c.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Robin(1955)</label><?label robin1955?><mixed-citation>
Robin, G. D. Q.: Ice movement and temperature distribution in glaciers and ice
sheets, J. Glaciol., 2, 523–532, 1955.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>Saito et al.(2006)</label><?label saito2006?><mixed-citation>Saito, F., Abe-Ouchi, A., and Blatter, H.: European Ice Sheet Modelling
Initiative (EISMINT) model intercomparison experiments with first-order
mechanics, J. Geophys. Res., 111, F02012, <ext-link xlink:href="https://doi.org/10.1029/2004JF000273" ext-link-type="DOI">10.1029/2004JF000273</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx56"><?xmltex \def\ref@label{{Sch{\"{a}}fer et~al.(2014)}}?><label>Schäfer et al.(2014)</label><?label schafer2014?><mixed-citation>Schäfer, M., Gillet-Chaulet, F., Gladstone, R., Pettersson, R., A. Pohjola, V., Strozzi, T., and Zwinger, T.: Assessment of heat sources on the control of fast flow of Vestfonna ice cap, Svalbard, The Cryosphere, 8, 1951–1973, <ext-link xlink:href="https://doi.org/10.5194/tc-8-1951-2014" ext-link-type="DOI">10.5194/tc-8-1951-2014</ext-link>, 2014.
</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx57"><label>Schoof and Hindmarsh(2010)</label><?label schoof2010?><mixed-citation>
Schoof, C. and Hindmarsh, R.: Thin film flows with wall slip: an asymptotic
analysis of higher order glacier flow models,  Q. J.
Mechan. Appl. Mathe., 63, 73–114, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx58"><label>Shin and Strikwerda(1997)</label><?label shin1997?><mixed-citation>
Shin, D. and Strikwerda, J. C.: Inf-Sup conditions for finite-difference
approximations of the Stokes equations, J. Aust.
Mathe. Soc. B, 39, 121–134, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx59"><label>Solomon et al.(2007)</label><?label solomon2007?><mixed-citation>
Solomon, S., Qin, D., Manning, M., Chen, Z., Marquis, M., Averyt, K., Tignor,
M., and Miller, H.: The physical science basis, 235–337, IPCC report AR4, New York and Cambridge, Cambridge University Press, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx60"><label>Suckale et al.(2014)</label><?label suckale2014?><mixed-citation>
Suckale, J., Platt, J., Perol, T., and Rice, J.: Deformation-induced melting
in the margins of the West Antarctic ice streams, J. Geophys.
Res.-Earth, 119, 1004–1025, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx61"><label>Tezaur et al.(2015)</label><?label tezaur2015?><mixed-citation>Tezaur, I. K., Perego, M., Salinger, A. G., Tuminaro, R. S., and Price, S. F.: Albany/FELIX: a parallel, scalable and robust, finite element, first-order Stokes approximation ice sheet solver built for advanced analysis, Geosci. Model Dev., 8, 1197–1220, <ext-link xlink:href="https://doi.org/10.5194/gmd-8-1197-2015" ext-link-type="DOI">10.5194/gmd-8-1197-2015</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx62"><label>Virieux(1986)</label><?label Virieux1986?><mixed-citation>Virieux, J.: P-SV wave propagation in heterogeneous media: Velocity‐stress
finite‐difference method, Geophysics, 51, 889–901,
<ext-link xlink:href="https://doi.org/10.1190/1.1442147" ext-link-type="DOI">10.1190/1.1442147</ext-link>, 1986.</mixed-citation></ref>
      <ref id="bib1.bibx63"><label>Watkins et al.(2019)</label><?label Watkins?><mixed-citation>
Watkins, J., Tezaur, I., and Demeshko, I.: A study on the performance
portability of the finite element assembly process within the Albany Land Ice   solver, Elsevier, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx64"><label>Weinan and Liu(1995)</label><?label weinan1995projection?><mixed-citation>
Weinan, E. and Liu, J.-G.: Projection method I: convergence and numerical
boundary layers, SIAM J. Num. Anal., 1017–1057, 1995.</mixed-citation></ref>
      <ref id="bib1.bibx65"><label>Zhang et al.(2015)</label><?label zhang2015?><mixed-citation>
Zhang, T., Ju, L., Leng, W., Price, S., and Gunzburger, M.: Thermomechanically
coupled modelling for land-terminating glaciers: a comparison of
two-dimensional, first-order and three-dimensional, full-Stokes approaches,
J. Glaciol., 61, 702–711, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx66"><label>Zwinger et al.(2007)</label><?label zwinger2007?><mixed-citation>
Zwinger, T., Greve, R., Gagliardini, O., Shiraiwa, T., and Lyly, M.: A full
Stokes-flow thermo-mechanical model for firn and ice applied to the Gorshkov
crater glacier, Kamchatka, Ann. Glaciol., 45, 29–37, 2007.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Modelling thermomechanical ice deformation using an implicit pseudo-transient method (FastICE v1.0) based on graphical processing units (GPUs)</article-title-html>
<abstract-html><p>Ice sheets lose  the majority of their mass through outlet glaciers or ice streams, corridors of fast ice moving multiple orders of magnitude more rapidly than the surrounding ice. The future stability of these corridors of fast-moving ice depends sensitively on the behaviour of their boundaries, namely shear margins, grounding zones and the basal sliding interface, where the stress field is complex and fundamentally three-dimensional. These boundaries are prone to thermomechanical localisation, which can be captured numerically only with high temporal and spatial resolution. Thus, better understanding the coupled physical processes that govern the response of these boundaries to climate change necessitates a non-linear, full Stokes model that affords high resolution and scales well in three dimensions. This paper's goal is to contribute to the growing toolbox for modelling thermomechanical deformation in ice by leveraging   graphical processing unit (GPU) accelerators' parallel scalability. We propose FastICE, a numerical model that relies on pseudo-transient iterations to solve the implicit thermomechanical coupling between ice motion and temperature involving shear heating and a temperature-dependent ice viscosity. FastICE is based on the finite-difference discretisation, and we implement the pseudo-time integration in a matrix-free way. We benchmark the mechanical Stokes solver against the finite-element code Elmer/Ice and report good agreement among the results. We showcase a parallel version of FastICE to run on GPU-accelerated distributed memory machines, reaching a parallel efficiency of 99&thinsp;%. We show that our model is particularly useful for improving our process-based understanding of flow localisation in the complex transition zones bounding rapidly moving ice.</p></abstract-html>
<ref-html id="bib1.bib1"><label>Bassis(2010)</label><mixed-citation>
Bassis, J.: Hamilton-type principles applied to ice-sheet dynamics: new
approximations for large-scale ice sheet flow, J. Glaciol.,
97, 497–513, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Brædstrup et al.(2014)</label><mixed-citation>
Brædstrup, C., Damsgaard, A., and Egholm, D. L.: Ice-sheet modelling
accelerated by graphics cards, Comput. Geosci., 72, 210–220,
2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Brinkerhoff and Johnson(2013)</label><mixed-citation>
Brinkerhoff, D. J. and Johnson, J. V.: Data assimilation and prognostic whole ice sheet modelling with the variationally derived, higher order, open source, and fully parallel ice sheet model VarGlaS, The Cryosphere, 7, 1161–1184, <a href="https://doi.org/10.5194/tc-7-1161-2013" target="_blank">https://doi.org/10.5194/tc-7-1161-2013</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Brinkerhoff and Johnson(2015)</label><mixed-citation>
Brinkerhoff, D. J. and Johnson, J. V.: Dynamics of thermally induced ice
streams simulated with a higher-order flow model, J. Geophys.
Res.-Earth, 120, 1743–1770, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bueler and Brown(2009)</label><mixed-citation>
Bueler, E. and Brown, J.: Shallow shelf approximation as a “sliding law” in a
thermomechanically coupled ice sheet model, J. Geophys. Res.,
114, F03008, <a href="https://doi.org/10.1029/2008JF001179" target="_blank">https://doi.org/10.1029/2008JF001179</a>, 2009.
</mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Bueler et al.(2007)</label><mixed-citation>
Bueler, E., Brown, J., and Lingle, C.: Exact solutions to the
thermomechanically coupled shallow-ice approximation: effective tools for
verification, J. Glaciol., 53, 499–516, 2007.
</mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Chorin(1967)</label><mixed-citation>
Chorin, A. J.: The numerical solution of the Navier-Stokes equations for an
incompressible fluid, B. Am. Math. Soc., 73,
928–931, 1967.
</mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Chorin(1968)</label><mixed-citation>
Chorin, A. J.: Numerical solution of the Navier-Stokes equations, Math. Comput., 22, 745–762, 1968.
</mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Clarke et al.(1977)</label><mixed-citation>
Clarke, G. K. C., Nitsan, U., and Paterson, W. S. B.: Strain heating and creep
instability in glaciers and ice sheets, Rev. Geophys. Space
Phys., 15, 235–247, 1977.
</mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Cook(2012)</label><mixed-citation>
Cook, S.: CUDA Programming, Morgan Kaufmann, Elsevier, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Crank and Nicolson(1947)</label><mixed-citation>
Crank, J. and Nicolson, P.: A practical method for numerical evaluation of
solutions of partial differential equations of the heat-conduction type,
Mathe. Proc. Cambridge Philos. Soc., 43, 50–67,
<a href="https://doi.org/10.1017/S0305004100023197" target="_blank">https://doi.org/10.1017/S0305004100023197</a>, 1947.
</mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Cundall et al.(1993)</label><mixed-citation>
Cundall, P., Coetzee, M., Hart, R., and Varona, P.: FLAC users manual, Itasca
Consulting Group,   23–26, 1993.
</mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Duretz et al.(2019)</label><mixed-citation>
Duretz, T., Räss, L., Podladchikov, Y., and Schmalholz, S.: Resolving
thermomechanical coupling in two and three dimensions: spontaneous strain
localization owing to shear heating, Geophys. J. Int., 216,
365–379, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Egholm et al.(2011)</label><mixed-citation>
Egholm, D., M.F., K., Clark, C., and Lesemann, J.: Modeling the flow of
glaciers in steep terrains: The integrated second-order shallow ice
approximation (iSOSIA), J. Geophys. Res.-Earth, 116,
F02012, <a href="https://doi.org/10.1029/2010JF001900" target="_blank">https://doi.org/10.1029/2010JF001900</a>, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Frankel(1950)</label><mixed-citation>
Frankel, S. P.: Convergence rates of iterative treatments of partial
differential equations, Mathe. Tables Other Aids Comput.,
4, 65–75, 1950.
</mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Gagliardini and Zwinger(2008)</label><mixed-citation>
Gagliardini, O. and Zwinger, T.: The ISMIP-HOM benchmark experiments performed using the Finite-Element code Elmer, The Cryosphere, 2, 67–76, <a href="https://doi.org/10.5194/tc-2-67-2008" target="_blank">https://doi.org/10.5194/tc-2-67-2008</a>, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Gagliardini et al.(2013)</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.bib18"><label>Gerya(2009)</label><mixed-citation>
Gerya, T.: Introduction to Numerical Geodynamic Modelling, Cambridge
University Press, Cambridge, United Kingdom, 2009.
</mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Gerya and Yuen(2003)</label><mixed-citation>
Gerya, T. V. and Yuen, D. A.: Characteristics-based marker-in-cell method with
conservative finite-differences schemes for modeling geological flows with
strongly variable transport properties, Phys. Earth  Planet.
Int., 140, 293–318, 2003.
</mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Gilbert et al.(2014)</label><mixed-citation>
Gilbert, A., Gagliardini, O., Vincent, C., and Wagnon, P.: A 3-D thermal
regime model suitable for cold accumulation zones of polythermal mountain
glaciers, J. Geophys. Res.-Earth, 119, 876–1893,
2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Glen(1952)</label><mixed-citation>
Glen, J. W.: The flow law of ice from measurements in glacier tunnels,
laboratory experiments and the Jungfraufirn borehole experiment, J.  Glaciol., 2, 111–114, 1952.
</mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Goldberg(2011)</label><mixed-citation>
Goldberg, D.: A variationally-derived, depth-integrated approximation to the
Blatter Pattyn balance, J. Glaciol., 57, 157–170, 2011.
</mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Gong et al.(2018)</label><mixed-citation>
Gong, Y., Zwinger, T., Åström, J., Altena, B., Schellenberger, T., Gladstone, R., and Moore, J. C.: Simulating the roles of crevasse routing of surface water and basal friction on the surge evolution of Basin 3, Austfonna ice cap, The Cryosphere, 12, 1563–1577, <a href="https://doi.org/10.5194/tc-12-1563-2018" target="_blank">https://doi.org/10.5194/tc-12-1563-2018</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Harlow and Welch(1965)</label><mixed-citation>
Harlow, F. H. and Welch, E.: Numerical calculation of time-dependent viscous
flow of fluid with free surface, Phys. Fluids, 8, 2182–2189, 1965.
</mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Hindmarsh(2006)</label><mixed-citation>
Hindmarsh, R. C. A.: Stress gradient damping of thermoviscous ice flow
instabilities, J. Geophys. Res.-Earth., 111, B12409, <a href="https://doi.org/10.1029/2005JB004019" target="_blank">https://doi.org/10.1029/2005JB004019</a>,
2006.
</mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Hindmarsh(2009)</label><mixed-citation>
Hindmarsh, R. C. A.: Consistent generation of ice-streams via thermo-viscous
instabilities modulated by membrane stresses, Geophys. Res. Lett.,
36, L06502, <a href="https://doi.org/10.1029/2008GL036877" target="_blank">https://doi.org/10.1029/2008GL036877</a>, 2009.
</mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Hutter(1983)</label><mixed-citation>
Hutter, K.: Theoretical glaciology: material science of ice and the mechanics
of glaciers and ice sheets, Vol. 1, Springer, 1983.
</mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Huybrechts and Payne(1996)</label><mixed-citation>
Huybrechts, P. and Payne, T.: The EISMINT benchmarks for testing ice-sheet
models, Ann. Glaciol., 23, 1–12, 1996.
</mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Isaac et al.(2015)</label><mixed-citation>
Isaac, T., Stadler, G., and Ghattas, O.: Solution of Nonlinear Stokes
Equations Discretized by High-order Finite Elements on Nonconforming and
Anisotropic Meshes, with Application to Ice Sheet Dynamics, SIAM J.
Sci. Comput., 37,
B804–B833, <a href="https://doi.org/10.1137/140974407" target="_blank">https://doi.org/10.1137/140974407</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Jarosch(2008)</label><mixed-citation>
Jarosch, A.: Icetools: a full Stokes finite element model for glaciers,
Comput. Geosci., 34, 1005–1014, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Jouvet et al.(2008)</label><mixed-citation>
Jouvet, G., Picasso, M., Rappaz, J., and Blatter, H.: A new algorithm to
simulate the dynamics of a glacier: theory and applications, J.
Glaciol., 54, 801–811, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Kelley and Keyes(1998)</label><mixed-citation>
Kelley, C. T. and Keyes, D. E.: Convergence Analysis of Pseudo-Transient
Continuation, SIAM J. Numer. Anal., 35, 508–523, 1998.
</mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Kelley and Liao(2013)</label><mixed-citation>
Kelley, C. T. and Liao, L.-Z.: Explicit pseudo-transient continuation,
Pacific J. Optim., 9, 77–91, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Kiss et al.(2019)</label><mixed-citation>
Kiss, D., Podladchikov, Y., Duretz, T., and Schmalholz, S. M.: Spontaneous
generation of ductile shear zones by thermal softening: Localization
criterion, 1D to 3D modelling and application to the lithosphere, Earth
Planet. Sci. Lett., 519, 284–296, <a href="https://doi.org/10.1016/j.epsl.2019.05.026" target="_blank">https://doi.org/10.1016/j.epsl.2019.05.026</a>,
2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Larour et al.(2012)</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, 1–20, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Leng et al.(2012)</label><mixed-citation>
Leng, W., Ju, L., Gunzburger, M., and Ringler, T.: A parallel high- order
accurate finite element nonlinear Stokes ice sheet model and benchmark
experiments, J. Geophys. Res., 117, F01001,  <a href="https://doi.org/10.1029/2011JF001962" target="_blank">https://doi.org/10.1029/2011JF001962</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Leng et al.(2014)</label><mixed-citation>
Leng, W., Ju, L., Gunzburger, M., and Price, S.: A Parallel Computational
Model for Three-Dimensional, Thermo-Mechanical Stokes Flow Simulations of
Glaciers and Ice Sheets, Comput. Phys. Commun., 16,  1056–1080,
2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>McKee et al.(2008)</label><mixed-citation>
McKee, S., Tomé, M., Ferreira, V., Cuminato, J., Castelo, A., Sousa, F.,
and Mangiavacchi, N.: The MAC method, Comput. Fluid., 37, 907–930,
<a href="https://doi.org/10.1016/j.compfluid.2007.10.006" target="_blank">https://doi.org/10.1016/j.compfluid.2007.10.006</a>, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Morland(1984)</label><mixed-citation>
Morland, L.: Thermomechanical balances of ice sheet flows, Geophys.
Astrophys. Fluid Dynam., 29, 237–266, 1984.
</mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Nye(1953)</label><mixed-citation>
Nye, J. F.: The flow law of ice from measurements in glacier tunnels,
laboratory experiments and the Jungfraufirn borehole experiment, Proc. Royal Soc. A, 219, 477–489, 1953.
</mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Ogawa et al.(1991)</label><mixed-citation>
Ogawa, M., Schubert, G., and Zebib, A.: Numerical simulations of
three-dimensional thermal convection in a fluid with strongly temperature
dependent viscosity, J. Fluid Mech., 233, 299–328, 1991.
</mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Omlin(2017)</label><mixed-citation>
Omlin, S.: Development of massively parallel near peak performance solvers for   three-dimensional geodynamic modelling, PhD thesis, University of Lausanne,   2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Patankar(1980)</label><mixed-citation>
Patankar, S.: Numerical Heat Transfer and Fluid Flow, Comput. Methods Mech.
Thermal Sci. Ser., CRC Press, Boca Raton,Fla, 1980.
</mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Pattyn et al.(2008)</label><mixed-citation>
Pattyn, F., Perichon, L., Aschwanden, A., Breuer, B., de Smedt, B., Gagliardini, O., Gudmundsson, G. H., Hindmarsh, R. C. A., Hubbard, A., Johnson, J. V., Kleiner, T., Konovalov, Y., Martin, C., Payne, A. J., Pollard, D., Price, S., Rückamp, M., Saito, F., Souček, O., Sugiyama, S., and Zwinger, T.: Benchmark experiments for higher-order and full-Stokes ice sheet models (ISMIP-HOM), The Cryosphere, 2, 95–108, <a href="https://doi.org/10.5194/tc-2-95-2008" target="_blank">https://doi.org/10.5194/tc-2-95-2008</a>, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Payne and Baldwin(2000)</label><mixed-citation>
Payne, T. and Baldwin, D.: Analysis of ice-flow instabilities identified in
the EISMINT intercomparison exercise, Ann. Glaciol., 30, 204–210,
2000.
</mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Payne et al.(2000)</label><mixed-citation>
Payne, T., Huybrechts, P., Abe-Ouchi, A., Calov, R., Fastook, J., Greve, R.,
Marshall, S., Marsiat, I., Ritz, C., Tarasov, L., and Thomassen, M.: Results
from the EISMINT model intercomparison: the effects of thermomechanical
coupling, J. Glaciol., 46, 227–238, 2000.
</mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Perego et al.(2012)</label><mixed-citation>
Perego, M., Gunzburger, M., and Burkardt, J.: Parallel finite element
implementation for higher order ice-sheet models, J. Glaciol.,
58, 76–88, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Poliakov et al.(1993)</label><mixed-citation>
Poliakov, A. N. B., Cundall, P. A., Podladchikov, Y. Y., and Lyakhovsky, V. A.:
An explicit inertial method for the simulation of viscoelastic flow: An
evaluation of elastic effects on diapiric flow in two- and three-layers
models, Flow and Creep in the Solar Systems: Observations, Modeling and
Theory,  175–195, 1993.
</mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Pollard and DeConto(2012)</label><mixed-citation>
Pollard, D. and DeConto, R. M.: Description of a hybrid ice sheet-shelf model, and application to Antarctica, Geosci. Model Dev., 5, 1273–1295, <a href="https://doi.org/10.5194/gmd-5-1273-2012" target="_blank">https://doi.org/10.5194/gmd-5-1273-2012</a>, 2012.
</mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Räss et al.(2018)</label><mixed-citation>
Räss, L., Simon, N., and Podladchikov, Y.: Spontaneous formation of
fluid escape pipes from subsurface reservoirs, Sci. Rep., 8,  11116, <a href="https://doi.org/10.1038/s41598-018-29485-5" target="_blank">https://doi.org/10.1038/s41598-018-29485-5</a>,  2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Räss et al.(2019a)</label><mixed-citation>
Räss, L., Duretz, T., and Podladchikov, Y. Y.: Resolving
hydro-mechanical coupling in two and three dimensions: Spontaneous
channelling of porous fluids owing to decompaction weakening, Geophys.
J. Int., 218,  1591–1616, <a href="https://doi.org/10.1093/gji/ggz239" target="_blank">https://doi.org/10.1093/gji/ggz239</a>, 2019a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>Räss et al.(2019b)</label><mixed-citation>
Räss, L., Licul, A., Herman, F., Podladchikov, Y., and Suckale, J.:
FastICE, <a href="https://doi.org/10.5281/zenodo.3461171" target="_blank">https://doi.org/10.5281/zenodo.3461171</a>, 2019b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Räss et al.(2019c)Räss, Omlin, and
Podladchikov</label><mixed-citation>
Räss, L., Omlin, S., and Podladchikov, Y. Y.: Resolving Spontaneous
Nonlinear Multi-Physics Flow Localization in 3-D: Tackling Hardware Limit,
available at: <a href="https://developer.nvidia.com/gtc/2019/video/S9368" target="_blank"/> (last access: 2 March 2020), GTC
Silicon Valley, 2019c.
</mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Robin(1955)</label><mixed-citation>
Robin, G. D. Q.: Ice movement and temperature distribution in glaciers and ice
sheets, J. Glaciol., 2, 523–532, 1955.
</mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>Saito et al.(2006)</label><mixed-citation>
Saito, F., Abe-Ouchi, A., and Blatter, H.: European Ice Sheet Modelling
Initiative (EISMINT) model intercomparison experiments with first-order
mechanics, J. Geophys. Res., 111, F02012, <a href="https://doi.org/10.1029/2004JF000273" target="_blank">https://doi.org/10.1029/2004JF000273</a>, 2006.
</mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Schäfer et al.(2014)</label><mixed-citation>
Schäfer, M., Gillet-Chaulet, F., Gladstone, R., Pettersson, R., A. Pohjola, V., Strozzi, T., and Zwinger, T.: Assessment of heat sources on the control of fast flow of Vestfonna ice cap, Svalbard, The Cryosphere, 8, 1951–1973, <a href="https://doi.org/10.5194/tc-8-1951-2014" target="_blank">https://doi.org/10.5194/tc-8-1951-2014</a>, 2014.

</mixed-citation></ref-html>
<ref-html id="bib1.bib57"><label>Schoof and Hindmarsh(2010)</label><mixed-citation>
Schoof, C. and Hindmarsh, R.: Thin film flows with wall slip: an asymptotic
analysis of higher order glacier flow models,  Q. J.
Mechan. Appl. Mathe., 63, 73–114, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib58"><label>Shin and Strikwerda(1997)</label><mixed-citation>
Shin, D. and Strikwerda, J. C.: Inf-Sup conditions for finite-difference
approximations of the Stokes equations, J. Aust.
Mathe. Soc. B, 39, 121–134, 1997.
</mixed-citation></ref-html>
<ref-html id="bib1.bib59"><label>Solomon et al.(2007)</label><mixed-citation>
Solomon, S., Qin, D., Manning, M., Chen, Z., Marquis, M., Averyt, K., Tignor,
M., and Miller, H.: The physical science basis, 235–337, IPCC report AR4, New York and Cambridge, Cambridge University Press, 2007.
</mixed-citation></ref-html>
<ref-html id="bib1.bib60"><label>Suckale et al.(2014)</label><mixed-citation>
Suckale, J., Platt, J., Perol, T., and Rice, J.: Deformation-induced melting
in the margins of the West Antarctic ice streams, J. Geophys.
Res.-Earth, 119, 1004–1025, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib61"><label>Tezaur et al.(2015)</label><mixed-citation>
Tezaur, I. K., Perego, M., Salinger, A. G., Tuminaro, R. S., and Price, S. F.: Albany/FELIX: a parallel, scalable and robust, finite element, first-order Stokes approximation ice sheet solver built for advanced analysis, Geosci. Model Dev., 8, 1197–1220, <a href="https://doi.org/10.5194/gmd-8-1197-2015" target="_blank">https://doi.org/10.5194/gmd-8-1197-2015</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib62"><label>Virieux(1986)</label><mixed-citation>
Virieux, J.: P-SV wave propagation in heterogeneous media: Velocity‐stress
finite‐difference method, Geophysics, 51, 889–901,
<a href="https://doi.org/10.1190/1.1442147" target="_blank">https://doi.org/10.1190/1.1442147</a>, 1986.
</mixed-citation></ref-html>
<ref-html id="bib1.bib63"><label>Watkins et al.(2019)</label><mixed-citation>
Watkins, J., Tezaur, I., and Demeshko, I.: A study on the performance
portability of the finite element assembly process within the Albany Land Ice   solver, Elsevier, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib64"><label>Weinan and Liu(1995)</label><mixed-citation>
Weinan, E. and Liu, J.-G.: Projection method I: convergence and numerical
boundary layers, SIAM J. Num. Anal., 1017–1057, 1995.
</mixed-citation></ref-html>
<ref-html id="bib1.bib65"><label>Zhang et al.(2015)</label><mixed-citation>
Zhang, T., Ju, L., Leng, W., Price, S., and Gunzburger, M.: Thermomechanically
coupled modelling for land-terminating glaciers: a comparison of
two-dimensional, first-order and three-dimensional, full-Stokes approaches,
J. Glaciol., 61, 702–711, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib66"><label>Zwinger et al.(2007)</label><mixed-citation>
Zwinger, T., Greve, R., Gagliardini, O., Shiraiwa, T., and Lyly, M.: A full
Stokes-flow thermo-mechanical model for firn and ice applied to the Gorshkov
crater glacier, Kamchatka, Ann. Glaciol., 45, 29–37, 2007.
</mixed-citation></ref-html>--></article>
