Source code for CIME.SystemTests.pea

"""
Implementation of the CIME PEA test.

Builds runs and compares a single processor mpi model to a model built using mpi-serial
(1) do a run with default mpi library (suffix base)
(2) do a run with mpi-serial (suffix mpi-serial)
"""

from CIME.SystemTests.system_tests_compare_two import SystemTestsCompareTwo
from CIME.XML.standard_module_setup import *
from CIME.XML.machines import Machines

logger = logging.getLogger(__name__)

[docs]class PEA(SystemTestsCompareTwo): def __init__(self, case): SystemTestsCompareTwo.__init__(self, case, separate_builds = True, run_two_suffix = 'mpi-serial', run_one_description = 'default mpi library', run_two_description = 'mpi-serial') def _common_setup(self): for comp in self._case.get_values("COMP_CLASSES"): self._case.set_value("NTASKS_{}".format(comp), 1) self._case.set_value("NTHRDS_{}".format(comp), 1) self._case.set_value("ROOTPE_{}".format(comp), 0) def _case_one_setup(self): pass def _case_two_setup(self): mach_name = self._case.get_value("MACH") mach_obj = Machines(machine=mach_name) if mach_obj.is_valid_MPIlib("mpi-serial"): self._case.set_value("MPILIB","mpi-serial") else: logger.warning("mpi-serial is not supported on machine '{}', " "so we have to fall back to default MPI and " "therefore very little is being tested".format(mach_name)) if os.path.isfile("Macros"): os.remove("Macros") self._case.case_setup(test_mode=True, reset=True)