overflow
The ocean/overflow test group induces a density current flowing down a
continental slope and includes the following test cases:
smoke_test_horiz_adv_order_2— short (12 min) smoke test using horizontal advection order = 2 for rapid CI checks.smoke_test_horiz_adv_order_2_del4— same as (1) but with del4 viscosity enabled with the default viscosity value.smoke_test_horiz_adv_order_3— short (12 min) smoke test using horizontal advection order = 3 for rapid CI checks.smoke_test_horiz_adv_order_4— short (12 min) smoke test using horizontal advection order = 4 for rapid CI checks.rpe— long run (40 days) exploring Resting Potential Energy (RPE) evolution for a set of Laplacian viscosities.
Each of these tasks (plus the _del4 variants of orders 3 and 4) is
available in three variants that combine the equation of state (EOS) with
the vertical coordinate used for the initial condition:
ocean/planar/overflow/linear/zstar— linear EOS with a z-star initial condition (the original configuration).ocean/planar/overflow/linear/pstar— linear EOS with a p-star initial condition, to isolate the effect of the vertical coordinate.ocean/planar/overflow/nonlinear/pstar— nonlinear EOS with a p-star initial condition, mirroring the configuration of the realistic global tasks in a small, fast-running idealized setting.
The nonlinear EOS is TEOS-10 for Omega and Jackett-McDougall (jm), the
closest available nonlinear EOS, for MPAS-Ocean.
supported models
These tasks support MPAS-Ocean and Omega.
description
This test case derives from Petersen et al. 2015. A cold, dense block of water starts out on a flat continental shelf and flows down a continental slope, ending up along a deep, flat seafloor. This test case is generally used for evaluating spurious mixing associated with different vertical coordinate systems in the presence of bottom topography.
mesh
The mesh is planar and the resolution is specified by config option
overflow:resolution, which defaults to 1 km.
The horizontal dimensions of the domain are set by config options
overflow:lx and overflow:ly, defaulting to 200 km by 40 km.
The domain is periodic on the zonal boundaries and solid on the meridional boundaries.
vertical grid
The topography includes a continental slope defined by
where \(z_{shelf}\) corresponds to config option overflow:shelf_depth,
\(z_{floor}\) to overflow:max_bottom_depth, \(x_{slope}\) to overflow:x_slope
and \(L_{slope}\) to overflow:L_slope.
Any vertical coordinate and number of vertical levels above the minimum needed for baroclinic dynamics may be used.
# Options related to the vertical grid
[vertical_grid]
# Depth of the bottom of the ocean (m)
bottom_depth = 2000.0
# Number of vertical levels
vert_levels = 60
# The type of vertical grid
grid_type = uniform
# The type of vertical coordinate (e.g. z-level, z-star)
coord_type = z-star
# Whether to use "partial" or "full", or "None" to not alter the topography
partial_cell_type = partial
The two pstar trees override the vertical grid to use the p-star
coordinate. Pseudo-depth is not geometric depth, so the pseudo-height grid
must reach deeper than the pressure at the deepest geometric bathymetry or
the domain would be artificially truncated. The grid is 2400 m deep with
72 uniform levels (a ~19% buffer over the worst case while preserving the
~33.3 m layer spacing of the z-star grid and making the number of levels
a multiple of 16, preferred for Omega performance), and the geometric
bottom depth remains 2000 m:
# Options related to the vertical grid
[vertical_grid]
# The type of vertical coordinate (e.g. z-level, z-star)
coord_type = p-star
# Pseudo-depth of the bottom of the pseudo-height grid (m)
bottom_depth = 2400.0
# Number of vertical levels
vert_levels = 72
# Options related to the overflow case
[overflow]
# Bottom depth at bottom of overflow (m): the geometric bottom depth,
# decoupled from the deeper pseudo-depth grid above
max_bottom_depth = 2000.0
initial conditions
Salinity is constant throughout the domain (at 35 PSU). The
initial temperature is bimodal with low temperature throughout the continental
shelf region set by the config option overflow:low_temperature (default value of 10
\(^{\circ}\)C) and high temperature over the slope and deep ocean set by the config
option overflow:high_temperature (default value of 20 \(^{\circ}\)C). The transition between
the two zones is set by the config option overflow:x_dense (default value of 20 km).
This perturbation initiates slumping of the cold, denser water mass and flow
down the slope as a bottom boundary current.
The initial state is at rest. The coriolis parameter is set to 0.
In the nonlinear tree, the temperature and salinity profiles are
interpreted as conservative temperature (CT) and absolute salinity (SA).
Omega receives CT and SA directly. For MPAS-Ocean, CT is converted to
potential temperature and SA to practical salinity using the
GSW toolkit, evaluated at a
nominal lon/lat location (config options ocean:nominal_lon and
ocean:nominal_lat, both defaulting to 0 degrees) since the planar
mesh has no geographic location. The Polaris-side (diagnostic) density
uses TEOS-10 for both models; this is a documented approximation of
MPAS-Ocean’s Jackett-McDougall EOS, acceptable because neither model
reads the initial density.
forcing
N/A
vertical mixing
The tasks run with constant background vertical mixing (diffusivity
1.0e-5 m\(^2\)/s, viscosity 1.0e-4 m\(^2\)/s) plus convective mixing
(convective diffusivity and viscosity 1.0 m\(^2\)/s), matching the compass
version of this test; shear mixing is disabled. MPAS-Ocean uses CVMix
(the constant background scheme); Omega uses its implicit VertMix
background and convective mixing, which is equivalent for this
configuration.
Both models run with explicit bottom drag (drag coefficient 1.0e-3). For
Omega, the bottom-drag tendency is enabled through the mapped MPAS-Ocean
debug flag config_disable_vel_explicit_bottom_drag = false, an interim
approach until Omega supports implicit bottom drag. Compared with the
compass version of this test, split-explicit time stepping and implicit
bottom drag remain disabled because they are not yet available in Omega:
the tasks use the RK4 time integrator, and implicit bottom drag will be
enabled in both models once Omega supports it.
config options
These config options are common to all overflow tests:
# Options related to the overflow case
[overflow]
# Time integration scheme
time_integrator = RK4
# Timestep per km horizontal resolution (s)
dt_per_km = 7.5
# Barotropic timestep per km horizontal resolution (s)
btr_dt_per_km = 2.5
# The width of the domain in the across-slope dimension (km)
ly = 40
# The length of the domain in the along-slope dimension (km)
lx = 200
# Distance from two cell centers (km)
resolution = 2.0
# Bottom depth at bottom of overflow
max_bottom_depth = ${vertical_grid:bottom_depth}
# Shelf depth (m)
shelf_depth = 500.0
# Cold water range (km)
x_dense = 20.0
# Lateral position of the shelf-break (km)
x_slope = 40.0
# Length-scale of the slope (km)
L_slope = 7.0
# Constant salinity (PSU)
salinity = 35.0
# Lower temperature (deg C)
lower_temperature = 10.0
# Higher temperature (deg C)
higher_temperature = 20.0
# Default viscosity (m^2/s)
default_viscosity = 1000.0
# Default biharmonic (del4) viscosity (m^4/s), scaled ~ dx^3 for 2 km resolution
default_del4_viscosity = 5.0e7
# Default horizontal advection order
default_horiz_adv_order = 2
The two linear trees use the shared linear EOS from
polaris.ocean.eos linear.cfg (see the [ocean] config section), which
is convenient for computing RPE. The nonlinear tree instead uses the
shared teos10.cfg, which sets eos_type = teos-10 (mapped to
Jackett-McDougall for MPAS-Ocean).
cores
The number of cores is determined by goal_cells_per_core and
max_cells_per_core in the ocean section of the config file.
smoke_test
description
There are three smoke test cases corresponding to horizontal advection orders
2, 3, and 4: smoke_test_horiz_adv_order_2, smoke_test_horiz_adv_order_3,
and smoke_test_horiz_adv_order_4. Each smoke test is the same as described
above except the run is stopped before it is allowed to reach equilibrium to
facilitate rapid testing. The horizontal advection order is controlled by the
horiz_adv_order argument to the SmokeTest task and passed through to the
forward step.
mesh
See overflow.
vertical grid
See overflow.
initial conditions
See overflow.
forcing
See overflow.
time step and run duration
The time step for forward integration is set by dt_per_km and the model
resolution. The run duration is 12 minutes.
config options
The config options specific to the smoke test cases are:
[overflow_smoke_test]
# Run duration
run_duration = 12.
run_duration_units = minutes
# Output interval
output_interval = 1.
output_interval_units = seconds
cores
See overflow.
rpe
description
The rpe case is similar to the smoke tests except it runs to 40 days by which
time the dense blob is mostly at depth. It also includes several forward runs
corresponding to different values of the Laplacian viscosity specified by the
config option overflow_rpe:viscosities. The analysis step is a substitute for the viz step as
it includes the same cross-section visualizations of temperature but also
includes a computation and plot of the evolution of the Resting Potential
Energy (RPE) for each forward run.
config options
The config options specific to the RPE case are:
[overflow_rpe]
# Run duration
run_duration = 40.
run_duration_units = days
# Output interval
output_interval = 6.
output_interval_units = hours
# Viscosity values to test for rpe test case
viscosities = 1, 5, 10, 100, 1000
# The time at which to plot cross-sections in the analysis step (days)
plot_time = ${overflow_rpe:run_duration}
# min and max temperature range for transect plots
min_temp = ${overflow:lower_temperature}
max_temp = ${overflow:higher_temperature}
Note that in the nonlinear tree, the RPE analysis sorts the in-situ
density from a nonlinear EOS, so the result is only an approximate RPE
measure (with a nonlinear EOS, the potential energy of the sorted state
depends on the pressure at which density is evaluated).