We describe and evaluate version 2.1 of the Community Ice Sheet Model (CISM). CISM is a parallel, 3-D thermomechanical model, written mainly in Fortran, that solves equations for the momentum balance and the thickness and temperature evolution of ice sheets. CISM's velocity solver incorporates a hierarchy of Stokes flow approximations, including shallow-shelf, depth-integrated higher order, and 3-D higher order. CISM also includes a suite of test cases, links to third-party solver libraries, and parameterizations of physical processes such as basal sliding, iceberg calving, and sub-ice-shelf melting. The model has been verified for standard test problems, including the Ice Sheet Model Intercomparison Project for Higher-Order Models (ISMIP-HOM) experiments, and has participated in the initMIP-Greenland initialization experiment. In multimillennial simulations with modern climate forcing on a 4 km grid, CISM reaches a steady state that is broadly consistent with observed flow patterns of the Greenland ice sheet. CISM has been integrated into version 2.0 of the Community Earth System Model, where it is being used for Greenland simulations under past, present, and future climates. The code is open-source with extensive documentation and remains under active development.

As mass loss from the Greenland and Antarctic ice sheets has accelerated

Here, we describe and evaluate the Community Ice Sheet Model (CISM) version
2.1, a higher-order model that evolved from the Glimmer model

CISM development was guided by the following goals:

The model should be well documented and easy to install and run on a variety of platforms, ranging from laptops to local clusters to high-performance supercomputers.

It should solve a range of Stokes approximations, including the SIA, SSA, and higher-order approximations. Velocity solvers for these approximations are included in a new dynamical core called Glissade. (The dynamical core, or “dycore”, is the part of the model that solves equations for conservation of mass, energy, and momentum.)

It should remain backward-compatible with Glimmer, allowing continued use of the older Glide SIA dycore.

It should be well verified for standard test cases such as the
Ice Sheet Model Intercomparison Project for Higher-Order Models (ISMIP-HOM)

It should run efficiently – supporting whole-ice-sheet applications
even on small platforms – and should scale to hundreds of processor cores,
enabling century- to millennial-scale simulations with higher-order solvers
at grid resolutions of

It should support not only stand-alone ice sheet simulations but also coupled applications in which fields are exchanged with a global climate or Earth system model (CESM in particular).

It should support simulations of the Greenland ice sheet, a scientific focus of CESM. Support for Antarctic applications is deferred to future model releases and publications.

The code should be open-source, with periodic public releases.

Changes between versions 2.0 and 2.1 have been made primarily to support
robust, accurate, and efficient Greenland ice sheet simulations, both as a
stand-alone model and in CESM. These changes include a depth-integrated
higher-order velocity solver (Sect.

We begin with an overview of CISM, including the core model and its testing and coupling infrastructure (Sect. 2). We then describe the model dynamics and physics, focusing on the new Glissade dycore (Sect. 3). To verify the model, we present results from standard test cases (Sect. 4). We then present results from long spin-ups of the Greenland ice sheet, with and without floating ice shelves (Sect. 5). Finally, we summarize the model results and suggest directions for future work (Sect. 6).

CISM is a numerical model – a collection of software libraries, utilities, and drivers – used to simulate ice sheet evolution. It is modular in design and is coded mainly in standard-compliant Fortran 90/95. CISM consists of several components:

is the high-level driver (i.e., the executable) that is used to run the stand-alone model in all configurations, including idealized test cases with simplified climate forcing, as well as model runs with realistic geometry and climate forcing data.

is the serial dycore based on shallow-ice dynamics.
Glide solves the governing conservation equations and computes ice velocities,
internal ice temperature,
and ice geometry evolution.
Apart from minor changes, this is the same dycore used in Glimmer and described
by

is the dycore that solves higher-order approximations of the
Stokes equations for ice flow. Glissade, unlike Glide, is fully parallel in
order to take advantage of multiprocessor, high-performance architectures.
It is described in detail in Sect.

is the original climate model interface for Glimmer. Glint allows the core ice sheet model to be coupled to a global climate model or any other source of time-varying climate data on a lat–long grid. Glint computes the surface mass balance (SMB) on the ice sheet grid using a positive-degree-day (PDD) scheme.

is a lightweight climate model interface that has replaced Glint in CESM. The CESM coupler supports remapping and downscaling between general land-surface grids and ice sheet grids, and thus is able to send CISM an SMB that is already downscaled. The Glad interface simply sends and receives fields on the ice sheet grid, accumulating and averaging as needed based on the ice dynamic time step and the coupling interval.

are provided for the Glide and Glissade dynamical
cores. These are used to confirm that the model is working as expected and to
provide a range of simple model configurations from which new users can learn
about model options and create their own configurations. CISM test cases are
described in Sect.

consists of modules shared by different parts of the code. Examples include modules for defining derived types, physical constants, and model parameters, and modules that parse CISM configuration files and handle data input/output (I/O).

In order to reduce development effort, CISM runs on a structured rectangular
grid and thus lacks the flexibility of models that run on variable-resolution
or adaptive meshes (e.g., ISSM and BISICLES). Although CISM includes several
common Stokes approximations, it does not solve the more complex “full
Stokes” equations

CISM is distributed as source code and therefore requires a reasonably
complete build environment to compile the model. For UNIX- and LINUX-based
systems, the CMake (

The source code can be obtained by downloading a released version from the
CISM website or by cloning the code from a public git repository; see
Sect. . In either case, a Fortran 90 compiler is
required. Other software dependencies include the NetCDF library
(

CISM is run by specifying the names of the executable (usually

Multiple input, forcing, and output files can be specified, containing any subset of a large number of global scalars and fields (1-D, 2-D, and 3-D). If a given field is “loadable” and is present in the input file, it is read automatically at startup; otherwise, it is set to a default value. Loadable fields include the initial ice thickness and temperature, bedrock topography, surface mass balance, surface air temperature, and geothermal heat flux. Forcing files are input files that are read at every time step (not just at initialization) so that time-dependent forcing can be applied during a simulation.

Each output file includes a user-chosen set of variables (listed in the configuration file) and can contain multiple time slices, written at any frequency. A special kind of I/O file is the restart file, which includes all the fields needed to restart the model exactly. Whatever configuration options are chosen, model results are exactly reproducible (i.e., bit for bit) for a given computer platform and processor count, regardless of how many times a simulation is stopped and restarted.

Some basic information is sent to standard output during the run, and more verbose output is written at regular intervals to a log file. The log file lists the options and parameter values chosen for the run and also notes the simulation time when CISM reads or writes I/O. In addition, the log file includes diagnostic information about the global state of the model (e.g., the total ice area and volume, total surface and basal mass balance, and maximum surface and basal ice speeds), along with vertical profiles of ice speed and temperature for a user-chosen grid point.

CISM2.1 has been implemented in CESM version 2.0, released in June 2018.
Earlier versions of CESM supported one-way forcing of the Greenland ice sheet
(using SIA dynamics) by the SMB computed in CESM's land model

CISM includes a parallel, higher-order dynamical core called Glissade, which
solves equations for conservation of momentum (i.e., an appropriate
approximation of Stokes flow), mass, and internal energy. Glissade numerics
differ substantially from Glide numerics:

Glissade computes the ice velocity by solving approximate Stokes equations,
given the surface elevation, ice thickness, ice temperature, and relevant
boundary conditions. Section

The basic equations of the Blatter–Pattyn approximation are

Model variables defined in the text.

Model constant and parameter values used for simulations described in the text. The calving and sub-shelf melting parameters are used only for simulations with ice shelves; other parameters are used for all Greenland simulations.

The equations are discretized on a structured 3-D mesh. In the map plane, the
mesh consists of rectangular cells, each with four vertices. The

For problems on multiple processors, a cell or vertex (and the associated
elements and nodes in its column) may be either locally owned or part of a
computational halo. Each processor is responsible for computing

The effective viscosity

The coupled partial differential equations (PDEs) (

Glissade's finite-element scheme is formally equivalent to that described by

At the basal boundary, we assume a friction law of the form

The lateral pressure

The gravitational forcing terms require evaluating the gradients

Equation (

Given

Since

Appendix A describes how the terms in Eq. (

The shallow-ice equations follow from the Blatter–Pattyn equations if
membrane stresses are neglected. The SIA analogs of
Eq. (

Instead, Glissade has an efficient local SIA solver. The solver is local in
the sense that

For small problems that can run on one processor, there is no particular advantage to using Glissade's local SIA solver in place of Glide. Glide's implicit thickness solver permits a longer time step and thus is more efficient for problems run in serial. For whole-ice-sheet problems, however, Glissade's parallel solver can hold more data in memory and may have faster throughput, simply because it can run on tens to hundreds of processors.

The SSA equations can be derived by vertically integrating the BP equations,
given the assumption of small basal shear stress and vertically uniform
velocity. The shallow-shelf analog of Eq. (

The vertical shear terms still contain

Since the horizontal stress terms are depth-independent,
Eq. (

In order to solve Eq. (

Given Eq. (

In order to compute

The DIVA solution procedure can be summarized as follows:

Starting with the current guess for the velocity field

Compute

Evaluate numerically the vertical integrals
in Eqs. (

Interpolate

Solve the matrix system for

Given

Iterate to convergence.

DIVA assumes that horizontal gradients of membrane stresses are vertically
uniform. It is less accurate than the BP approximation in regions of slow
sliding and rough bed topography, where the horizontal gradients of membrane
stresses vary strongly with height, and may also be less accurate where
vertical temperature gradients are large. The accuracy of DIVA compared to BP
is discussed in Sect.

After assembling the matrices and right-hand side vectors for the chosen
approximation (SSA, DIVA, or BP), we solve the linear problem of
Eq. (

The native PCG solver works directly with the assembled matrices
(

The matrices and RHS vectors are passed to either a “standard” PCG solver

As described by

diagonal preconditioning, in which

shallow-ice-based preconditioning (for the BP approximation only). In this case,

The Trilinos solver

SLAP is a set of Fortran routines for solving sparse systems of linear equations. SLAP was part of Glimmer and is used to solve for thickness evolution and temperature advection in Glide. It can also be used to solve higher-order systems in Glissade, using either GMRES or a biconjugate gradient solver. The SLAP solver, however, is a serial code unsuited for large problems.

The default linear solver is native PCG using the Chronopoulos–Gear algorithm. Although it has been found to run efficiently on platforms ranging from laptops to supercomputers, its preconditioning options are limited, so convergence can be slow for problems with dominant membrane stresses (e.g., large marine ice sheets). SLAP solvers are generally robust and efficient but are limited to one processor. Trilinos contains many solver options, but in tests to date – using a generalized minimal residual (GMRES) solver with incomplete lower–upper (ILU) preconditioning – it has been found to be slower than the native PCG solver because of the extra cost of setting up Trilinos data structures, and possibly the slower performance of C++ compared to Fortran for the solver.

The linear solver is wrapped by a nonlinear solver that does Picard
iteration. Following each iteration, a new global matrix is assembled, using
the latest velocity solution to compute the effective viscosity. Glissade
then computes the new residual,

The thermal evolution of the ice sheet is given by

In Glissade's vertical discretization of temperature,

The following sections describe how the terms in
Eq. (

Glissade uses a vertical

In higher-order models, the internal heating rate

Both terms on the RHS of Eq. (

The temperature

The lower ice boundary is more complex. For grounded ice, there are three heat sources and sinks.
First, the diffusive flux from the bottom surface to the ice interior (positive up) is

If the basal temperature

For floating ice, the basal boundary condition is simpler;

Equation (

Occasionally, the solution

The transport equation for ice thickness

Glissade has two horizontal transport schemes: a first-order upwind scheme
and a more accurate incremental remapping (IR) scheme

After horizontal transport, the mass balance is applied at the top and bottom
ice surfaces. The new vertical layers generally do not have the desired
spacing in

The incremental remapping scheme has several desirable features:

It conserves the quantities being transported (including mass and internal energy).

It is non-oscillatory; that is, it does not create spurious ripples in the transported fields.

It preserves tracer monotonicity. That is, it does not create new extrema in tracers such as
temperature; the values at time

It is second-order accurate in space and therefore is less diffusive than first-order schemes. The accuracy may be reduced locally to first order to preserve monotonicity.

It is efficient for large numbers of tracers. Much of the work is geometrical and is performed only once per cell edge instead of being repeated for each field being transported.

The IR time step is limited by the requirement that trajectories projected
backward from grid cell corners are confined to the four surrounding cells;
this is what is meant by incremental as opposed to general remapping. This
requirement leads to an advective Courant–Friedrichs–Lewy (CFL) condition,

Given mean values of the ice thickness and tracer fields in each grid cell, construct linear approximations of these fields that preserve the mean. Limit the field gradients to preserve monotonicity.

Given ice velocities at grid cell vertices, identify departure regions for the fluxes across each cell edge. Divide these departure regions into triangles and compute the coordinates of the triangle vertices.

Integrate the thickness and tracer fields over the departure triangles to obtain the mass and energy transported across each cell edge.

Given this transport, update the state variables.

As mentioned above, the time step for explicit mass transport is limited by
the advective CFL condition (Eq.

Glissade assumes a basal friction law of the form
Eq. (

Spatially uniform

No sliding, enforced by a Dirichlet boundary condition (

A 2-D

Power-law sliding, based on the sliding relation of

Plastic sliding, in which the bed deforms with a specified till yield stress.

Coulomb friction as described by

Pseudo-plastic sliding, as described by

The power-law, Coulomb-friction and pseudo-plastic sliding laws give lower
basal friction and faster sliding as the effective pressure

Following

Glissade does not yet support sophisticated subglacial hydrology. (The model
of

All basal water immediately drains.

Basal water depth is set to a constant everywhere, to force

Basal water depth is computed using a local till model, as
described by

Glissade supports several schemes for calving ice at marine margins. Two of these are very simple: (1) calve all floating ice and (2) calve ice where the bedrock (either the current bedrock or the bedrock toward which a viscous asthenosphere is relaxing) lies below a prescribed elevation. In addition, Glissade includes several new calving schemes: mask-based calving, thickness-based calving, and eigencalving.

With mask-based calving, any floating ice that forms in cells defined by a calving mask is assumed to calve instantly. By default, the mask is based on the initial ice extent. Floating ice calves in all cells that are initially ice-free ocean, and thus the calving front cannot advance (but it can retreat). Alternatively, users can define a calving mask that is read at initialization.

Thickness-based calving is designed to remove floating ice that is thinner
than a user-defined thickness,

Glissade avoids this problem using an approach similar to that of

Thickness-based calving is applied not to CF cells with

Glissade's eigencalving scheme is related to the method described by

Using Eqs. (

Eigencalving, when applied on its own, can allow very thin ice to persist at
the calving front where stresses are small. For this reason, the eigencalving
algorithm is automatically followed by thickness-based calving as described
above, with

An additional option related to calving is iceberg removal. An iceberg is defined as a connected region where every cell is floating and has no connection to grounded ice. Icebergs can be present in initial data sets and also can arise during simulations, depending on the calving scheme. Finding the velocity for such a region is an ill-posed problem, so it is best to remove icebergs as soon as they occur. This is done by first marking all the grounded ice cells, and then using a parallel flood-fill algorithm to mark every floating cell that is connected to a grounded cell. (That is, one could travel from a grounded cell to a given floating cell along a path at least one cell wide, without leaving the ice sheet.) Any unmarked floating cells then calve immediately.

Another option is to limit the thickness of ice cliffs, defined as grounded
marine-based cells adjacent to ice-free ocean.

By default, melting beneath ice shelves is set to zero. The following simple
options may be enabled for simulations with marine ice:

Sub-shelf melting is set to a constant value for all floating ice.

CISM reads in a 2-D field of basal melt rates and applies the prescribed rates to floating ice.

Sub-shelf melting is prescribed as for the Marine Ice Sheet Model Intercomparison Project (MISMIP+) Ice1 experiments described by

The sub-shelf melt rate is a piecewise linear function of depth. Above a reference elevation

Isostatic adjustment is handled as in

In the elastic lithosphere calculation, data from many grid cells must be
summed to compute the load in each location. For parallel runs, this is done
by gathering data to one processor to compute the load and then distributing
the result to the local processors. This calculation scales poorly, but it is
done infrequently (every

Test cases for CISM include (1) problems with analytic solutions, (2) standard experiments without analytic solutions but for which community benchmarks are available, and (3) some CISM-specific experiments used for code development and testing. These tests are organized in directories, each of which includes a README file with instructions on running the test. Most tests have Python scripts that are used to set up the initial conditions and run the model, and some tests have an additional Python script to analyze and plot the output. Each test has a default configuration file, whose settings can be adjusted manually to make changes (e.g., swapping velocity solvers). Several tests are described below, with plots generated by Python scripts included in the code release.

The Halfar test case describes the time evolution of a parabolic dome of ice

Figure

Results from the Halfar dome test using SIA solvers from Glide

The bottom panels of Fig.

ISMIP-HOM, described by

Experiment A is a test for ice flow over a bumpy bed. The domain is doubly
periodic, and the bed topography is sinusoidal in both the

Results for ISMIP-HOM experiment A (ice
flow over a bumpy bed). Each plot shows the surface ice speed across the bump
at

Figure

Same as Fig.

Results for ISMIP-HOM experiment C (ice flow over a bed with
variable basal friction). Each plot shows the surface ice speed across the
bump at

Experiment C is a test for flow over a bed with variable friction. The ice
surface and mean thickness are as in experiment A, but the bed is flat, with
sinusoidal variations in the basal friction parameter

Same as Fig.

For both experiments A and C, the Glissade BP results are nearly identical to
those shown by

CISM's stream tests simulate flow over an idealized ice stream underlain by
subglacial till with a specified yield stress distribution. For the two yield
stress distributions specified in this test case, analytical solutions are
available from

Figures

Results from the Raymond stream test using Glissade's BP velocity
solver.

Same as Fig.

CISM includes three shelf tests:

The first is a confined-shelf test based on tests 3 and 4 from the Ice Shelf Model Intercomparison
exercise

The second is a circular-shelf test that simulates the radially symmetric flow of a 1000 m thick ice shelf that is pinned at one point in the center. The SSA solution (not shown) is similar but not identical to the DIVA and BP solutions, since the latter allow vertical shear above the pinning point.

The third test simulates the flow of the Ross Ice Shelf in Antarctica under idealized conditions
(e.g., a spatially uniform flow-rate factor), as described by

Ice speed (m yr

CISM's dome test has a simple configuration with a parabolic, radially symmetric dome on a flat bed. It is a general-purpose time-dependent problem that can be used to test not just the velocity solver but also the transport and temperature solvers and various physics options. There is no analytic solution, but the test has proven useful for day-to-day testing.

To facilitate testing, CISM includes a build-and-test structure (BATS) that
can automatically build the model and then run a set of regression tests,
including the tests discussed above. BATS allows users and developers to
quickly generate a set of regression tests for use with the Land Ice
Verification and Validation toolkit (LIVVkit;

The CISM v2.0 release included the tests described in
Sect.

Coupled ice sheet–climate simulations can be problematic, because ice sheets
require

Here, we take the second approach, spinning up the Greenland ice sheet with
surface forcing from the regional climate model RACMO2.3p1 statistically
downscaled to 1 km resolution

We analyze two experiments. The first experiment uses a “no-float” calving
scheme, in which floating ice is assumed to calve immediately. A similar
configuration was used to initialize CISM for the
initMIP-Greenland experiment

Although the model has been configured to give results that are reasonably realistic, these spin-ups should be viewed primarily as a demonstration of CISM capabilities, not as scientifically validated simulations. For example, model tuning has likely compensated for biases in the forcing data. Generally speaking, model parameters should always be tested and reviewed depending on the science application.

The simulation without floating ice shelves is configured as follows:

The model is initialized with present-day ice sheet geometry. The ice thickness and bed topography are
based on the mass-conserving-bed method of

The SMB forcing over the Greenland ice sheet is a 1958–2015 climatology from RACMO2.3p1

The basal geothermal heat flux is prescribed from

Where the SMB is negative, the initial temperature profile in each column is
linear, with

The 3-D velocity field is computed at 11 vertical levels using the DIVA solver described
in Sect.

The basal friction coefficient

Effective pressure is a function of basal water depth as computed by the local
till model described in Sect.

Floating ice calves immediately, and marine cliff heights are
limited as described in Sect.

Some of the model physics is constrained to make the simulation more robust.
The surface gradients

After 50 000 model years, the ice sheet extent and volume have equilibrated
to

Results of the Ross Ice Shelf test described by

Figure

Surface ice speed (m yr

Difference (m) between (1) simulated ice thickness at the end of a
50 kyr Greenland spin-up without ice shelves and (2) observed thickness from

Figure

Figure

Basal water state at the end of a 50 kyr Greenland spin-up. Red:
fully saturated bed with basal water depth

The intermediate regions in Fig.

As shown by

Difference (m) in simulated ice thickness after 10 kyr between (1) a run using the BP velocity solver and (2) a run using the DIVA velocity solver and otherwise configured identically. The gray background shows regions that are ice-free in both simulations.

Difference (m yr

Computational performance on NCAR's Cheyenne supercomputer for various simulations: DIVA vs. BP solvers, with and without floating ice shelves, and 144 vs. 288 processor cores.

Table

The simulation with ice shelves is configured like the no-shelf simulation but with these differences:

No-float calving is replaced by the eigencalving scheme of Sect.

Beneath floating ice, we apply the depth-dependent melt rate of
Sect.

By the end of a 50 000-year simulation with ice shelves, the total ice area
and volume reach equilibrium values of

Difference (m) between (1) simulated ice thickness at the end of a
50 kyr Greenland spin-up with ice shelves and (2) observed thickness from

Figure

Difference (m yr

Close-ups of three regions with floating ice at the end of a 50 kyr
Greenland spin-up with ice shelves: Petermann Glacier

Figure

These results demonstrate a modeling challenge for Greenland: how to simulate
existing ice shelves in northern Greenland without permitting unrealistic
shelves in other regions. An eigencalving parameterization, suitably tuned,
can prevent shelves from extending into the open ocean, but in enclosed bays
there are unrealistic shelves with non-negligible dynamic effects. We were
unable to eliminate the unobserved shelves in CISM without also removing
observed shelves. This result suggests that important calving or melting
mechanisms could be missing in the model. For example,

Despite these biases, the results show that CISM is capable of simulating ice velocities broadly consistent with observations for both slow-flowing and fast-flowing parts of the Greenland ice sheet, with reasonable computational costs for multimillennial simulations with a higher-order Stokes approximation.

We have described CISM v2.1, which includes many innovations to support robust, accurate, and efficient ice sheet simulations in both idealized and real-world applications. The model incorporates a hierarchy of Stokes approximations, including SIA, SSA, depth-integrated higher-order, and 3-D higher-order. To solve the large elliptic systems associated with membrane stresses, CISM has an efficient native Fortran preconditioned conjugate gradient solver, along with links to third-party solver libraries (Trilinos and SLAP). CISM also adds test cases for higher-order models, including ISMIP-HOM and various shelf and stream cases. For each velocity solver and test case, we have verified that CISM solutions are consistent with community benchmarks. That is, the solutions are as accurate as expected given the simplifications in the various approximations.

CISM's structured rectangular grid has limitations; in particular, the grid
cannot be refined selectively near grounding lines and other regions
requiring high resolution. On the other hand, the structured grid lends
itself to straightforward algorithm development, debugging, creation of
forcing data sets, and analysis of results. CISM runs efficiently on a 4 km
Greenland grid, with throughput of

CISM has participated in the initMIP-Greenland experiments

CISM can be used for both stand-alone and coupled ice sheet simulations. CISM v2.1 is the dynamic ice sheet component of CESM2.0, released in June 2018. Compared to earlier CESM versions, CESM2.0 has more sophisticated ice sheet dynamics and physics (as described here), along with interactive coupling capabilities. These improvements will support increasingly realistic simulations of coupled ice sheet evolution.

Source code for CISM v2.1 can
be obtained by downloading a released version from

Following the release of CESM2.0 in June 2018, new CISM development was moved
to the Earth System Modeling Community Portal (ESCOMP). The latest code is
available on the public git repository at

Here, we describe the assembly of the terms in Eq. (

The first term on the LHS of each component of Eq. (

Each row or column vector has eight terms, one for each node of the
element. These terms can be evaluated to form a set of four

In the

In the weak form of the equations, each of the 64 coefficients in each
element matrix must be integrated over the element. (Since

We now specify the form of the basis functions and transform these functions
to the geometry of the element (which is irregular in the vertical direction
because of the sigma coordinate). We can then evaluate the basis function
derivatives at quadrature points. Glissade uses trilinear basis functions
defined on a reference cube. This cube is centered at the origin

The integrands in
Eqs. (

The LHS of Eq. (

Equations (

We now have the information needed to compute the integrands
(

The terms of the element matrices

If written in full, each global matrix would have as many rows and columns as
there are active nodes. These matrices, however, are sparse, with a maximum
of 27 nonzero terms per row (corresponding to a node and its 26 nearest
neighbors in a hexahedral lattice). Glissade therefore assembles and stores
arrays of dimension

The remaining assembly consists of evaluating the other terms in
Eq. (

The basal boundary terms in Eq. (

The integrand at a quadrature point has the form

This assembly method tends to smooth the

The lateral boundary terms in Eq. (

The lateral faces bordering the ocean are quadrilaterals that can be mapped
to a reference square. The integral over each face is found by summing over
four quadrature points. Basis functions are given by
Eq. (

The integrands have the form

The gravitational forcing terms in Eq. (

To compute these terms, we evaluate

The integrals in Eq. (

As described above for the assembly of

Once the matrix has been assembled, it may need to be adjusted for Dirichlet
boundary conditions (i.e., prescribed velocity values at certain nodes). A
common Dirichlet condition is to set

Suppose that at node

A further step is needed to maintain matrix symmetry, as required for the PCG
solver. Consider the term

WHL, SFP, and MJH were the primary developers of CISM; WHL led development of the Glissade dycore. KJE, GRL, MP, DMR, WJS, AGS, and PHW contributed to various parts of the code, including parallel infrastructure, performance metrics, links to Trilinos, and links to CESM. JHK, KJE, and ARB integrated CISM verification and validation tests into the LIVVkit package. ARB, SLB, JGF, JHK, GRL, and LV helped set up and analyze Greenland experiments. WHL wrote the paper with contributions from SFP, MJH, and GRL, and with input from all authors.

The authors declare that they have no conflict of interest.

CISM development was supported primarily by the Earth System Modeling
program, Office of Biological and Environmental Research (BER) of the US
Department of Energy's Office of Science. Additional support was provided by
the DOE's Office of Advanced Scientific Computing Research (ASCR), by BER's
Regional and Global Climate Modeling Program, and by the National Science
Foundation. This material is based upon work supported by the National Center
for Atmospheric Research, which is a major facility sponsored by the National
Science Foundation under cooperative agreement no. 1852977. Computing
resources (

We thank Jan Lenaerts and Brice Noël for providing surface forcing data sets from RACMO2. We are also grateful to Rob Arthern, Xylar Asay-Davis, Andy Aschwanden, Jeremy Bassis, Jed Brown, Ed Bueler, Steph Cornford, John Dukowicz, Heiko Goelzer, Dan Goldberg, Jesse Johnson, Eric Larour, Marcus Löfverström, Dan Martin, Mathieu Morlighem, Sophie Nowicki, Frank Pattyn, Tony Payne, David Pollard, Hélène Seroussi, Slawek Tulaczyk, Miren Vizcaíno, and Morgan Whitcomb for helpful discussions. We thank Johannes Sutter and one anonymous referee for constructive comments.Edited by: Philippe Huybrechts Reviewed by: Johannes Sutter and one anonymous referee