[Ncep.list.nems.announce] NEMSLegacy r84791: Regression test and documentation updates:
Samuel.Trahan at noaa.gov
Samuel.Trahan at noaa.gov
Wed Nov 23 01:28:03 UTC 2016
1.
Mo...
Message-ID: <5834f0a3.ExaHZNoJU78d18v+%Samuel.Trahan at noaa.gov>
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="=_5834f0a3.cPDgIH+CZcKL/epvepmSoK6I/SyZ0DPHyn+kTVAh5j6qgcB/"
This is a multi-part message in MIME format.
--=_5834f0a3.cPDgIH+CZcKL/epvepmSoK6I/SyZ0DPHyn+kTVAh5j6qgcB/
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Friendly NEMS developers,
This is an automated email about a NEMS commit.
Project: NEMSLegacy
URL: https://svnemc.ncep.noaa.gov/projects/nems/apps/NEMSLegacy/trunk
Revision: 84791
Author: samuel.trahan at noaa.gov
Date: 2016-11-23T01:26:16.447378Z
Message:
Regression test and documentation updates:
1. Move *.input files from NEMS/tests to app-level compsets directory
2. Delete the wrong.appBuilder (old nemsLegacy.appBuilder)
3. Add a doc/README.md which contains the app-level documentation.
The NEMS/doc/Makefile knows how to combine this with NEMS-level
documentation to make a webpage with app, build, and execution
documentation.
See attached file for full differences.
First 4000 bytes of differences:
Index: checkout/wrong.appBuilder
===================================================================
--- checkout/wrong.appBuilder (revision 84675)
+++ checkout/wrong.appBuilder (nonexistent)
@@ -1,41 +0,0 @@
-# NEMSLegacy application
-#
-## NEMS Application Builder file
-
-COMPONENTS=( GSM )
-
-# Gaea environment
-environment_gaea(){
- source /etc/profile
- module swap PrgEnv-intel
- module swap intel/14.0.2.144
- module swap cray-mpich
- module swap cray-libsci
- module load cray-netcdf
- module load subversion/1.9.3
- module use ~Gerhard.Theurich/Modulefiles
- module load esmf/7.0.0
-}
-
-# Theia environment
-environment_theia(){
- source /etc/profile
- module use /scratch4/NCEPDEV/nems/save/Gerhard.Theurich/Modulefiles
- module load intel impi netcdf esmf/7.0.0
-}
-
-# Yellowstone environment
-environment_yellowstone(){
- source /etc/profile
- module purge
- module load ncarenv/1.0 ncarbinlibs/1.1 intel/15.0.0 ncarcompilers/1.0 netcdf/4.3.0 mkl/11.1.2 impi/4.0.3.008
- export ESMFMKFILE=~theurich/ESMF-INSTALLS/700-Intel15.0.0-IMPI4.0.3.008-NetCDF4.3.0/lib/esmf.mk
-}
-
-# Generic Linux/GNU environment
-environment_linux_gnu(){
- source /opt/Modules/3.2.9/init/sh
- module purge
- module load GCC/4.7.0/GCC GCC/4.7.0/openmpi/1.6.0-threadmultiple esmf/7.0.0
-}
-
Index: checkout/doc/README.md
===================================================================
--- checkout/doc/README.md (nonexistent)
+++ checkout/doc/README.md (revision 84791)
@@ -0,0 +1,51 @@
+NEMSLegacy Build and Test Instructions
+======================================
+
+This page documents the build system and test suite for the NEMSLegacy
+app. This is a NEMS app that runs the Global Spectral Model (GSM) or
+Non-hydrostatic Multi-scale Model (NMM) in uncoupled mode. In the
+next few weeks, this app will be split into three apps, as discussed
+below. Until then, it will serve as the main development point for
+GSM, NMM and the NEMS source code. The app can be found here on the
+EMC Subversion server:
+
+* [https://svnemc.ncep.noaa.gov/projects/nems/apps/NEMSLegacy/trunk](https://svnemc.ncep.noaa.gov/projects/nems/apps/NEMSLegacy/trunk)
+
+This app's current use as the central testing point for NEMS has
+restricted development of coupled tests and has forced either the NMM
+or GSM developers to hold back developments that break the other
+model. For this and other reasons, we will replace this app with
+three new ones for standalone model development. The three new apps
+that replace NEMSLegacy will be:
+
+* NEMSGSM - standalone Global Spectral Model (GSM) app
+* NEMSNMM - standalone Non-hydrostatic Multi-scale Model (NMM) app
+* NEMSFV3 - standalone finite volume cube (FV3) app
+
+To support coupled model development, we will change the commit
+process for NEMS. This will allow NEMS changes to be vetted in
+coupled apps before committing. The new commit process will be made
+public once it is approved by management.
+
+<a name="supbuild"></a>Supported Builds and Platforms
+-----------------------------------------------------
+
+The NEMSLegacy only works on three clusters: NOAA WCOSS Phase 1 (Tide
+and Gyre), and NOAA Theia. No other platforms are tested or supported
+at this time. We have plans to port to the WCOSS Cray systems (Luna
+and Surge) and GAEA in the near future. However, that may happen
+after NEMSLegacy is replaced with several separate apps.
+
+The app can be built in the following ways via the NEMSAppBuilder.
+Details of each build option can be found in the corresponding
+`(name).appBuilder` files at the top level of the NEMSLegacy checkout.
+
+* `GSM`: standalone global spectral model
+* `GSM-GOCART`: global spectral model with gocart enabled
+* `NMM`: standalone non-hydrostatic multi-scale model
+* `NMM-POST`: same as NMM, but with the inline post processor enabled
+* `NMM-DEBUG`: same as NMM, but with debugging enabled (slow)
+
+Note that none of these build options use a coupler. They are
+standalone NMM or
... see attachment for the rest ...
--=_5834f0a3.cPDgIH+CZcKL/epvepmSoK6I/SyZ0DPHyn+kTVAh5j6qgcB/
Content-Type: text/plain;
charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="84791.diff"
Index: checkout/wrong.appBuilder
===================================================================
--- checkout/wrong.appBuilder (revision 84675)
+++ checkout/wrong.appBuilder (nonexistent)
@@ -1,41 +0,0 @@
-# NEMSLegacy application
-#
-## NEMS Application Builder file
-
-COMPONENTS=( GSM )
-
-# Gaea environment
-environment_gaea(){
- source /etc/profile
- module swap PrgEnv-intel
- module swap intel/14.0.2.144
- module swap cray-mpich
- module swap cray-libsci
- module load cray-netcdf
- module load subversion/1.9.3
- module use ~Gerhard.Theurich/Modulefiles
- module load esmf/7.0.0
-}
-
-# Theia environment
-environment_theia(){
- source /etc/profile
- module use /scratch4/NCEPDEV/nems/save/Gerhard.Theurich/Modulefiles
- module load intel impi netcdf esmf/7.0.0
-}
-
-# Yellowstone environment
-environment_yellowstone(){
- source /etc/profile
- module purge
- module load ncarenv/1.0 ncarbinlibs/1.1 intel/15.0.0 ncarcompilers/1.0 netcdf/4.3.0 mkl/11.1.2 impi/4.0.3.008
- export ESMFMKFILE=~theurich/ESMF-INSTALLS/700-Intel15.0.0-IMPI4.0.3.008-NetCDF4.3.0/lib/esmf.mk
-}
-
-# Generic Linux/GNU environment
-environment_linux_gnu(){
- source /opt/Modules/3.2.9/init/sh
- module purge
- module load GCC/4.7.0/GCC GCC/4.7.0/openmpi/1.6.0-threadmultiple esmf/7.0.0
-}
-
Index: checkout/doc/README.md
===================================================================
--- checkout/doc/README.md (nonexistent)
+++ checkout/doc/README.md (revision 84791)
@@ -0,0 +1,51 @@
+NEMSLegacy Build and Test Instructions
+======================================
+
+This page documents the build system and test suite for the NEMSLegacy
+app. This is a NEMS app that runs the Global Spectral Model (GSM) or
+Non-hydrostatic Multi-scale Model (NMM) in uncoupled mode. In the
+next few weeks, this app will be split into three apps, as discussed
+below. Until then, it will serve as the main development point for
+GSM, NMM and the NEMS source code. The app can be found here on the
+EMC Subversion server:
+
+* [https://svnemc.ncep.noaa.gov/projects/nems/apps/NEMSLegacy/trunk](https://svnemc.ncep.noaa.gov/projects/nems/apps/NEMSLegacy/trunk)
+
+This app's current use as the central testing point for NEMS has
+restricted development of coupled tests and has forced either the NMM
+or GSM developers to hold back developments that break the other
+model. For this and other reasons, we will replace this app with
+three new ones for standalone model development. The three new apps
+that replace NEMSLegacy will be:
+
+* NEMSGSM - standalone Global Spectral Model (GSM) app
+* NEMSNMM - standalone Non-hydrostatic Multi-scale Model (NMM) app
+* NEMSFV3 - standalone finite volume cube (FV3) app
+
+To support coupled model development, we will change the commit
+process for NEMS. This will allow NEMS changes to be vetted in
+coupled apps before committing. The new commit process will be made
+public once it is approved by management.
+
+<a name="supbuild"></a>Supported Builds and Platforms
+-----------------------------------------------------
+
+The NEMSLegacy only works on three clusters: NOAA WCOSS Phase 1 (Tide
+and Gyre), and NOAA Theia. No other platforms are tested or supported
+at this time. We have plans to port to the WCOSS Cray systems (Luna
+and Surge) and GAEA in the near future. However, that may happen
+after NEMSLegacy is replaced with several separate apps.
+
+The app can be built in the following ways via the NEMSAppBuilder.
+Details of each build option can be found in the corresponding
+`(name).appBuilder` files at the top level of the NEMSLegacy checkout.
+
+* `GSM`: standalone global spectral model
+* `GSM-GOCART`: global spectral model with gocart enabled
+* `NMM`: standalone non-hydrostatic multi-scale model
+* `NMM-POST`: same as NMM, but with the inline post processor enabled
+* `NMM-DEBUG`: same as NMM, but with debugging enabled (slow)
+
+Note that none of these build options use a coupler. They are
+standalone NMM or GSM configurations that do not interact with another
+model or each other.
Index: checkout/compsets/gsm.input
===================================================================
--- checkout/compsets/gsm.input (nonexistent)
+++ checkout/compsets/gsm.input (revision 84791)
@@ -0,0 +1,1645 @@
+load 'platforms.input'
+load 'nemscommon.input'
+
+########################################################################
+
+# Builds for the gsm:
+
+build gsm.x {
+ use plat
+ NEMS.x="@[plat%EXECrt]/NEMS_gsm.x"
+ modules.nems="@[plat%INCrt]/NEMS_gsm.x.modules"
+ target="@[NEMS.x]"
+# build=rt.sh_build(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+# ESMF_VER='gsm_intel',NEMS_VER='gsm')
+ build=NEMSAppBuilder(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+ OPTS="app=GSM")
+}
+
+build gsm_gocart.x {
+ use plat
+ NEMS.x="@[plat%EXECrt]/NEMS_gocart.x"
+ modules.nems="@[plat%INCrt]/NEMS_gocart.x.modules"
+ target="@[NEMS.x]"
+# build=rt.sh_build(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+# ESMF_VER='gsm_intel',NEMS_VER='gsm GOCART_MODE=full')
+ build=NEMSAppBuilder(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+ OPTS="app=GSM-GOCART")
+}
+
+########################################################################
+
+# Common paths used by many tests and input files:
+
+gsm_paths = {
+ fix_gayno="@[plat%INPUTS]/data_GFS/fix.gayno/"
+ fix_am="@[plat%INPUTS]/data_GFS/fix.am/"
+ ngac_fix="@[plat%INPUTS]/data_GOCART/ngac_fix/"
+ fix_am_2="@[fix_gayno]"
+}
+
+########################################################################
+
+test gfs_eulerian: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="GFS eulerian dycore,32 total proc (tasks), 1 thread, quilt, digital filter on reduced grid"
+ CNTL_NAME='GFS_EULERIAN'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'sig_ini' .link. "siganl.2012010100"
+ 'sfc_ini' .link. "sfcanl.2012010100"
+ 'SIG.F00:15:00' .link. "sigf00"
+ 'SFC.F00:15:00' .link. "sfcf00"
+ 'FLX.F00:15:00' .link. "flxf00"
+ 'SIG.F03' .link. "sigf03"
+ 'SFC.F03' .link. "sfcf03"
+ 'FLX.F03' .link. "flxf03"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'SIG.F09' .link. "sigf09"
+ 'SFC.F09' .link. "sfcf09"
+ 'FLX.F09' .link. "flxf09"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'SIG.F15' .link. "sigf15"
+ 'SFC.F15' .link. "sfcf15"
+ 'FLX.F15' .link. "flxf15"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'SIG.F21' .link. "sigf21"
+ 'SFC.F21' .link. "sfcf21"
+ 'FLX.F21' .link. "flxf21"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'SIG.F27' .link. "sigf27"
+ 'SFC.F27' .link. "sfcf27"
+ 'FLX.F27' .link. "flxf27"
+ 'SIG.F30' .link. "sigf30"
+ 'SFC.F30' .link. "sfcf30"
+ 'FLX.F30' .link. "flxf30"
+ 'SIG.F33' .link. "sigf33"
+ 'SFC.F33' .link. "sfcf33"
+ 'FLX.F33' .link. "flxf33"
+ 'SIG.F36' .link. "sigf36"
+ 'SFC.F36' .link. "sfcf36"
+ 'FLX.F36' .link. "flxf36"
+ 'SIG.F39' .link. "sigf39"
+ 'SFC.F39' .link. "sfcf39"
+ 'FLX.F39' .link. "flxf39"
+ 'SIG.F42' .link. "sigf42"
+ 'SFC.F42' .link. "sfcf42"
+ 'FLX.F42' .link. "flxf42"
+ 'SIG.F45' .link. "sigf45"
+ 'SFC.F45' .link. "sfcf45"
+ 'FLX.F45' .link. "flxf45"
+ 'SIG.F48' .link. "sigf48"
+ 'SFC.F48' .link. "sfcf48"
+ 'FLX.F48' .link. "flxf48"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sfcf03' .bitcmp. "@[CNTL]"
+ 'flxf03' .bitcmp. "@[CNTL]"
+ 'sigf03' .bitcmp. "@[CNTL]"
+ 'sfcf06' .bitcmp. "@[CNTL]"
+ 'flxf06' .bitcmp. "@[CNTL]"
+ 'sigf06' .bitcmp. "@[CNTL]"
+ 'sfcf12' .bitcmp. "@[CNTL]"
+ 'flxf12' .bitcmp. "@[CNTL]"
+ 'sigf12' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf48' .bitcmp. "@[CNTL]"
+ 'flxf48' .bitcmp. "@[CNTL]"
+ 'sigf48' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=32, threads=1}
+ }
+}
+
+########################################################################
+
+test wam_gh_l150: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="WAM enthalpy on general hybrid 2loop 150levels,32 compute tasks / 1 thread ,no quilting"
+ CNTL_NAME='WAM_gh_l150'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'sig_ini' .link. "siganl.2011092300"
+ 'sfc_ini' .link. "sfcanl.2011092300"
+ 'SIG.F00:03:00' .link. "sigf00"
+ 'SFC.F00:03:00' .link. "sfcf00"
+ 'FLX.F00:03:00' .link. "flxf00"
+ 'SIG.F03' .link. "sigf03"
+ 'SFC.F03' .link. "sfcf03"
+ 'FLX.F03' .link. "flxf03"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'SIG.F09' .link. "sigf09"
+ 'SFC.F09' .link. "sfcf09"
+ 'FLX.F09' .link. "flxf09"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'SIG.F15' .link. "sigf15"
+ 'SFC.F15' .link. "sfcf15"
+ 'FLX.F15' .link. "flxf15"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'SIG.F21' .link. "sigf21"
+ 'SFC.F21' .link. "sfcf21"
+ 'FLX.F21' .link. "flxf21"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l150.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf03' .bitcmp. "@[CNTL]"
+ 'flxf03' .bitcmp. "@[CNTL]"
+ 'sigf03' .bitcmp. "@[CNTL]"
+ 'sfcf06' .bitcmp. "@[CNTL]"
+ 'flxf06' .bitcmp. "@[CNTL]"
+ 'sigf06' .bitcmp. "@[CNTL]"
+ 'sfcf12' .bitcmp. "@[CNTL]"
+ 'flxf12' .bitcmp. "@[CNTL]"
+ 'sigf12' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=32, threads=1}
+ }
+}
+
+########################################################################
+
+test wam_gh_l150_nemsio: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="WAM enthalpy on general hybrid 2loop 150levels,32 compute tasks / 1 thread ,with quilting and NEMSIO I/O"
+ CNTL_NAME='WAM_gh_l150_nemsio'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'grid_ini' .link. "gfsanl.2011092400"
+ 'sig_ini' .link. "gfsanl.2011092400"
+ 'sfc_ini' .link. "sfnanl.2011092400"
+ 'SIG.F00:03:00' .link. "sigf00"
+ 'SFC.F00:03:00' .link. "sfcf00"
+ 'FLX.F00:03:00' .link. "flxf00"
+ 'SIG.F03' .link. "sigf03"
+ 'SFC.F03' .link. "sfcf03"
+ 'FLX.F03' .link. "flxf03"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'SIG.F09' .link. "sigf09"
+ 'SFC.F09' .link. "sfcf09"
+ 'FLX.F09' .link. "flxf09"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'SIG.F15' .link. "sigf15"
+ 'SFC.F15' .link. "sfcf15"
+ 'FLX.F15' .link. "flxf15"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'SIG.F21' .link. "sigf21"
+ 'SFC.F21' .link. "sfcf21"
+ 'FLX.F21' .link. "flxf21"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'SIG.F27' .link. "sigf27"
+ 'SFC.F27' .link. "sfcf27"
+ 'FLX.F27' .link. "flxf27"
+ 'SIG.F30' .link. "sigf30"
+ 'SFC.F30' .link. "sfcf30"
+ 'FLX.F30' .link. "flxf30"
+ 'SIG.F33' .link. "sigf33"
+ 'SFC.F33' .link. "sfcf33"
+ 'FLX.F33' .link. "flxf33"
+ 'SIG.F36' .link. "sigf36"
+ 'SFC.F36' .link. "sfcf36"
+ 'FLX.F36' .link. "flxf36"
+ 'SIG.F39' .link. "sigf39"
+ 'SFC.F39' .link. "sfcf39"
+ 'FLX.F39' .link. "flxf39"
+ 'SIG.F42' .link. "sigf42"
+ 'SFC.F42' .link. "sfcf42"
+ 'FLX.F42' .link. "flxf42"
+ 'SIG.F45' .link. "sigf45"
+ 'SFC.F45' .link. "sfcf45"
+ 'FLX.F45' .link. "flxf45"
+ 'SIG.F48' .link. "sigf48"
+ 'SFC.F48' .link. "sfcf48"
+ 'FLX.F48' .link. "flxf48"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l150.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'sigf03' .bitcmp. "@[CNTL]"
+ 'sfcf03' .bitcmp. "@[CNTL]"
+ 'flxf03' .bitcmp. "@[CNTL]"
+ 'sigf06' .bitcmp. "@[CNTL]"
+ 'sfcf06' .bitcmp. "@[CNTL]"
+ 'flxf06' .bitcmp. "@[CNTL]"
+ 'sigf12' .bitcmp. "@[CNTL]"
+ 'sfcf12' .bitcmp. "@[CNTL]"
+ 'flxf12' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ 'sigf48' .bitcmp. "@[CNTL]"
+ 'sfcf48' .bitcmp. "@[CNTL]"
+ 'flxf48' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=33, threads=1}
+ }
+}
+
+########################################################################
+
+test gfs_slg: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="Run SLG non-adiabatic test with NEMSIO and digital filter from NEMSIO initial conditions"
+ CNTL_NAME='GFS_SLG'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ TEST_INPUT="@[INPUTS]/tests/@[TEST_NAME]"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[TEST_INPUT]/"
+ 'atm_namelist' .atparse. "@[TEST_INPUT]/atm_namelist"
+ 'grid_ini' .link. "gfsanl.2012010100"
+ 'sig_ini' .link. "gfsanl.2012010100"
+ 'sfc_ini' .link. "sfnanl.2012010100"
+ 'SIG.F00:15:00' .link. "sigf00"
+ 'SFC.F00:15:00' .link. "sfcf00"
+ 'FLX.F00:15:00' .link. "flxf00"
+ 'SIG.F01' .link. "sigf01"
+ 'SFC.F01' .link. "sfcf01"
+ 'FLX.F01' .link. "flxf01"
+ 'SIG.F02' .link. "sigf02"
+ 'SFC.F02' .link. "sfcf02"
+ 'FLX.F02' .link. "flxf02"
+ 'SIG.F03' .link. "sigf03"
+ 'SFC.F03' .link. "sfcf03"
+ 'FLX.F03' .link. "flxf03"
+ 'SIG.F04' .link. "sigf04"
+ 'SFC.F04' .link. "sfcf04"
+ 'FLX.F04' .link. "flxf04"
+ 'SIG.F05' .link. "sigf05"
+ 'SFC.F05' .link. "sfcf05"
+ 'FLX.F05' .link. "flxf05"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'SIG.F07' .link. "sigf07"
+ 'SFC.F07' .link. "sfcf07"
+ 'FLX.F07' .link. "flxf07"
+ 'SIG.F08' .link. "sigf08"
+ 'SFC.F08' .link. "sfcf08"
+ 'FLX.F08' .link. "flxf08"
+ 'SIG.F09' .link. "sigf09"
+ 'SFC.F09' .link. "sfcf09"
+ 'FLX.F09' .link. "flxf09"
+ 'SIG.F10' .link. "sigf10"
+ 'SFC.F10' .link. "sfcf10"
+ 'FLX.F10' .link. "flxf10"
+ 'SIG.F11' .link. "sigf11"
+ 'SFC.F11' .link. "sfcf11"
+ 'FLX.F11' .link. "flxf11"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'SIG.F30' .link. "sigf30"
+ 'SFC.F30' .link. "sfcf30"
+ 'FLX.F30' .link. "flxf30"
+ 'SIG.F36' .link. "sigf36"
+ 'SFC.F36' .link. "sfcf36"
+ 'FLX.F36' .link. "flxf36"
+ 'SIG.F42' .link. "sigf42"
+ 'SFC.F42' .link. "sfcf42"
+ 'FLX.F42' .link. "flxf42"
+ 'SIG.F48' .link. "sigf48"
+ 'SFC.F48' .link. "sfcf48"
+ 'FLX.F48' .link. "flxf48"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'sigf01' .bitcmp. "@[CNTL]"
+ 'sfcf01' .bitcmp. "@[CNTL]"
+ 'flxf01' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=33, threads=1}
+ }
+}
+
+########################################################################
+
+test gfs_slg_2thread: gsm.x {
+ use gfs_slg
+ TEST_DESCR='Run SLG non-adiabatic test with NEMSIO and digital filter from NEMSIO initial conditions (two threads)'
+ CNTL_NAME='GFS_SLG'
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'SIG.F06' .bitcmp. "@[CNTL]"
+ 'SFC.F06' .bitcmp. "@[CNTL]"
+ 'FLX.F06' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=32, threads=2, ppn=8}
+ }
+}
+
+########################################################################
+
+test gfs_slg_48pe: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="Run SLG non-adiabatic test with NEMSIO and digital filter from NEMSIO initial conditions, 48pe"
+ CNTL_NAME='GFS_SLG_48PE'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'grid_ini' .link. "gfsanl.2012010100"
+ 'sig_ini' .link. "gfsanl.2012010100"
+ 'sfc_ini' .link. "sfnanl.2012010100"
+ 'SIG.F00:15:00' .link. "sigf00"
+ 'SFC.F00:15:00' .link. "sfcf00"
+ 'FLX.F00:15:00' .link. "flxf00"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'sigf06' .bitcmp. "@[CNTL]"
+ 'sfcf06' .bitcmp. "@[CNTL]"
+ 'flxf06' .bitcmp. "@[CNTL]"
+ 'sigf12' .bitcmp. "@[CNTL]"
+ 'sfcf12' .bitcmp. "@[CNTL]"
+ 'flxf12' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=48, threads=1}
+ }
+}
+
+########################################################################
+
+test gfs_slg_adiabatic: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="Run SLG adiabatic test with NEMSIO and digital filter from NEMSIO initial conditions"
+ CNTL_NAME='GFS_SLG_ADIABATIC'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'grid_ini' .link. "gfsanl.2012010100"
+ 'sig_ini' .link. "gfsanl.2012010100"
+ 'sfc_ini' .link. "sfnanl.2012010100"
+ 'SIG.F00:15:00' .link. "sigf00"
+ 'SIG.F06' .link. "sigf06"
+ 'SIG.F12' .link. "sigf12"
+ 'SIG.F18' .link. "sigf18"
+ 'SIG.F24' .link. "sigf24"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sigf06' .bitcmp. "@[CNTL]"
+ 'sigf12' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=32, threads=1}
+ }
+}
+
+########################################################################
+
+test gfs_slg_land: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="Run SLG non-adiabatic test with NEMSIO and digital filter from NEMSIO initial conditions"
+ CNTL_NAME='GFS_SLG_LAND'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_gayno]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.statsgo.t62.192.94.rg.grb"
+ FNVETC="@[fix_gayno]/global_vegtype.igbp.t62.192.94.rg.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_gayno]/global_mxsnoalb.uariz.t62.192.94.rg.grb"
+ FNZORC="igbp"
+ FNALBC="@[fix_gayno]/global_snowfree_albedo.bosu.t62.192.94.rg.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'grid_ini' .link. "gfsanl.2012010100"
+ 'sig_ini' .link. "gfsanl.2012010100"
+ 'sfc_ini' .link. "sfnanl.2012010100"
+ 'SIG.F00:15:00' .link. "sigf00"
+ 'SFC.F00:15:00' .link. "sfcf00"
+ 'FLX.F00:15:00' .link. "flxf00"
+ 'SIG.F01' .link. "sigf01"
+ 'SFC.F01' .link. "sfcf01"
+ 'FLX.F01' .link. "flxf01"
+ 'SIG.F02' .link. "sigf02"
+ 'SFC.F02' .link. "sfcf02"
+ 'FLX.F02' .link. "flxf02"
+ 'SIG.F03' .link. "sigf03"
+ 'SFC.F03' .link. "sfcf03"
+ 'FLX.F03' .link. "flxf03"
+ 'SIG.F04' .link. "sigf04"
+ 'SFC.F04' .link. "sfcf04"
+ 'FLX.F04' .link. "flxf04"
+ 'SIG.F05' .link. "sigf05"
+ 'SFC.F05' .link. "sfcf05"
+ 'FLX.F05' .link. "flxf05"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'SIG.F07' .link. "sigf07"
+ 'SFC.F07' .link. "sfcf07"
+ 'FLX.F07' .link. "flxf07"
+ 'SIG.F08' .link. "sigf08"
+ 'SFC.F08' .link. "sfcf08"
+ 'FLX.F08' .link. "flxf08"
+ 'SIG.F09' .link. "sigf09"
+ 'SFC.F09' .link. "sfcf09"
+ 'FLX.F09' .link. "flxf09"
+ 'SIG.F10' .link. "sigf10"
+ 'SFC.F10' .link. "sfcf10"
+ 'FLX.F10' .link. "flxf10"
+ 'SIG.F11' .link. "sigf11"
+ 'SFC.F11' .link. "sfcf11"
+ 'FLX.F11' .link. "flxf11"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'SIG.F30' .link. "sigf30"
+ 'SFC.F30' .link. "sfcf30"
+ 'FLX.F30' .link. "flxf30"
+ 'SIG.F36' .link. "sigf36"
+ 'SFC.F36' .link. "sfcf36"
+ 'FLX.F36' .link. "flxf36"
+ 'SIG.F42' .link. "sigf42"
+ 'SFC.F42' .link. "sfcf42"
+ 'FLX.F42' .link. "flxf42"
+ 'SIG.F48' .link. "sigf48"
+ 'SFC.F48' .link. "sfcf48"
+ 'FLX.F48' .link. "flxf48"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'sigf01' .bitcmp. "@[CNTL]"
+ 'sfcf01' .bitcmp. "@[CNTL]"
+ 'flxf01' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=33, threads=1}
+ }
+}
+
+########################################################################
+
+test gfs_slg_nsst: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="Run SLG non-adiabatic test with NEMSIO and digital filter from NEMSIO initial conditions"
+ CNTL_NAME='GFS_SLG_NSST'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'grid_ini' .link. "gfsanl.2012010100"
+ 'sig_ini' .link. "gfsanl.2012010100"
+ 'sfc_ini' .link. "sfnanl.2012010100"
+ 'nst_ini' .link. "nsnanl.2012010100"
+ 'SIG.F00:15:00' .link. "sigf00"
+ 'SFC.F00:15:00' .link. "sfcf00"
+ 'FLX.F00:15:00' .link. "flxf00"
+ 'NST.F00:15:00' .link. "nstf00"
+ 'SIG.F01' .link. "sigf01"
+ 'SFC.F01' .link. "sfcf01"
+ 'FLX.F01' .link. "flxf01"
+ 'NST.F01' .link. "nstf01"
+ 'SIG.F02' .link. "sigf02"
+ 'SFC.F02' .link. "sfcf02"
+ 'FLX.F02' .link. "flxf02"
+ 'NST.F02' .link. "nstf02"
+ 'SIG.F03' .link. "sigf03"
+ 'SFC.F03' .link. "sfcf03"
+ 'FLX.F03' .link. "flxf03"
+ 'NST.F03' .link. "nstf03"
+ 'SIG.F04' .link. "sigf04"
+ 'SFC.F04' .link. "sfcf04"
+ 'FLX.F04' .link. "flxf04"
+ 'NST.F04' .link. "nstf04"
+ 'SIG.F05' .link. "sigf05"
+ 'SFC.F05' .link. "sfcf05"
+ 'FLX.F05' .link. "flxf05"
+ 'NST.F05' .link. "nstf05"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'NST.F06' .link. "nstf06"
+ 'SIG.F07' .link. "sigf07"
+ 'SFC.F07' .link. "sfcf07"
+ 'FLX.F07' .link. "flxf07"
+ 'NST.F07' .link. "nstf07"
+ 'SIG.F08' .link. "sigf08"
+ 'SFC.F08' .link. "sfcf08"
+ 'FLX.F08' .link. "flxf08"
+ 'NST.F08' .link. "nstf08"
+ 'SIG.F09' .link. "sigf09"
+ 'SFC.F09' .link. "sfcf09"
+ 'FLX.F09' .link. "flxf09"
+ 'NST.F09' .link. "nstf09"
+ 'SIG.F10' .link. "sigf10"
+ 'SFC.F10' .link. "sfcf10"
+ 'FLX.F10' .link. "flxf10"
+ 'NST.F10' .link. "nstf10"
+ 'SIG.F11' .link. "sigf11"
+ 'SFC.F11' .link. "sfcf11"
+ 'FLX.F11' .link. "flxf11"
+ 'NST.F11' .link. "nstf11"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'NST.F12' .link. "nstf12"
+ 'SIG.F13' .link. "sigf13"
+ 'SFC.F13' .link. "sfcf13"
+ 'FLX.F13' .link. "flxf13"
+ 'NST.F13' .link. "nstf13"
+ 'SIG.F14' .link. "sigf14"
+ 'SFC.F14' .link. "sfcf14"
+ 'FLX.F14' .link. "flxf14"
+ 'NST.F14' .link. "nstf14"
+ 'SIG.F15' .link. "sigf15"
+ 'SFC.F15' .link. "sfcf15"
+ 'FLX.F15' .link. "flxf15"
+ 'NST.F15' .link. "nstf15"
+ 'SIG.F16' .link. "sigf16"
+ 'SFC.F16' .link. "sfcf16"
+ 'FLX.F16' .link. "flxf16"
+ 'NST.F16' .link. "nstf16"
+ 'SIG.F17' .link. "sigf17"
+ 'SFC.F17' .link. "sfcf17"
+ 'FLX.F17' .link. "flxf17"
+ 'NST.F17' .link. "nstf17"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'NST.F18' .link. "nstf18"
+ 'SIG.F19' .link. "sigf19"
+ 'SFC.F19' .link. "sfcf19"
+ 'FLX.F19' .link. "flxf19"
+ 'NST.F19' .link. "nstf19"
+ 'SIG.F20' .link. "sigf20"
+ 'SFC.F20' .link. "sfcf20"
+ 'FLX.F20' .link. "flxf20"
+ 'NST.F20' .link. "nstf20"
+ 'SIG.F21' .link. "sigf21"
+ 'SFC.F21' .link. "sfcf21"
+ 'FLX.F21' .link. "flxf21"
+ 'NST.F21' .link. "nstf21"
+ 'SIG.F22' .link. "sigf22"
+ 'SFC.F22' .link. "sfcf22"
+ 'FLX.F22' .link. "flxf22"
+ 'NST.F22' .link. "nstf22"
+ 'SIG.F23' .link. "sigf23"
+ 'SFC.F23' .link. "sfcf23"
+ 'FLX.F23' .link. "flxf23"
+ 'NST.F23' .link. "nstf23"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'NST.F24' .link. "nstf24"
+ 'SIG.F25' .link. "sigf25"
+ 'SFC.F25' .link. "sfcf25"
+ 'FLX.F25' .link. "flxf25"
+ 'NST.F25' .link. "nstf25"
+ 'SIG.F26' .link. "sigf26"
+ 'SFC.F26' .link. "sfcf26"
+ 'FLX.F26' .link. "flxf26"
+ 'NST.F26' .link. "nstf26"
+ 'SIG.F27' .link. "sigf27"
+ 'SFC.F27' .link. "sfcf27"
+ 'FLX.F27' .link. "flxf27"
+ 'NST.F27' .link. "nstf27"
+ 'SIG.F28' .link. "sigf28"
+ 'SFC.F28' .link. "sfcf28"
+ 'FLX.F28' .link. "flxf28"
+ 'NST.F28' .link. "nstf28"
+ 'SIG.F29' .link. "sigf29"
+ 'SFC.F29' .link. "sfcf29"
+ 'FLX.F29' .link. "flxf29"
+ 'NST.F29' .link. "nstf29"
+ 'SIG.F30' .link. "sigf30"
+ 'SFC.F30' .link. "sfcf30"
+ 'FLX.F30' .link. "flxf30"
+ 'NST.F30' .link. "nstf30"
+ 'SIG.F31' .link. "sigf31"
+ 'SFC.F31' .link. "sfcf31"
+ 'FLX.F31' .link. "flxf31"
+ 'NST.F31' .link. "nstf31"
+ 'SIG.F32' .link. "sigf32"
+ 'SFC.F32' .link. "sfcf32"
+ 'FLX.F32' .link. "flxf32"
+ 'NST.F32' .link. "nstf32"
+ 'SIG.F33' .link. "sigf33"
+ 'SFC.F33' .link. "sfcf33"
+ 'FLX.F33' .link. "flxf33"
+ 'NST.F33' .link. "nstf33"
+ 'SIG.F34' .link. "sigf34"
+ 'SFC.F34' .link. "sfcf34"
+ 'FLX.F34' .link. "flxf34"
+ 'NST.F34' .link. "nstf34"
+ 'SIG.F35' .link. "sigf35"
+ 'SFC.F35' .link. "sfcf35"
+ 'FLX.F35' .link. "flxf35"
+ 'NST.F35' .link. "nstf35"
+ 'SIG.F36' .link. "sigf36"
+ 'SFC.F36' .link. "sfcf36"
+ 'FLX.F36' .link. "flxf36"
+ 'NST.F36' .link. "nstf36"
+ 'SIG.F37' .link. "sigf37"
+ 'SFC.F37' .link. "sfcf37"
+ 'FLX.F37' .link. "flxf37"
+ 'NST.F37' .link. "nstf37"
+ 'SIG.F38' .link. "sigf38"
+ 'SFC.F38' .link. "sfcf38"
+ 'FLX.F38' .link. "flxf38"
+ 'NST.F38' .link. "nstf38"
+ 'SIG.F39' .link. "sigf39"
+ 'SFC.F39' .link. "sfcf39"
+ 'FLX.F39' .link. "flxf39"
+ 'NST.F39' .link. "nstf39"
+ 'SIG.F40' .link. "sigf40"
+ 'SFC.F40' .link. "sfcf40"
+ 'FLX.F40' .link. "flxf40"
+ 'NST.F40' .link. "nstf40"
+ 'SIG.F41' .link. "sigf41"
+ 'SFC.F41' .link. "sfcf41"
+ 'FLX.F41' .link. "flxf41"
+ 'NST.F41' .link. "nstf41"
+ 'SIG.F42' .link. "sigf42"
+ 'SFC.F42' .link. "sfcf42"
+ 'FLX.F42' .link. "flxf42"
+ 'NST.F42' .link. "nstf42"
+ 'SIG.F43' .link. "sigf43"
+ 'SFC.F43' .link. "sfcf43"
+ 'FLX.F43' .link. "flxf43"
+ 'NST.F43' .link. "nstf43"
+ 'SIG.F44' .link. "sigf44"
+ 'SFC.F44' .link. "sfcf44"
+ 'FLX.F44' .link. "flxf44"
+ 'NST.F44' .link. "nstf44"
+ 'SIG.F45' .link. "sigf45"
+ 'SFC.F45' .link. "sfcf45"
+ 'FLX.F45' .link. "flxf45"
+ 'NST.F45' .link. "nstf45"
+ 'SIG.F46' .link. "sigf46"
+ 'SFC.F46' .link. "sfcf46"
+ 'FLX.F46' .link. "flxf46"
+ 'NST.F46' .link. "nstf46"
+ 'SIG.F47' .link. "sigf47"
+ 'SFC.F47' .link. "sfcf47"
+ 'FLX.F47' .link. "flxf47"
+ 'NST.F47' .link. "nstf47"
+ 'SIG.F48' .link. "sigf48"
+ 'SFC.F48' .link. "sfcf48"
+ 'FLX.F48' .link. "flxf48"
+ 'NST.F48' .link. "nstf48"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'nstf00' .bitcmp. "@[CNTL]"
+ 'sigf01' .bitcmp. "@[CNTL]"
+ 'sfcf01' .bitcmp. "@[CNTL]"
+ 'flxf01' .bitcmp. "@[CNTL]"
+ 'nstf01' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ 'nstf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=33, threads=1}
+ }
+}
+
+########################################################################
+
+test gfs_slg_rsthst: gsm.x, gfs_slg {
+ use gsm_paths
+
+ TEST_DESCR="Run SLG restart from history file non-adiabatic test with NEMSIO and digital filter from NEMSIO initial conditions"
+ CNTL_NAME='GFS_SLG_RSTHST'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'grid_ini' .link. "@[gfs_slg%COM]/sigf24"
+ 'sig_ini' .link. "@[gfs_slg%COM]/sigf24"
+ 'sfc_ini' .link. "@[gfs_slg%COM]/sfcf24"
+ 'nst_ini' .link. "@[gfs_slg%COM]/nstf24"
+ 'SIG.F30' .link. "sigf30"
+ 'SFC.F30' .link. "sfcf30"
+ 'FLX.F30' .link. "flxf30"
+ 'SIG.F36' .link. "sigf36"
+ 'SFC.F36' .link. "sfcf36"
+ 'FLX.F36' .link. "flxf36"
+ 'SIG.F42' .link. "sigf42"
+ 'SFC.F42' .link. "sfcf42"
+ 'FLX.F42' .link. "flxf42"
+ 'SIG.F48' .link. "sigf48"
+ 'SFC.F48' .link. "sfcf48"
+ 'FLX.F48' .link. "flxf48"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf30' .bitcmp. "@[CNTL]"
+ 'sfcf30' .bitcmp. "@[CNTL]"
+ 'flxf30' .bitcmp. "@[CNTL]"
+ 'sigf48' .bitcmp. "@[CNTL]"
+ 'sfcf48' .bitcmp. "@[CNTL]"
+ 'flxf48' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=33, threads=1}
+ }
+}
+
+########################################################################
+
+test gfs_slg_stochy: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="Run SLG non-adiabatic test with NEMSIO and digital filter and stochastic physics from NEMSIO initial conditions"
+ CNTL_NAME='GFS_SLG_STOCHY'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t62.192.94.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'grid_ini' .link. "gfsanl.2012010100"
+ 'sig_ini' .link. "gfsanl.2012010100"
+ 'sfc_ini' .link. "sfnanl.2012010100"
+ 'SIG.F00:15:00' .link. "sigf00"
+ 'SFC.F00:15:00' .link. "sfcf00"
+ 'FLX.F00:15:00' .link. "flxf00"
+ 'SIG.F01' .link. "sigf01"
+ 'SFC.F01' .link. "sfcf01"
+ 'FLX.F01' .link. "flxf01"
+ 'SIG.F02' .link. "sigf02"
+ 'SFC.F02' .link. "sfcf02"
+ 'FLX.F02' .link. "flxf02"
+ 'SIG.F03' .link. "sigf03"
+ 'SFC.F03' .link. "sfcf03"
+ 'FLX.F03' .link. "flxf03"
+ 'SIG.F04' .link. "sigf04"
+ 'SFC.F04' .link. "sfcf04"
+ 'FLX.F04' .link. "flxf04"
+ 'SIG.F05' .link. "sigf05"
+ 'SFC.F05' .link. "sfcf05"
+ 'FLX.F05' .link. "flxf05"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'SIG.F07' .link. "sigf07"
+ 'SFC.F07' .link. "sfcf07"
+ 'FLX.F07' .link. "flxf07"
+ 'SIG.F08' .link. "sigf08"
+ 'SFC.F08' .link. "sfcf08"
+ 'FLX.F08' .link. "flxf08"
+ 'SIG.F09' .link. "sigf09"
+ 'SFC.F09' .link. "sfcf09"
+ 'FLX.F09' .link. "flxf09"
+ 'SIG.F10' .link. "sigf10"
+ 'SFC.F10' .link. "sfcf10"
+ 'FLX.F10' .link. "flxf10"
+ 'SIG.F11' .link. "sigf11"
+ 'SFC.F11' .link. "sfcf11"
+ 'FLX.F11' .link. "flxf11"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'SIG.F30' .link. "sigf30"
+ 'SFC.F30' .link. "sfcf30"
+ 'FLX.F30' .link. "flxf30"
+ 'SIG.F36' .link. "sigf36"
+ 'SFC.F36' .link. "sfcf36"
+ 'FLX.F36' .link. "flxf36"
+ 'SIG.F42' .link. "sigf42"
+ 'SFC.F42' .link. "sfcf42"
+ 'FLX.F42' .link. "flxf42"
+ 'SIG.F48' .link. "sigf48"
+ 'SFC.F48' .link. "sfcf48"
+ 'FLX.F48' .link. "flxf48"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t62.192.94.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t62.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t62.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'sigf01' .bitcmp. "@[CNTL]"
+ 'sfcf01' .bitcmp. "@[CNTL]"
+ 'flxf01' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=33, threads=1}
+ }
+}
+
+########################################################################
+
+test gfs_slg_t574: gsm.x {
+ use gsm_paths
+
+ TEST_DESCR="Run T574 SLG non-adiabatic test with NEMSIO and digital filter from NEMSIO initial conditions"
+ CNTL_NAME='GFS_SLG_T574'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNALBC2="@[fix_am]/global_albedo4.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t574.1152.576.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ 'grid_ini' .link. "gfsanl.2012102400"
+ 'sig_ini' .link. "gfsanl.2012102400"
+ 'sfc_ini' .link. "sfnanl.2012102400"
+ 'SIG.F00:10:00' .link. "sigf00"
+ 'SFC.F00:10:00' .link. "sfcf00"
+ 'FLX.F00:10:00' .link. "flxf00"
+ 'SIG.F06' .link. "sigf06"
+ 'SFC.F06' .link. "sfcf06"
+ 'FLX.F06' .link. "flxf06"
+ 'SIG.F12' .link. "sigf12"
+ 'SFC.F12' .link. "sfcf12"
+ 'FLX.F12' .link. "flxf12"
+ 'SIG.F18' .link. "sigf18"
+ 'SFC.F18' .link. "sfcf18"
+ 'FLX.F18' .link. "flxf18"
+ 'SIG.F24' .link. "sigf24"
+ 'SFC.F24' .link. "sfcf24"
+ 'FLX.F24' .link. "flxf24"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t574.1152.576.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t574.1152.576.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t574.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'sigf00' .bitcmp. "@[CNTL]"
+ 'sfcf00' .bitcmp. "@[CNTL]"
+ 'flxf00' .bitcmp. "@[CNTL]"
+ 'SIG.F06' .bitcmp. "@[CNTL]"
+ 'SFC.F06' .bitcmp. "@[CNTL]"
+ 'FLX.F06' .bitcmp. "@[CNTL]"
+ 'SIG.F12' .bitcmp. "@[CNTL]"
+ 'SFC.F12' .bitcmp. "@[CNTL]"
+ 'FLX.F12' .bitcmp. "@[CNTL]"
+ 'sigf24' .bitcmp. "@[CNTL]"
+ 'sfcf24' .bitcmp. "@[CNTL]"
+ 'flxf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm.x%target]", ranks=96, threads=1, ppn=8}
+ }
+}
+
+########################################################################
+
+test gfs_gocart_nemsio: gsm_gocart.x {
+ use gsm_paths
+
+ TEST_DESCR="GFS_GOCART with NEMSIO"
+ CNTL_NAME='GFS_GOCART_NEMSIO'
+
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Test result area
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]" # Test work area
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ INPUTS="@[plat%INPUTS]" # Test input data
+
+ FNABSC="@[fix_am]/global_snoalb.1x1.grb"
+ FNSMCC="@[fix_am]/global_soilmgldas.t126.384.190.grb"
+ FNMSKH="@[fix_am]/seaice_newland.grb"
+ FNVMNC="@[fix_am]/global_shdmin.0.144x0.144.grb"
+ FNACNA=""
+ FNSOTC="@[fix_gayno]/global_soiltype.1x1.grb"
+ FNVETC="@[fix_am]/global_vegtype.1x1.grb"
+ FNVMXC="@[fix_am]/global_shdmax.0.144x0.144.grb"
+ FNVEGC="@[fix_am]/global_vegfrac.0.144.decpercent.grb"
+ FNZORC="sib"
+ FNALBC="@[fix_am]/global_albedo4.1x1.grb"
+ FNMXIC="@[fix_am]/global_maxice.2x2.grb"
+ FNAISC="@[fix_am]/CFSR.SEAICE.1982.2012.monthly.clim.grb"
+ FNTG3C="@[fix_am]/global_tg3clim.2.6x1.5.grb"
+ FNTSFC="@[fix_am]/RTGSST.1982.2012.monthly.clim.grb"
+ FNSLPC="@[fix_am]/global_slope.1x1.grb"
+ FNTSFA=""
+ FNGLAC="@[fix_am]/global_glacier.2x2.grb"
+ FNSNOA=""
+ FNSNOC="@[fix_am]/global_snoclim.1.875.grb"
+
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[gsm_gocart.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # Specify input files.
+ filters input {
+ # WORK FILE .method. SOURCE
+ '*' .copydir. "@[INPUTS]/gfs_2012010100_common/"
+ '*' .copydir. "@[INPUTS]/tests/@[TEST_NAME]/"
+ 'ngac_fix' .link. "@[ngac_fix]"
+ 'atm_namelist' .atparse. "@[INPUTS]/tests/@[TEST_NAME]/atm_namelist"
+ "GRDR1" .link. "grdr1"
+ "GRDR2" .link. "grdr2"
+ "NSTR" .link. "nstr"
+ 'SIG.F00:07:30' .link. "ngac.t00z.sigf00"
+ 'NST.F00:07:30' .link. "ngac.t00z.nstf00"
+ 'G3D.F00:07:30' .link. "ngac.t00z.g3df00"
+ 'D3D.F00:07:30' .link. "ngac.t00z.d3df00"
+ 'SFC.F00:07:30' .link. "ngac.t00z.sfcf00"
+ 'FLX.F00:07:30' .link. "ngac.t00z.flxf00"
+ 'AER.F00:07:30' .link. "ngac.t00z.aerf00"
+ 'SIG.F03' .link. "ngac.t00z.sigf03"
+ 'NST.F03' .link. "ngac.t00z.nstf03"
+ 'G3D.F03' .link. "ngac.t00z.g3df03"
+ 'D3D.F03' .link. "ngac.t00z.d3df03"
+ 'SFC.F03' .link. "ngac.t00z.sfcf03"
+ 'FLX.F03' .link. "ngac.t00z.flxf03"
+ 'AER.F03' .link. "ngac.t00z.aerf03"
+ 'SIG.F06' .link. "ngac.t00z.sigf06"
+ 'NST.F06' .link. "ngac.t00z.nstf06"
+ 'G3D.F06' .link. "ngac.t00z.g3df06"
+ 'D3D.F06' .link. "ngac.t00z.d3df06"
+ 'SFC.F06' .link. "ngac.t00z.sfcf06"
+ 'FLX.F06' .link. "ngac.t00z.flxf06"
+ 'AER.F06' .link. "ngac.t00z.aerf06"
+ 'SIG.F09' .link. "ngac.t00z.sigf09"
+ 'NST.F09' .link. "ngac.t00z.nstf09"
+ 'G3D.F09' .link. "ngac.t00z.g3df09"
+ 'D3D.F09' .link. "ngac.t00z.d3df09"
+ 'SFC.F09' .link. "ngac.t00z.sfcf09"
+ 'FLX.F09' .link. "ngac.t00z.flxf09"
+ 'AER.F09' .link. "ngac.t00z.aerf09"
+ 'SIG.F12' .link. "ngac.t00z.sigf12"
+ 'NST.F12' .link. "ngac.t00z.nstf12"
+ 'G3D.F12' .link. "ngac.t00z.g3df12"
+ 'D3D.F12' .link. "ngac.t00z.d3df12"
+ 'SFC.F12' .link. "ngac.t00z.sfcf12"
+ 'FLX.F12' .link. "ngac.t00z.flxf12"
+ 'AER.F12' .link. "ngac.t00z.aerf12"
+ 'SIG.F15' .link. "ngac.t00z.sigf15"
+ 'NST.F15' .link. "ngac.t00z.nstf15"
+ 'G3D.F15' .link. "ngac.t00z.g3df15"
+ 'D3D.F15' .link. "ngac.t00z.d3df15"
+ 'SFC.F15' .link. "ngac.t00z.sfcf15"
+ 'FLX.F15' .link. "ngac.t00z.flxf15"
+ 'AER.F15' .link. "ngac.t00z.aerf15"
+ 'SIG.F18' .link. "ngac.t00z.sigf18"
+ 'NST.F18' .link. "ngac.t00z.nstf18"
+ 'G3D.F18' .link. "ngac.t00z.g3df18"
+ 'D3D.F18' .link. "ngac.t00z.d3df18"
+ 'SFC.F18' .link. "ngac.t00z.sfcf18"
+ 'FLX.F18' .link. "ngac.t00z.flxf18"
+ 'AER.F18' .link. "ngac.t00z.aerf18"
+ 'SIG.F21' .link. "ngac.t00z.sigf21"
+ 'NST.F21' .link. "ngac.t00z.nstf21"
+ 'G3D.F21' .link. "ngac.t00z.g3df21"
+ 'D3D.F21' .link. "ngac.t00z.d3df21"
+ 'SFC.F21' .link. "ngac.t00z.sfcf21"
+ 'FLX.F21' .link. "ngac.t00z.flxf21"
+ 'AER.F21' .link. "ngac.t00z.aerf21"
+ 'SIG.F24' .link. "ngac.t00z.sigf24"
+ 'NST.F24' .link. "ngac.t00z.nstf24"
+ 'G3D.F24' .link. "ngac.t00z.g3df24"
+ 'D3D.F24' .link. "ngac.t00z.d3df24"
+ 'SFC.F24' .link. "ngac.t00z.sfcf24"
+ 'FLX.F24' .link. "ngac.t00z.flxf24"
+ 'AER.F24' .link. "ngac.t00z.aerf24"
+ 'model_configure' .link. "atm_namelist.rc"
+ 'fort.48' .link. "@[fix_am]/global_o3clim.txt"
+ 'orography_uf' .link. "@[fix_am]/global_orography_uf.t126.384.190.grb"
+ 'orography' .link. "@[fix_am]/global_orography.t126.grb"
+ 'fort.28' .link. "@[fix_am]/global_o3prdlos.f77"
+ 'fort.29' .link. "@[fix_am]/global_h2o_pltc.f77"
+ 'fort.15' .link. "@[fix_am]/global_co2con.l64.f77"
+ 'fort.24' .link. "@[fix_am]/global_mtnvar.t126.f77"
+ }
+
+ # Specify output files:
+ criteria output {
+ # WORKFILE .comparison. TARGET
+ 'ngac.t00z.gfsanl' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sfnanl' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sigf00' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sfcf00' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.aerf00' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sigf03' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sfcf03' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.aerf03' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sigf06' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sfcf06' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.aerf06' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sigf12' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sfcf12' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.aerf12' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sigf24' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.sfcf24' .bitcmp. "@[CNTL]"
+ 'ngac.t00z.aerf24' .bitcmp. "@[CNTL]"
+# 'ngac.t00z.flxf03' .bitcmp. "@[CNTL]"
+# 'ngac.t00z.flxf06' .bitcmp. "@[CNTL]"
+# 'ngac.t00z.flxf12' .bitcmp. "@[CNTL]"
+# 'ngac.t00z.flxf00' .bitcmp. "@[CNTL]"
+# 'ngac.t00z.flxf24' .bitcmp. "@[CNTL]"
+ }
+
+ spawn execute {
+ {"@[gsm_gocart.x%target]", ranks=64, threads=1}
+ }
+}
+
Index: checkout/compsets/nmm.input
===================================================================
--- checkout/compsets/nmm.input (nonexistent)
+++ checkout/compsets/nmm.input (revision 84791)
@@ -0,0 +1,1117 @@
+load 'platforms.input'
+load 'nemscommon.input'
+
+########################################################################
+
+# NMM build targets:
+
+build nmm.x {
+ use plat
+ NEMS.x="@[plat%EXECrt]/NEMS_nmm.x"
+ modules.nems="@[plat%INCrt]/NEMS_nmm.x.modules"
+ target="@[NEMS.x]"
+# build=rt.sh_build(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+# ESMF_VER='nmmb_intel',NEMS_VER='nmm')
+ build=NEMSAppBuilder(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+ OPTS="app=NMM")
+}
+
+build nmm_post.x {
+ use plat
+ NEMS.x="@[plat%EXECrt]/NEMS_nmm_post.x"
+ modules.nems="@[plat%INCrt]/NEMS_nmm_post.x.modules"
+ target="@[NEMS.x]"
+# build=rt.sh_build(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+# ESMF_VER='nmmb_intel',NEMS_VER='nmm')
+ build=NEMSAppBuilder(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+ OPTS="app=NMM-POST")
+}
+
+build nmm.debug.x {
+ use plat
+ NEMS.x="@[plat%EXECrt]/NEMS_nmm_debug.x"
+ modules.nems="@[plat%INCrt]/NEMS_nmm_debug.x.modules"
+ target="@[NEMS.x]"
+# build=rt.sh_build(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+# ESMF_VER='nmmb_intel',NEMS_VER='nmm DEBUG=on')
+ build=NEMSAppBuilder(NEMS.x="@[NEMS.x]",modules.nems="@[modules.nems]",
+ OPTS="app=NMM-DEBUG")
+}
+
+########################################################################
+
+# NMM variables used by many tests:
+
+nmm_vars={
+ GBRG='reg' , NEMSI='false' , RSTRT='false'
+ AFFN='core' , NODE=1
+ NCHILD='0' , MODE='1-way' , WGT='0.0'
+ FCSTL='48'
+ PCPFLG='false' , WPREC='false'
+ TS='false'
+ RADTN='rrtm' , CONVC='bmj' , TURBL='myj'
+ NP3D='3' , CLDFRACTION='default'
+ SFC_LAYER='myj' , LAND_SURFACE='noah'
+ MICRO='fer_hires' , gfsP='false' , SPEC_ADV='false'
+}
+
+nmm_uncoupled={
+ atm_model='nmm'
+ nems_configure='atm_nostep'
+}
+
+nmm_aliases={
+ wrtdopost="@[WRITE_DOPOST]"
+ postgrbvs="@[POST_GRIBVERSION]"
+ coupling_interval_fast_sec="@[med_atm_coupling_interval_sec]"
+}
+
+nmm_vars_global={
+ use plat%nmm_dflt
+ use nems_vars
+ use common_vars
+ use nmm_vars
+ use nmm_aliases
+ use nmm_uncoupled
+ GBRG="glob"
+ CNTL_NAME='NMMB_glob'
+}
+
+nmm_vars_regional={
+ use plat%nmm_dflt
+ use nems_vars
+ use common_vars
+ use nmm_vars
+ use nmm_aliases
+ use nmm_uncoupled
+ GBRG="reg"
+ CNTL_NAME='NMMB_reg'
+ CONF="@[plat%PARMnems]" # Configuration files (NEMS/tests)
+}
+
+nmm_vars_nests={
+ use plat%nmm_nest
+ use nems_vars
+ use common_vars
+ use nmm_vars
+ use nmm_aliases
+ use nmm_uncoupled
+ GBRG="nests"
+ CNTL_NAME='NMMB_nests'
+ CONF="@[plat%PARMnems]" # Configuration files (NEMS/tests)
+}
+
+nmm_vars_fltr={
+ use plat%nmm_fltr
+ use nems_vars
+ use common_vars
+ use nmm_vars
+ use nmm_aliases
+ use nmm_uncoupled
+ GBRG="fltr"
+ CNTL_NAME='NMMB_reg_filt'
+ CONF="@[plat%PARMnems]" # Configuration files (NEMS/tests)
+}
+
+nmm_vars_mvg={
+ use plat%nmm_mvg1
+ use nems_vars
+ use common_vars
+ use nmm_vars
+ use nmm_aliases
+ use nmm_uncoupled
+ GBRG="mnests"
+ CNTL_NAME='NMMB_mvg_nests'
+ CONF="@[plat%PARMnems]" # Configuration files (NEMS/tests)
+}
+
+nmm_vars_2way={
+ use plat%nmm_mvg2
+ use nems_vars
+ use common_vars
+ use nmm_vars
+ use nmm_aliases
+ use nmm_uncoupled
+ GBRG="mnests_2way"
+ CNTL_NAME='NMMB_2way_nests'
+ CONF="@[plat%PARMnems]" # Configuration files (NEMS/tests)
+}
+
+########################################################################
+
+# NMM Tests:
+
+# NMM GLOBAL -----------------------------------------------------------
+
+# nmm_cntrl test
+test nmm_cntrl: nmm.x {
+ use nmm_vars_global
+
+ # Convenience variables:
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]"
+ TEST_DESCR="Compare NMMB-global results with previous trunk version"
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ TEST_IN="@[plat%INPUTS]/@[CNTL_NAME]" # Test-specific input data
+ COM="@[plat%COMrt]/@[TEST_NAME]"
+
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ "nmmb_hst_01_bin_0000h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_hst_01_bin_0024h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_hst_01_bin_0048h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_hst_01_nio_0000h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_hst_01_nio_0024h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_hst_01_nio_0048h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_rst_01_bin_0024h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_rst_01_nio_0024h_00m_00.00s" .bitcmp. "@[CNTL]"
+ }
+
+ # The prep is run at the top of any job. It should do such things
+ # like making directories and loading modules.
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[nmm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+
+ filters input {
+ # work file operation input file
+ "input_domain_01" .copy. "@[TEST_IN]/test_input_nmmb_global"
+ "input_domain_01_nemsio" .copy. "@[TEST_IN]/test_input_nmmb_global.nemsio"
+ "GWD_bin_01" .copy. "@[TEST_IN]/GWD_bin_01"
+
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "model_configure" .copy. "configure_file_01"
+
+ "*" .copydir. "@[plat%NMM_DATA]"
+
+ "VEGPARM.TBL" .copy. "IGBP_VEGPARM.TBL"
+ "LANDUSE.TBL" .copy. "IGBP_LANDUSE.TBL"
+ "ETAMPNEW_DATA" .copy. "ETAMPNEW_DATA.expanded_rain"
+ "fort.28" .link. "global_o3prdlos.f77"
+ "fort.48" .link. "global_o3clim.txt"
+
+ "solver_state.txt" .copy. "@[plat%PARMnems]/solver_state.txt"
+ "nests.txt" .copy. "@[plat%PARMnems]/nests.txt"
+ }
+}
+
+test nmm_nemsio: nmm.x {
+ use nmm_cntrl
+ NEMSI="true"
+ TEST_DESCR="Test NMMB-global NEMSIO as input file"
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0048h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0048h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_rest: nmm_cntrl, nmm.x {
+ use nmm_cntrl
+ RSTRT="true"
+ TEST_DESCR="Test NMMB-global restart run"
+ filters input {
+ use nmm_cntrl%input
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "model_configure" .copy. "configure_file_01"
+ "restart_file_01" .copy. "@[TEST_IN]/nmmb_rst_01_bin_0024h_00m_00.00s"
+ "restart_file_01_nemsio" .copy. "@[TEST_IN]/nmmb_rst_01_nio_0024h_00m_00.00s"
+ }
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ "nmmb_hst_01_bin_0048h_00m_00.00s" .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_rest_nio: nmm.x {
+ use nmm_cntrl
+ NEMSI="true"
+ RSTRT="true"
+ TEST_DESCR="Test NMMB-global restart run from NEMSIO file"
+ filters input {
+ use nmm_cntrl%input
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "model_configure" .copy. "configure_file_01"
+ "restart_file_01_nemsio" .copy. "@[TEST_IN]/nmmb_rst_01_nio_0024h_00m_00.00s"
+ }
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ "nmmb_hst_01_bin_0048h_00m_00.00s" .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_decomp: nmm.x {
+ use nmm_cntrl
+ FCSTL=24
+ TEST_DESCR="Test NMMB-global different decomposition"
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ "nmmb_hst_01_bin_0000h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_hst_01_bin_0024h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_hst_01_nio_0000h_00m_00.00s" .bitcmp. "@[CNTL]"
+ "nmmb_hst_01_nio_0024h_00m_00.00s" .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_thread: nmm.x {
+ use nmm_cntrl
+ use plat%nmm_thrd
+ TEST_DESCR="Test NMMB-global threading"
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0048h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0048h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+# NMM REGIONAL ---------------------------------------------------------
+
+test nmm_reg_ctl: nmm.x {
+ use nmm_vars_regional
+ WPREC='true'
+ CNTL_NAME='NMMB_reg'
+ TEST_DESCR="Compare NMMB-regional results with previous trunk version"
+
+ # Convenience variables:
+ COM="@[plat%COMrt]/@[TEST_NAME]"
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]"
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ REG_IN="@[plat%INPUTS]/NMMB_reg" # Regional input data
+
+ # The prep is run at the top of any job. It should do such things
+ # like making directories and loading modules.
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[nmm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+
+ filters input {
+ # work file operation input file
+ "input_domain_01" .copy. "@[REG_IN]/input_nmmb_regional.d01"
+ "input_domain_01_nemsio" .copy. "@[REG_IN]/input_nmmb_regional.d01_nemsio"
+ "GWD_bin_01" .copy. "@[REG_IN]/GWD_bin_01"
+ "boco.*" .copydir. "@[REG_IN]"
+
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "model_configure" .copy. "configure_file_01"
+
+ "*" .copydir. "@[plat%NMM_DATA]"
+
+ "VEGPARM.TBL" .copy. "IGBP_VEGPARM.TBL"
+ "LANDUSE.TBL" .copy. "IGBP_LANDUSE.TBL"
+ "ETAMPNEW_DATA" .copy. "ETAMPNEW_DATA.expanded_rain"
+ "fort.28" .link. "global_o3prdlos.f77"
+ "fort.48" .link. "global_o3clim.txt"
+
+ "solver_state.txt" .copy. "@[plat%PARMnems]/solver_state.txt"
+ "nests.txt" .copy. "@[plat%PARMnems]/nests.txt"
+ }
+
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0048h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0048h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'pcp.hr1.01.bin' .bitcmp. "@[CNTL]"
+ 'pcp.hr2.01.bin' .bitcmp. "@[CNTL]"
+ 'pcp.hr3.01.bin' .bitcmp. "@[CNTL]"
+ 'pcp.hr4.01.bin' .bitcmp. "@[CNTL]"
+ 'pcp.hr5.01.bin' .bitcmp. "@[CNTL]"
+ 'pcp.hr6.01.bin' .bitcmp. "@[CNTL]"
+ 'pcp.hr7.01.bin' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_ctl_debug: nmm.debug.x {
+ use nmm_reg_ctl
+ FCSTL=3
+ TEST_DESCR="Compare NMMB-regional results with previous trunk version DEBUG"
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.debug.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+ criteria output {}
+}
+
+test nmm_reg_nemsio: nmm.x {
+ use nmm_reg_ctl
+ WPREC='false'
+ CNTL_NAME='NMMB_reg'
+ NEMSI='true'
+ FCSTL=12
+ TEST_DESCR="Test NMMB-regional NEMSIO as input file"
+
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_rst: nmm.x {
+ use nmm_reg_ctl
+ TEST_DESCR="Test NMMB-regional restart run"
+ RSTRT='true'
+ WPREC='false'
+ filters input {
+ use nmm_reg_ctl%input
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "model_configure" .copy. "configure_file_01"
+ "restart_file_01" .copy. "@[REG_IN]/nmmb_rst_01_bin_0024h_00m_00.00s"
+ "restart_file_01_nemsio" .copy. "@[REG_IN]/nmmb_rst_01_nio_0024h_00m_00.00s"
+ }
+ criteria output {
+ "nmmb_hst_01_bin_0048h_00m_00.00s" .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_rst_debug: nmm.debug.x {
+ use nmm_reg_rst
+ TEST_DESCR="Test NMMB-regional restart run DEBUG"
+ FCSTL=27
+ spawn execute {
+ { "@[nmm.debug.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+ filters input {
+ use nmm_reg_rst%input
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "model_configure" .copy. "configure_file_01"
+ }
+ criteria output {}
+}
+
+test nmm_reg_rst_nio: nmm.x {
+ use nmm_reg_rst
+ TEST_DESCR="Test NMMB-regional restart run with NEMSIO file"
+ NEMSI='true'
+}
+
+test nmm_reg_rst_nio_debug: nmm.debug.x {
+ use nmm_reg_rst_debug
+ TEST_DESCR="Test NMMB-regional restart run with NEMSIO file DEBUG"
+ NEMSI='true'
+ filters input {
+ use nmm_reg_rst_debug%input
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "model_configure" .copy. "configure_file_01"
+ }
+}
+
+
+test nmm_reg_decomp: nmm.x {
+ use nmm_reg_ctl
+ INPES=plat%nmm_dflt%INPES
+ JNPES=plat%nmm_dflt%JNPES
+ WPREC='false'
+ TEST_DESCR="Test NMMB-regional different decomposition"
+ FCSTL=12
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_thread: nmm.x {
+ use nmm_reg_ctl
+ use plat%nmm_thrd
+ TEST_DESCR="Test NMMB-regional threading"
+ WPREC='false'
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0048h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0048h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]", ppn="@[ThreadPPN]" }
+ }
+}
+
+test nmm_reg_sel_phy: nmm.x {
+ use nmm_reg_ctl
+ TEST_DESCR="Test NMMB-regional with selected GFS physics schemes"
+ CNTL_NAME='NMMB_reg_sel_phy'
+ WPREC='false'
+ FCSTL='24'
+ CONVC='sas'
+ MICRO='gfs'
+ TURBL='gfs'
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_spec_adv: nmm.x {
+ use nmm_reg_ctl
+ SPEC_ADV='true'
+ FCSTL='24'
+ NEMSI='true'
+ WPREC='false'
+ CNTL_NAME='NMMB_reg_spec_adv'
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_spec_adv_rst: nmm.x {
+ use nmm_reg_spec_adv
+ RSTRT='true'
+ CNTL_NAME='NMMB_reg_spec_adv'
+ filters input {
+ use nmm_reg_spec_adv%input
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "model_configure" .copy. "configure_file_01"
+ 'restart_file_01' .copy. "@[plat%INPUTS]/NMMB_reg_spec_adv/nmmb_rst_01_bin_0012h_00m_00.00s"
+ 'restart_file_01_nemsio' .copy. "@[plat%INPUTS]/NMMB_reg_spec_adv/nmmb_rst_01_nio_0012h_00m_00.00s"
+ }
+ criteria output {
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_wsm6_gfdl: nmm.x {
+ use nmm_reg_ctl
+ TEST_DESCR="Test NMMB-regional with physics schemes WSM6 and GFDL"
+ CNTL_NAME='NMMB_reg_wsm6_gfdl'
+ WPREC='false'
+ MICRO='wsm6'
+ RADTN='gfdl'
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_wsm6_rrtm: nmm.x {
+ use nmm_reg_wsm6_gfdl
+ TEST_DESC="Test NMMB-regional with physics schemes WSM6 and RRTM"
+ CNTL_NAME='NMMB_reg_wsm6_rrtm'
+ RADTN='rrtm'
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_sas_zhao: nmm.x {
+ use nmm_reg_ctl
+ TEST_DESCR="Test NMMB-regional with physics schemes SAS, ZHAO"
+ CNTL_NAME='NMMB_reg_sas_zhao'
+ WPREC='false'
+ FCSTL='24'
+ CONVC='sas'
+ MICRO='gfs'
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_thomp: nmm.x {
+ use nmm_reg_ctl
+ TEST_DESCR="Test NMMB-regional with THOMPSON microphysics scheme"
+ CNTL_NAME='NMMB_reg_thomp'
+ WPREC='false'
+ FCSTL='24'
+ MICRO='thompson'
+ SPEC_ADV='true'
+ NP3D='8'
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_hur: nmm.x {
+ use nmm_reg_ctl
+ TEST_DESCR="Test NMMB-regional with 2014 HWRF physics"
+ CNTL_NAME='NMMB_reg_hur'
+ WPREC='false'
+ FCSTL='24'
+ TURBL='gfsedmfhur'
+ CONVC='scalecu'
+ MICRO='fer_hires'
+ RADTN='gfdl'
+ SFC_LAYER='gfdl'
+ LAND_SURFACE='noah'
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_pcpadj: nmm.x, nmm_reg_ctl {
+ use nmm_reg_ctl
+ TEST_DESCR="Test NMMB-regional with precipitation adjustment on"
+ WPREC='false'
+ FCSTL='12'
+ PCPFLG='true'
+ CNTL_NAME='NMMB_reg_pcpadj'
+ filters input {
+ use nmm_reg_ctl%input
+ 'pcp.hr*' .copydir. "../nmm_reg_ctl"
+ # Need to redo these with different settings:
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+ }
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_timesr: nmm.x {
+ use nmm_reg_ctl
+ TEST_DESCR="Test NMMB-regional writing time series"
+ CNTL_NAME="NMMB_reg_timesr"
+ TS='true'
+ WPREC='false'
+ FCSTL='06'
+ filters input {
+ use nmm_reg_ctl%input
+ # work file operation input file
+ "ts_locations.nml" .copy. "@[plat%PARMnems]/ts_locations.nml"
+ # Need to redo these with different settings:
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+ }
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ 'nmmb_hst_01_bin_0006h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'ts_p01_d01.bin' .bitcmp. "@[CNTL]"
+ 'ts_p02_d01.bin' .bitcmp. "@[CNTL]"
+ }
+}
+
+# NMM NESTS ------------------------------------------------------------
+
+test nmm_nests: nmm.x {
+ use nmm_vars_nests
+ FCSTL=24
+ NCHILD='02'
+
+ # Convenience variables:
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]"
+ TEST_DESCR="Test NMMB-regional with static nests"
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ TEST_IN="@[plat%INPUTS]/@[CNTL_NAME]" # Test-specific input data
+ COM="@[plat%COMrt]/@[TEST_NAME]"
+
+ # The prep is run at the top of any job. It should do such things
+ # like making directories and loading modules.
+ prep=nems_regtest_prep(RUNDIR="@[RUNDIR]",modules="@[nmm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+
+ filters input {
+ # work file operation input file
+ "input_domain_01" .copy. "@[TEST_IN]/input_nmmb_regional.d01"
+ "input_domain_01_nemsio" .copy. "@[TEST_IN]/input_nmmb_regional.d01_nemsio"
+ "boco.*" .copydir. "@[TEST_IN]"
+ "GWD_bin_*" .copydir. "@[TEST_IN]"
+
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "configure_file_02" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_02.IN"
+ "configure_file_03" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_03.IN"
+ "configure_file_04" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_04.IN"
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+ "model_configure" .copy. "configure_file_01"
+
+ "*" .copydir. "@[plat%NMM_DATA]"
+
+ "VEGPARM.TBL" .copy. "IGBP_VEGPARM.TBL"
+ "LANDUSE.TBL" .copy. "IGBP_LANDUSE.TBL"
+ "ETAMPNEW_DATA" .copy. "ETAMPNEW_DATA.expanded_rain"
+ "fort.28" .link. "global_o3prdlos.f77"
+ "fort.48" .link. "global_o3clim.txt"
+
+ "solver_state.txt" .copy. "@[plat%PARMnems]/solver_state.txt"
+ "nests.txt" .copy. "@[plat%PARMnems]/nests.txt"
+ }
+
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_02_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_02_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_03_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_03_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_04_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_04_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_nest_rest: nmm_nests, nmm.x {
+ use nmm_nests
+ FCSTL=24
+ NCHILD='02'
+ RSTRT='true'
+ TEST_DESCR="Test NMMB-regional static nests with restart"
+
+ filters input {
+ use nmm_nests%input
+ "restart_file_01" .copy. "@[TEST_IN]/nmmb_rst_01_bin_0012h_00m_00.00s"
+ "restart_file_02" .copy. "@[TEST_IN]/nmmb_rst_02_bin_0012h_00m_00.00s"
+ "restart_file_03" .copy. "@[TEST_IN]/nmmb_rst_03_bin_0012h_00m_00.00s"
+ "restart_file_04" .copy. "@[TEST_IN]/nmmb_rst_04_bin_0012h_00m_00.00s"
+ }
+
+ criteria output {
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+# NMM DIGITAL FILTERING ------------------------------------------------
+
+test nmm_reg_filt: nmm.x {
+ use nmm_vars_fltr
+
+ FCSTL='03'
+ NEMSI='true'
+ NCHILD='01'
+
+ # Convenience variables:
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]"
+ TEST_DESCR="Test NMMB-regional digital filter with static nests"
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ NEST_IN="@[plat%INPUTS]/NMMB_nests" # NMM nesting input files
+ FILT_IN="@[plat%INPUTS]/NMMB_reg_filt" # NMM filtering input files
+ COM="@[plat%COMrt]/@[TEST_NAME]"
+
+ # The prep is run at the top of any job. It should do such things
+ # like making directories and loading modules.
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[nmm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+
+ filters input {
+ 'input_domain_01' .copy. "@[NEST_IN]/input_nmmb_regional.d01"
+ 'input_domain_01_nemsio' .copy. "@[NEST_IN]/input_nmmb_regional.d01_nemsio"
+ 'boco*' .copydir. "@[NEST_IN]"
+ '*' .copydir. "@[plat%NMM_DATA]"
+ 'GWD_bin_*' .copydir. "@[FILT_IN]"
+ 'VEGPARM.TBL' .copy. 'IGBP_VEGPARM.TBL'
+ 'LANDUSE.TBL' .copy. 'IGBP_LANDUSE.TBL'
+ 'ETAMPNEW_DATA' .copy. 'ETAMPNEW_DATA.expanded_rain'
+
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+ "model_configure" .copy. "configure_file_01"
+
+ 'configure_file_02' .copy. "@[CONF]/nmm_conf/nmm_fltr_conf_02"
+ 'configure_file_03' .copy. "@[CONF]/nmm_conf/nmm_fltr_conf_03"
+
+ "fort.28" .link. "global_o3prdlos.f77"
+ "fort.48" .link. "global_o3clim.txt"
+ "solver_state.txt" .copy. "@[plat%PARMnems]/solver_state.txt"
+ "filt_vars.txt" .copy. "@[plat%PARMnems]/filt_vars.txt"
+ "nests.txt" .copy. "@[plat%PARMnems]/nests.txt"
+ }
+
+ criteria output {
+ 'nmmb_hst_01_bin_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_reg_filt_zombie: nmm.x {
+ use nmm_reg_filt
+ GBRG='fltr_zombie'
+ CNTL_NAME='NMMB_reg_filt_zombie'
+ TEST_DESCR="Test NMMB-regional digital filter with zombie grandchild"
+ criteria output {
+ 'nmmb_hst_01_bin_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0003h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+ filters input {
+ use nmm_reg_filt%input
+ 'configure_file_03' .copy. "@[CONF]/nmm_conf/nmm_fltr_zombie_conf_03"
+ }
+}
+
+# NMM MOVING NESTING TESTS ---------------------------------------------
+
+test nmm_mvg_nests: nmm.x {
+ use nmm_vars_mvg
+ FCSTL='24'
+ NCHILD='02'
+ NEMSI='true'
+
+ # Convenience variables:
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]"
+ TEST_DESCR="Test NMMB-regional with 2-way moving nests"
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ IN_MOVE="@[plat%INPUTS]/NMMB_mvg_nests" # Moving nesting inputs
+ IN_2WAY="@[plat%INPUTS]/NMMB_2way_nests" # 2-way nesting inputs
+ COM="@[plat%COMrt]/@[TEST_NAME]"
+
+ # The prep is run at the top of any job. It should do such things
+ # like making directories and loading modules.
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[nmm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+
+ filters input {
+ # work file operation input file
+ 'input_domain_01_nemsio' .copy. "@[IN_MOVE]/input_domain_01_nemsio"
+ 'input_domain_02_nemsio' .copy. "@[IN_MOVE]/input_domain_02_nemsio"
+ 'input_domain_03_nemsio' .copy. "@[IN_MOVE]/input_domain_03_nemsio"
+ 'input_domain_04_nemsio' .copy. "@[IN_MOVE]/input_domain_04_nemsio"
+ 'boco.*' .copydir. "@[IN_MOVE]/"
+ '*' .copydir. "@[plat%NMM_DATA]/"
+ 'GWD_bin_*' .copydir. "@[IN_MOVE]/"
+ '*_3.nc' .copydir. "@[IN_MOVE]/"
+ '*_9.nc' .copydir. "@[IN_MOVE]/"
+ 'VEGPARM.TBL' .copy. "IGBP_VEGPARM.TBL"
+ 'LANDUSE.TBL' .copy. "IGBP_LANDUSE.TBL"
+ 'ETAMPNEW_DATA' .copy. "ETAMPNEW_DATA.expanded_rain"
+
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "configure_file_02" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_02.IN"
+ "configure_file_03" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_03.IN"
+ "configure_file_04" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_04.IN"
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+ "model_configure" .copy. "configure_file_01"
+ "fort.28" .link. "global_o3prdlos.f77"
+ "fort.48" .link. "global_o3clim.txt"
+
+ "solver_state.txt" .copy. "@[plat%PARMnems]/solver_state.txt"
+ "nests.txt" .copy. "@[plat%PARMnems]/nests.txt"
+ }
+
+ criteria output {
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_02_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_02_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_03_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_03_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_04_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_04_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_mvg_nests_restart: nmm_mvg_nests, nmm.x {
+ use nmm_mvg_nests
+ TEST_DESCR="Test NMMB-regional with moving nests - RESTART"
+ RSTRT='true'
+ filters input {
+ use nmm_mvg_nests%input
+ 'restart_file_01' .copy. "@[IN_MOVE]/nmmb_rst_01_bin_0012h_00m_00.00s"
+ 'restart_file_01_nemsio' .copy. "@[IN_MOVE]/nmmb_rst_01_nio_0012h_00m_00.00s"
+ 'restart_file_02' .copy. "@[IN_MOVE]/nmmb_rst_02_bin_0012h_00m_00.00s"
+ 'restart_file_02_nemsio' .copy. "@[IN_MOVE]/nmmb_rst_02_nio_0012h_00m_00.00s"
+ 'restart_file_03' .copy. "@[IN_MOVE]/nmmb_rst_03_bin_0012h_00m_00.00s"
+ 'restart_file_03_nemsio' .copy. "@[IN_MOVE]/nmmb_rst_03_nio_0012h_00m_00.00s"
+ 'restart_file_04' .copy. "@[IN_MOVE]/nmmb_rst_04_bin_0012h_00m_00.00s"
+ 'restart_file_04_nemsio' .copy. "@[IN_MOVE]/nmmb_rst_04_nio_0012h_00m_00.00s"
+ }
+ criteria output {
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_mvg_nests_gens: nmm.x {
+ use nmm_mvg_nests
+ use plat%nmm_mvg2
+ TEST_DESCR="Test NMMB-regional with 1-way moving nests and generational task assignments"
+ MODE='2-way'
+ filters input {
+ use nmm_mvg_nests%input
+ 'configure_file_02' .atparse. "@[CONF]/nmm_conf/nmm_mnests_2way_conf_02.IN"
+ 'configure_file_03' .atparse. "@[CONF]/nmm_conf/nmm_mnests_2way_conf_03.IN"
+ 'configure_file_04' .atparse. "@[CONF]/nmm_conf/nmm_mnests_2way_conf_04.IN"
+
+ # Need to regenerate these due to nmm_mvg2:
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+ "model_configure" .copy. "configure_file_01"
+ }
+ criteria output {
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+# NMM 2-WAY STATIONARY NEST TESTS --------------------------------------
+
+test nmm_2way_nests: nmm.x {
+ use nmm_vars_2way
+ FCSTL=24
+ NCHILD='02'
+ NEMSI='true'
+ MODE='2-way'
+ WGT='1.0'
+
+ # Convenience variables:
+ RUNDIR_ROOT="@[plat%TMPrt]"
+ RUNDIR="@[RUNDIR_ROOT]/@[TEST_NAME]"
+ TEST_DESCR="Test NMMB-regional with 2-way moving nests"
+ CNTL="@[plat%BASELINE]/@[CNTL_NAME]" # Control baseline area
+ IN_MOVE="@[plat%INPUTS]/NMMB_mvg_nests" # Moving nesting inputs
+ IN_2WAY="@[plat%INPUTS]/NMMB_2way_nests" # 2-way nesting inputs
+ COM="@[plat%COMrt]/@[TEST_NAME]" # Path to test output area
+
+ # The prep is run at the top of any job. It should do such things
+ # like making directories and loading modules.
+ prep=nems_regtest_prep(
+ RUNDIR="@[RUNDIR]",modules="@[nmm.x%modules.nems]",
+ CNTL="@[CNTL]")
+
+ # The execute step runs the program:
+ spawn execute {
+ { "@[nmm.x%NEMS.x]", ranks="@[TASKS]", threads="@[OpenMPThreads]" }
+ }
+
+ filters input {
+ # work file operation input file
+ "input_domain_01_nemsio" .copy. "@[IN_MOVE]/input_domain_01_nemsio"
+ "input_domain_02_nemsio" .copy. "@[IN_MOVE]/input_domain_02_nemsio"
+ "input_domain_03_nemsio" .copy. "@[IN_MOVE]/input_domain_03_nemsio"
+ "input_domain_04_nemsio" .copy. "@[IN_MOVE]/input_domain_04_nemsio"
+
+ "boco.*" .copydir. "@[IN_MOVE]"
+ "*" .copydir. "@[plat%NMM_DATA]"
+ "GWD_bin_*" .copydir. "@[IN_MOVE]"
+ "*_3.nc" .copydir. "@[IN_MOVE]"
+ "*_9.nc" .copydir. "@[IN_MOVE]"
+
+ "VEGPARM.TBL" .copy. "IGBP_VEGPARM.TBL"
+ "LANDUSE.TBL" .copy. "IGBP_LANDUSE.TBL"
+ "ETAMPNEW_DATA" .copy. "ETAMPNEW_DATA.expanded_rain"
+ "fort.28" .link. "global_o3prdlos.f77"
+ "fort.48" .link. "global_o3clim.txt"
+
+ "configure_file_01" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf.IN"
+ "configure_file_02" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_02.IN"
+ "configure_file_03" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_03.IN"
+ "configure_file_04" .atparse. "@[CONF]/nmm_conf/nmm_@[GBRG]_conf_04.IN"
+ "nems.configure" .atparse. "@[CONF]/nems.configure.@[nems_configure].IN"
+ "atmos.configure" .atparse. "@[CONF]/atmos.configure_nmm"
+ "model_configure" .copy. "configure_file_01"
+
+ "solver_state.txt" .copy. "@[plat%PARMnems]/solver_state.txt"
+ "nests.txt" .copy. "@[plat%PARMnems]/nests.txt"
+ }
+
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ 'nmmb_hst_01_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_01_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_02_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_02_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_03_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_03_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0000h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_04_bin_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_rst_04_nio_0012h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
+
+test nmm_2way_nests_debug: nmm.debug.x {
+ use nmm_2way_nests
+ FCSTL=3
+ TEST_DESCR="Test NMMB-regional with 2-way moving nests DEBUG"
+ criteria output {}
+}
+
+test nmm_2way_nests_restart: nmm_2way_nests, nmm.x {
+ use nmm_2way_nests
+ RSTRT='true'
+ TEST_DESCR="Test NMMB-regional with 2-way moving nests - RESTART"
+
+ filters input {
+ use nmm_2way_nests%input
+ "restart_file_01" .copy. "@[IN_2WAY]/nmmb_rst_01_bin_0012h_00m_00.00s"
+ "restart_file_02" .copy. "@[IN_2WAY]/nmmb_rst_02_bin_0012h_00m_00.00s"
+ "restart_file_03" .copy. "@[IN_2WAY]/nmmb_rst_03_bin_0012h_00m_00.00s"
+ "restart_file_04" .copy. "@[IN_2WAY]/nmmb_rst_04_bin_0012h_00m_00.00s"
+ "restart_file_01_nemsio" .copy. "@[IN_2WAY]/nmmb_rst_01_nio_0012h_00m_00.00s"
+ "restart_file_02_nemsio" .copy. "@[IN_2WAY]/nmmb_rst_02_nio_0012h_00m_00.00s"
+ "restart_file_03_nemsio" .copy. "@[IN_2WAY]/nmmb_rst_03_nio_0012h_00m_00.00s"
+ "restart_file_04_nemsio" .copy. "@[IN_2WAY]/nmmb_rst_04_nio_0012h_00m_00.00s"
+ }
+
+ criteria output {
+ # NEMS.x output file --------- comparison - control file or dir
+ 'nmmb_hst_01_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_01_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_02_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_bin_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_03_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ 'nmmb_hst_04_nio_0024h_00m_00.00s' .bitcmp. "@[CNTL]"
+ }
+}
Index: checkout/compsets/platforms.input
===================================================================
--- checkout/compsets/platforms.input (nonexistent)
+++ checkout/compsets/platforms.input (revision 84791)
@@ -0,0 +1,243 @@
+# DEFAULTS VALUES OVERRIDDEN BY PLATFORMS
+
+platform.defaults={
+ BUILD_WALLTIME=3600 # Wallclock limit in seconds for build jobs
+ DEFAULT_TEST_WALLTIME=1800 # Default wallclock limit in seconds for test jobs
+
+ SRCnems="@[HOMEnems]/NEMS/src"
+ PARMnems="@[HOMEnems]/NEMS/tests"
+
+ SRCrt="@[HOMErt]/src"
+ EXECrt="@[HOMErt]/exec"
+ INCrt="@[HOMErt]/include"
+
+ # The TMPrt is the scrub area for running regression tests.
+ TMPrt="@[RT_SCRATCH_DIR]/tmp"
+
+ # The COMrt is the output area for files to be verified.
+ COMrt="@[HOMErt]/com"
+
+ # NMM_DATA is the general NMM input directory, with files common
+ # to all NMM configurations.
+ NMM_DATA="@[INPUTS]/data" # NMM regression test inputs
+
+ # The BASELINE directory contains the "last known good" baseline
+ # to compare to COMrt in verification mode. In baseline mode,
+ # files are installed to the BASELINE directory, and this variable
+ # is overridden with some temporary directory.
+ BASELINE="@[INPUTS]" # Baseline input or output directory
+}
+
+
+########################################################################
+
+# NMM COMPONENT RESOURCES PER PLATFORM
+
+nmm.nothreads={
+ nmm_dflt={ TASKS=48, OpenMPThreads=1, INPES="05", JNPES="09", WTPG=3 }
+ nmm_thrd={ TASKS=48, OpenMPThreads=1, INPES="05", JNPES='09', WTPG=3,
+ ThreadPPN="@[plat%cores_per_node]" }
+ nmm_nest={ TASKS=96, OpenMPThreads=1, INPES="02", JNPES="02", WTPG=1 }
+ nmm_fltr={ TASKS=64, OpenMPThreads=1, INPES='02', JNPES='02', WTPG=1 }
+ nmm_mvg1={ TASKS=96, OpenMPThreads=1, INPES='05', JNPES='07', WTPG=1 }
+ nmm_mvg2={ TASKS=96, OpenMPThreads=1, INPES='05', JNPES='18', WTPG=2 }
+}
+
+nmm.threaded.wcoss1={
+ nmm_dflt={ TASKS=32, OpenMPThreads=1, INPES='05', JNPES='06', WTPG=2 }
+ nmm_thrd={ TASKS=16, OpenMPThreads=2, INPES='03', JNPES='05', WTPG=1,
+ ThreadPPN="8" }
+ nmm_nest={ TASKS=96, OpenMPThreads=1, INPES='02', JNPES='02', WTPG=1 }
+ nmm_fltr={ TASKS=64, OpenMPThreads=1, INPES='02', JNPES='02', WTPG=1 }
+ nmm_mvg1={ TASKS=96, OpenMPThreads=1, INPES='05', JNPES='07', WTPG=1 }
+ nmm_mvg2={ TASKS=96, OpenMPThreads=1, INPES='05', JNPES='18', WTPG=2 }
+}
+
+########################################################################
+
+# WCOSS PLATFORMS
+
+wcoss.common={ # Common resources for all WCOSSes
+ use platform.defaults
+ use nmm.threaded.wcoss1
+ MACHINE_ID='wcoss'
+
+ HOMEnems=PWD_UP5
+ HOMErt=OUTPUT_PATH
+ BASELINE="/nems/noscrub/emc.nemspara/REGRESSION_TEST"
+ BASELINE_TEMPLATE="/nems/noscrub/emc.nemspara/REGRESSION_TEST_baselines"
+ INPUTS="@[BASELINE]"
+# INPUTS='/meso/noscrub/wx20rv/REGRESSION_TEST'
+}
+
+platform wcoss.phase1 {
+ use wcoss.common
+ CPU_ACCOUNT='NAM-T2O'
+ pex='1'
+ cores_per_node=32
+ MPI='LSF'
+ SHORT_TEST_QUEUE='&SHORTQ;'
+ LONG_TEST_QUEUE='&LONGQ;'
+ BUILD_QUEUE='&BUILDQ;'
+
+ embed bash detect [[[
+ # This function is used at PARSE TIME to detect whether we are
+ # on WCOSS Phase 1. It must be very fast and low resource
+ # usage since the parser runs it.
+ if [[ -d /usrx && -d /global && -e /etc/redhat-release && \
+ -e /etc/prod ]] ; then
+ # We are on WCOSS Phase 1 or 2.
+ if ( ! cat /proc/cpuinfo |grep 'processor.*32' ) ; then
+ # Fewer than 32 fake (hyperthreading) cpus, so Phase 1.
+ exit 0
+ fi
+ fi
+ exit 1
+ ]]]
+
+ # ROCOTO SUPPORT ---------------------------------------------------
+ rocoto={
+ install_dir="@[HOMErt]"
+ log_dir="@[TMPrt]/log"
+ scheduler="lsf"
+ entities=[[[
+ <!ENTITY SHORTQ "dev">
+ <!ENTITY LONGQ "dev">
+ <!ENTITY BUILDQ "dev_shared">
+]]]
+ build_resources=[[[
+ <!-- Build job resources minus wallclock -->
+ <queue>@[BUILD_QUEUE]</queue>
+ <memory>4G</memory>
+ <cores>1</cores>
+ <native>-R 'affinity[core(1)]'</native>
+]]]
+ short_test_resources=[[[
+ <!-- Short test job -->
+ <queue>@[SHORT_TEST_QUEUE]</queue>
+ <memory></memory> <!-- Unlimited memory -->
+ <native>-a poe</native>
+]]]
+ long_test_resources=[[[
+ <!-- Long test job -->
+ <queue>@[LONG_TEST_QUEUE]</queue>
+ <memory></memory> <!-- Unlimited memory -->
+ <native>-a poe</native>
+]]]
+ }
+
+}
+
+platform wcoss.cray {
+ # FIXME: WCOSS CRAY SUPPORT DOES NOT WORK YET
+ use platform.defaults
+ use nmm.threaded.wcoss1
+ MACHINE_ID='wcoss'
+ pex='cray'
+ BUILD_QUEUE='dev'
+ SHORT_TEST_QUEUE='dev'
+ LONG_TEST_QUEUE='dev'
+ MPI='LSFCray'
+
+ # The *nems locations are in NEMS checkout areas.
+ HOMEnems="FIXME"
+
+ # The *rt locations are auto-generated areas.
+ HOMErt="FIXME"
+
+ # INPUTS is the input directory, which should contain fix and parm
+ # files, plus any restarts or other inputs.
+ INPUTS="FIXME"
+
+ rocoto={
+ ## FIXME: INSERT TEXT HERE
+ }
+
+ embed bash detect [[[
+ # This function is used at PARSE TIME to detect whether we are
+ # on WCOSS Cray. It must be very fast and low resource usage
+ # since the parser runs it.
+ if [[ -d /gpfs/hps && -e /etc/SuSE-release && -d /usrx ]] ; then
+ exit 0
+ fi
+ exit 1
+ ]]]
+}
+
+########################################################################
+
+# THEIA SUPPORT
+
+platform theia {
+ use platform.defaults
+ use nmm.nothreads
+ MACHINE_ID='theia' # Name of this platform.
+
+ MPI='MPICH'
+
+ CPU_ACCOUNT='nems'
+ BUILD_QUEUE='&BUILDQ;' # Queue to use for compilation jobs
+ SHORT_TEST_QUEUE='&SHORTQ;' # Queue to use for short test jobs
+ LONG_TEST_QUEUE='&LONGQ;' # Queue to use for long test jobs
+
+ cores_per_node=24 # Number of cores per node on compute nodes
+
+ # The *nems locations are in NEMS checkout areas.
+ HOMEnems=PWD_UP5
+
+ # The *rt locations are auto-generated areas.
+ HOMErt=OUTPUT_PATH
+
+ # INPUTS is the input directory, which should contain fix and parm
+ # files, plus any restarts or other inputs.
+ BASELINE="/scratch4/NCEPDEV/nems/noscrub/emc.nemspara/REGRESSION_TEST"
+ BASELINE_TEMPLATE="/scratch4/NCEPDEV/nems/noscrub/emc.nemspara/REGRESSION_TEST_baselines"
+ INPUTS="@[BASELINE]"
+
+ # PLATFORM DETECTION -----------------------------------------------
+ embed bash detect [[[
+ # This function is used at PARSE TIME to detect whether we are
+ # on NOAA Theia. It must be very fast and low resource usage
+ # since the parser runs it.
+ if [[ -d /scratch3 && -d /scratch4 && -d /contrib ]] ; then
+ exit 0
+ fi
+ exit 1
+ ]]]
+
+ # ROCOTO SUPPORT ---------------------------------------------------
+ rocoto={
+ install_dir="@[HOMErt]"
+ log_dir="@[TMPrt]/log"
+ scheduler="moabtorque"
+ entities=[[[
+ <!ENTITY SHORTQ "batch">
+ <!ENTITY LONGQ "batch">
+ <!ENTITY BUILDQ "service">
+]]]
+ build_resources=[[[
+ <!-- Build job resources minus wallclock -->
+ <queue>@[BUILD_QUEUE]</queue>
+ <memory>4G</memory>
+ <cores>1</cores>
+]]]
+ short_test_resources=[[[
+ <!-- Short test job -->
+ <queue>@[SHORT_TEST_QUEUE]</queue>
+ <memory></memory> <!-- Unlimited memory -->
+]]]
+ long_test_resources=[[[
+ <!-- Long test job -->
+ <queue>@[LONG_TEST_QUEUE]</queue>
+ <memory></memory> <!-- Unlimited memory -->
+]]]
+ }
+
+}
+
+########################################################################
+
+# Autodetection of available platforms. Calls the "detect" function
+# from each of the listed platforms.
+
+autodetect plat (/ wcoss.phase1, theia /) # , wcoss.cray
Index: checkout/compsets/all.input
===================================================================
--- checkout/compsets/all.input (nonexistent)
+++ checkout/compsets/all.input (revision 84791)
@@ -0,0 +1,55 @@
+load 'gsm.input'
+load 'nmm.input'
+
+
+run nmm_cntrl @ nmm, standard, baseline, nmmglob
+run nmm_nemsio @ nmm, nmmglob
+run nmm_rest @ nmm, nmmglob
+run nmm_rest_nio @ nmm, standard, nmmglob
+run nmm_decomp @ nmm, standard, nmmglob
+run nmm_thread @ nmm, standard, nmmglob
+run nmm_reg_ctl @ nmm, baseline, nmmreg
+run nmm_reg_nemsio @ nmm, standard, nmmreg
+run nmm_reg_rst @ nmm, standard, nmmreg
+run nmm_reg_rst_nio @ nmm, nmmreg
+run nmm_reg_decomp @ nmm, nmmreg
+run nmm_reg_thread @ nmm, nmmreg
+run nmm_reg_sel_phy @ nmm, baseline, nmmreg
+run nmm_reg_spec_adv @ nmm, baseline, nmmreg
+run nmm_reg_spec_adv_rst @ nmm, nmmreg
+run nmm_reg_wsm6_gfdl @ nmm, baseline, nmmreg
+run nmm_reg_wsm6_rrtm @ nmm, baseline, nmmreg
+run nmm_reg_sas_zhao @ nmm, baseline, nmmreg
+run nmm_reg_thomp @ nmm, baseline, nmmreg
+run nmm_reg_hur @ nmm, baseline, nmmreg
+run nmm_reg_pcpadj @ nmm, baseline, nmmreg
+run nmm_reg_timesr @ nmm, baseline, nmmreg
+run nmm_nests @ nmm, baseline, nmmnests
+run nmm_nest_rest @ nmm, standard, nmmnests
+run nmm_reg_filt @ nmm, baseline, nmmreg
+run nmm_reg_filt_zombie @ nmm, baseline, nmmreg
+run nmm_mvg_nests @ nmm, baseline, nmmmove
+run nmm_mvg_nests_restart @ nmm, nmmmove
+run nmm_mvg_nests_gens @ nmm, nmmmove
+run nmm_2way_nests @ nmm, baseline, nmm2way
+run nmm_2way_nests_restart @ nmm, nmm2way
+run nmm_reg_rst_nio_debug @ nmm, standard, nmmreg, debug
+run nmm_reg_rst_debug @ nmm, standard, nmmreg, debug
+run nmm_reg_ctl_debug @ nmm, standard, nmmreg, debug
+run nmm_2way_nests_debug @ nmm, standard, nmm2way, debug
+
+
+run gfs_eulerian @ gfs, standard, baseline
+run wam_gh_l150 @ gfs, standard, baseline, wam
+run wam_gh_l150_nemsio @ gfs, standard, baseline, wam
+run gfs_slg @ gfs, standard, baseline, slg
+run gfs_slg_2thread @ gfs, standard, baseline, slg, plat==wcoss.phase1
+run gfs_slg_48pe @ gfs, standard, baseline, slg
+run gfs_slg_adiabatic @ gfs, standard, baseline, slg
+run gfs_slg_land @ gfs, standard, baseline, slg
+run gfs_slg_nsst @ gfs, standard, baseline, slg
+run gfs_slg_rsthst @ gfs, standard, baseline, slg
+run gfs_slg_stochy @ gfs, standard, baseline, slg
+run gfs_slg_t574 @ gfs, standard, baseline, slg
+run gfs_gocart_nemsio @ gfs, standard, baseline, gocart
+
Index: checkout/compsets/nemscommon.input
===================================================================
--- checkout/compsets/nemscommon.input (nonexistent)
+++ checkout/compsets/nemscommon.input (revision 84791)
@@ -0,0 +1,77 @@
+
+# Common variables used by many tests:
+
+nems_vars={
+ atm_model='none'
+ atm_petlist_bounds="-1 -1"
+ ocn_model='none'
+ ocn_petlist_bounds="-1 -1"
+ ice_model='none'
+ ice_petlist_bounds="-1 -1"
+ med_model='nems'
+ med_petlist_bounds="-1 -1"
+ med_atm_coupling_interval_sec='-1'
+ med_ocn_coupling_interval_sec='-1'
+}
+
+common_vars={
+ THRD=1
+ WLCLK=15
+ GEFS_ENSEMBLE=0
+ GEN_ENSEMBLE=0
+ WRITE_DOPOST='.false.'
+ POST_GRIBVERSION='grib1'
+ CONF="@[plat%PARMnems]" # Configuration files (NEMS/tests)
+}
+
+########################################################################
+
+# Common prep step at the top of all tests:
+
+embed bash nems_regtest_prep(RUNDIR,modules,CNTL) [[[
+ mkdir -p "$RUNDIR" "$CNTL"
+ cd @[RUNDIR]
+ source "$modules"
+ export MPI_TYPE_DEPTH=20
+ export ESMF_RUNTIME_COMPLIANCECHECK=OFF:depth=4
+]]]
+
+########################################################################
+
+# Old rt.sh build system. Note that the $NEMS_VER must use $ not @ to
+# ensure it is not quoted. Any shell metacharacters, such as spaces,
+# should be interpreted:
+
+embed bash rt.sh_build(NEMS.x,modules.nems,ESMF_VER,
+ MACHINE_ID="@[plat%MACHINE_ID]",NEMS_VER)
+[[[
+ mkdir -p "@[plat%EXECrt]" "@[plat%INCrt]"
+ rm -f "@[NEMS.x]" "@[modules.nems]"
+ cd @[plat%SRCnems]
+ ./configure @[ESMF_VER]_@[MACHINE_ID]
+ cp -fp conf/modules.nems "@[modules.nems]"
+ source "@[modules.nems]"
+ module list
+ gmake clean
+ gmake $NEMS_VER J=-j2
+ cp -fp ../exe/NEMS.x "@[NEMS.x]"
+]]]
+
+########################################################################
+
+# NEMSAppBuilder build system. Note $OPTS must use $ not @ since
+# shell metacharacters should be expanded, especially spaces.
+
+embed bash NEMSAppBuilder(NEMS.x,modules.nems,OPTS)
+[[[
+ mkdir -p "@[plat%EXECrt]" "@[plat%INCrt]"
+ rm -f "@[NEMS.x]" "@[modules.nems]"
+ cd @[plat%HOMEnems]
+
+ # NOTE: Replace "rebuild" with "norebuild" to disable "gmake clean"
+ ./NEMS/NEMSAppBuilder rebuild $OPTS
+
+ cd @[plat%SRCnems]
+ cp -fp ../exe/NEMS.x "@[NEMS.x]"
+ cp -fp conf/modules.nems "@[modules.nems]"
+]]]
Index: checkout
===================================================================
--- checkout (revision 84675)
+++ checkout (revision 84791)
Property changes on: checkout
___________________________________________________________________
Modified: svn:externals
## -1,5 +1,4 ##
-NEMS -r 84674 https://svnemc.ncep.noaa.gov/projects/nems/trunk
+NEMS -r 84790 https://svnemc.ncep.noaa.gov/projects/nems/trunk
NEMS/src/atmos/gsm -r 83593 https://svnemc.ncep.noaa.gov/projects/gsm/trunk
NEMS/src/atmos/nmm -r 84154 https://svnemc.ncep.noaa.gov/projects/nmmb/trunk
NEMS/src/chem -r 80652 https://svnemc.ncep.noaa.gov/projects/nceplibs/chem/trunk
-NEMS/tests/produtil -r 84032 https://svnemc.ncep.noaa.gov/projects/nceplibs/produtil/branches/regtests
Modified: svn:mergeinfo
## -0,0 +0,1 ##
Merged /nems/apps/NEMSLegacy/branches/regtests:r84323-84789
--=_5834f0a3.cPDgIH+CZcKL/epvepmSoK6I/SyZ0DPHyn+kTVAh5j6qgcB/--
More information about the Ncep.list.nems.announce
mailing list