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])