Source code for compass.ocean.tests.baroclinic_channel

from compass.testgroup import TestGroup
from compass.ocean.tests.baroclinic_channel.decomp_test import DecompTest
from compass.ocean.tests.baroclinic_channel.default import Default
from compass.ocean.tests.baroclinic_channel.restart_test import RestartTest
from compass.ocean.tests.baroclinic_channel.rpe_test import RpeTest
from compass.ocean.tests.baroclinic_channel.threads_test import ThreadsTest


[docs]class BaroclinicChannel(TestGroup): """ A test group for baroclinic channel 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='baroclinic_channel') for resolution in ['1km', '4km', '10km']: self.add_test_case( RpeTest(test_group=self, resolution=resolution)) for resolution in ['10km']: self.add_test_case( DecompTest(test_group=self, resolution=resolution)) self.add_test_case( Default(test_group=self, resolution=resolution)) self.add_test_case( RestartTest(test_group=self, resolution=resolution)) self.add_test_case( ThreadsTest(test_group=self, resolution=resolution))
[docs]def configure(resolution, config): """ Modify the configuration options for one of the baroclinic test cases Parameters ---------- resolution : str The resolution of the test case config : compass.config.CompassConfigParser Configuration options for this test case """ res_params = {'10km': {'nx': 16, 'ny': 50, 'dc': 10e3}, '4km': {'nx': 40, 'ny': 126, 'dc': 4e3}, '1km': {'nx': 160, 'ny': 500, 'dc': 1e3}} comment = {'nx': 'the number of mesh cells in the x direction', 'ny': 'the number of mesh cells in the y direction', 'dc': 'the distance between adjacent cell centers'} if resolution not in res_params: raise ValueError(f'Unsupported resolution {resolution}. Supported ' f'values are: {list(res_params)}') res_params = res_params[resolution] for param in res_params: config.set('baroclinic_channel', param, str(res_params[param]), comment=comment[param])