ismip6_run

The ismip6_run test group (compass.landice.tests.ismip6_run) sets up experiments from the ISMIP6 experimental protocol. Additionally, the test group has an option to setup coupled MALI-Sea Level Model (SLM) simulations. (see ismip6_run).

framework

There is no shared functionality for the ismip6_run test group. Shared functions may be added if additional test cases are added and the needed functionality can be generalized.

ismip6_ais_proj2300

The compass.landice.tests.ismip6_run.ismip6_ais_proj2300.Ismip6AisProj2300 sets up an ensemble of ISMIP6 Antarctica 2300 (standalone MALI and coupled MALI-SLM) simulations. The constructor (__init__) does nothing other than allow the ismip6_ais_proj2300 test case to be listed by compass list without having all individual experiments listed in a verbose listing. Each individual experiment is a step rather than a test case to avoid having excessive subdirectories.

The configure method is where the experiments to be set up are determined. The config option exp_list is parsed and each experiment to be included is set up as a step of the test case by calling the SetUpExperiment constructor (__init__). All of the experiments are removed from steps_to_run, because the experiments (steps) are not meant to be run together through the test case, which is a contrary design to most compass test cases.

The run method of the test case generates an error instructing the user to submit batch jobs for each experiment individually.

set_up_experiment

The class compass.landice.tests.ismip6_run.ismip6_ais_proj2300.set_up_experiment.SetUpExperiment defines a step for a single ISMIP6 experiment (model run). The constructor (__init__) stores the experiment name.

The setup method actually sets up an experiment by taking a baseline configuration and then namelist and streams as necessary to define the ISMIP6 experiment requested. See the ISMIP6 website for the list of experiment definitions.

A graph.info file is created for each run. Additionally, a job script is written for the run so that the run can be submitted as an independent slurm job. Finally, a symlink to the compass load script is added to the run work directory, which compass does not do by default.

The run runs MALI for the given experiment. It also builds mapping files between MALI and the SLM by calling a local method _build_mapping_files if the SLM option in the config file is enabled.

Important notes for analyzing coupled MALI-SLM simulations

Currently, MALI uses a planar mesh that projects the south pole with polar stereographic projection of ellipsoidal Earth, and the sea-level model uses a global grid of spherical Earth. This inconsistency in the Earth’s assumed shape (ellipsoid vs. sphere) in MALI and the SLM causes discrepancies in the comparison of post-simulation ice mass calculations from the model outputs. To address this issue, an interim solution has been made to project the southern polar region onto the MALI planar mesh assuming a sphere (this is done by setting the lat/long in the MALI mesh using the ‘aid-bedmap2-sphere’ projection string in calling the function in ‘set_lat_lon_fields_in_planar_grid.py’. Thus, the resulting MALI mesh for coupled MALI-SLM simulations that are setup from this testgroup have the lat/long values based off sphere. Once the simulation outputs are generated, it is necessary to calculate and apply the scaling factors to the MALI outputs to correct for the areal distortion arose from projecting the south pole on a sphere onto plane. Only after applying the scaling factor, the MALI outputs will be comparable to the SLM outputs. The equations to calculate the scaling factors are shown in Eqn. 21-4 in https://pubs.usgs.gov/pp/1395/report.pdf An example of the calculation for the MALI-SLM case can also be found in the compass testgroup/testcase/ compass/landice/test/slm/circ_icesheet/, visualize step (https://github.com/MPAS-Dev/compass/pull/748).