The merry_go_round test group (compass.ocean.tests.merry_go_round.MerryGoRound) implements variants of the merry-go-round test case. Here, we describe the shared framework for this test group and the 2 test cases.


The shared config options for the merry_go_round test group are described in merry_go_round in the User’s Guide.

Additionally, the test group has a shared namelist.forward file with a few common namelist options related to run duration and disabled tendency terms, as well as a shared streams.forward file that defines mesh, input, restart, and output streams.


The class compass.ocean.tests.merry_go_round.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 periodicity in the x direction. A vertical grid is generated, with 50 layers of 10-m thickness each by default. Finally, the initial temperature, salinity, velocity, and debug tracer fields are computed.


The class compass.ocean.tests.merry_go_round.forward.Forward defines a step for running MPAS-Ocean from the initial condition produced in the initial_state step. If resolution is provided as an argument to the constructor, it is used to modify the time step (config_dt). MPAS-Ocean is run (including updating PIO namelist options and generating a graph partition) in run().


The compass.ocean.tests.merry_go_round.default.Default test performs a 6-hour run on 4 cores. The Validation is used to compare normalVelocity and tracer1 variables with a baseline.


The compass.ocean.tests.merry_go_round.convergence_test.ConvergenceTest performs three 6-hour runs at three different resolutions (with concomittent refinement of the time step). It doesn’t contain any Validation.

The analysis step defined by compass.ocean.tests.merry_go_round.covergence_test.analysis.Analysis makes a convegence plot of the root-mean-square-error of each run’s final state with respect to its initial state.

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