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, **kwargs): SystemTestsCompareTwo.__init__( self, case, separate_builds=True, run_two_suffix="mpi-serial", run_one_description="default mpi library", run_two_description="mpi-serial", **kwargs, ) 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")