<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">GMD</journal-id><journal-title-group>
    <journal-title>Geoscientific Model Development</journal-title>
    <abbrev-journal-title abbrev-type="publisher">GMD</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Geosci. Model Dev.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1991-9603</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/gmd-19-5225-2026</article-id><title-group><article-title>Veris: fast &amp; efficient sea-ice modeling in Python with GPU acceleration</article-title><alt-title>Veris</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Gärtner</surname><given-names>Jan P.</given-names></name>
          <email>jan.gaertner@awi.de</email>
        <ext-link>https://orcid.org/0009-0008-8460-7358</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Losch</surname><given-names>Martin</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-3824-5244</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Cheedela</surname><given-names>Suvarchal K.</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Jochum</surname><given-names>Markus</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Nuterman</surname><given-names>Roman</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-1774-3460</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Alfred-Wegener-Institut, Helmholtz Zentrum für Polar- und Meeresforschung, Bremerhaven, Germany</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Niels Bohr Institute, University of Copenhagen, Copenhagen, Denmark</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Jan P. Gärtner (jan.gaertner@awi.de)</corresp></author-notes><pub-date><day>17</day><month>June</month><year>2026</year></pub-date>
      
      <volume>19</volume>
      <issue>12</issue>
      <fpage>5225</fpage><lpage>5236</lpage>
      <history>
        <date date-type="received"><day>18</day><month>February</month><year>2025</year></date>
           <date date-type="rev-request"><day>8</day><month>April</month><year>2025</year></date>
           <date date-type="rev-recd"><day>16</day><month>April</month><year>2026</year></date>
           <date date-type="accepted"><day>21</day><month>May</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Jan P. Gärtner et al.</copyright-statement>
        <copyright-year>2026</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026.html">This article is available from https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e126">Climate models have traditionally been developed in Fortran, due to its long-standing use in scientific computing and its excellent computational performance. While Python offers substantial advantages in terms of code readability, maintainability, and the availability of libraries and tools, the performance gap between Python and Fortran has historically limited Python's use in large-scale climate modeling. This performance gap can be mitigated by using the JAX library, which significantly improves execution speed of Python code.</p>

      <p id="d2e129">We use JAX as a backend for Veris, a new sea ice model implemented in Python. Veris builds upon the Fortran-based sea ice component of the general circulation model MITgcm. Benchmark experiments show that Veris exhibits scaling behavior with increasing process counts comparable to the Fortran reference implementation. For small CPU process counts, Veris outperforms the MITgcm, showing the great potential that JAX has for climate modeling, particularly as further improvements in inter-process communication are anticipated. When executed on a high-end GPU, a single-process Veris simulation matches the performance of the parallelized Fortran reference running on hundreds of CPU cores, but at a fraction of the energy cost. These results demonstrate the potential of Veris for large-scale HPC-based simulations.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e141">Climate models contain hundreds of thousands of lines of code. The programming language used in these models is typically Fortran, largely due to its legacy in scientific computing. Fortran's strong backward compatibility allows extensive reuse of existing code in newer models written in updated versions of the language, saving significant development time compared to rewriting legacy code in a different language. Another key reason for Fortran's prevalence is its high computational efficiency in compute-intensive climate models <xref ref-type="bibr" rid="bib1.bibx32" id="paren.1"/>. While numerical computation speed was historically the primary bottleneck, modern hardware has shifted this limitation to memory bandwidth. Fortran allows for low-level optimizations, such as SIMD (Single Instruction Multiple Data) vectorization and direct memory addressing, critical for performance in bandwidth-bound climate simulations <xref ref-type="bibr" rid="bib1.bibx34" id="paren.2"/>.</p>
      <p id="d2e150">Despite these advantages, Fortran is relatively unpopular compared to modern languages like Python, especially among scientists outside climate modeling. This can create a barrier for new researchers, who have to invest substantial time in learning an unfamiliar programming language. Additionally, using a more popular language such as Python would enable access to more libraries and tools. Fortran, though well-suited for high-performance computing (HPC) due to its optimization for numerical and array-based calculations, can be more challenging to work with than higher-level languages. Using a high-level language such as Python would not only facilitate structural modifications, such as implementing new parameterizations and subsequent debugging, but would also make HPC workflows more accessible to researchers who may lack extensive experience in low-level programming.</p>
      <p id="d2e153">Although Python's popularity and readability offer advantages, these factors alone do not justify switching from Fortran to Python due to the significant performance gap between the two languages without optimizations or extensions. To overcome this gap, the Python library JAX can be used to significantly increase Python's performance for numerical modeling <xref ref-type="bibr" rid="bib1.bibx3" id="paren.3"/>. JAX is a library for array-based computing with a syntax very similar to NumPy's <xref ref-type="bibr" rid="bib1.bibx14" id="paren.4"/>, allowing NumPy code to be adapted to JAX without structural changes. JAX includes a set of function transformations like vectorization, parallelization, automatic differentiation and Just-In-Time (JIT) compilation. The JIT compilation significantly reduces the runtime of iterative calculations, making JAX well-suited for climate models as they iterate over many time steps.</p>
      <p id="d2e162">In addition to these transformations, a key advantage of JAX is that it is agnostic to the type of accelerator, enabling the same code to run on both CPUs and GPUs. Due to their higher core counts, GPUs are much better suited for parallel computing than CPUs, provided that the available computational and memory resources are fully utilized. As a result, they are more energy-efficient for parallel tasks such as climate simulations, as they complete these simulations faster than CPUs. By leveraging GPUs, JAX not only enhances computational speed but also reduces the power consumption and therefore the carbon footprint of running climate models <xref ref-type="bibr" rid="bib1.bibx29 bib1.bibx33 bib1.bibx24" id="paren.5"><named-content content-type="pre">e.g.,</named-content></xref>. Unfortunately, many climate models cannot fully utilize state-of-the-art hardware, motivating the development of models with efficient GPU support.</p>
      <p id="d2e171">One example is the Python based Versatile Ocean Simulator <xref ref-type="bibr" rid="bib1.bibx11" id="paren.6"><named-content content-type="pre">Veros,</named-content><named-content content-type="post"><uri>https://veros.readthedocs.io/en/latest/</uri>, last access: 1 June 2026</named-content></xref>, which is a translation of the Fortran backend of the ocean model pyOM2 <xref ref-type="bibr" rid="bib1.bibx6 bib1.bibx5" id="paren.7"><named-content content-type="pre">v2.1.0,</named-content></xref>. By using the Just-In-Time compilation of JAX, the performance gap to the original Fortran model was closed <xref ref-type="bibr" rid="bib1.bibx12" id="paren.8"/>. When using JAX as the backend, Veros can be run on both CPUs and GPUs. With a single GPU, dozens to hundreds of CPU cores can be replaced which substantially reduces the energy consumption of running Veros.</p>
      <p id="d2e191">To date, Veros does not contain a sea ice model, limiting its applicability in high-latitude regions where sea ice significantly influences heat, momentum, and moisture exchanges between the ocean and atmosphere, thereby impacting the local climate. This work introduces Veris (Versatile Sea Ice Simulator), a Python-based sea ice model originally developed to be coupled to Veros to extend its range of applications. Like Veros, Veris supports both NumPy and JAX backends. When used with JAX, Veris can also run on GPU architectures, providing substantial computational advantages. In order to parallelize Veris, the model infrastructure was subsequently redesigned, resulting in a separate, updated version of Veris that is able to leverage JAX's parallelization capabilities on both CPU- and GPU-based systems. Owing to these architectural changes, this parallelized version is no longer directly compatible with Veros, but instead represents an independent, high-performance sea ice modeling framework optimized for large-scale simulations.</p>
      <p id="d2e194">To solve the momentum equation, Veris employs the modified and adaptive elastic-viscous-plastic (EVP) solver <xref ref-type="bibr" rid="bib1.bibx21 bib1.bibx2 bib1.bibx19 bib1.bibx20" id="paren.9"/>. Benchmark experiments by <xref ref-type="bibr" rid="bib1.bibx34" id="text.10"/> assessed a refactored implementation of the standard EVP solver used in the Fortran-based sea ice model CICE <xref ref-type="bibr" rid="bib1.bibx16" id="paren.11"/>, optimized for parallel execution on both CPU- and GPU-based architectures. In these experiments, execution on a single GPU was found to be 1.2 times faster than on 112 CPU cores. Accordingly, a significant performance increase is anticipated for Veris when comparing GPU-based execution to CPU-based configurations.</p>
      <p id="d2e206">The properties of Veris are described in Sect. <xref ref-type="sec" rid="Ch1.S2"/>. Section <xref ref-type="sec" rid="Ch1.S3"/> presents benchmark simulations to verify that Veris accurately simulates sea ice dynamics, as well as performance benchmarks comparing Veris to the Fortran reference.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Model Description</title>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Basic Properties</title>
      <p id="d2e228">Veris is a Fortran to Python translation of part of the sea ice component of the Massachusetts Institute of Technology general circulation model <xref ref-type="bibr" rid="bib1.bibx30 bib1.bibx28" id="paren.12"><named-content content-type="pre">MITgcm,</named-content><named-content content-type="post"><uri>https://github.com/MITgcm/MITgcm</uri>, <uri>https://mitgcm.org/documentation/</uri>, last access: 1 June 2026</named-content></xref>, originally based on the formulation by <xref ref-type="bibr" rid="bib1.bibx15" id="text.13"/>. The core properties of Veris are as follows: <list list-type="bullet"><list-item>
      <p id="d2e248">The variables are stored on a two-dimensional, staggered C-grid <xref ref-type="bibr" rid="bib1.bibx1" id="paren.14"/>. Tracer variables, such as ice thickness and concentration, are stored at the centers of grid cells, while the <inline-formula><mml:math id="M1" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>- and <inline-formula><mml:math id="M2" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>-components of velocity are stored at the respective <inline-formula><mml:math id="M3" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>- and <inline-formula><mml:math id="M4" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>-grid points.</p></list-item><list-item>
      <p id="d2e283">Ice grows thermodynamically when the ocean loses heat to the atmosphere through a conductive heat flux across the ice. This heat loss is balanced by freezing at the ice bottom. Additionally, new ice may form in regions of open water when the ocean is loosing heat. For the growth rate calculation, a two level thickness configuration is assumed <xref ref-type="bibr" rid="bib1.bibx15" id="paren.15"/>. Each grid cell is assumed to contain ice of thickness <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mi mathvariant="normal">actual</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and open water. The proportion of the grid cell that is covered with ice is defined as the ice concentration <inline-formula><mml:math id="M6" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula>. The actual ice thickness <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mi mathvariant="normal">actual</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is derived from the mean ice thickness per grid cell <inline-formula><mml:math id="M8" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> according to <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mi mathvariant="normal">actual</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi>h</mml:mi><mml:mi>A</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>. The growth of the mean thickness over a single time step is<disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M10" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo mathsize="1.5em">(</mml:mo><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mi mathvariant="normal">actual</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi>A</mml:mi><mml:mo>+</mml:mo><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>A</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">ml</mml:mi></mml:msub><mml:mo mathsize="1.5em">)</mml:mo></mml:mrow></mml:math></disp-formula>where <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the growth rate of ice of thickness <inline-formula><mml:math id="M12" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">ml</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> accounts for ice melting at the base due to the mixed layer temperature.</p></list-item><list-item>
      <p id="d2e440">The ice has no heat capacity, and the adjustment of the ice surface temperature to changes in the surrounding temperature occurs instantaneously <xref ref-type="bibr" rid="bib1.bibx36" id="paren.16"><named-content content-type="pre">zero-layer thermodynamics,</named-content></xref>.</p></list-item><list-item>
      <p id="d2e449">Snow can accumulate on the ice cover under conditions of snowfall or freezing rain.</p></list-item><list-item>
      <p id="d2e453">Additional ice growth can occur if the weight of accumulated snow submerges the ice. When the ice-snow interface lies below the water surface, a simple mass conserving parameterization of snow-ice formation turns snow into ice until the ice surface is back at the water surface <xref ref-type="bibr" rid="bib1.bibx23" id="paren.17"/>.</p></list-item><list-item>
      <p id="d2e460">A viscous-plastic rheology <xref ref-type="bibr" rid="bib1.bibx15" id="paren.18"><named-content content-type="pre">VP,</named-content></xref> is implemented using the explicit solution methods of the modified elastic-viscous-plastic solver <xref ref-type="bibr" rid="bib1.bibx21 bib1.bibx2 bib1.bibx19" id="paren.19"><named-content content-type="pre">EVP*, revisited EVP or mEVP,</named-content></xref> and the adaptive elastic-viscous-plastic solver <xref ref-type="bibr" rid="bib1.bibx20" id="paren.20"><named-content content-type="pre">aEVP,</named-content></xref>. The performance benchmarks presented in this study use the mEVP solver, which is described in more detail in Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>.</p></list-item><list-item>
      <p id="d2e481">In addition to the EVP solver, a freedrift solver is implemented, which does not account for ice stress, allowing the ice to drift independently of the presence of ice in adjacent grid cells.</p></list-item><list-item>
      <p id="d2e485">Landfast ice is sea ice that remains immobile or nearly immobile and attached to a coast for a certain time period. The ice cover may be fixed to the seafloor by down-reaching ice keels or laterally anchored to a coast. The formation of landfast ice due to the ice being anchored to the seafloor in shallow waters is parameterized using a basal drag coefficient <xref ref-type="bibr" rid="bib1.bibx22" id="paren.21"/>. For landfast ice formed due to the ice being fixed to a nearby coast, a coastal drag parameterization <xref ref-type="bibr" rid="bib1.bibx25" id="paren.22"/> is implemented. This coastal drag is applied in conjunction with a free-slip boundary condition. Additionally, a no-slip boundary condition is also implemented.</p></list-item></list> In the Veros-compatiable version of Veris, it is possible to switch between NumPy and JAX as the backend, which facilitates the development and implementation of new features. Debugging within JAX can be challenging due to its use of Just-In-Time compilation, which restricts access to intermediate outputs in compiled functions. By initially debugging with NumPy – where intermediate outputs and clearer error messages are available – developers can efficiently implement and debug new code before switching to JAX to take advantage of its optimized performance.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>EVP Solver</title>
      <p id="d2e503">The EVP solver is the most computationally expensive component of Veris and the primary focus of the performance evaluation presented in this study. It is therefore described in more detail in this section. The dynamics of sea ice is governed by the momentum equation:

                <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M14" display="block"><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>m</mml:mi><mml:msub><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi>m</mml:mi><mml:mi>g</mml:mi><mml:mi mathvariant="normal">∇</mml:mi><mml:mi>H</mml:mi><mml:mo>-</mml:mo><mml:mi>m</mml:mi><mml:mi>f</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>r</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M15" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula> is the sea ice mass, <inline-formula><mml:math id="M16" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula> the sea ice velocity, <inline-formula><mml:math id="M17" display="inline"><mml:mi mathvariant="bold-italic">σ</mml:mi></mml:math></inline-formula> the internal stress tensor, <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mi>w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the wind–ice and ocean–ice stress components, <inline-formula><mml:math id="M20" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula> the sea surface height, <inline-formula><mml:math id="M21" display="inline"><mml:mi>f</mml:mi></mml:math></inline-formula> the Coriolis parameter, and <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the unit normal vector. Veris employs the viscous-plastic rheology <xref ref-type="bibr" rid="bib1.bibx15" id="paren.23"><named-content content-type="pre">VP,</named-content></xref>, which relates the strain rate to the resulting internal stress tensor via

                <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M23" display="block"><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">η</mml:mi><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-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:mfenced close=")" open="("><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">η</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ε</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mi>k</mml:mi><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>P</mml:mi><mml:mn mathvariant="normal">2</mml:mn></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:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M24" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M25" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> are the bulk and shear viscosities, <inline-formula><mml:math id="M26" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula> the ice strength, <inline-formula><mml:math id="M27" 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> the Kronecker delta, and <inline-formula><mml:math id="M28" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ε</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:math></inline-formula> the strain rate tensor, defined as

                <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M29" display="block"><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-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:mo>(</mml:mo><mml:msub><mml:mo>∂</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mo>∂</mml:mo><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></disp-formula>

          The viscosities <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">η</mml:mi></mml:mrow></mml:math></inline-formula>, the deformation rate <inline-formula><mml:math id="M31" display="inline"><mml:mi mathvariant="normal">Δ</mml:mi></mml:math></inline-formula>, and the ice strength <inline-formula><mml:math id="M32" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula> are defined as

            <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M33" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ζ</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>P</mml:mi><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="normal">Δ</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mrow><mml:msup><mml:mi>e</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ε</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mn mathvariant="normal">11</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ε</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mn mathvariant="normal">22</mml:mn></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msup><mml:mi>e</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="1.5em">(</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ε</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mn mathvariant="normal">11</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ε</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mn mathvariant="normal">22</mml:mn></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ε</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mn mathvariant="normal">12</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo mathsize="1.5em">)</mml:mo></mml:mrow></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="1em"/><mml:mi>P</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi>P</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mi>h</mml:mi><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>A</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M34" display="inline"><mml:mi>e</mml:mi></mml:math></inline-formula> is the aspect ratio of the elliptical yield curve, <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msup><mml:mi>P</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> the ice strength parameter, and <inline-formula><mml:math id="M36" display="inline"><mml:mi>C</mml:mi></mml:math></inline-formula> the ice concentration parameter. Equation (<xref ref-type="disp-formula" rid="Ch1.E3"/>) defines the elliptical yield curve and describes the stress states during plastic deformation. To avoid singularities of <inline-formula><mml:math id="M37" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> for low deformation rates <inline-formula><mml:math id="M38" display="inline"><mml:mi mathvariant="normal">Δ</mml:mi></mml:math></inline-formula>, a regularization <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>reg</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo>min⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> with a minimum threshold <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo>min⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> is used. This regularization allows for stress states within the yield curve, corresponding to viscous flow.</p>
      <p id="d2e1087">For small internal ice stresses, ice flow is viscous and the internal stress increases linearly with strain rate. Once a critical stress threshold is reached, the ice deforms plastically, such that the internal stress does not exceed the yield criterion.</p>
      <p id="d2e1090">The well-known challenge in time stepping the ice momentum equation arises from large values in the stress tensor divergence due to high viscosities, which would require sub-second time steps if treated explicitly. The elastic-viscous-plastic (EVP) solver addresses this by introducing an elastic term into the stress tensor equation, which then relaxes toward the VP solution <xref ref-type="bibr" rid="bib1.bibx18 bib1.bibx17" id="paren.24"/>. The stress tensor is subcycled during the external time step while oceanic and atmospheric forcing terms are held constant. To address convergence issues in the EVP scheme, <xref ref-type="bibr" rid="bib1.bibx21" id="text.25"/> proposed the modified EVP solver (mEVP) by introducing an additional inertial term, which was later reinterpreted as an iterative scheme <xref ref-type="bibr" rid="bib1.bibx2" id="paren.26"/>. The momentum equation is advanced from timestep <inline-formula><mml:math id="M41" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> to <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> using the following subcycling scheme:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M43" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E6"><mml:mtd><mml:mtext>6</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">α</mml:mi></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E7"><mml:mtd><mml:mtext>7</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">β</mml:mi></mml:mfrac></mml:mstyle><mml:mo mathsize="1.5em">(</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mi>m</mml:mi></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi mathvariant="normal">∇</mml:mi><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mi mathvariant="bold">F</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo mathsize="1.5em">)</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M44" display="inline"><mml:mi mathvariant="bold">F</mml:mi></mml:math></inline-formula> includes all forcing terms, <inline-formula><mml:math id="M45" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> denotes the subcycling index, and <inline-formula><mml:math id="M46" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M47" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> are numerical relaxation parameters. <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mi>p</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is the stress tensor as computed in the previous subcycling iteration, while <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>p</mml:mi></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the stress tensor computed from the strain rate and viscosities at iteration <inline-formula><mml:math id="M50" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula>. The initial values of the subcycling are <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. After a prescribed number of iterations, convergence is assumed and the stress tensor and velocity are updated as <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">σ</mml:mi><mml:mi>p</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>p</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e1434">In the aEVP solver, the relaxation parameters for the subcycling procedure are computed based on grid cell size, time step and ice viscosity, resulting in faster convergence in most grid points <xref ref-type="bibr" rid="bib1.bibx20" id="paren.27"/>:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M55" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E8"><mml:mtd><mml:mtext>8</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">α</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mover accent="true"><mml:mi>c</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi mathvariant="italic">γ</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E9"><mml:mtd><mml:mtext>9</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>c</mml:mi><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mi>m</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M56" display="inline"><mml:mover accent="true"><mml:mi>c</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula> and <inline-formula><mml:math id="M57" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula> are numerical empirical scaling factors, <inline-formula><mml:math id="M58" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> the local stability parameter, and <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> the grid cell area.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Code Verification</title>
      <p id="d2e1564">To verify the correctness of the translation from Fortran to Python, we conducted a comparative analysis of model outputs from Veris and the MITgcm. The thermodynamic and dynamic components were evaluated separately. For the thermodynamic component, a one-dimensional benchmark was employed, simulating the temporal evolution of sea ice thickness, snow thickness, and ice concentration within a single grid cell. This setup is sufficient for thermodynamic verification because thermodynamic growth and melt processes depend exclusively on local state variables and atmospheric and oceanic forcing, without lateral coupling to neighboring grid cells.</p>
      <p id="d2e1567">The thermodynamic benchmarks covered a range of initial conditions for ice thickness, snow thickness, and ice concentration, as well as variations in atmospheric and oceanic forcing, including air temperature, ocean surface temperature, precipitation, and shortwave and longwave radiation. Simulations were performed for 365 time steps with a daily time step. Differences between Veris and the MITgcm remained on the order of <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for all prognostic variables and exhibited random, non-accumulative behavior (Fig. <xref ref-type="fig" rid="FA1"/>). Small differences are expected in code porting due to a variety of reasons, including differences in compiler-dependent ordering of operations, intrinsic library implementations, and floating-point arithmetic. The bounded and non-growing nature of the differences indicates that the translated thermodynamic formulation represents a stable, non-divergent system. The deviations are therefore attributed to numerical precision limitations <xref ref-type="bibr" rid="bib1.bibx35" id="paren.28"/>.</p>
      <p id="d2e1595">For the dynamic component, a two-dimensional benchmark following <xref ref-type="bibr" rid="bib1.bibx31" id="text.29"/> was conducted on rectangular grids with resolutions of <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:mn mathvariant="normal">128</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">128</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:mn mathvariant="normal">256</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">256</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:mn mathvariant="normal">512</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">512</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:mn mathvariant="normal">1024</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1024</mml:mn></mml:mrow></mml:math></inline-formula> grid cells. As in the thermodynamic tests, varying initial conditions for ice thickness, snow thickness, and ice concentration were employed, along with variations in atmospheric and oceanic forcing. In contrast to the thermodynamic component, the sea ice dynamics solver is subject to stricter stability and accuracy constraints, requiring shorter time steps. Accordingly, a time step of 10 min was used for 1000 time steps.</p>
      <p id="d2e1649">The dynamical evolution of the sea ice field is substantially more sensitive to small perturbations than the thermodynamic evolution. To establish a reference for acceptable divergence, the MITgcm benchmark was repeated with perturbations on the order of <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> added to the initial conditions and forcing fields. This procedure follows <xref ref-type="bibr" rid="bib1.bibx35" id="text.30"/>, who propose that successful code porting is achieved when the divergence between the original and translated solutions is not  exceeding the growth of an initial perturbation introduced into the lowest-order bits of the original code solution. Both Veris and the MITgcm use double precision (float64) arithmetic. Even perturbations of this magnitude led to differences on the order of <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in ice speed and <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in ice concentration. These deviations with patterns nearly on the grid scale did not accumulate further over time and were constrained primarily to regions with pronounced grid-scale variability. This accumulation is attributed to small horizontal displacements in sea ice concentration between the model simulations that have a larger impact in these regions than in regions with smoother sea ice.</p>
      <p id="d2e1716">The differences between Veris and the MITgcm are of the same or smaller magnitude than those obtained in the perturbed MITgcm reference simulations (Fig. <xref ref-type="fig" rid="FA2"/>), indicating successful code porting and variations within acceptable numerical limits. In addition to the 1000-time step benchmarks, a longer integration of 3 months (12 960 time steps) was performed to assess Veris's long-term behavior <xref ref-type="bibr" rid="bib1.bibx35" id="paren.31"/>, which remained consistent with the MITgcm.</p>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Parallelization</title>
      <p id="d2e1732">In the initial implementation of Veris, developed as a sea ice plug-in for Veros, the EVP solver cannot be executed in parallel when using JAX as the backend. This limitation arises because the EVP solver requires halo exchanges between neighboring partitioning regions within the solver iteration. These exchanges are performed inside the EVP loop body via a <preformat preformat-type="code"><![CDATA[fill_overlap]]></preformat> routine: 
<preformat><![CDATA[    for i in range(nEVPsteps):
        sigma = calculate_stress(...)
        uIce, vIce = calculate_velocity(...)

        uIce, vIce = fill_overlap(uIce, vIce)]]></preformat>
<monospace>calculate_stress</monospace> and <monospace>calculate_velocity</monospace> correspond to Eqs. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) and (<xref ref-type="disp-formula" rid="Ch1.E7"/>). When NumPy is used as the backend, the EVP solver is implemented with a standard Python for-loop, allowing Veris to rely on the existing MPI-based communication infrastructure provided by Veros. When JAX is used, however, iterative loops are implemented using the <preformat preformat-type="code"><![CDATA[jax.lax.fori_loop]]></preformat>, which compiles the loop body without unrolling every iteration during compilation. This compilation model is not compatible with the communication mechanism employed in Veros. The communication mechanism of Veros enables MPI-based halo exchanges through a decorator that contains both the JIT compilation and the MPI communication. This decorator can only wrap functions that are not automatically compiled by JAX, and since the EVP loop is automatically compiled, this decorator-based approach cannot be applied, and the <preformat preformat-type="code"><![CDATA[fill_overlap]]></preformat> routine cannot be invoked inside the compiled loop body. Enabling MPI-based parallelism in this context would therefore require a custom Veros-compatible mechanism that supports communication inside a compiled loop while ensuring the loop body is traced and compiled only once. The development of such an interface is beyond the scope of this work.</p>
      <p id="d2e1761">To enable parallel execution, we adopted JAX's native sharded-array framework. Sharded arrays explicitly contain information on how their data are distributed across the available devices. Communication and synchronization between devices are managed automatically by the XLA (Accelerated Linear Algebra) compiler, which inserts collective operations and resharding operations tailored to the underlying hardware. While communication remains necessary, it is managed by the compiler and at runtime rather than being expressed manually in the sea ice model code. This separation of scientific implementation from distributed execution reduces programming complexity and improves portability across diverse hardware architectures. Compared with our earlier <monospace>mpi4jax</monospace>-based approach, JAX's sharded arrays also reduce maintenance effort by relying on stable, backward-compatible public APIs, whereas <monospace>mpi4jax</monospace> depends on internal JAX APIs that may change between versions and require adaptation. On GPU systems, JAX's sharding backend can leverage optimized communication libraries such as NCCL (NVIDIA Collective Communications Library) for distributed transfers and collective operations. The Veris infrastructure was therefore restructured around sharded arrays while preserving the existing sea ice physics formulation, resulting in a standalone, fully JAX-based version of Veris that supports portable and scalable parallel execution on both CPU- and GPU-based architectures. All performance benchmarks presented in Sect. <xref ref-type="sec" rid="Ch1.S3"/> were conducted with this updated version of Veris, except for the NumPy-based simulations.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Results</title>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Simulated Sea Ice Field</title>
      <p id="d2e1788">To demonstrate that Veris accurately simulates sea ice dynamics and its rheology, a simulation was conducted using a forcing that is designed to induce fracturing of the sea ice cover (Fig. <xref ref-type="fig" rid="F1"/>). The forcing fields include a circular anti-cyclonic ocean surface current, which grows stronger towards the boundaries, and a circular cyclonic wind field with some horizontal convergence, which is displaced from the grid center and is strongest in its center. These fields are taken from the sea ice benchmark experiment described by <xref ref-type="bibr" rid="bib1.bibx31" id="text.32"/>, with the difference that the wind field is stationary in this work. The quadratic model domain is enclosed by land, resulting in boundary conditions of zero velocity. The simulation was run with a simulation time of 10 d with a time step of 10 min. The initial conditions included a constant ice thickness of <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.3</mml:mn></mml:mrow></mml:math></inline-formula> m and an ice concentration of <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:mi>A</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Narrow features in the sea ice concentration arise from inhomogeneities in the deformation field driven by the internal ice stress responding to the forcing fields. These linear kinematic features are discussed in <xref ref-type="bibr" rid="bib1.bibx31" id="text.33"/> and show that Veris's dynamics are on par with state-of-the-art sea ice dynamics codes.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e1825">Simulated sea ice concentration generated by Veris after 1440 time steps of 10 min (equivalent to 10 d), driven by circular ocean surface currents and wind fields. The initial conditions included a uniform sea ice concentration of 1 and a sea ice thickness of 0.3 m. A reference simulation with the MITgcm, employing the same forcing, produced the same features (Fig. <xref ref-type="fig" rid="FA2"/>).</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026-f01.png"/>

        </fig>


</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Benchmark Results</title>
      <p id="d2e1846">To evaluate the performance of Veris, a series of idealized and scalable benchmark experiments were conducted. These experiments were performed on a rectangular grid with varying process count and problem size, utilizing the scaled forcing fields described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>. The benchmarks serve two primary purposes. First, they compare the performance of Veris to the Fortran reference, assessing the impact of transitioning from Fortran to Python. Second, the benchmarks analyze the scaling behavior of Veris with increasing process count and domain size. Additionally, Veris running on a GPU is compared to the Fortran reference across various parallel CPU configurations, focusing on both time to solution and total power consumption.</p>
      <p id="d2e1851">The benchmarks are performed over 20 time steps. During the first time step, the compilation process with JAX's JIT compiler introduces significant overhead. To properly evaluate the model performance, the first time step is therefore discarded. The absolute compilation time for CPU-based processes ranges from 2.0 to 32.2 s and the relative compilation time ranges from 1.0 to 10.4 model iterations. For GPU-based processes, absolute and relative compilation times range from 2.1 to 32.4 s and from 2.1 to 6.2 model iterations, respectively.</p>
      <p id="d2e1854">For both Veris and the MITgcm, the full model is run with thermodynamics disabled at runtime (i.e., it is compiled but not run), and the reported timings exclude thermodynamics, initialization, and finalization. This approach is justified because thermodynamic calculations are computationally less expensive and negligible compared to the dynamics. The models are compared using the aEVP solver with 120 subcycling iterations.</p>
      <p id="d2e1857">The benchmarks are run on two different nodes of the HPC Levante, a supercomputer of the German Climate Computing Center (DKRZ). The specifications of the different node types are listed in Table <xref ref-type="table" rid="T1"/>.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e1866">Specifications of the benchmark platforms. A GPU node contains both GPUs and CPUs. Even in GPU-based processes, CPU cores are necessary, for example for transferring data from disk to GPU memory, where computations are performed.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">CPU node</oasis:entry>
         <oasis:entry colname="col3">GPU node</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">CPU</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> AMD 7763 CPU (128 cores in total)</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> AMD 7763 CPU (128 cores in total)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">GPU</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M72" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> NVIDIA A100 (80 GB memory)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Memory</oasis:entry>
         <oasis:entry colname="col2">512 GB</oasis:entry>
         <oasis:entry colname="col3">512 GB</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Operating system</oasis:entry>
         <oasis:entry colname="col2">Red Hat Enterprise Linux 8.9</oasis:entry>
         <oasis:entry colname="col3">Red Hat Enterprise Linux 8.9</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Software</oasis:entry>
         <oasis:entry colname="col2">OpenMPI 4.1.2, jaxlib 0.4.30</oasis:entry>
         <oasis:entry colname="col3">CUDA 13.0, jaxlib 0.4.30</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<sec id="Ch1.S3.SS2.SSS1">
  <label>3.2.1</label><title>Scaling With Number of Processes</title>
      <p id="d2e1991">This section analyzes the performance scaling with respect to the number of processes (Fig. <xref ref-type="fig" rid="F2"/>). The number of processes corresponds to the number of partitioning regions and is specified by the scheduler of the HPC system used for benchmarking. A CPU-based process is bound to a single CPU-core, while a GPU-based process is bound to a single GPU, with JAX kernels automatically exploiting all available threads in the GPU. For the CPU-based simulations, grids with approximately <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">6</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:mn mathvariant="normal">9.4</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> grid cells were evaluated, hereafter referred to as the 1 M and 9.4 M grids. The 1 M grid experiments were conducted on a single node. Both Veris and the MITgcm exhibit a similar initial increase in performance with rising core counts, a plateau in performance between 8–64 and 16–64 processes, respectively, and a renewed increase at 128 processes. For Veris, increasing the process count requires additional memory due to JAX's compilation cache, larger communication buffers, and the overhead associated with Python objects and metadata. For the 9.4 M grid, this necessitates distributing the simulation across multiple nodes, with at most 16 processes per node. The MITgcm is able to run the 9.4 M grid on a single node; however, this configuration results in a substantial performance degradation and poorer scaling behavior (not shown). When the simulation is distributed across multiple nodes, the MITgcm outperforms Veris, achieving approximately a fourfold speedup over Veris at 128 processes (Fig. <xref ref-type="fig" rid="F2"/>). When constrained to a single node, the MITgcm exhibits both worse scaling and lower absolute performance than Veris running across multiple nodes.</p>

      <fig id="F2"><label>Figure 2</label><caption><p id="d2e2026">Scaling of mean iteration time with process count for Veris and the MITgcm sea ice component for varying problem sizes (1 M <inline-formula><mml:math id="M75" display="inline"><mml:mrow><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> grid cells), calculated over 20 iterations steps.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026-f02.png"/>

          </fig>

      <p id="d2e2048">The GPU-based simulations substantially outperform the CPU-based simulations, with a single GPU process matching the performance of the MITgcm running on hundreds of CPU cores. Increasing the number of processes introduces additional communication overhead, which is more pronounced for GPUs than for CPUs because GPUs do not share memory and therefore require explicit data movement between devices for communication. As a result, performance scaling on GPUs is strongly dependent on problem size. For the 1 M grid, increasing the GPU count from 1 to 128 yields only marginal performance gains. The 9.4 M grid exhibits improved scaling but still approaches saturation. In this context, saturation refers to the limited increase in performance with process count, which is attributed to the large communication overhead exceeding computational efficiency. Among the tested configurations, the 26 M grid, which contains approximately <inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:mn mathvariant="normal">26</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> grid cells, shows the best scaling behavior, with a consistent performance increase as the GPU count increases. However, even for this grid, only limited performance gains are observed for higher GPU counts, indicating saturation. Overall, these results demonstrate the substantial performance benefits of GPU-based execution compared to CPU-based systems. They further suggest that GPU parallelization becomes increasingly effective for larger problem sizes, highlighting the potential of Veris for very large-scale simulations on GPU-accelerated architectures.</p>
</sec>
<sec id="Ch1.S3.SS2.SSS2">
  <label>3.2.2</label><title>Scaling With Domain Size</title>
      <p id="d2e2074">In addition to the scaling with respect to process count, we performed benchmarks to analyze the dependence of performance on domain size for single-process simulations (Fig. <xref ref-type="fig" rid="F3"/>). Veris exhibits scaling behavior consistent with that of the Fortran reference implementation. Scaling in this section refers to the increase in time to solution with domain size. When using Numpy as the backend, Veris is approximately five times slower than the MITgcm for domain sizes <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">6</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> or smaller and around 15 times slower on domain sizes <inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">7</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> or larger. With the JAX backend, Veris consistently outperforms the Fortran reference, with mean iteration times approximately a factor of two smaller for grids larger than <inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">6</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> cells.</p>

      <fig id="F3"><label>Figure 3</label><caption><p id="d2e2114">Benchmark results comparing the scaling of mean iteration time with grid size for Veris and the MITgcm, calculated over 20 iteration steps.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026-f03.png"/>

          </fig>

      <p id="d2e2123">Simulations executed on a single GPU demonstrate both a substantial absolute performance increase and good scaling with increasing grid size. These results highlight the effectiveness of GPU-based execution for large domains and further emphasize the suitability of the JAX-based implementation for large-scale, high-resolution sea ice simulations.</p>
</sec>
<sec id="Ch1.S3.SS2.SSS3">
  <label>3.2.3</label><title>Power Consumption</title>
      <p id="d2e2134">In addition to time to solution, energy consumption is a key metric in high-performance computing. Reducing energy usage not only lowers operational costs but also mitigates the carbon footprint of large-scale simulations. One promising approach for improving energy efficiency is to replace large numbers of CPU cores with a smaller number of GPUs, which can provide substantially higher performance per watt.</p>
      <p id="d2e2137">For the power consumption benchmark, we selected the 9.4 M grid configuration and measured the energy usage over 1000 iterations. The reference simulation was performed using a single GPU. For the MITgcm, CPU-based simulations were conducted that matched the time to solution of the single-GPU configuration, using both the minimum number of nodes and the minimum number of CPU cores (Table <xref ref-type="table" rid="T2"/>). In addition, a simulation utilizing all 4 GPUs available on a single GPU node was performed. The time to solution of the single-GPU run was matched by a configuration using 640 CPU cores across 5 nodes and by a configuration using 128 CPU cores across 8 nodes. Both CPU-based simulations exhibited similar total energy consumption, requiring approximately 4–4.5 times the energy of the single-GPU simulation. When all four GPUs on a GPU node were utilized, the total energy consumption was reduced by a factor of two relative to the single-GPU simulation. These results demonstrate the substantial energy-efficiency advantages of GPU-based execution for large-scale sea ice simulations.</p>

<table-wrap id="T2" specific-use="star"><label>Table 2</label><caption><p id="d2e2145">Power consumption for Veris running on 1 and 4 GPUs (on the same GPU node) and the MITgcm sea ice component running in various CPU-based configurations. CPU here refers to a single CPU-core process. This simulation is using <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:mn mathvariant="normal">9.4</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> grid cells and 1000 iterations. The power usage is reported by Levante's built-in power tracking system.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Time to solution</oasis:entry>
         <oasis:entry colname="col3">Mean power usage</oasis:entry>
         <oasis:entry colname="col4">Total energy usage</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">1 GPU</oasis:entry>
         <oasis:entry colname="col2">854 s</oasis:entry>
         <oasis:entry colname="col3">650 W</oasis:entry>
         <oasis:entry colname="col4">0.15 kWh</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">4 GPUs</oasis:entry>
         <oasis:entry colname="col2">251 s</oasis:entry>
         <oasis:entry colname="col3">1105 W</oasis:entry>
         <oasis:entry colname="col4">0.077 kWh</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">640 CPUs on 5 nodes</oasis:entry>
         <oasis:entry colname="col2">846 s</oasis:entry>
         <oasis:entry colname="col3">2845 W</oasis:entry>
         <oasis:entry colname="col4">0.67 kWh</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">128 CPUs on 8 nodes</oasis:entry>
         <oasis:entry colname="col2">742 s</oasis:entry>
         <oasis:entry colname="col3">2960 W</oasis:entry>
         <oasis:entry colname="col4">0.61 kWh</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Discussion</title>
      <p id="d2e2267">The performance benchmarks of both the MITgcm and Veris showed a strong dependence of model performance on the underlying HPC configuration. Identical numbers of CPU-cores can yield substantially different solution times, depending on how processes are distributed across the nodes and mapped to cores within a node. This shows that optimal performance requires not only efficient model implementations, but also careful tuning of the parallel configuration to the HPC system. Such tuning involves the choice of processor grids, node layouts, and process placement strategies, and presupposes a detailed understanding of the HPC system. The strong dependence of model performance on HPC configuration indicates that the model is highly bandwidth-bound, a limitation that has also been identified as a major bottleneck in previous studies of Fortran implementations of the EVP solver <xref ref-type="bibr" rid="bib1.bibx34" id="paren.34"/>.</p>
      <p id="d2e2273">For established Fortran-based models, MPI-based communication has been extensively optimized over years of development and use. However, it is still identified as another major bottleneck of performance <xref ref-type="bibr" rid="bib1.bibx34" id="paren.35"/>. In contrast, distributed execution in JAX is an active area of development, and there is considerable potential for further improvements in communication backends and process orchestration. The results of this study therefore highlight both the promise of JAX for climate modeling in HPC environments and the importance of systematic communication analysis and optimization. The strong impact of communication overhead is also reflected in the early saturation observed in GPU-based simulations for smaller problem sizes. Given that Veris consistently outperforms the MITgcm at small process counts, even in CPU-based benchmarks, further advances in JAX communication could enable Veris to outperform its Fortran reference in strongly parallel regimes as well.</p>
      <p id="d2e2279">The benchmarks further reveal a significant performance benefit when transitioning from CPU-only systems to GPU-accelerated architectures, underscoring the growing importance of GPUs for climate modeling. This is particularly advantageous in the context of JAX, which is accelerator-agnostic and allows newly developed model components to run on GPUs without additional code modifications.</p>
      <p id="d2e2282">The GPU-based simulations exhibit the expected scaling behavior, with improved efficiency for larger domains, consistent with the high communication overhead associated with multi-GPU execution. This emphasizes the suitability of multi-GPU configurations for high-resolution modeling. Moreover, the power consumption measurements demonstrate that GPU-based Veris simulations can achieve comparable or superior performance at a fraction of the energy cost of CPU-based MITgcm runs, showing the potential of GPU-accelerated Python models to reduce both the operational cost and the carbon footprint of climate simulations.</p>
      <p id="d2e2286">The sensitivity of model performance to the chosen HPC configuration is less pronounced for GPU-based simulations than for CPU-based simulations. This is partly attributable to the fact that JAX is currently better optimized for GPU execution than for distributed CPU-based simulations. These results suggest that JAX holds further promise for CPU-based climate modeling, given the ongoing development of JAX and its distributed runtime, which may lead to further performance improvements in the future.</p>
      <p id="d2e2289">The choice of hardware, including the specific GPU and CPU, affects both model performance and energy consumption <xref ref-type="bibr" rid="bib1.bibx34" id="paren.36"/>. In addition to performance, cost is an important factor when evaluating the usefulness of GPU- and CPU-based architectures. Here, we used hardware available at the DKRZ, a representative and widely used HPC system for climate research in Germany. The NVIDIA A100 80 GB GPU installed at the DKRZ typically costs USD 20 000–30 000, while the AMD 7763 CPU retails for approximately USD 3000–4000.</p>
      <p id="d2e2295">The initial version of Veris was configured for integration with Veros to form a coupled sea ice-ocean model. This version and its coupling to Veros are described in detail in <xref ref-type="bibr" rid="bib1.bibx7" id="text.37"/>. To enable parallel execution with JAX, however, Veris was restructured around JAX's sharded arrays and is no longer compatible with Veros in this updated version. The coupled Veros-Veris model can be executed using NumPy on both single and multiple processes, and with JAX on a single process. Future work on enabling parallel execution of the coupled model with JAX will require either the development of a Veros-compatible communication mechanism within compiled loops (see Sect. <xref ref-type="sec" rid="Ch1.S2.SS4"/>) or a redesign of Veros' communication infrastructure around JAX's sharded arrays.</p>
</sec>
<sec id="Ch1.S5" sec-type="conclusions">
  <label>5</label><title>Summary and Conclusion</title>
      <p id="d2e2312">By translating the sea ice component of the MITgcm into Python, we developed Veris, a fully Python-based sea ice model. Veris can be coupled to the Python-based ocean model Veros, forming a coupled ocean–sea ice model implemented entirely in Python. This version supports parallel execution with Numpy and single-process execution with JAX on both CPU and GPU architectures. Although this version does not support distributed parallelism for JAX-based simulations, the benchmarks already demonstrated the potential JAX has for large-scale simulations, given the substantial performance gains of GPU execution.</p>
      <p id="d2e2315">To enable scalable parallelism, the Veris infrastructure was subsequently redesigned around JAX's sharded array framework, allowing distributed execution on both CPU- and GPU-based systems. The benchmarks presented in this study demonstrate the great potential of JAX for climate modeling. At small process counts, Veris outperforms the MITgcm. At larger process counts, communication overhead becomes the dominant performance factor, and the MITgcm runs faster than Veris. This sensitivity on the communication framework was also evident in the dependence of performance on specific HPC configurations. Whereas MPI-based communication in the MITgcm benefits from long-standing optimizations, communication in JAX-based distributed systems is still evolving. The superior performance of Veris at low process counts indicates strong potential for large-scale applications, particularly as JAX's distributed runtime continues to be developed and optimized.</p>
      <p id="d2e2318">GPU execution yields particularly strong performance benfits. A single-GPU run of Veris matches the performance of the MITgcm running on hundreds of CPU cores across multiple nodes, while consuming substantially less energy. These results demonstrate not only the competitiveness of Python-based, JAX-accelerated models in terms of time to solution, but also their potential to significantly improve the energy efficiency of climate simulations.</p>
      <p id="d2e2321">In summary, Veris demonstrates that Python, when combined with JAX, can support high-performance, scalable, and energy-efficient sea ice modeling. These findings suggest that JAX-based climate models are a promising pathway towards modern HPC workflows, with the prospect of further performance gains as communication backends and distributed execution frameworks continue to improve.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Code Verification, Comparison of Simulated Sea Ice between Veris and the MITgcm</title>

      <fig id="FA1"><label>Figure A1</label><caption><p id="d2e2338">Example benchmark simulation used for verifying the thermodynamic component of Veris. Top row: Thermodynamic evolution of ice thickness, ice concentration, and snow thickness simulated by Veris. Bottom row: Comparison of the simulated sea ice between Veris and the MITgcm employing the same initial and forcing conditions. This figure is representative of the results of different thermodynamic benchmark comparisons using different initial and forcing conditions.</p></caption>
        
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026-f04.png"/>

      </fig>

      <fig id="FA2"><label>Figure A2</label><caption><p id="d2e2351">Example benchmark simulation used for verifying the dynamic component of Veris. Left panel: Sea ice concentration simulated by Veris after 1000 10 min time steps using forcing fields designed to induce ice fracturing. Middle panel: Comparison of the simulated sea ice between Veris and the MITgcm employing the same initial and forcing conditions. Right panel: As a reference for acceptable divergence, the difference between the MITgcm and a rerun of the MITgcm with perturbed initial and forcing conditions is shown. This figure is representative of the results of different dynamic benchmark comparisons using different grid sizes and initial and forcing conditions.</p></caption>
        
        <graphic xlink:href="https://gmd.copernicus.org/articles/19/5225/2026/gmd-19-5225-2026-f05.png"/>

      </fig>


</app>
  </app-group><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e2368">The initial version of Veris is available under <uri>https://github.com/jpgaertner/veros</uri> <xref ref-type="bibr" rid="bib1.bibx9" id="paren.38"/>. It can be used as a plug-in for Veros, available under <uri>https://github.com/team-ocean/veros</uri> <xref ref-type="bibr" rid="bib1.bibx13" id="paren.39"/>, or run as a standalone model. The redesigned version of Veris for parallel execution using JAX is available under <uri>https://github.com/jpgaertner/veris/tree/jax-only</uri> <xref ref-type="bibr" rid="bib1.bibx10" id="paren.40"/>.</p>

      <p id="d2e2390">The MITgcm is available under <uri>https://github.com/MITgcm/MITgcm.git</uri> <xref ref-type="bibr" rid="bib1.bibx4" id="paren.41"/>. The configurations used to create the thermodynamic and dynamic benchmarks are available under <uri>https://github.com/mjlosch/MITgcm/tree/seaice_test_1d</uri> <xref ref-type="bibr" rid="bib1.bibx27" id="paren.42"/> and <uri>https://github.com/mjlosch/seaice_benchmark.git</uri> <xref ref-type="bibr" rid="bib1.bibx26" id="paren.43"/>.</p>

      <p id="d2e2412">The benchmark results presented in this manuscript and the plotting scripts are available under <uri>https://doi.org/10.5281/zenodo.18620150</uri> <xref ref-type="bibr" rid="bib1.bibx8" id="paren.44"/>.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e2424">JPG wrote the python code with ML and SKC, carried out the benchmark experiments with ML, SKC and RN, and coupled the model with Veros with RN and MJ. JPG wrote the manuscript with help of ML, SKC, MJ, RN.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

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

      <p id="d2e2436">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e2442">This paper builds upon the Master’s thesis of <xref ref-type="bibr" rid="bib1.bibx7" id="text.45"/>, during which Veris was developed.</p><p id="d2e2447">We express our gratitude to Dion Häfner for his assistance in coupling Veris with Veros.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e2452">The article processing charges for this open-access  publication were covered by the Alfred-Wegener-Institut  Helmholtz-Zentrum für Polar- und Meeresforschung.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e2458">This paper was edited by Christopher Horvat and reviewed by Till Rasmussen and one anonymous referee.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Arakawa and Lamb(1977)</label><mixed-citation>Arakawa, A. and Lamb, V. R.: Computational Design of the Basic Dynamical Processes of the UCLA General Circulation Model, in: General Circulation Models of the Atmosphere, vol. 17, Methods in Computational Physics: Advances in Research and Applications, Elsevier, 173–265, <ext-link xlink:href="https://doi.org/10.1016/B978-0-12-460817-7.50009-4" ext-link-type="DOI">10.1016/B978-0-12-460817-7.50009-4</ext-link>, 1977.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Bouillon et al.(2013)Bouillon, Fichefet, Legat, and Madec</label><mixed-citation>Bouillon, S., Fichefet, T., Legat, V., and Madec, G.: The Elastic–Viscous–Plastic Method Revisited, Ocean Model., 71, 2–12, <ext-link xlink:href="https://doi.org/10.1016/j.ocemod.2013.05.013" ext-link-type="DOI">10.1016/j.ocemod.2013.05.013</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Bradbury et al.(2018)Bradbury, Frostig, Hawkins, Johnson, Leary, Maclaurin, Necula, Paszke, VanderPlas, Wanderman-Milne, and Zhang</label><mixed-citation>Bradbury, J., Frostig, R., Hawkins, P., Johnson, M. J., Leary, C., Maclaurin, D., Necula, G., Paszke, A., VanderPlas, J., Wanderman-Milne, S., and Zhang, Q.: JAX: composable transformations of Python+NumPy programs, GitHub [code], <uri>http://github.com/jax-ml/jax</uri> (last access: 1 June 2026), 2018.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Campin et al.(2026)Campin, Heimbach, Losch, Forget, edhill3, Adcroft, amolod, Menemenlis, dfer22, Jahn, Hill, Scott, dngoldberg, stephdut, Mazloff, Fox-Kemper, antnguyen13, Doddridge, Fenty, Bates, Smith, Wang, AndrewEichmann-NOAA, mitllheisey, Lauderdale, Martin, Abernathey, samarkhatiwala, Escobar, and averdy</label><mixed-citation>Campin, J.-M., Heimbach, P., Losch, M., Forget, G., edhill3, Adcroft, A., amolod, Menemenlis, D., dfer22, Jahn, O., Hill, C., Scott, J., dngoldberg, stephdut, Mazloff, M., Fox-Kemper, B., antnguyen13, Doddridge, E., Fenty, I., Bates, M., Smith, T., Wang, O., AndrewEichmann-NOAA, mitllheisey, Lauderdale, J., Martin, T., Abernathey, R., samarkhatiwala, Escobar, I., and averdy: MITgcm/MITgcm: checkpoint69k, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.18371317" ext-link-type="DOI">10.5281/zenodo.18371317</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Eden(2016)</label><mixed-citation>Eden, C.: Closing the energy cycle in an ocean model, Ocean Model., 101, 30–42, <ext-link xlink:href="https://doi.org/10.1016/j.ocemod.2016.02.005" ext-link-type="DOI">10.1016/j.ocemod.2016.02.005</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Eden and Olbers(2014)</label><mixed-citation>Eden, C. and Olbers, D.: An energy compartment model for propagation, nonlinear interaction, and dissipation of internal gravity waves, J. Phys. Oceanogr., 44, 2093–2106, <ext-link xlink:href="https://doi.org/10.1175/JPO-D-13-0224.1" ext-link-type="DOI">10.1175/JPO-D-13-0224.1</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Gärtner(2023)</label><mixed-citation>Gärtner, J. P.: Sea Ice Modeling in Python, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.11474409" ext-link-type="DOI">10.5281/zenodo.11474409</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Gärtner(2026a)</label><mixed-citation>Gärtner, J. P.: Veris Benchmarks Data and Scripts, Zenodo [code and data set], <ext-link xlink:href="https://doi.org/10.5281/zenodo.18620150" ext-link-type="DOI">10.5281/zenodo.18620150</ext-link>, 2026a.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Gärtner(2026b)</label><mixed-citation>Gärtner, J. P.: Veris, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.20643719" ext-link-type="DOI">10.5281/zenodo.20643719</ext-link>, 2026b.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Gärtner(2026c)</label><mixed-citation>Gärtner, J. P.: Veris (sharded arrays), Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.20643778" ext-link-type="DOI">10.5281/zenodo.20643778</ext-link>, 2026c.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Häfner et al.(2018)Häfner, Jacobsen, Eden, Kristensen, Jochum, Nuterman, and Vinter</label><mixed-citation>Häfner, D., Jacobsen, R. L., Eden, C., Kristensen, M. R. B., Jochum, M., Nuterman, R., and Vinter, B.: Veros v0.1 – a fast and versatile ocean simulator in pure Python, Geosci. Model Dev., 11, 3299–3312, <ext-link xlink:href="https://doi.org/10.5194/gmd-11-3299-2018" ext-link-type="DOI">10.5194/gmd-11-3299-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Häfner et al.(2021)Häfner, Nuterman, and Jochum</label><mixed-citation>Häfner, D., Nuterman, R., and Jochum, M.: Fast, Cheap, and Turbulent – Global Ocean Modeling with GPU Acceleration in Python, J. Adv. Model. Earth Sy., 13, e2021MS002717, <ext-link xlink:href="https://doi.org/10.1029/2021MS002717" ext-link-type="DOI">10.1029/2021MS002717</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Häfner et al.(2023)Häfner, Jacobsen, Nuterman, and Jochum</label><mixed-citation>Häfner, D., Jacobsen, R. L., Nuterman, R., and Jochum, M.: Veros, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.8430140" ext-link-type="DOI">10.5281/zenodo.8430140</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Harris et al.(2020)Harris, Millman, van der Walt, Gommers, Virtanen, Cournapeau, Wieser, Taylor, Berg, Smith, Kern, Picus, Hoyer, van Kerkwijk, Brett, Haldane, del Río, Wiebe, Peterson, Gérard-Marchant, Sheppard, Reddy, Weckesser, Abbasi, Gohlke, and Oliphant</label><mixed-citation>Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J., Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., van Kerkwijk, M. H., Brett, M., Haldane, A., del Río, J. F., Wiebe, M., Peterson, P., Gérard-Marchant, P., Sheppard, K., Reddy, T., Weckesser, W., Abbasi, H., Gohlke, C., and Oliphant, T. E.: Array Programming with NumPy, Nature, 585, 357–362, <ext-link xlink:href="https://doi.org/10.1038/s41586-020-2649-2" ext-link-type="DOI">10.1038/s41586-020-2649-2</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Hibler(1979)</label><mixed-citation>Hibler, W. D.: A Dynamic Thermodynamic Sea Ice Model, J. Phys. Oceanogr., 9, 815–846, <ext-link xlink:href="https://doi.org/10.1175/1520-0485(1979)009%3C0815:ADTSIM%3E2.0.CO;2" ext-link-type="DOI">10.1175/1520-0485(1979)009%3C0815:ADTSIM%3E2.0.CO;2</ext-link>, 1979.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Hunke et al.(2024)Hunke, Allard, Bailey, Blain, Craig, Dupont, DuVivier, Grumbine, Hebert, Holland, Jeffery, Lemieux, Osinski, Poulsen, Steketee, Rasmussen, Ribergaard, Roach, Roberts, Turner, Winton, and Worthen</label><mixed-citation>Hunke, E., Allard, R., Bailey, D. A., Blain, P., Craig, A., Dupont, F., DuVivier, A., Grumbine, R., Hebert, D., Holland, M., Jeffery, N., Lemieux, J.-F., Osinski, R., Poulsen, J., Steketee, A., Rasmussen, T., Ribergaard, M., Roach, L., Roberts, A., Turner, M., Winton, M., and Worthen, D.: CICE-Consortium/CICE: CICE Version 6.5.1, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.11223920" ext-link-type="DOI">10.5281/zenodo.11223920</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Hunke(2001)</label><mixed-citation>Hunke, E. C.: Viscous–plastic sea ice dynamics with the EVP model: Linearization issues, J. Comput. Phys., 170, 18–38, <ext-link xlink:href="https://doi.org/10.1006/jcph.2001.6710" ext-link-type="DOI">10.1006/jcph.2001.6710</ext-link>, 2001.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Hunke and Dukowicz(1997)</label><mixed-citation>Hunke, E. C. and Dukowicz, J. K.: An Elastic–Viscous–Plastic Model for Sea Ice Dynamics, J. Phys. Oceanogr., 27, 1849–1867, <ext-link xlink:href="https://doi.org/10.1175/1520-0485(1997)027%3C1849:AEVPMF%3E2.0.CO;2" ext-link-type="DOI">10.1175/1520-0485(1997)027%3C1849:AEVPMF%3E2.0.CO;2</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Kimmritz et al.(2015)Kimmritz, Danilov, and Losch</label><mixed-citation> Kimmritz, M., Danilov, S., and Losch, M.: On the convergence of the modified elastic–viscous–plastic method for solving the sea ice momentum equation, J. Comput. Phys., 296, 90–100, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Kimmritz et al.(2016)Kimmritz, Danilov, and Losch</label><mixed-citation>Kimmritz, M., Danilov, S., and Losch, M.: The Adaptive EVP Method for Solving the Sea Ice Momentum Equation, Ocean Model., 101, 59–67, <ext-link xlink:href="https://doi.org/10.1016/j.ocemod.2016.03.004" ext-link-type="DOI">10.1016/j.ocemod.2016.03.004</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Lemieux et al.(2012)Lemieux, Knoll, Tremblay, Holland, and Losch</label><mixed-citation> Lemieux, J.-F., Knoll, D. A., Tremblay, B., Holland, D. M., and Losch, M.: A comparison of the Jacobian-free Newton–Krylov method and the EVP model for solving the sea ice momentum equation with a viscous-plastic formulation: A serial algorithm study, J. Comput. Phys., 231, 5926–5944, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Lemieux et al.(2015)Lemieux, Tremblay, Dupont, Plante, Smith, and Dumont</label><mixed-citation>Lemieux, J.-F., Tremblay, L. B., Dupont, F., Plante, M., Smith, G. C., and Dumont, D.: A Basal Stress Parameterization for Modeling Landfast Ice, J. Geophys. Res.-Oceans, 120, 3157–3173, <ext-link xlink:href="https://doi.org/10.1002/2014JC010678" ext-link-type="DOI">10.1002/2014JC010678</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Leppäranta(1983)</label><mixed-citation>Leppäranta, M.: A growth model for black ice, snow ice and snow thickness in subarctic basins, Hydrol. Res., 14, 59–70, <ext-link xlink:href="https://doi.org/10.2166/nh.1983.0006" ext-link-type="DOI">10.2166/nh.1983.0006</ext-link>, 1983.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Li et al.(2023)Li, Basu Roy, Wang, Samsi, Gadepally, and Tiwari</label><mixed-citation>Li, B., Basu Roy, R., Wang, D., Samsi, S., Gadepally, V., and Tiwari, D.: Toward Sustainable HPC: Carbon Footprint Estimation and Environmental Implications of HPC Systems, in: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis,  1–15, <ext-link xlink:href="https://doi.org/10.1145/3581784.3607035" ext-link-type="DOI">10.1145/3581784.3607035</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Liu et al.(2022)Liu, Losch, Hutter, and Mu</label><mixed-citation>Liu, Y., Losch, M., Hutter, N., and Mu, L.: A New Parameterization of Coastal Drag to Simulate Landfast Ice in Deep Marginal Seas in the Arctic, J. Geophys. Res.-Oceans, 127, e2022JC018413, <ext-link xlink:href="https://doi.org/10.1029/2022JC018413" ext-link-type="DOI">10.1029/2022JC018413</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Losch(2021)</label><mixed-citation>Losch, M.: MITgcm sea ice dynamics benchmark,  Github [code], <uri>https://github.com/mjlosch/seaice_benchmark.git</uri> (last access: 1 June 2026), 2021. </mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Losch(2023)</label><mixed-citation>Losch, M.: MITgcm sea ice thermodynamics benchmark, Github [code], <uri>https://github.com/mjlosch/MITgcm/tree/seaice_test_1d</uri> (last access: 1 June 2026), 2023.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Losch et al.(2010)Losch, Menemenlis, Campin, Heimbach, and Hill</label><mixed-citation>Losch, M., Menemenlis, D., Campin, J.-M., Heimbach, P., and Hill, C.: On the Formulation of Sea-Ice Models. Part 1: Effects of Different Solver Implementations and Prameterizations, Ocean Model., 33, 129–144, <ext-link xlink:href="https://doi.org/10.1016/j.ocemod.2009.12.008" ext-link-type="DOI">10.1016/j.ocemod.2009.12.008</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Marquetti et al.(2018)Marquetti, Rodrigues, and Desai</label><mixed-citation>Marquetti, I., Rodrigues, J., and Desai, S. S.: Ecological Impact of Green Computing using Graphical Processing Units in Molecular Dynamics Simulations, Int. J. Green Comput. (IJGC), 9, 35–48, <ext-link xlink:href="https://doi.org/10.4018/IJGC.2018010103" ext-link-type="DOI">10.4018/IJGC.2018010103</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Marshall et al.(1997)Marshall, Adcroft, Hill, Perelman, and Heisey</label><mixed-citation>Marshall, J., Adcroft, A., Hill, C., Perelman, L., and Heisey, C.: A Finite-Volume, Incompressible Navier Stokes Model for Studies of the Ocean on Parallel Computers, J. Geophys. Res.-Oceans, 102, 5753–5766, <ext-link xlink:href="https://doi.org/10.1029/96JC02775" ext-link-type="DOI">10.1029/96JC02775</ext-link>, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Mehlmann et al.(2021)Mehlmann, Danilov, Losch, Lemieux, Hutter, Richter, Blain, Hunke, and Korn</label><mixed-citation>Mehlmann, C., Danilov, S., Losch, M., Lemieux, J.-F., Hutter, N., Richter, T., Blain, P., Hunke, E., and Korn, P.: Simulating Linear Kinematic Features in Viscous-Plastic Sea Ice Models on Quadrilateral and Triangular Grids with Different Variable Staggering, J. Adv. Model. Earth Sy., 13, e2021MS002523, <ext-link xlink:href="https://doi.org/10.1029/2021MS002523" ext-link-type="DOI">10.1029/2021MS002523</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Méndez et al.(2014)Méndez, Tinetti, and Overbey</label><mixed-citation>Méndez, M., Tinetti, F. G., and Overbey, J. L.: Climate models: challenges for Fortran development tools, in: 2014 Second International Workshop on Software Engineering for High Performance Computing in Computational Science and Engineering,  IEEE, 6–12,  <ext-link xlink:href="https://doi.org/10.1109/SE-HPCCSE.2014.7" ext-link-type="DOI">10.1109/SE-HPCCSE.2014.7</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Portegies Zwart(2020)</label><mixed-citation>Portegies Zwart, S.: The Ecological Impact of High-Performance Computing in Astrophysics, Nat. Astronomy, 4, 819–822, <ext-link xlink:href="https://doi.org/10.1038/s41550-020-1208-y" ext-link-type="DOI">10.1038/s41550-020-1208-y</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Rasmussen et al.(2024)Rasmussen, Poulsen, Ribergaard, Sasanka, Craig, Hunke, and Rethmeier</label><mixed-citation>Rasmussen, T. A. S., Poulsen, J., Ribergaard, M. H., Sasanka, R., Craig, A. P., Hunke, E. C., and Rethmeier, S.: Refactoring the elastic–viscous–plastic solver from the sea ice model CICE v6.5.1 for improved performance, Geosci. Model Dev., 17, 6529–6544, <ext-link xlink:href="https://doi.org/10.5194/gmd-17-6529-2024" ext-link-type="DOI">10.5194/gmd-17-6529-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Rosinski and Williamson(1997)</label><mixed-citation> Rosinski, J. M. and Williamson, D. L.: The accumulation of rounding errors and port validation for global atmospheric models, SIAM J. Sci. Comput., 18, 552–564, 1997.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Semtner(1976)</label><mixed-citation>Semtner, A. J.: A Model for the Thermodynamic Growth of Sea Ice in Numerical Investigations of Climate, J. Phys. Oceanogr., 6, 379–389, <ext-link xlink:href="https://doi.org/10.1175/1520-0485(1976)006%3C0379:AMFTTG%3E2.0.CO;2" ext-link-type="DOI">10.1175/1520-0485(1976)006%3C0379:AMFTTG%3E2.0.CO;2</ext-link>, 1976.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Veris: fast &amp; efficient sea-ice modeling in Python with GPU acceleration</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Arakawa and Lamb(1977)</label><mixed-citation>
      
Arakawa, A. and Lamb, V. R.: Computational Design of the Basic Dynamical
Processes of the UCLA General Circulation Model, in: General Circulation
Models of the Atmosphere, vol. 17, Methods in Computational Physics:
Advances in Research and Applications, Elsevier, 173–265,
<a href="https://doi.org/10.1016/B978-0-12-460817-7.50009-4" target="_blank">https://doi.org/10.1016/B978-0-12-460817-7.50009-4</a>, 1977.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Bouillon et al.(2013)Bouillon, Fichefet, Legat, and
Madec</label><mixed-citation>
      
Bouillon, S., Fichefet, T., Legat, V., and Madec, G.: The
Elastic–Viscous–Plastic Method Revisited, Ocean Model., 71,
2–12, <a href="https://doi.org/10.1016/j.ocemod.2013.05.013" target="_blank">https://doi.org/10.1016/j.ocemod.2013.05.013</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Bradbury et al.(2018)Bradbury, Frostig, Hawkins, Johnson, Leary,
Maclaurin, Necula, Paszke, VanderPlas, Wanderman-Milne, and
Zhang</label><mixed-citation>
      
Bradbury, J., Frostig, R., Hawkins, P., Johnson, M. J., Leary, C., Maclaurin,
D., Necula, G., Paszke, A., VanderPlas, J., Wanderman-Milne, S., and
Zhang, Q.: JAX: composable transformations of Python+NumPy programs,
GitHub [code], <a href="http://github.com/jax-ml/jax" target="_blank"/> (last access: 1 June 2026), 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Campin et al.(2026)Campin, Heimbach, Losch, Forget, edhill3, Adcroft,
amolod, Menemenlis, dfer22, Jahn, Hill, Scott, dngoldberg, stephdut, Mazloff,
Fox-Kemper, antnguyen13, Doddridge, Fenty, Bates, Smith, Wang,
AndrewEichmann-NOAA, mitllheisey, Lauderdale, Martin, Abernathey,
samarkhatiwala, Escobar, and averdy</label><mixed-citation>
      
Campin, J.-M., Heimbach, P., Losch, M., Forget, G., edhill3, Adcroft, A.,
amolod, Menemenlis, D., dfer22, Jahn, O., Hill, C., Scott, J., dngoldberg,
stephdut, Mazloff, M., Fox-Kemper, B., antnguyen13, Doddridge, E., Fenty, I.,
Bates, M., Smith, T., Wang, O., AndrewEichmann-NOAA, mitllheisey, Lauderdale,
J., Martin, T., Abernathey, R., samarkhatiwala, Escobar, I., and averdy:
MITgcm/MITgcm: checkpoint69k, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.18371317" target="_blank">https://doi.org/10.5281/zenodo.18371317</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Eden(2016)</label><mixed-citation>
      
Eden, C.: Closing the energy cycle in an ocean model, Ocean Model., 101,
30–42, <a href="https://doi.org/10.1016/j.ocemod.2016.02.005" target="_blank">https://doi.org/10.1016/j.ocemod.2016.02.005</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Eden and Olbers(2014)</label><mixed-citation>
      
Eden, C. and Olbers, D.: An energy compartment model for propagation, nonlinear
interaction, and dissipation of internal gravity waves, J. Phys.
Oceanogr., 44, 2093–2106, <a href="https://doi.org/10.1175/JPO-D-13-0224.1" target="_blank">https://doi.org/10.1175/JPO-D-13-0224.1</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Gärtner(2023)</label><mixed-citation>
      
Gärtner, J. P.: Sea Ice Modeling in Python, Zenodo [code],
<a href="https://doi.org/10.5281/zenodo.11474409" target="_blank">https://doi.org/10.5281/zenodo.11474409</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Gärtner(2026a)</label><mixed-citation>
      
Gärtner, J. P.: Veris Benchmarks Data and Scripts, Zenodo [code and data set],
<a href="https://doi.org/10.5281/zenodo.18620150" target="_blank">https://doi.org/10.5281/zenodo.18620150</a>, 2026a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Gärtner(2026b)</label><mixed-citation>
      
Gärtner, J. P.: Veris, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.20643719" target="_blank">https://doi.org/10.5281/zenodo.20643719</a>,
2026b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Gärtner(2026c)</label><mixed-citation>
      
Gärtner, J. P.: Veris (sharded arrays), Zenodo [code], <a href="https://doi.org/10.5281/zenodo.20643778" target="_blank">https://doi.org/10.5281/zenodo.20643778</a>,
2026c.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Häfner et al.(2018)Häfner, Jacobsen, Eden, Kristensen,
Jochum, Nuterman, and Vinter</label><mixed-citation>
      
Häfner, D., Jacobsen, R. L., Eden, C., Kristensen, M. R. B., Jochum, M., Nuterman, R., and Vinter, B.: Veros v0.1 – a fast and versatile ocean simulator in pure Python, Geosci. Model Dev., 11, 3299–3312, <a href="https://doi.org/10.5194/gmd-11-3299-2018" target="_blank">https://doi.org/10.5194/gmd-11-3299-2018</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Häfner et al.(2021)Häfner, Nuterman, and
Jochum</label><mixed-citation>
      
Häfner, D., Nuterman, R., and Jochum, M.: Fast, Cheap, and
Turbulent – Global Ocean Modeling with GPU Acceleration in
Python, J. Adv. Model. Earth Sy., 13, e2021MS002717,
<a href="https://doi.org/10.1029/2021MS002717" target="_blank">https://doi.org/10.1029/2021MS002717</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Häfner et al.(2023)Häfner, Jacobsen, Nuterman, and
Jochum</label><mixed-citation>
      
Häfner, D., Jacobsen, R. L., Nuterman, R., and Jochum, M.: Veros, Zenodo [code],
<a href="https://doi.org/10.5281/zenodo.8430140" target="_blank">https://doi.org/10.5281/zenodo.8430140</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Harris et al.(2020)Harris, Millman, van der Walt, Gommers, Virtanen,
Cournapeau, Wieser, Taylor, Berg, Smith, Kern, Picus, Hoyer, van Kerkwijk,
Brett, Haldane, del Río, Wiebe, Peterson, Gérard-Marchant,
Sheppard, Reddy, Weckesser, Abbasi, Gohlke, and Oliphant</label><mixed-citation>
      
Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P.,
Cournapeau, D., Wieser, E., Taylor, J., Berg, S., Smith, N. J., Kern, R.,
Picus, M., Hoyer, S., van Kerkwijk, M. H., Brett, M., Haldane, A., del
Río, J. F., Wiebe, M., Peterson, P., Gérard-Marchant, P.,
Sheppard, K., Reddy, T., Weckesser, W., Abbasi, H., Gohlke, C., and Oliphant,
T. E.: Array Programming with NumPy, Nature, 585, 357–362,
<a href="https://doi.org/10.1038/s41586-020-2649-2" target="_blank">https://doi.org/10.1038/s41586-020-2649-2</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Hibler(1979)</label><mixed-citation>
      
Hibler, W. D.: A Dynamic Thermodynamic Sea Ice Model, J.
Phys. Oceanogr., 9, 815–846,
<a href="https://doi.org/10.1175/1520-0485(1979)009%3C0815:ADTSIM%3E2.0.CO;2" target="_blank">https://doi.org/10.1175/1520-0485(1979)009%3C0815:ADTSIM%3E2.0.CO;2</a>, 1979.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Hunke et al.(2024)Hunke, Allard, Bailey, Blain, Craig, Dupont,
DuVivier, Grumbine, Hebert, Holland, Jeffery, Lemieux, Osinski, Poulsen,
Steketee, Rasmussen, Ribergaard, Roach, Roberts, Turner, Winton, and
Worthen</label><mixed-citation>
      
Hunke, E., Allard, R., Bailey, D. A., Blain, P., Craig, A., Dupont, F.,
DuVivier, A., Grumbine, R., Hebert, D., Holland, M., Jeffery, N., Lemieux,
J.-F., Osinski, R., Poulsen, J., Steketee, A., Rasmussen, T., Ribergaard, M.,
Roach, L., Roberts, A., Turner, M., Winton, M., and Worthen, D.:
CICE-Consortium/CICE: CICE Version 6.5.1, Zenodo [code],
<a href="https://doi.org/10.5281/zenodo.11223920" target="_blank">https://doi.org/10.5281/zenodo.11223920</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Hunke(2001)</label><mixed-citation>
      
Hunke, E. C.: Viscous–plastic sea ice dynamics with the EVP model:
Linearization issues, J. Comput. Phys., 170, 18–38,
<a href="https://doi.org/10.1006/jcph.2001.6710" target="_blank">https://doi.org/10.1006/jcph.2001.6710</a>, 2001.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Hunke and Dukowicz(1997)</label><mixed-citation>
      
Hunke, E. C. and Dukowicz, J. K.: An Elastic–Viscous–Plastic Model
for Sea Ice Dynamics, J. Phys. Oceanogr., 27, 1849–1867,
<a href="https://doi.org/10.1175/1520-0485(1997)027%3C1849:AEVPMF%3E2.0.CO;2" target="_blank">https://doi.org/10.1175/1520-0485(1997)027%3C1849:AEVPMF%3E2.0.CO;2</a>, 1997.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Kimmritz et al.(2015)Kimmritz, Danilov, and
Losch</label><mixed-citation>
      
Kimmritz, M., Danilov, S., and Losch, M.: On the convergence of the modified
elastic–viscous–plastic method for solving the sea ice momentum equation,
J. Comput. Phys., 296, 90–100, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Kimmritz et al.(2016)Kimmritz, Danilov, and
Losch</label><mixed-citation>
      
Kimmritz, M., Danilov, S., and Losch, M.: The Adaptive EVP Method for
Solving the Sea Ice Momentum Equation, Ocean Model., 101,
59–67, <a href="https://doi.org/10.1016/j.ocemod.2016.03.004" target="_blank">https://doi.org/10.1016/j.ocemod.2016.03.004</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Lemieux et al.(2012)Lemieux, Knoll, Tremblay, Holland, and
Losch</label><mixed-citation>
      
Lemieux, J.-F., Knoll, D. A., Tremblay, B., Holland, D. M., and Losch, M.: A
comparison of the Jacobian-free Newton–Krylov method and the EVP model for
solving the sea ice momentum equation with a viscous-plastic formulation: A
serial algorithm study, J. Comput. Phys., 231, 5926–5944,
2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Lemieux et al.(2015)Lemieux, Tremblay, Dupont, Plante, Smith, and
Dumont</label><mixed-citation>
      
Lemieux, J.-F., Tremblay, L. B., Dupont, F., Plante, M., Smith, G. C., and
Dumont, D.: A Basal Stress Parameterization for Modeling Landfast
Ice, J. Geophys. Res.-Oceans, 120, 3157–3173,
<a href="https://doi.org/10.1002/2014JC010678" target="_blank">https://doi.org/10.1002/2014JC010678</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Leppäranta(1983)</label><mixed-citation>
      
Leppäranta, M.: A growth model for black ice, snow ice and snow thickness
in subarctic basins, Hydrol. Res., 14, 59–70,
<a href="https://doi.org/10.2166/nh.1983.0006" target="_blank">https://doi.org/10.2166/nh.1983.0006</a>, 1983.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Li et al.(2023)Li, Basu Roy, Wang, Samsi, Gadepally, and
Tiwari</label><mixed-citation>
      
Li, B., Basu Roy, R., Wang, D., Samsi, S., Gadepally, V., and Tiwari, D.:
Toward Sustainable HPC: Carbon Footprint Estimation and
Environmental Implications of HPC Systems, in: Proceedings of the
International Conference for High Performance Computing,
Networking, Storage and Analysis,  1–15,
<a href="https://doi.org/10.1145/3581784.3607035" target="_blank">https://doi.org/10.1145/3581784.3607035</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Liu et al.(2022)Liu, Losch, Hutter, and Mu</label><mixed-citation>
      
Liu, Y., Losch, M., Hutter, N., and Mu, L.: A New Parameterization of
Coastal Drag to Simulate Landfast Ice in Deep Marginal Seas
in the Arctic, J. Geophys. Res.-Oceans, 127,
e2022JC018413, <a href="https://doi.org/10.1029/2022JC018413" target="_blank">https://doi.org/10.1029/2022JC018413</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Losch(2021)</label><mixed-citation>
      
Losch, M.: MITgcm sea ice dynamics benchmark,  Github [code],
<a href="https://github.com/mjlosch/seaice_benchmark.git" target="_blank"/> (last access:
1 June 2026), 2021.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Losch(2023)</label><mixed-citation>
      
Losch, M.: MITgcm sea ice thermodynamics benchmark, Github [code],
<a href="https://github.com/mjlosch/MITgcm/tree/seaice_test_1d" target="_blank"/> (last
access: 1 June 2026), 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Losch et al.(2010)Losch, Menemenlis, Campin, Heimbach, and
Hill</label><mixed-citation>
      
Losch, M., Menemenlis, D., Campin, J.-M., Heimbach, P., and Hill, C.: On the
Formulation of Sea-Ice Models. Part 1: Effects of Different
Solver Implementations and Prameterizations, Ocean Model., 33,
129–144, <a href="https://doi.org/10.1016/j.ocemod.2009.12.008" target="_blank">https://doi.org/10.1016/j.ocemod.2009.12.008</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Marquetti et al.(2018)Marquetti, Rodrigues, and
Desai</label><mixed-citation>
      
Marquetti, I., Rodrigues, J., and Desai, S. S.: Ecological Impact of
Green Computing using Graphical Processing Units in Molecular
Dynamics Simulations, Int. J. Green Comput. (IJGC), 9,
35–48, <a href="https://doi.org/10.4018/IJGC.2018010103" target="_blank">https://doi.org/10.4018/IJGC.2018010103</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Marshall et al.(1997)Marshall, Adcroft, Hill, Perelman, and
Heisey</label><mixed-citation>
      
Marshall, J., Adcroft, A., Hill, C., Perelman, L., and Heisey, C.: A
Finite-Volume, Incompressible Navier Stokes Model for Studies
of the Ocean on Parallel Computers, J. Geophys. Res.-Oceans, 102, 5753–5766, <a href="https://doi.org/10.1029/96JC02775" target="_blank">https://doi.org/10.1029/96JC02775</a>, 1997.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Mehlmann et al.(2021)Mehlmann, Danilov, Losch, Lemieux, Hutter,
Richter, Blain, Hunke, and Korn</label><mixed-citation>
      
Mehlmann, C., Danilov, S., Losch, M., Lemieux, J.-F., Hutter, N., Richter, T.,
Blain, P., Hunke, E., and Korn, P.: Simulating Linear Kinematic
Features in Viscous-Plastic Sea Ice Models on Quadrilateral and
Triangular Grids with Different Variable Staggering, J.
Adv. Model. Earth Sy., 13, e2021MS002523,
<a href="https://doi.org/10.1029/2021MS002523" target="_blank">https://doi.org/10.1029/2021MS002523</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Méndez et al.(2014)Méndez, Tinetti, and
Overbey</label><mixed-citation>
      
Méndez, M., Tinetti, F. G., and Overbey, J. L.: Climate models: challenges
for Fortran development tools, in: 2014 Second International Workshop on
Software Engineering for High Performance Computing in Computational Science
and Engineering,  IEEE, 6–12,  <a href="https://doi.org/10.1109/SE-HPCCSE.2014.7" target="_blank">https://doi.org/10.1109/SE-HPCCSE.2014.7</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Portegies Zwart(2020)</label><mixed-citation>
      
Portegies Zwart, S.: The Ecological Impact of High-Performance
Computing in Astrophysics, Nat. Astronomy, 4, 819–822,
<a href="https://doi.org/10.1038/s41550-020-1208-y" target="_blank">https://doi.org/10.1038/s41550-020-1208-y</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Rasmussen et al.(2024)Rasmussen, Poulsen, Ribergaard, Sasanka, Craig,
Hunke, and Rethmeier</label><mixed-citation>
      
Rasmussen, T. A. S., Poulsen, J., Ribergaard, M. H., Sasanka, R., Craig, A. P., Hunke, E. C., and Rethmeier, S.: Refactoring the elastic–viscous–plastic solver from the sea ice model CICE v6.5.1 for improved performance, Geosci. Model Dev., 17, 6529–6544, <a href="https://doi.org/10.5194/gmd-17-6529-2024" target="_blank">https://doi.org/10.5194/gmd-17-6529-2024</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Rosinski and Williamson(1997)</label><mixed-citation>
      
Rosinski, J. M. and Williamson, D. L.: The accumulation of rounding errors and
port validation for global atmospheric models, SIAM J. Sci.
Comput., 18, 552–564, 1997.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Semtner(1976)</label><mixed-citation>
      
Semtner, A. J.: A Model for the Thermodynamic Growth of Sea Ice in
Numerical Investigations of Climate, J. Phys. Oceanogr.,
6, 379–389, <a href="https://doi.org/10.1175/1520-0485(1976)006%3C0379:AMFTTG%3E2.0.CO;2" target="_blank">https://doi.org/10.1175/1520-0485(1976)006%3C0379:AMFTTG%3E2.0.CO;2</a>,
1976.

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