ice_shelf_2d

The ice_shelf_2d test group (compass.ocean.tests.ice_shelf_2d.IceShelf2d) implements a very simplified ice-shelf cavity that is invariant in the x direction (see ice_shelf_2d). Here, we describe the shared framework for this test group and the 2 test cases.

framework

The shared config options for the ice_shelf_2d test group are described in ice_shelf_2d in the User’s Guide.

Additionally, the test group has a shared namelist.forward file with a few common namelist options related to run duration, time step, equation of state, land-ice fluxes and horizontal viscosity, as well as a shared streams.forward file that defines mesh, input, restart, output and globalStatsOutput streams.

initial_state

The class compass.ocean.tests.ice_shelf_2d.initial_state.InitialState defines a step for setting up the initial state for each test case.

First, a mesh appropriate for the resolution is generated using mpas_tools.planar_hex.make_planar_hex_mesh(). Then, the mesh is culled to remove periodicity in the y direction. A vertical grid is generated, with 20 layers of 100-m thickness each by default. Then, the 1D grid is either “squashed” down so the sea-surface height corresponds to the location of the ice-ocean interface (ice draft) using a z-star Vertical coordinate or top layers are removed where there is an ice shelf using a z-level coordinate. Finally, the initial salinity profile is computed along with uniform temperature and zero initial velocity.

ssh_adjustment

The class compass.ocean.tests.ice_shelf_2d.ssh_adjustment.SshAdjustment performs sea-surface height adjustment described Ice-shelf cavities. Starting from the initial condition from initial_state, a number of iterations of forward simulation followed by adjustment of the land-ice pressure field are performed. The number of iterations depend on the test case.

forward

The class compass.ocean.tests.ice_shelf_2d.forward.Forward defines a step for running MPAS-Ocean from the initial condition produced in the initial_state step. A link to the MPAS-Ocean executable is created during setup() and the MPAS-Ocean is run (including updating PIO namelist options and generating a graph partition) in run().

A few namelist options are set and streams are added when frazil is included:

if with_frazil:
    options = {'config_use_frazil_ice_formation': '.true.',
               'config_frazil_maximum_depth': '2000.0'}
    self.add_namelist_options(options)
    self.add_streams_file('compass.ocean.streams', 'streams.frazil')

viz

The class compass.ocean.tests.ice_shelf_2d.viz.Viz does a quick-and-dirty visualization of the vertical coordinate (z-star or z-level).

default

The compass.ocean.tests.ice_shelf_2d.default.Default test case includes the following default config options:

# Options relate to adjusting the sea-surface height or land-ice pressure
# below ice shelves to they are dynamically consistent with one another
[ssh_adjustment]

# the number of iterations of ssh adjustment to perform
iterations = 15

The test creates and mesh and initial condition, performs 15 iterations of SSH adjustment to make sure the SSH is as close as possible to being in dynamic balance with the land-ice pressure. Then, it performs a 10-minute (2-time-step) forward simulation. If a baseline is provided when calling compass setup, a large number of variables (both prognostic and related to land-ice fluxes) are checked to make sure they match the baseline.

restart_test

The compass.ocean.tests.ice_shelf_2d.restart_test.RestartTest includes the following default config options:

# Options relate to adjusting the sea-surface height or land-ice pressure
# below ice shelves to they are dynamically consistent with one another
[ssh_adjustment]

# the number of iterations of ssh adjustment to perform
iterations = 2

The test creates and mesh and initial condition, performs 2 iterations of SSH adjustment to make sure the SSH is not too far from dynamic balance with the land-ice pressure. (Fewer iterations are performed in this test case to cut down on total runtime.)

Then, this test performs a 10-minute run once on 4 cores, saving restart files every time step (every 5 minutes), then it performs a restart run starting at minute 5 for 5 more minutes. It ensures that a large number of variables (prognostic, related to land-ice fluxes, and related to frazil ice formation) are identical at the end of the two runs (as well as with a baseline if one is provided when calling compass setup).

Restart files are saved at the test-case level in the restarts directory, rather than within each step, since they will be used across both the full and restart steps.

The namelist.full and streams.full files are used to set up the run duration and restart frequency of the full run, while namelist.restart and streams.restart make sure that the restart step begins with a restart at minute 5 and runs for 5 more minutes.