Skip to content

Milestone: CMEPS 0.2

Rocky Dunlap edited this page Jul 3, 2018 · 11 revisions

This milestone includes configurations of the Community Mediator for Earth Prediction Systems (CMEPS) with active ocean and sea ice components, options for both active and data atmosphere components, and a data runoff component. All components are coupled through National Unified Operational Prediction Capability (NUOPC) interfaces. Workflow is provided via the Common Infrastructure for Modeling the Earth (CIME), which includes the data models and automated tools for downloading associated forcing files; a case control system to manage configuration, compilation, and execution; and a NUOPC-compliant Driver and Mediator. All associated CIME and model component repositories are managed in the UFSCOMP umbrella repository.

The supported coupled applications are not scientifically validated in this milestone. This milestone demonstrates a methodology and set of workflow tools for development and testing of coupled modeling applications.

Component sets (compsets) are used extensively and provide a shorthand notation for known configurations of model components. This release includes multiple compsets, as detailed below, and each compset tests a different aspects of the coupled system in isolation. Some compsets are focused on testing an individual model component, such as the ocean model, and some compsets are focused on testing aspects of the coupling infrastructure itself, such as ensuring correct data flow and grid remapping through the Mediator. A capability enabling isolated and incremental development is the use of data models, which, in most cases, provide static data from files thereby eliminating coupling feedbacks in the system for diagnosing the behavior of one or more components. For example, the "I" compset is used to test the land model in isolation by forcing it with a data atmosphere component. The "DTEST" compset tests the ice model by forcing it with a data atmosphere and a data ocean model run in a mode that prognostically computes sea surface temperatures but does not include ocean dynamics. The "G" compset builds on the "DTEST" compset by introducing a fully active ocean model to interact with the sea ice, but leaving the data atmosphere for static meteorological forcings. The "X" compset includes only "dead" model components that provide analytical data in order to test grid remapping through the Mediator.

The milestone uses the CIME testing infrastructure to compare output from a suite of test cases against previously generated baselines. A complete list of tests appears below. Baselines, which include history output from the active components in a coupled run, are provided on the supported platforms. The CIME testing infrastructure builds and runs all of the tests and provides a PASS or FAIL status for each test against the baseline.

The milestone also demonstrates an approach to repository management in which a single umbrella repository maintains a set of links to individual component repositories such that strict versions of the constituent component codes can be downloaded with a single command. Ideally, the referenced repositories would be either the authoritative repository of the model component or a fork of the authoritative repository such that changes have a path back to the main development trunk, reducing the likelihood of code divergence and site-specific implementations of community models. This has not been fully achieved in this milestone because several of the model code branches are currently in the CESM development Subversion repository which requires special credentials. A workaround has been provided as we are working to fully resolve this. See the Limitations section below for more details.

Supported Platforms

This milestone has been tested successfully on these platforms:

  • Cheyenne/NCAR
  • Hobart/NCAR
  • Theia/NOAA

Supported Compsets

Component sets or compsets are a shorthand for known configurations of model components. This milestone release includes the compsets listed below. More information about compsets and the compset naming convention is available in the CIME documentation.

  • BMOM (2000_CAM40_CLM45%SP_CICE_MOM6_SROF_SGLC_SWAV): A fully coupled system with four active components: the Community Atmosphere Model (CAM) with version 4 physics, the Community Land Model (CLM) version 4.5, Los Alamos Sea Ice Model (CICE), and the Modular Ocean Model version 6 (MOM6).
  • CMOM (2000_DATM%NYF_SLND_DICE%SSMI_MOM6_DROF%NYF_SGLC_SWAV): Active ocean (MOM6) forced by a data atmosphere with Coordinated Ocean-ice Reference Experiments version 2 (COREv2) Normal Year Forcings (NYF). The data ice component reads sea ice extent from Special Sensor Microwave Imager (SSMI) climatological data and computes a surface flux which is sent to the Mediator. The data river provides climatological normal year forcings.
  • CMOM_IAF (2000_DATM%IAF_SLND_DICE%IAF_MOM6_DROF%IAF_SGLC_SWAV): Same as CMOM compset, but uses the COREv2 Interannual Forcings (IAF) instead of Normal Year Forcings.
  • GMOM (2000_DATM%NYF_SLND_CICE_MOM6_DROF%NYF_SGLC_SWAV): Active ocean (MOM6) and ice (CICE) components forced by a data atmosphere and data river with COREv2 Normal Year Forcings.
  • GMOM_IAF (2000_DATM%IAF_SLND_CICE_MOM6_DROF%IAF_SGLC_SWAV): Same as GMOM, but forcings are COREv2 Interannual Forcings.
  • F2000Nuopc (2000_CAM40_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV): Active atmosphere (CAM with version 4.0 physics), active land (CLM version 5.0), prescribed sea ice (CICE), and a data ocean model with prescribed climatological SST and ice-coverage.
  • I2000Clm50SpNuopc (2000_DATM%GSWP3v1_CLM50%SP_SICE_SOCN_SROF_SGLC_SWAV): Active land (CLM version 5.0) forced by a data atmosphere using Global Soil Wetness Project Phase 3 (GSWP3v1) forcings.
  • DTEST (2000_DATM%NYF_SLND_CICE_DOCN%SOM_DROF%NYF_SGLC_SWAV_TEST): A compset with a data ocean in the slab ocean model mode (SOM), which computes a prognostic sea surface temperature and a freeze/melt potential (surface Q-flux) used by the sea ice model. This is used to test the ocean-ice interaction with the ice model in relative isolation and to test regridding in the Mediator.
  • X (2000_XATM_XLND_XICE_XOCN_XROF_XGLC_XWAV): All dead components. This configuration used for testing data flow through the Mediator.
  • A (2000_DATM%NYF_SLND_DICE%SSMI_DOCN%DOM_DROF%NYF_SGLC_SWAV): A compset with all data models. This is used to test the CIME infrastructure, especially when porting to new platforms.

Included Test Suite

A test suite is included with the milestone that automatically exercises all of the supported compsets and compares the output against previously generated baseline results on the supported platforms. Each test follows a naming convention defined by CIME. The full explanation of the test naming convention is available in the CIME documentation. Here we give a brief summary of the parts of the test naming convention relevant to this milestone. The general format for a test name is:

TESTTYPE[_MODIFIERS].GRID.COMPSET[.MACHINE_COMPILER[.TESTMODS]]

  • All tests in this suite have TESTTYPE of SMS, which is a "smoke startup test."
  • The MODIFIERS _Vnuopc and _Vmct refer to the use of the NUOPC/CMEPS infrastructure and the MCT infrastructure, respectively. The purpose of running both is to compare results of the NUOPC version against previously validated MCT versions. The _L options indicate the run length, e.g. _Ld5 is a five day run and _Ln5 is a five timestep run.
  • The GRID specification is of the form f19_g16 where the f19 indicates the atmosphere/land grid are on a 1.9x2.5 degree grid and the g16 indicates the ocean/ice are on 1 degree displaced pole grid. See the CIME user's guide for more information about available grids.
  • COMPSET is one of the supported component set aliases listed above.
  • MACHINE_COMPILER must be one of the supported combinations, i.e., cheyenne_intel or theia_intel.
  • TESTMODS adds user-specific modifications to the test such as namelist modifications or custom shell commands. For example, the allactive-nuopc_cap_io option turns on the history output for active components.
Tests
SMS_Vnuopc_Ld5.f19_g16.BMOM.cheyenne_intel.allactive-nuopc_cap_io
SMS_Vmct_Ld5.f19_g16.BMOM.cheyenne_intel.allactive-nuopc_cap_io
SMS_Vmct_Ld5.T62_g16.CMOM.cheyenne_intel.mom-nuopc_cap
SMS_Vnuopc_Ld5.T62_g16.CMOM.cheyenne_intel.mom-nuopc_cap
SMS_Vnuopc_Ld5.T62_g16.GMOM.cheyenne_intel.mom-nuopc_cap
SMS_Vmct_Ld5.T62_g16.GMOM.cheyenne_intel.mom-nuopc_cap
SMS_Vnuopc_Ln5.T62_g37.DTEST.cheyenne_intel.cice-nuopc_cap
SMS_Vmct_Ln5.T62_g37.DTEST.cheyenne_intel.cice-nuopc_cap
SMS_Vnuopc_Ln5.f19_g16.F2000Nuopc.cheyenne_intel.cam-nuopc_cap
SMS_Vmct_Ln5.f19_g16.F2000Nuopc.cheyenne_intel.cam-nuopc_cap
SMS_Vnuopc.f19_g16.X.cheyenne_intel
SMS_Vmct.f19_g16.X.cheyenne_intel
SMS_Vnuopc_Ld1.T31_g37_rx1.A.cheyenne_intel
SMS_Vmct_Ld1.T31_g37_rx1.A.cheyenne_intel
SMS_Vnuopc_Ln5.f45_f45_mg37.I2000Clm50SpNuopc.cheyenne_intel.clm-nuopc_cap
SMS_Vmct_Ln5.f45_f45_mg37.I2000Clm50SpNuopc.cheyenne_intel.clm-nuopc_cap
SMS_Vnuopc_Ln5.ne16_ne16_mg17.QPC4.cheyenne_intel.cam-nuopc_cap
SMS_Vmct_Ln5.ne16_ne16_mg17.QPC4.cheyenne_intel.cam-nuopc_cap

Initial Conditions

MOM6 is started at rest and uses initial temperature and salinity conditions from the World Ocean Atlas 2005 (WOA2005) dataset. These and other required input files are available on the supported platforms. In addition, if this milestone is ported to another platform, the CIME case control system will automatically retrieve input data from the CESM input data subversion repository.

Run Sequences

CIME includes three NUOPC run sequences, one of which is selected depending on the compset. The default run sequence below is used by most compsets. In cases where the compset does not include a component (e.g., the CMOM compset does not include a land model) then phases involving that component are automatically removed from the run sequence, but the order of the phases does not change.

  @1800   #ocean coupling step
     MED med_phases_prep_ocn_accum_avg
     MED med_connectors_prep_med2ocn
     MED -> OCN :remapMethod=redist 
     @1800   # atmosphere coupling step
        MED med_phases_prep_ocn_map
	MED med_phases_aofluxes_run
	MED med_phases_prep_ocn_merge
	MED med_phases_prep_ocn_accum_fast
 	MED med_phases_ocnalb_run
        MED med_phases_prep_lnd
        MED med_connectors_prep_med2lnd
        MED -> LND :remapMethod=redist
        MED med_phases_prep_ice
        MED med_connectors_prep_med2ice
        MED -> ICE :remapMethod=redist
        MED med_phases_prep_wav
        MED med_connectors_prep_med2wav
        MED -> WAV :remapMethod=redist
        MED med_phases_prep_rof
        MED med_connectors_prep_med2rof
        MED -> ROF :remapMethod=redist
        ICE
        LND
        ROF
	WAV
        ICE -> MED :remapMethod=redist
        MED med_connectors_post_ice2med
        MED med_fraction_set
        LND -> MED :remapMethod=redist
        MED med_connectors_post_lnd2med
        ROF -> MED :remapMethod=redist
        MED med_connectors_post_rof2med
        MED med_phases_prep_glc
        MED med_connectors_prep_med2glc
        MED -> GLC :remapMethod=redist
        MED med_phases_prep_atm
        MED med_connectors_prep_med2atm
        MED -> ATM :remapMethod=redist
        ATM
	GLC
        WAV -> MED :remapMethod=redist
        MED med_connectors_post_wav2med
        GLC -> MED :remapMethod=redist
        MED med_connectors_post_glc2med
        ATM -> MED :remapMethod=redist
        MED med_connectors_post_atm2med
        MED med_phases_history
      @
      OCN
      OCN -> MED :remapMethod=redist
      MED med_connectors_post_ocn2med
  @

For compsets that do not have an ocean model (i.e., the compset long name includes SOCN) the following run sequence is used.

  @1800  # atmosphere coupling step
     MED med_phases_prep_ice
     MED med_connectors_prep_med2ice
     MED -> ICE :remapMethod=redist
     MED med_phases_prep_wav
     MED med_connectors_prep_med2wav
     MED -> WAV :remapMethod=redist
     MED med_phases_prep_lnd
     MED med_connectors_prep_med2lnd
     MED -> LND :remapMethod=redist
     MED med_phases_prep_glc
     MED med_connectors_prep_med2glc
     MED -> GLC :remapMethod=redist
     MED med_phases_prep_rof
     MED med_connectors_prep_med2rof
     MED -> ROF :remapMethod=redist
     ICE
     LND
     ROF
     WAV
     ROF -> MED :remapMethod=redist
     MED med_connectors_post_rof2med
     LND -> MED :remapMethod=redist
     MED med_connectors_post_lnd2med
     ICE -> MED :remapMethod=redist
     MED med_connectors_post_ice2med
     MED med_fraction_set
     MED med_phases_prep_atm
     MED med_connectors_prep_med2atm
     MED -> ATM :remapMethod=redist
     ATM
     GLC
     WAV -> MED :remapMethod=redist
     MED med_connectors_post_wav2med
     GLC -> MED :remapMethod=redist
     MED med_connectors_post_glc2med
     ATM -> MED :remapMethod=redist
     MED med_connectors_post_atm2med
     MED med_phases_history
  @

When the compset includes an active atmosphere (CAM) and data ocean (DOCN), the following run sequence is used:

  @1800 # atmosphere coupling step
     MED med_phases_prep_ocn_accum_avg
     MED med_connectors_prep_med2ocn
     MED -> OCN :remapMethod=redist
     MED med_phases_prep_lnd
     MED med_connectors_prep_med2lnd
     MED -> LND :remapMethod=redist
     MED med_phases_prep_ice
     MED med_connectors_prep_med2ice
     MED -> ICE :remapMethod=redist
     ICE
     LND
     OCN
     OCN -> MED :remapMethod=redist
     MED med_connectors_post_ocn2med
     ICE -> MED :remapMethod=redist
     MED med_connectors_post_ice2med
     MED med_fraction_set
     MED med_phases_prep_ocn_map
     MED med_phases_aofluxes_run
     MED med_phases_prep_ocn_merge
     MED med_phases_prep_ocn_accum_fast
     MED med_phases_ocnalb_run
     LND -> MED :remapMethod=redist
     MED med_connectors_post_lnd2med
     MED med_phases_prep_atm
     MED med_connectors_prep_med2atm
     MED -> ATM :remapMethod=redist
     ATM
     ATM -> MED :remapMethod=redist
     MED med_connectors_post_atm2med
     MED med_phases_history
  @

Validation

Validation was performed on the fully coupled system (BMOM compset) by comparing MOM6 forcings and prognostic output of the NUOPC-based system against the same runs using the MCT-based coupler, which was previously validated. Each plot below has two panels: the top panel shows a variable from the MCT-based run and the bottom panel shows a variable from the NUOPC-based run. Data for the plots is taken from the standard MOM6 diagnostic and history files. All plots are shown at day 5 and indicate strong similarity under visual comparison.

Forcings to MOM6

Figure 1.a: Comparison of taux
Figure 1.b: Comparison of tauy
Figure 1.c: Comparison of precipitation
Figure 1.d: Comparison of shortware radiation
Figure 1.e: Comparison of sensible heat flux
Figure 1.f: Comparison of latent heat flux

MOM6 Prognostic Output

Figure 2.a: Comparison of u velocity
Figure 2.b: Comparison of v velocity
Figure 2.c: Comparison of potential temperature
Figure 2.d: Comparison of salinity

Limitations

Local Copies of Component Repositories

CESM is in the process of transitioning all of their model components from private Subversion repositories into public Git repositories on GitHub. During this transitional period, three repositories are not yet available publicly: CAM, CLM, and CICE. This creates an issue for community members who which to download and run this milestone but do not have CESM Subversion access. Therefore, as a stop gap solution, local copies of the affected component repositories are provided on the supported platforms. The only change in workflow required is to use the appropriate Externals.MACHINE.cfg file instead of the default Externals.cfg file when running checkout_externals. The machine-specific externals specification points to the local copies of the respective component repositories. Details for how to reference this file are provided in the instructions below. The aim in the next release is to ensure at least read-only access to all component repositories without requiring special credentials.

Access to Input Data

CIME automatically downloads needed datasets such as forcing files and files containing grid remapping weights. There are several supported protocols for retrieving these datasets, including Subversion, GridFTP, ftp, and wget. However, the Theia machine does not allow general outbound access via these protocols, so CIME is not able to retrieve this data. As a workaround, all required input data for the supported compsets and tests have been provided in a local directory on Theia. In the future, we will consider how to better support automatic retrieval on input data on Theia, including working with Theia system administrators to see if access can be opened for a trusted site that includes input data for community components. More information about CIME's input data tools can be found in the CIME User's Guide.

Runs are not Optimized

No attempt has been made to optimize the included compsets/tests for performance. The test runs have logs set to a high level of verbosity for debugging and diagnostics, leading to a large amount of I/O.

Download, Build and Run

# Clone UFSCOMP
$ git clone https://github.com/ESCOMP/UFSCOMP.git
$ cd UFSCOMP
$ git checkout cmeps_v0.2

# Check out all model components and CIME
# IMPORTANT NOTE:  If you have CESM SVN developer access, use the default
# Externals.cfg by running this command:
$ ./manage_externals/checkout_externals

# If you do NOT have CESM SVN developer access, local copies of CAM,
# CLM, and CICE are provided on each supported platform.  
# On Cheyenne use:  
$ ./manage_externals/checkout_externals -e Externals.Cheyenne.cfg

# On Theia use:  
$ ./manage_externals/checkout_externals -e Externals.Theia.cfg

# Set environment
$ export CIME_MODEL=cesm
$ export PROJECT=<your project>   # account to charge for run

# Build and run test suite
$ cd cime/scripts

# Command on Cheyenne:
$ qcmd -- ./create_test --xml-testlist ./testlist_cmeps.xml --xml-category prealpha --xml-machine cheyenne --test-id cmepsv02

# Command on Theia:
$ ./create_test --xml-testlist ./testlist_cmeps.xml --xml-category prealpha --xml-machine theia --test-id cmepsv02