single_column
The single column tests in polaris.tasks.ocean.single_column
exercise
the vertical dynamics of the ocean model only. The test cases are:
Testing the vertical mixing library, CVMix, under surface forcing
Testing the Ideal Age tracer under surface forcing
Testing the Coriolis term by quantifying the inertial frequency
Testing the Ekman solution under wind forcing
Here, we describe the tests and their shared framework.
framework
The shared config options for the single_column
tests
are described in single column in the User’s Guide.
Additionally, the tests share a forward.yaml
file with
a few common model config options related to the initial state, coriolis
forcing, run duration and surface forcing, as well as defining mesh
,
input
, restart
, and output
, streams.
init
The class polaris.tasks.ocean.single_column.init.Init
defines a step for setting up the initial state for each test case.
4×4 planar hex mesh is generated for this task using
mpas_tools.planar_hex.make_planar_hex_mesh()
. The number of cells in
each dimension can be modified with config options single_column:nx
,
single_column:ny
.
By default, the mesh is 960 m in horizontal resolution and is not intended to
resolve any lateral gradients. The horizontal resolution can be modified with
config option single_column:resolution
A vertical grid is generated, with 100 layers of 4 m thickness each by default.
The
initial temperature and salinity field are computed with variability in the
vertical dimension only. The config options that determine these profiles are
located in section single_column
and include:
Option |
Description |
---|---|
|
Initial surface values |
|
Gradients within the mixed layer |
|
Profile discontinuity across the mixed layer |
|
Interior (below mixed layer) gradients |
|
Mixed layer depths (typically ~40 m) |
For cases with ideal age tracers, an initial profile for the ideal age tracer is also constructed and is equal to zero seconds throughout the column.
A forcing netCDF file is also created based on the config options given in the
single_column_forcing
section. A subset of those options are:
Option |
Description |
---|---|
|
Surface restoring rates |
|
Target surface values |
|
Interior restoring rates |
|
Surface heat flux components |
|
Surface freshwater fluxes |
|
Wind stress values |
forward
The class polaris.tasks.ocean.single_column.forward.Forward
defines a step for running MPAS-Ocean from the initial condition produced in
the init
step. The ocean model is run.
viz
The class polaris.tasks.ocean.single_column.viz.Viz
produces figures comparing the initial and final profiles of temperature and
salinity.
cvmix
The polaris.tasks.ocean.single_column.cvmix.CVMix
test performs a 10-day run on 1 cores. Then, validation of temperature
,
salinity
, layerThickness
and normalVelocity
are performed against a
baseline if one is provided when calling polaris setup.
ekman
The polaris.tasks.ocean.single_column.cvmix.CVMix
test performs a 5-day run on 1 cores. Then, validation of temperature
,
salinity
, layerThickness
and normalVelocity
are performed against a
baseline if one is provided when calling polaris setup.
ideal age
The polaris.tasks.ocean.single_column.cvmix.IdealAge
test
performs the same 10-day run on 1 cores as the
polaris.tasks.ocean.single_column.cvmix.CVMix
test, but with a
single ideal age tracer included. An additional forward.yaml
file is
included in the ideal age tracer test case for enabeling on the ideal age
tracers and ideal age surface forcing, as well as for defining
idealAgeTracers
streams. Validation of temperature
, salinity
,
and idealAgeTracers
are performed against a baseline if one is provided
when calling polaris setup.
inertial
The polaris.tasks.ocean.single_column.inertial.Inertial
test performs a 10-day run on 1 cores. Then, validation of temperature
,
salinity
, layerThickness
and normalVelocity
are performed against a
baseline if one is provided when calling polaris setup. Then, the
analysis step is run, and the viz step is optionally run.
analysis
The polaris.tasks.ocean.single_column.inertial.analysis.Analysis
compares the inertial frequency with its theoretical value and induces a
failure if the frequency is more than a given fractional difference from
theory, as determined by the config option
single_column_inertial:period_tolerance_fraction
.