baroclinic_gyre

The baroclinic_gyre test group implements variants of the Baroclinic ocean gyre set-up from the MITgcm test case.

This test case is described in detail in the User guide (see baroclinic_gyre). Here, we describe the shared framework for this test group.

Framework

At this stage, the test case is available at 80-km and 20-km horizontal resolution. By default, the 15 vertical layers vary linearly in thickness with depth, from 50m at the surface to 190m at depth (full depth: 1800m).

The test group includes 2 test cases, called performance_test for a short (3-time-step) run, and 3_year_test for a 3-year simulation. Note that 3 years are insufficient to bring the standard test case to full equilibrium. Both test cases have 2 steps, initial_state, which defines the mesh and initial conditions for the model, and forward, which performs the time integration of the model.

Additionally, the test group has a shared namelist.forward file with a few common namelist options related to horizontal and vertical momentum and tracer diffusion, as well as a shared streams.forward file that defines mesh, input, restart, and output streams.

cull_mesh

The class compass.ocean.tests.baroclinic_gyre.cull_mesh.CullMesh defines a step for setting up the mesh for the baroclinic gyre test case.

First, a mesh appropriate for the resolution is generated using compass.mesh.QuasiUniformSphericalMeshStep. Then, the mesh is culled to keep a single ocean basin (with lat, lon bounds set in .cfg file).

initial_state

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

A vertical grid is generated, with 15 layers of thickness that increases linearly with depth (10m increase by default), from 50m at the surface to 190m at depth (full depth: 1800m). Finally, the initial temperature field is initialized with a vertical profile to approximate the discrete values set in the MITgcm test case, uniform in horizontal space. The surface and bottom values are set in the .cfg file. Salinity is set to a constant value (34 psu, set in the .cfg file) and initial velocity is set to zero.

The initial_state step also generates the forcing, defined as zonal wind stress that varies with latitude, surface temperature restoring that varies with latitutde, and writes it to forcing.nc.

forward

The class compass.ocean.tests.baroclinic_gyre.forward.Forward defines a step for running MPAS-Ocean from the initial condition produced in the initial_state step.

performance_test

ocean/baroclinic_gyre/80km/performance_test is the default version of the baroclinic eddies test case for a short (3 time steps) test run and validation of prognostic variables for regression testing. Currently, only the 80-km and 20-km horizontal resolutions are supported.

3_year_test

ocean/baroclinic_gyre/80km/3_year_test performs a longer (3 year) integration of the model forward in time. The point is to (ultimately) compare the quasi- steady state with theroretical scaling and results from other models. Currently, only the 80-km and 20-km horizontal resolutions are supported. Note that 3 years is not long enough to reach steady state. For the 80km configuration, the estimated time to equilibration is roughly 50 years. For a detailed comparison of the mean state against theory and results from other models, the mean state at 100 years may be most appropriate to be aligned with the MITgcm results.

moc

The class compass.ocean.tests.baroclinic_gyre.moc.Moc defines a step for computing the zonally-averaged meridional overturning in the baroclinic gyre test case.

It calculates the moc by summing the monthly mean vertical velocities in latitude bins (the bin width dlat is set in the .cfg file). It outputs a netcdf file moc.nc in the local folder, with the monthly value of zonally-averaged meriodional overturning in Sv.

By default, this step is only called after the 3_year_test step since the performance_test is too short to output monthly mean output.

viz

The class compass.ocean.tests.baroclinic_gyre.viz.Viz defines a step for visualizing output from baroclinic gyre. Currently, it includes 3 separate plots.

First, it plots 2 timeseries to assess the test case spin-up: the top plot is layer-mean kinetic energy over 5 different layers (to show dynamical spin-up), while the bottom plot is layer mean temperature (to show thermal adjustment). The values plotted are all basin-averaged monthly output.

It also plots the time-averaged final state of the simulation. The averaging period is set up in the .cfg file (by default, 1 year). Plots include time-mean sea surface height (SSH), sea surface temperature, and surface heat flux (in W/m2, due to surface restoring) with contours of SSH superimposed. A separate figure is generated showing the time-mean overturning streamfunction, based on the moc.nc file generated in the moc step described above.

By default, this step is only called after the 3_year_test step since the performance_test is too short to output monthly mean output.