isomip_plus¶
The isomip_plus
test group
(compass.ocean.tests.isomip_plus.IsomipPlus
) implements variants
of the ISOMIP+ experiments (see isomip_plus in the User’s Guide).
Here, we describe the shared framework for this test group and 3 test case
(Ocean0, Ocean1 and Ocean2) that have currently been implemented.
framework¶
The shared config options for the isomip_plus
test group
are described in isomip_plus in the User’s Guide.
Additionally, the test group has a shared namelist.forward
file with
a few common namelist options related to forcing and analysis members, as well
as a shared streams.forward.template
file that defines mesh
, input
,
forcing_data
, timeSeriesStatsMonthlyOutput
, restart
, output
,
globalStatsOutput
, and land_ice_fluxes
streams.
evap¶
The function compass.ocean.tests.isomip_plus.evap.update_evaporation_flux()
is used to update the “evaporation” rate and other surface fluxes near the
northern boundary that are used to mimic a spillway, preventing sea level from
rising indefinitely due to the input of freshwater from ice-shelf melting.
geom¶
The function compass.ocean.tests.isomip_plus.geom.process_input_geometry()
is used to apply a simple calving scheme based on a threshold in ice-shelf
thickness, then apply smoothing to the topography data. Optionally, the
ice draft can be scaled by a factor as a simple way to explore changing
ice-shelf topography.
The function compass.ocean.tests.isomip_plus.geom.interpolate_ocean_mask()
interpolates the ocean mask from the BISICLES grid of the input geometry to
the MPAS-Ocean mesh. The mask can later be used to cull land cells from the
MPAS mesh before interpolating other variables to the resulting culled mesh.
The function compass.ocean.tests.isomip_plus.geom.interpolate_geom()
interpolates the remaining geometric variables:
bottomDepthObserved
– the bedrock elevation (positive up)ssh
– the sea surface heightoceanFracObserved
– the fraction of the mesh cell that is oceanlandIceFraction
– the fraction of the mesh cell that is covered by an ice shelfsmoothedDraftMask
– a smoothed version of the floating mask that may be useful for determining where to alter the vertical coordinate to accommodate ice-shelf cavities
initial_state¶
The class compass.ocean.tests.isomip_plus.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 land cells. A vertical coordinate is generated,
with 36 layers of 20-m thickness in the open ocean by default. By default,
the Vertical coordinate is z-star
, meaning the 1D grid is
“squashed” down so the sea-surface height corresponds to the location of the
ice-ocean interface (ice draft). The initial temperature and salinity profiles
are computed along with zero initial velocity. Finally, forcing data fields
are produced for restoring to temperature and salinity profiles at the northern
boundary and for “evaporative” fluxes a the surface that are used to mimic a
spillway, removing water at the northern boundary and preventing runaway
sea-level rise from the the incoming ice-shelf meltwater.
For the time-varying version of a test case, initial_state
also computes
a set of time-varying landIcePressureForcing
and landIceDraftForcing
fields, based on the isomip_plus_forcing
config options (see
time_varying_Ocean0). The time evolution of the
landIcePressure
and landIceDraft
fields is determined by linear
interpolation in time between consecutive entries in the these forcing
fields, which are stored in a file land_ice_forcing.nc
.
Currently, the grounding line and calving front are held fixed in time, so
the field landIceFractionForcing
is the same as landIceFraction
in the initial condition for all time.
ssh_adjustment¶
The class compass.ocean.tests.isomip_plus.ssh_adjustment.SshAdjustment
performs sea-surface height adjustment described
Ice-shelf cavities. Starting from the initial condition
from initial_state
, the test case performs a number of iterations (10 by
default) of forward simulation followed by adjustment of the land-ice pressure
field.
forward¶
The class compass.ocean.tests.isomip_plus.forward.Forward
defines performance
and simulation
steps for running MPAS-Ocean from
the initial condition produced in the initial_state
step. A link to the
MPAS-Ocean executable is created when the test case is set up and MPAS-Ocean is
run (including updating PIO namelist options and generating a graph partition)
in run()
.
The performance
step is run for only 1 hour (appropriate for regression
testing). Then, potential temperature and salinity are plotted at the top and
bottom of the ocean and along a cross section of through the middle (y = 40 km)
of the domain.
The simulation
step runs for 1 month, then adjusts the “evaporative”
forcing based on the average of the melt fluxes from that month. Then,
namelist options are modified so the simulation is ready to run for another
month.
See isomip_plus for a fuller description of how to use the
performance
and simulation
steps.
streamfunction¶
The class compass.ocean.tests.isomip_plus.streamfunction.Streamfunction
defines a step for computing the barotropic (vertically integrated) and
overturning streamfunctions from the latest simulation results from the
simulation
step. This step is intended to be run repeatedly each time new
simulation results come in, but can also be run once at the end of a longer
simulation.
viz¶
The compass.ocean.tests.isomip_plus.viz.Viz
class defines a step
for performing visualization of ISOMIP+ results. This step should be run
after running simulation
any number of times and then streamfunction
(unless you set plot_streamfunctions = False
in the [isomip_plus_viz]
section of the config file). Movie frames an time series plots will appear
in the plots
directory; The movies themselves in movies
, and some
time series averaged only over the deepest parts of the ice draft in
timeSeriesBelow300m
.
misomip¶
The compass.ocean.tests.isomip_plus.misomip.Misomip
class defines
a step for interpolating the results to the standard MISOMIP grid and writing
out the results in the format expected by MISOMIP.
Note
There is currently an issue with fill values not being handled correctly that needs to be resolved before this step is fully useful.
ocean_test¶
The same class,
compass.ocean.tests.isomip_plus.ocean_test.OceanTest
, defines
the Ocean0, Ocean1 and Ocean2 test cases at various resolutions and with
various vertical coordinates. By default, these test cases only run 3 of the
7 available steps: initial_state
to create and mesh and initial condition,
ssh_adjustment
to perform 10 1-hour simulations used to balance the
land-ice pressure with the sea surface height, and performance
to run a
final 1-hour (15-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.
The optional simulation
, streamfunction
, viz
and misomip
steps,
described above, are used to perform longer simulations and perform analysis
and visualization.