Source code for compass.ocean.tests.ice_shelf_2d

from compass.ocean.tests.ice_shelf_2d.default import Default
from compass.ocean.tests.ice_shelf_2d.restart_test import RestartTest
from compass.testgroup import TestGroup


[docs] class IceShelf2d(TestGroup): """ A test group for ice-shelf 2D test cases """
[docs] def __init__(self, mpas_core): """ mpas_core : compass.MpasCore the MPAS core that this test group belongs to """ super().__init__(mpas_core=mpas_core, name='ice_shelf_2d') for resolution in [2e3, 5e3]: for coord_type in ['z-star', 'z-level', 'single_layer']: self.add_test_case( Default(test_group=self, resolution=resolution, coord_type=coord_type)) self.add_test_case( Default(test_group=self, resolution=resolution, coord_type=coord_type, tidal_forcing=True)) self.add_test_case( RestartTest(test_group=self, resolution=resolution, coord_type=coord_type))
[docs] def configure(resolution, coord_type, config): """ Modify the configuration options for this test case Parameters ---------- resolution : float The resolution of the test case in meters coord_type : str The type of vertical coordinate (``z-star``, ``z-level``, etc.) config : compass.config.CompassConfigParser Configuration options for this test case """ dx = 50e3 # width of domain in m dy = 220e3 # length of domain in m dc = resolution nx = int(dx / resolution) # ny needs to be even because it is nonperiodic ny = 2 * int(dy / (2. * resolution)) config.set('ice_shelf_2d', 'nx', f'{nx}') config.set('ice_shelf_2d', 'ny', f'{ny}') config.set('ice_shelf_2d', 'dc', f'{dc}') config.set('vertical_grid', 'coord_type', coord_type) if coord_type == 'z-level': # we need more vertical resolution config.set('vertical_grid', 'vert_levels', '100') elif coord_type == 'single_layer': config.set('vertical_grid', 'vert_levels', '1') config.set('vertical_grid', 'coord_type', 'z-level') config.set('vertical_grid', 'partial_cell_type', 'None')