"""
CIME ERP test. This class inherits from RestartTest
This is a pes counts hybrid (open-MP/MPI) restart bfb test from
startup. This is just like an ERS test but the pe-counts/threading
count are modified on restart.
(1) Do an initial run with pes set up out of the box (suffix base)
(2) Do a restart test with half the number of tasks and threads (suffix rest)
"""
from CIME.XML.standard_module_setup import *
from CIME.SystemTests.restart_tests import RestartTest
logger = logging.getLogger(__name__)
[docs]
class ERP(RestartTest):
def __init__(self, case, **kwargs):
"""
initialize a test object
"""
RestartTest.__init__(
self,
case,
separate_builds=True,
run_two_suffix="rest",
run_one_description="initial",
run_two_description="restart",
**kwargs
)
def _case_two_setup(self):
# halve the number of tasks and threads
for comp in self._case.get_values("COMP_CLASSES"):
ntasks = self._case1.get_value("NTASKS_{}".format(comp))
nthreads = self._case1.get_value("NTHRDS_{}".format(comp))
rootpe = self._case1.get_value("ROOTPE_{}".format(comp))
if nthreads > 1:
self._case.set_value("NTHRDS_{}".format(comp), int(nthreads / 2))
if ntasks > 1:
self._case.set_value("NTASKS_{}".format(comp), int(ntasks / 2))
self._case.set_value("ROOTPE_{}".format(comp), int(rootpe / 2))
RestartTest._case_two_setup(self)
def _case_one_custom_postrun_action(self):
self.copy_case1_restarts_to_case2()