baroclinic_channel

The baroclinic channel tests in polaris.ocean.tasks.baroclinic_channel are variants of the Baroclinic Eddies test case (see baroclinic channel) at 3 resolutions (1, 4 and 10 km). Here, we describe the 5 test cases and their shared framework.

framework

The shared config options for baroclinic_channel tests are described in baroclinic channel in the User’s Guide.

Additionally, the tests share a forward.yaml file with a few common model config options related to run duration and default horizontal and vertical momentum and tracer diffusion, as well as defining mesh, input, restart, and output streams.

init

The class polaris.ocean.tasks.baroclinic_channel.init.Init 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 50-m thickness each by default. Next, the initial temperature field is computed along with uniform salinity and zero initial velocity. Finally, if a baseline is available, the step ensures that of temperature, salinity and layerThickness in the initial_state.nc file identical to those same fields from the baseline run.

The same init step is shared by all tasks at a given resolution.

forward

The class polaris.ocean.tasks.baroclinic_channel.forward.Forward defines a step for running MPAS-Ocean from the initial condition produced in the init step. If nu is provided as an argument to the constructor, the associate namelist option (config_mom_del2) will be given this value. Namelist and streams files are updated in polaris.ocean.tasks.baroclinic_channel.forward.Forward.dynamic_model_config() with time steps determined algorithmically based on config options. The number of cells is approximated from config options in polaris.ocean.tasks.baroclinic_channel.forward.Forward.compute_cell_count() so that this can be used to constrain the number of MPI tasks that Polaris tasks have as their target and minimum (if the resources are not explicitly prescribed). For MPAS-Ocean, PIO namelist options are modified and a graph partition is generated as part of runtime_setup(). Next, the ocean model is run. Finally, validation of temperature, salinity, layerThickness and normalVelocity in the output.nc file are performed against a baseline if one is provided when calling polaris setup.

validate

The class polaris.ocean.tasks.baroclinic_channel.validate.Validate defines a step for validating outputs in two step directories against one another. This step ensures that temperature, salinity, layerThickness and normalVelocity are identical in output.nc files in the two steps.

default

The polaris.ocean.tasks.baroclinic_channel.default.Default test performs a 3-time-step run on 4 cores.

decomp

The polaris.ocean.tasks.baroclinic_channel.decomp.Decomp performs a 15-minute run once on 4 cores and once on 8 cores. The validate step ensures that the two runs produce identical results.

restart

The polaris.ocean.tasks.baroclinic_channel.restart.Restart 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. The validate step ensures that the two runs produce identical results.

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

The full.yaml file is used to set up the run duration and restart frequency of the full run, while restart.yaml makes sure that the restart step begins with a restart at minute 5 and runs for 5 more minutes.

threads

The polaris.ocean.tasks.baroclinic_channel.threads.Threads performs a 15-minute run once on 4 cores, each with 1 thread and once on 4 cores, each with 2 threads. The validate step ensures that the two runs produce identical results.

Note

The ocean/baroclinic_channel/10km/thread/1thread step is identical to ocean/baroclinic_channel/10km/default/forward. If ocean/baroclinic_channel/10km/thread is included in a suite, it would be redundant to include ocean/baroclinic_channel/10km/default in the suite as well.

rpe

The polaris.ocean.tasks.baroclinic_channel.rpe.Rpe performs a longer (20 day) integration of the model forward in time at 5 different values of the viscosity. Versions of the test case exist at each of the 3 default horizontal resolutions (1, 4 and 10 km).

The analysis step defined by polaris.ocean.tasks.baroclinic_channel.rpe.analysis.Analysis makes plots of the final results with each value of the viscosity.

This test is resource intensive enough that it is not used in regression testing.