diff --git a/.gitmodules b/.gitmodules
index 0c3b70cc3f..56f7ce13e3 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,8 +4,8 @@
branch = develop
[submodule "NEMS"]
path = NEMS
- url = https://github.com/NOAA-EMC/NEMS
- branch = develop
+ url = https://github.com/binli2337/NEMS
+ branch = feature/new_cdeps
[submodule "FMS"]
path = FMS
url = https://github.com/NOAA-GFDL/FMS
@@ -24,8 +24,8 @@
branch = develop
[submodule "CMEPS"]
path = CMEPS-interface/CMEPS
- url = https://github.com/NOAA-EMC/CMEPS.git
- branch = emc/develop
+ url = https://github.com/DeniseWorthen/CMEPS
+ branch = feature/updcmeps
[submodule "MOM6"]
path = MOM6-interface/MOM6
url = https://github.com/NOAA-EMC/MOM6
@@ -34,6 +34,10 @@
path = CICE-interface/CICE
url = https://github.com/NOAA-EMC/CICE
branch = emc/develop
+[submodule "CDEPS"]
+ path = CDEPS
+ url = https://github.com/binli2337/CDEPS
+ branch = feature/add_gefs
[submodule "DATM"]
path = DATM
url = https://github.com/NOAA-EMC/NEMSdatm
diff --git a/CDEPS b/CDEPS
new file mode 160000
index 0000000000..9a79e4b6bb
--- /dev/null
+++ b/CDEPS
@@ -0,0 +1 @@
+Subproject commit 9a79e4b6bb000e467c0430d5609b653fa3aa9fc0
diff --git a/CMEPS-interface/CMEPS b/CMEPS-interface/CMEPS
index 0658dde477..aa866266de 160000
--- a/CMEPS-interface/CMEPS
+++ b/CMEPS-interface/CMEPS
@@ -1 +1 @@
-Subproject commit 0658dde477b92348bc8608a8c1d20485843bf4a4
+Subproject commit aa866266de78642fd480765f02b935dfb4b779c0
diff --git a/CMEPS-interface/CMakeLists.txt b/CMEPS-interface/CMakeLists.txt
index ae4e71627c..bf2a924d8a 100644
--- a/CMEPS-interface/CMakeLists.txt
+++ b/CMEPS-interface/CMakeLists.txt
@@ -18,7 +18,6 @@ endif()
list(APPEND _nems_util_files
CMEPS/util/shr_abort_mod.F90
CMEPS/util/shr_log_mod.F90
- CMEPS/util/shr_pio_mod.F90
CMEPS/util/shr_sys_mod.F90
CMEPS/util/shr_flux_mod.F90
CMEPS/util/shr_mpi_mod.F90
@@ -66,8 +65,7 @@ list(APPEND _mediator_files
CMEPS/mediator/med_phases_post_wav_mod.F90)
list(APPEND _mediator_defs ESMF_VERSION_MAJOR=${ESMF_VERSION_MAJOR}
- ESMF_VERSION_MINOR=${ESMF_VERSION_MINOR}
- INTERNAL_PIO_INIT)
+ ESMF_VERSION_MINOR=${ESMF_VERSION_MINOR})
### Create target library and set PUBLIC interfaces on the library
add_library(cmeps STATIC ${_nems_util_files} ${_mediator_files})
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 735f5d8449..8442fe3347 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -240,7 +240,8 @@ if(NEMSdatm)
endif()
if(CDEPS)
- message("ADD CDEPS-interface directory")
+ add_subdirectory(CDEPS)
+# message("ADD CDEPS-interface directory")
# add_subdirectory(CDEPS-interface)
endif()
@@ -302,10 +303,18 @@ endif()
if(NEMSdatm)
add_dependencies(ufs datatm)
- list(APPEND _ufs_defs_private FRONT_DATM=datm)
+ list(APPEND _ufs_defs_private FRONT_NEMS_DATM=datm)
list(APPEND _ufs_libs_public datatm)
endif()
+if(CDEPS)
+ list(APPEND _ufs_defs_private CDEPS
+ FRONT_CDEPS_DATM=atm_comp_nuopc)
+ add_dependencies(ufs datm)
+ include_directories(${CMAKE_CURRENT_BINARY_DIR}/CDEPS/datm)
+ target_link_libraries(ufs PUBLIC datm)
+endif()
+
if(FV3)
add_dependencies(ufs fv3atm)
list(APPEND _ufs_defs_private FRONT_FV3=fv3gfs_cap_mod)
@@ -331,7 +340,9 @@ if(CMEPS)
endif()
if(CDEPS)
- message("Do CDEPS things here")
+ #message("Do CDEPS things here")
+ add_dependencies(ufs streams dshr cdeps_share FoX_dom)
+ target_link_libraries(ufs PUBLIC streams dshr cdeps_share FoX_dom)
endif()
target_compile_definitions(ufs PRIVATE "${_ufs_defs_private}")
@@ -357,7 +368,7 @@ endif()
target_compile_definitions(ufs_model PRIVATE "${_ufs_model_defs_private}")
-if(NEMSdatm)
+if(CDEPS OR NEMSdatm)
target_link_libraries(ufs_model PUBLIC ufs w3nco::w3nco_d)
endif()
diff --git a/NEMS b/NEMS
index b80b5b1880..fc4308c996 160000
--- a/NEMS
+++ b/NEMS
@@ -1 +1 @@
-Subproject commit b80b5b18805302290f821e960d820e99e0bcd9ef
+Subproject commit fc4308c9968fc89edb2eb12d6efb8a62973a6274
diff --git a/tests/default_vars.sh b/tests/default_vars.sh
index cba4c74880..e6bd5431e8 100755
--- a/tests/default_vars.sh
+++ b/tests/default_vars.sh
@@ -57,6 +57,14 @@ elif [[ $MACHINE_ID = wcoss_dell_p3 || $MACHINE_ID = wcoss2 ]]; then
MPB_datm_025="0 39"; APB_datm_025="0 39"
OPB_datm_025="40 159"; IPB_datm_025="160 207"
+ TASKS_cdeps_100=40; TPN_cdeps_100=28
+ MPB_cdeps_100="0 11"; APB_cdeps_100="0 11"
+ OPB_cdeps_100="12 27"; IPB_cdeps_100="28 39"
+
+ TASKS_cdeps_025=208; TPN_cdeps_025=28
+ MPB_cdeps_025="0 39"; APB_cdeps_025="0 39"
+ OPB_cdeps_025="40 159"; IPB_cdeps_025="160 207"
+
elif [[ $MACHINE_ID = orion.* ]]; then
TASKS_dflt=150 ; TPN_dflt=40 ; INPES_dflt=3 ; JNPES_dflt=8
@@ -100,6 +108,14 @@ elif [[ $MACHINE_ID = orion.* ]]; then
MPB_datm_025="0 39"; APB_datm_025="0 39"
OPB_datm_025="40 159"; IPB_datm_025="160 207"
+ TASKS_cdeps_100=40; TPN_cdeps_100=40
+ MPB_cdeps_100="0 11"; APB_cdeps_100="0 11"
+ OPB_cdeps_100="12 27"; IPB_cdeps_100="28 39"
+
+ TASKS_cdeps_025=208; TPN_cdeps_025=40
+ MPB_cdeps_025="0 39"; APB_cdeps_025="0 39"
+ OPB_cdeps_025="40 159"; IPB_cdeps_025="160 207"
+
elif [[ $MACHINE_ID = hera.* ]]; then
TASKS_dflt=150 ; TPN_dflt=40 ; INPES_dflt=3 ; JNPES_dflt=8
@@ -143,6 +159,14 @@ elif [[ $MACHINE_ID = hera.* ]]; then
MPB_datm_025="0 39"; APB_datm_025="0 39"
OPB_datm_025="40 159"; IPB_datm_025="160 207"
+ TASKS_cdeps_100=40; TPN_cdeps_100=40
+ MPB_cdeps_100="0 11"; APB_cdeps_100="0 11"
+ OPB_cdeps_100="12 27"; IPB_cdeps_100="28 39"
+
+ TASKS_cdeps_025=208; TPN_cdeps_025=40
+ MPB_cdeps_025="0 39"; APB_cdeps_025="0 39"
+ OPB_cdeps_025="40 159"; IPB_cdeps_025="160 207"
+
elif [[ $MACHINE_ID = linux.* ]]; then
if [[ $CI_TEST = true ]]; then
@@ -204,6 +228,14 @@ elif [[ $MACHINE_ID = gaea.* ]]; then
MPB_datm_025="0 39"; APB_datm_025="0 39"
OPB_datm_025="40 159"; IPB_datm_025="160 207"
+ TASKS_cdeps_100=40; TPN_cdeps_100=36
+ MPB_cdeps_100="0 11"; APB_cdeps_100="0 11"
+ OPB_cdeps_100="12 27"; IPB_cdeps_100="28 39"
+
+ TASKS_cdeps_025=208; TPN_cdeps_025=36
+ MPB_cdeps_025="0 39"; APB_cdeps_025="0 39"
+ OPB_cdeps_025="40 159"; IPB_cdeps_025="160 207"
+
elif [[ $MACHINE_ID = cheyenne.* ]]; then
TASKS_dflt=150 ; TPN_dflt=36 ; INPES_dflt=3 ; JNPES_dflt=8
@@ -247,6 +279,14 @@ elif [[ $MACHINE_ID = cheyenne.* ]]; then
MPB_datm_025="0 39"; APB_datm_025="0 39"
OPB_datm_025="40 159"; IPB_datm_025="160 207"
+ TASKS_cdeps_100=40; TPN_cdeps_100=36
+ MPB_cdeps_100="0 11"; APB_cdeps_100="0 11"
+ OPB_cdeps_100="12 27"; IPB_cdeps_100="28 39"
+
+ TASKS_cdeps_025=208; TPN_cdeps_025=36
+ MPB_cdeps_025="0 39"; APB_cdeps_025="0 39"
+ OPB_cdeps_025="40 159"; IPB_cdeps_025="160 207"
+
elif [[ $MACHINE_ID = stampede.* ]]; then
TASKS_dflt=150 ; TPN_dflt=48 ; INPES_dflt=3 ; JNPES_dflt=8
@@ -289,6 +329,14 @@ elif [[ $MACHINE_ID = stampede.* ]]; then
MPB_datm_025="0 39"; APB_datm_025="0 39"
OPB_datm_025="40 159"; IPB_datm_025="160 207"
+ TASKS_cdeps_100=40; TPN_cdeps_100=48
+ MPB_cdeps_100="0 11"; APB_cdeps_100="0 11"
+ OPB_cdeps_100="12 27"; IPB_cdeps_100="28 39"
+
+ TASKS_cdeps_025=208; TPN_cdeps_025=48
+ MPB_cdeps_025="0 39"; APB_cdeps_025="0 39"
+ OPB_cdeps_025="40 159"; IPB_cdeps_025="160 207"
+
else
echo "Unknown MACHINE_ID ${MACHINE_ID}"
@@ -307,7 +355,8 @@ export_fv3 ()
{
export FV3=true
export S2S=false
-export DATM=false
+export DATM_NEMS=false
+export DATM_CDEPS=false
export THRD=1
export WLCLK=$WLCLK_dflt
export INPES=$INPES_dflt
@@ -474,7 +523,8 @@ export_cpl ()
{
export FV3=true
export S2S=true
-export DATM=false
+export DATM_NEMS=false
+export DATM_CDEPS=false
export DAYS="1"
export FHMAX="24"
@@ -619,7 +669,8 @@ export_datm ()
{
export FV3=false
export S2S=false
-export DATM=true
+export DATM_NEMS=true
+export DATM_CDEPS=false
export DAYS=1
export FHMAX=24
export WLCLK=30
@@ -643,7 +694,7 @@ export NY_GLB=320
# nems.configure
export NEMS_CONFIGURE="nems.configure.datm.IN"
export med_model="nems"
-export atm_model="datm"
+export atm_model="nems_datm"
export ocn_model="mom6"
export ice_model="cice6"
export atm_petlist_bounds=$APB_datm_100
@@ -718,3 +769,112 @@ export CICE_HIST_AVG='.true.'
export BL_SUFFIX=""
export RT_SUFFIX=""
}
+export_datm_cdeps ()
+{
+export FV3=false
+export S2S=false
+export DATM_NEMS=false
+export DATM_CDEPS=true
+export DAYS=1
+export FHMAX=24
+export WLCLK=30
+export THRD=1
+export FHROT='0'
+export WARM_START=.F.
+
+# atm/ocn/ice resolution
+export IATM=1760
+export JATM=880
+export ATM_NX_GLB=$IATM
+export ATM_NY_GLB=$JATM
+export ATMRES='1760x880'
+export OCNRES='100'
+export ICERES='1.00'
+export NX_GLB=360
+export NY_GLB=320
+
+# nems.configure
+export NEMS_CONFIGURE="nems.configure.datm_cdeps.IN"
+export med_model="nems"
+export atm_model="datm"
+export ocn_model="mom6"
+export ice_model="cice6"
+export atm_petlist_bounds=$APB_cdeps_100
+export med_petlist_bounds=$MPB_cdeps_100
+export ocn_petlist_bounds=$OPB_cdeps_100
+export ice_petlist_bounds=$IPB_cdeps_100
+export TASKS=$TASKS_cdeps_100
+export TPN=$TPN_cdeps_100
+export NPROC_ICE='12'
+
+export ENS_NUM=1
+export SYEAR='2011'
+export SMONTH='10'
+export SDAY='01'
+export SHOUR='00'
+export CDATE=${SYEAR}${SMONTH}${SDAY}${SHOUR}
+
+export NFHOUT=6
+export FDIAG=6
+export DT_ATMOS='900'
+export DT_CICE=${DT_ATMOS}
+export DT_DYNAM_MOM6='1800'
+export DT_THERM_MOM6='3600'
+export CPL_SLOW=${DT_THERM_MOM6}
+export CPL_FAST=${DT_ATMOS}
+export coupling_interval_slow_sec=${CPL_SLOW}
+export coupling_interval_fast_sec=${CPL_FAST}
+
+export RESTART_N=${FHMAX}
+export CPLMODE='nems_orig_data'
+export cap_dbug_flag="0"
+export use_coldstart=".false."
+export use_mommesh=".false."
+export RUNTYPE='startup'
+export flux_convergence='0.0'
+export flux_iteration='2'
+export flux_scheme='0'
+
+export INPUT_NML=input.mom6.nml.IN
+export MODEL_CONFIGURE=datm_cdeps_configure.IN
+export FIELD_TABLE="field_table"
+export DIAG_TABLE="diag_table_template"
+
+# atm defaults
+export DATM_SRC="CFSR"
+export FILENAME_BASE='cfsr.'
+export mesh_file="cfsr_mesh.nc"
+export MESH_ATM="DATM_INPUT/${mesh_file}"
+export atm_datamode=${DATM_SRC}
+
+# MOM6 defaults; 1 degree
+export MOM_INPUT=MOM_input_template_100
+export MOM6_RESTART_SETTING='n'
+export MOM6_RIVER_RUNOFF='False'
+export FRUNOFF=""
+export CHLCLIM='"seawifs_1998-2006_smoothed_2X.nc"'
+# this must be set False for restart repro
+export MOM6_REPRO_LA='False'
+# since CPL_SLOW is set to DT_THERM, this should be always be false
+export MOM6_THERMO_SPAN='False'
+# no WW3
+export MOM6_USE_WAVES='False'
+
+# CICE6 defaults; 1 degree
+export MESHOCN_ICE="mesh.mx${OCNRES}.nc"
+export CICEGRID="grid_cice_NEMS_mx${OCNRES}.nc"
+export CICEMASK="kmtu_cice_NEMS_mx${OCNRES}.nc"
+export RUNID='unknown'
+# set large; restart frequency now controlled by restart_n in nems.configure
+export DUMPFREQ='d'
+export DUMPFREQ_N=1000
+export USE_RESTART_TIME='.false.'
+export RESTART_EXT='.false.'
+# setting to true will allow Frazil FW and Salt to be
+# included in fluxes sent to ocean
+export FRAZIL_FWSALT='.true.'
+# default to write CICE average history files
+export CICE_HIST_AVG='.true.'
+export BL_SUFFIX=""
+export RT_SUFFIX=""
+}
diff --git a/tests/fv3_conf/cpld_datm_cdeps.IN b/tests/fv3_conf/cpld_datm_cdeps.IN
new file mode 100644
index 0000000000..9afe04471a
--- /dev/null
+++ b/tests/fv3_conf/cpld_datm_cdeps.IN
@@ -0,0 +1,39 @@
+mkdir INPUT DATM_INPUT RESTART history MOM6_OUTPUT
+
+# DATM fixed input
+ln -s @[INPUTDATA_ROOT]/DATM_CDEPS/@[DATM_SRC]/@[mesh_file] DATM_INPUT
+ln -s @[INPUTDATA_ROOT]/DATM_CDEPS/@[DATM_SRC]/201110/*201110*nc DATM_INPUT
+
+# MOM6 fixed input
+ICERES="${OCNRES:0:1}.${OCNRES:1}"
+cp @[INPUTDATA_ROOT]/MOM6_FIX/@[OCNRES]/* ./INPUT
+cp @[INPUTDATA_ROOT]/MOM6_FIX_DATM/@[OCNRES]/* ./INPUT
+
+# CICE fixed input
+cp @[INPUTDATA_ROOT]/CICE_FIX/@[OCNRES]/grid_cice_NEMS_mx@[OCNRES].nc .
+cp @[INPUTDATA_ROOT]/CICE_FIX/@[OCNRES]/kmtu_cice_NEMS_mx@[OCNRES].nc .
+cp @[INPUTDATA_ROOT]/CICE_FIX/@[OCNRES]/mesh.mx@[OCNRES].nc .
+
+if [ $WARM_START = .F. ]; then
+# cold start
+ if [[ $OCNRES == '025' ]]; then
+ cp @[INPUTDATA_ROOT]/MOM6_IC/@[OCNRES]/2011100100/MOM*.nc ./INPUT
+ cp @[INPUTDATA_ROOT]/CICE_IC/@[OCNRES]/cice_model_@[ICERES].cpc*.nc cice_model.res.nc
+ else
+ cp @[INPUTDATA_ROOT]/MOM6_IC/@[OCNRES]/2011100100/MOM6_IC_TS*.nc ./INPUT/MOM6_IC_TS.nc
+ cp @[INPUTDATA_ROOT]/CICE_IC/@[OCNRES]/cice_model_@[ICERES].cpc*.nc cice_model.res.nc
+ fi
+else
+# warm start
+ cp ../${DEP_RUN}${RT_SUFFIX}/RESTART/MOM.res.2011-10-01-12*.nc ./INPUT/MOM.res.nc
+
+# CMEPS restart and pointer files
+ RFILE="DATM_${DATM_SRC}.cpl.r.2011-10-01-43200.nc"
+ cp ../${DEP_RUN}${RT_SUFFIX}/RESTART/${RFILE} .
+ ls -1 ${RFILE}>rpointer.cpl
+
+# CICE restart and pointer files
+ cp ../${DEP_RUN}${RT_SUFFIX}/RESTART/iced.2011-10-01-43200.nc ./INPUT
+ RFILE="iced.2011-10-01-43200.nc"
+ ls -1 "./INPUT/"${RFILE}>ice.restart_file
+fi
diff --git a/tests/fv3_conf/cpld_datm_cfsr.IN b/tests/fv3_conf/cpld_datm_cfsr.IN
index 25b8acc50e..89b4b27b9e 100644
--- a/tests/fv3_conf/cpld_datm_cfsr.IN
+++ b/tests/fv3_conf/cpld_datm_cfsr.IN
@@ -1,6 +1,5 @@
mkdir INPUT DATM_INPUT RESTART history MOM6_OUTPUT
-export DATM=true
# DATM fixed input
export IATM=1760
export JATM=880
diff --git a/tests/fv3_conf/cpld_datm_gefs.IN b/tests/fv3_conf/cpld_datm_gefs.IN
index 74811c36b2..641fbc5cc6 100644
--- a/tests/fv3_conf/cpld_datm_gefs.IN
+++ b/tests/fv3_conf/cpld_datm_gefs.IN
@@ -1,6 +1,5 @@
mkdir INPUT DATM_INPUT RESTART history MOM6_OUTPUT
-export DATM=true
# DATM fixed input
ICERES="${OCNRES:0:1}.${OCNRES:1}"
cp @[INPUTDATA_ROOT]/DATM/gefs.SCRIP.nc DATM_INPUT
diff --git a/tests/parm/datm_cdeps_configure.IN b/tests/parm/datm_cdeps_configure.IN
new file mode 100644
index 0000000000..08c9f2c5de
--- /dev/null
+++ b/tests/parm/datm_cdeps_configure.IN
@@ -0,0 +1,20 @@
+print_esmf: .true.
+total_member: 1
+PE_MEMBER01: @[TASKS]
+start_year: @[SYEAR]
+start_month: @[SMONTH]
+start_day: @[SDAY]
+start_hour: @[SHOUR]
+start_minute: 0
+start_second: 0
+nhours_fcst: @[FHMAX]
+RUN_CONTINUE: .false.
+ENS_SPS: .false.
+dt_atmos: @[DT_ATMOS]
+atm_coupling_interval_sec: @[coupling_interval_fast_sec]
+calendar: 'julian'
+fhrot: @[FHROT]
+nfhout: @[NFHOUT]
+nfhmax_hf: -1
+nfhout_hf: 3
+nsout: -1
diff --git a/tests/parm/datm_cfsr.streams.xml b/tests/parm/datm_cfsr.streams.xml
new file mode 100644
index 0000000000..cb20dfdcac
--- /dev/null
+++ b/tests/parm/datm_cfsr.streams.xml
@@ -0,0 +1,44 @@
+
+
+
+
+ cycle
+ linear
+ single
+ bilinear
+ 1.5
+ 2011
+ 2011
+ 2011
+ u:v
+ DATM_INPUT/cfsr_mesh.nc
+ null
+
+ DATM_INPUT/cfsr.201110.nc
+
+
+ slmsksfc Sa_mask
+ DSWRF Faxa_swdn
+ DLWRF Faxa_lwdn
+ vbdsf_ave Faxa_swvdr
+ vddsf_ave Faxa_swvdf
+ nbdsf_ave Faxa_swndr
+ nddsf_ave Faxa_swndf
+ u10m Sa_u10m
+ v10m Sa_v10m
+ hgt_hyblev1 Sa_z
+ psurf Sa_pslv
+ tmp_hyblev1 Sa_tbot
+ spfh_hyblev1 Sa_shum
+ ugrd_hyblev1 Sa_u
+ vgrd_hyblev1 Sa_v
+ q2m Sa_q2m
+ t2m Sa_t2m
+ pres_hyblev1 Sa_pbot
+ precp Faxa_rain
+ fprecp Faxa_snow
+
+ 0
+
+
+
diff --git a/tests/parm/datm_gefs.streams.xml b/tests/parm/datm_gefs.streams.xml
new file mode 100644
index 0000000000..26b5177be0
--- /dev/null
+++ b/tests/parm/datm_gefs.streams.xml
@@ -0,0 +1,44 @@
+
+
+
+
+ cycle
+ linear
+ single
+ bilinear
+ 1.5
+ 2011
+ 2011
+ 2011
+ u:v
+ DATM_INPUT/gefs_mesh.nc
+ null
+
+ DATM_INPUT/gefs.201110.nc
+
+
+ slmsksfc Sa_mask
+ DSWRF Faxa_swdn
+ DLWRF Faxa_lwdn
+ vbdsf_ave Faxa_swvdr
+ vddsf_ave Faxa_swvdf
+ nbdsf_ave Faxa_swndr
+ nddsf_ave Faxa_swndf
+ u10m Sa_u10m
+ v10m Sa_v10m
+ hgt_hyblev1 Sa_z
+ psurf Sa_pslv
+ tmp_hyblev1 Sa_tbot
+ spfh_hyblev1 Sa_shum
+ ugrd_hyblev1 Sa_u
+ vgrd_hyblev1 Sa_v
+ q2m Sa_q2m
+ t2m Sa_t2m
+ pres_hyblev1 Sa_pbot
+ precp Faxa_rain
+ fprecp Faxa_snow
+
+ 0
+
+
+
diff --git a/tests/parm/datm_in b/tests/parm/datm_in
new file mode 100644
index 0000000000..b636400603
--- /dev/null
+++ b/tests/parm/datm_in
@@ -0,0 +1,15 @@
+&datm_nml
+ datamode = "@[atm_datamode]"
+ factorfn_data = "null"
+ factorfn_mesh = "null"
+ flds_co2 = .false.
+ flds_presaero = .false.
+ flds_wiso = .false.
+ iradsw = 1
+ model_createmesh_fromfile = "null"
+ model_maskfile = "@[MESH_ATM]"
+ model_meshfile = "@[MESH_ATM]"
+ nx_global = @[ATM_NX_GLB]
+ ny_global = @[ATM_NY_GLB]
+ restfilm = "null"
+/
diff --git a/tests/parm/med_modelio.nml b/tests/parm/med_modelio.nml
deleted file mode 100644
index 959488b191..0000000000
--- a/tests/parm/med_modelio.nml
+++ /dev/null
@@ -1,8 +0,0 @@
-&pio_inparm
- pio_netcdf_format = "64bit_offset"
- pio_numiotasks = -99
- pio_rearranger = 1
- pio_root = 1
- pio_stride = 36
- pio_typename = "netcdf"
-/
diff --git a/tests/parm/nems.configure.datm.IN b/tests/parm/nems.configure.datm.IN
index c4c6782960..7b973f4c1f 100644
--- a/tests/parm/nems.configure.datm.IN
+++ b/tests/parm/nems.configure.datm.IN
@@ -79,9 +79,9 @@ DRIVER_attributes::
mediator_read_restart = @[use_coldstart]
::
MED_attributes::
- ATM_model = datm
- ICE_model = cice6
- OCN_model = mom
+ ATM_model = @[atm_model]
+ ICE_model = @[ice_model]
+ OCN_model = @[ocn_model]
history_n = 1
history_option = nhours
history_ymd = -999
diff --git a/tests/parm/nems.configure.datm_cdeps.IN b/tests/parm/nems.configure.datm_cdeps.IN
new file mode 100644
index 0000000000..c669c58a3b
--- /dev/null
+++ b/tests/parm/nems.configure.datm_cdeps.IN
@@ -0,0 +1,128 @@
+#############################################
+#### NEMS Run-Time Configuration File #####
+#############################################
+
+# EARTH #
+EARTH_component_list: MED ATM OCN ICE
+EARTH_attributes::
+ Verbosity = 0
+::
+
+# MED #
+MED_model: @[med_model]
+MED_petlist_bounds: @[med_petlist_bounds]
+ Verbosity = 5
+ dbug_flag = 5
+
+::
+
+# ATM #
+ATM_model: @[atm_model]
+ATM_petlist_bounds: @[atm_petlist_bounds]
+ATM_attributes::
+ Verbosity = 0
+ DumpFields = false
+ mesh_atm = @[MESH_ATM]
+ diro = "."
+ logfile = atm.log
+::
+
+# OCN #
+OCN_model: @[ocn_model]
+OCN_petlist_bounds: @[ocn_petlist_bounds]
+OCN_attributes::
+ Verbosity = 0
+ DumpFields = false
+ ProfileMemory = false
+ OverwriteSlice = true
+ mesh_ocn = @[MESHOCN_ICE]
+::
+
+# ICE #
+ICE_model: @[ice_model]
+ICE_petlist_bounds: @[ice_petlist_bounds]
+ICE_attributes::
+ Verbosity = 0
+ DumpFields = false
+ ProfileMemory = false
+ OverwriteSlice = true
+ mesh_ice = @[MESHOCN_ICE]
+ stop_n = @[RESTART_N]
+ stop_option = nhours
+ stop_ymd = -999
+::
+
+# CMEPS concurrent warm run sequence
+
+runSeq::
+@@[coupling_interval_slow_sec]
+ MED med_phases_prep_ocn_avg
+ MED -> OCN :remapMethod=redist
+ OCN
+ @@[coupling_interval_fast_sec]
+ MED med_phases_prep_ice
+ MED -> ICE :remapMethod=redist
+ ATM
+ ICE
+ ATM -> MED :remapMethod=redist
+ MED med_phases_post_atm
+ ICE -> MED :remapMethod=redist
+ MED med_phases_post_ice
+ MED med_phases_aofluxes_run
+ MED med_phases_prep_ocn_accum
+ @
+ OCN -> MED :remapMethod=redist
+ MED med_phases_post_ocn
+ MED med_phases_restart_write
+@
+::
+
+# CMEPS variables
+
+DRIVER_attributes::
+ mediator_read_restart = @[use_coldstart]
+::
+MED_attributes::
+ ATM_model = @[atm_model]
+ ICE_model = @[ice_model]
+ OCN_model = @[ocn_model]
+ history_n = 1
+ history_option = nhours
+ history_ymd = -999
+ coupling_mode = nems_orig_data
+::
+ALLCOMP_attributes::
+ pio_rearr_comm_enable_hs_comp2io = .true.
+ pio_rearr_comm_enable_hs_io2comp = .false.
+ pio_rearr_comm_enable_isend_comp2io = .false.
+ pio_rearr_comm_enable_isend_io2comp = .true.
+ pio_rearr_comm_fcd = "2denable"
+ pio_rearr_comm_max_pend_req_comp2io = 0
+ pio_rearr_comm_max_pend_req_io2comp = 64
+ pio_rearr_comm_type = "p2p"
+ ScalarFieldCount = 3
+ ScalarFieldIdxGridNX = 1
+ ScalarFieldIdxGridNY = 2
+ ScalarFieldIdxNextSwCday = 3
+ ScalarFieldName = cpl_scalars
+ start_type = @[RUNTYPE]
+ restart_dir = RESTART/
+ case_name = DATM_@[DATM_SRC]
+ restart_n = @[RESTART_N]
+ restart_option = nhours
+ restart_ymd = -999
+ dbug_flag = @[cap_dbug_flag]
+ use_coldstart = @[use_coldstart]
+ use_mommesh = @[use_mommesh]
+ coldair_outbreak_mod = .false.
+ flds_wiso = .false.
+ flux_convergence = @[flux_convergence]
+ flux_max_iteration = @[flux_iteration]
+ ocn_surface_flux_scheme = @[flux_scheme]
+ orb_eccen = 1.e36
+ orb_iyear = 2000
+ orb_iyear_align = 2000
+ orb_mode = fixed_year
+ orb_mvelp = 1.e36
+ orb_obliq = 1.e36
+::
diff --git a/tests/parm/pio_in b/tests/parm/pio_in
deleted file mode 100644
index 0282ee8721..0000000000
--- a/tests/parm/pio_in
+++ /dev/null
@@ -1,34 +0,0 @@
-&papi_inparm
- papi_ctr1_str = "PAPI_FP_OPS"
- papi_ctr2_str = "PAPI_NO_CTR"
- papi_ctr3_str = "PAPI_NO_CTR"
- papi_ctr4_str = "PAPI_NO_CTR"
-/
-&pio_default_inparm
- pio_async_interface = .false.
- pio_blocksize = -1
- pio_buffer_size_limit = -1
- pio_debug_level = 0
- pio_rearr_comm_enable_hs_comp2io = .true.
- pio_rearr_comm_enable_hs_io2comp = .false.
- pio_rearr_comm_enable_isend_comp2io = .false.
- pio_rearr_comm_enable_isend_io2comp = .true.
- pio_rearr_comm_fcd = "2denable"
- pio_rearr_comm_max_pend_req_comp2io = 0
- pio_rearr_comm_max_pend_req_io2comp = 64
- pio_rearr_comm_type = "p2p"
-/
-&prof_inparm
- profile_add_detail = .false.
- profile_barrier = .false.
- profile_depth_limit = 4
- profile_detail_limit = 2
- profile_disable = .false.
- profile_global_stats = .true.
- profile_outpe_num = 1
- profile_outpe_stride = 0
- profile_ovhd_measurement = .false.
- profile_papi_enable = .false.
- profile_single_file = .false.
- profile_timer = 4
-/
diff --git a/tests/rt.conf b/tests/rt.conf
index 76f29be742..053fe31085 100644
--- a/tests/rt.conf
+++ b/tests/rt.conf
@@ -171,7 +171,7 @@ RUN | cpld_debug
RUN | cpld_debugfrac | - wcoss_cray jet.intel | fv3 |
###################################################################################################################################################################################
-# Data Atmosphere tests #
+# NEMS Data Atmosphere tests #
###################################################################################################################################################################################
COMPILE | APP=DATM_NEMS | - wcoss_cray jet.intel | fv3 |
@@ -187,3 +187,21 @@ RUN | datm_mx025_gefs
COMPILE | APP=DATM_NEMS DEBUG=Y | - wcoss_cray jet.intel | fv3 |
RUN | datm_debug_cfsr | - wcoss_cray jet.intel | fv3 |
+
+###################################################################################################################################################################################
+# CDEPS Data Atmosphere tests #
+###################################################################################################################################################################################
+
+COMPILE | APP=DATM | - wcoss_cray jet.intel | fv3 |
+RUN | datm_cdeps_control_cfsr | - wcoss_cray jet.intel | fv3 |
+RUN | datm_cdeps_restart_cfsr | - wcoss_cray jet.intel | | datm_cdeps_control_cfsr
+RUN | datm_cdeps_control_gefs | - wcoss_cray jet.intel | fv3 |
+
+RUN | datm_cdeps_bulk_cfsr | - wcoss_cray jet.intel | fv3 |
+RUN | datm_cdeps_bulk_gefs | - wcoss_cray jet.intel | fv3 |
+
+RUN | datm_cdeps_mx025_cfsr | - wcoss_cray jet.intel gaea.intel | fv3 |
+RUN | datm_cdeps_mx025_gefs | - wcoss_cray jet.intel | fv3 |
+
+COMPILE | APP=DATM DEBUG=Y | - wcoss_cray jet.intel | fv3 |
+RUN | datm_cdeps_debug_cfsr | - wcoss_cray jet.intel | fv3 |
diff --git a/tests/run_test.sh b/tests/run_test.sh
index 0d6010de23..588c9bd801 100755
--- a/tests/run_test.sh
+++ b/tests/run_test.sh
@@ -100,20 +100,24 @@ fi
# Set up the run directory
source ./fv3_run
-if [[ $DATM = 'true' ]] || [[ $S2S = 'true' ]]; then
+if [[ $DATM_NEMS = 'true' ]] || [[ $DATM_CDEPS = 'true' ]] || [[ $S2S = 'true' ]]; then
edit_ice_in < ${PATHRT}/parm/ice_in_template > ice_in
edit_mom_input < ${PATHRT}/parm/${MOM_INPUT:-MOM_input_template_$OCNRES} > INPUT/MOM_input
edit_diag_table < ${PATHRT}/parm/${DIAG_TABLE:-diag_table_template} > diag_table
edit_data_table < ${PATHRT}/parm/data_table_template > data_table
# CMEPS
cp ${PATHRT}/parm/fd_nems.yaml fd_nems.yaml
- cp ${PATHRT}/parm/pio_in pio_in
- cp ${PATHRT}/parm/med_modelio.nml med_modelio.nml
fi
-if [[ $DATM = 'true' ]]; then
+
+if [[ $DATM_NEMS = 'true' ]]; then
cp ${PATHRT}/parm/datm_data_table.IN datm_data_table
fi
+if [[ $DATM_CDEPS = 'true' ]]; then
+ atparse < ${PATHRT}/parm/${DATM_IN_CONFIGURE:-datm_in} > datm_in
+ cp ${PATHRT}/parm/datm_${FILENAME_BASE}streams.xml datm.streams.xml
+fi
+
if [[ $SCHEDULER = 'pbs' ]]; then
NODES=$(( TASKS / TPN ))
if (( NODES * TPN < TASKS )); then
diff --git a/tests/tests/datm_bulk_gefs b/tests/tests/datm_bulk_gefs
index 3436624b60..fe5cb1459f 100644
--- a/tests/tests/datm_bulk_gefs
+++ b/tests/tests/datm_bulk_gefs
@@ -13,8 +13,6 @@ export LIST_FILES="RESTART/MOM.res.nc \
export_datm
export DATM_SRC="GEFS"
export FILENAME_BASE='gefs.'
-export IATM=1760
-export JATM=880
export flux_scheme='-1'
diff --git a/tests/tests/datm_cdeps_bulk_cfsr b/tests/tests/datm_cdeps_bulk_cfsr
new file mode 100644
index 0000000000..e3a1c8e333
--- /dev/null
+++ b/tests/tests/datm_cdeps_bulk_cfsr
@@ -0,0 +1,20 @@
+#
+# DATM_CDEPS_MOM6_CICE_CMEPS_CFSR test
+#
+
+export TEST_DESCR="DATM_CDEPS-MOM6-CICE-CMEPS_CFSR - bulk flux test"
+
+export CNTL_DIR="datm_cdeps_bulk_cfsr"
+
+export LIST_FILES="RESTART/MOM.res.nc \
+ RESTART/iced.2011-10-02-00000.nc \
+ RESTART/DATM_CFSR.cpl.r.2011-10-02-00000.nc"
+
+export_datm_cdeps
+export DATM_SRC="CFSR"
+export FILENAME_BASE='cfsr.'
+export IATM=1760
+export JATM=880
+export RESTART_N=12
+export flux_scheme='-1'
+export FV3_RUN=cpld_datm_cdeps.IN
diff --git a/tests/tests/datm_cdeps_bulk_gefs b/tests/tests/datm_cdeps_bulk_gefs
new file mode 100644
index 0000000000..403e644d9c
--- /dev/null
+++ b/tests/tests/datm_cdeps_bulk_gefs
@@ -0,0 +1,31 @@
+#
+# DATM_CDEPS_MOM6_CICE_CMEPS_GEFS test
+#
+
+export TEST_DESCR="DATM_CDEPS-MOM6-CICE-CMEPS_GEFS - bulk flux test"
+
+export CNTL_DIR="datm_cdeps_bulk_gefs"
+
+export LIST_FILES="RESTART/MOM.res.nc \
+ RESTART/iced.2011-10-02-00000.nc \
+ RESTART/DATM_GEFS.cpl.r.2011-10-02-00000.nc"
+
+export_datm_cdeps
+export atm_datamode="GEFS"
+# atm configure
+export IATM=1536
+export JATM=768
+export ATM_NX_GLB=$IATM
+export ATM_NY_GLB=$JATM
+export ATMRES='1536x768'
+export DATM_SRC="GEFS"
+export FILENAME_BASE='gefs.'
+export mesh_file="gefs_mesh.nc"
+export MESH_ATM="DATM_INPUT/${mesh_file}"
+# nems configure
+#export NEMS_CONFIGURE="nems.configure.datm_cdeps.IN"
+export atm_model="datm_gefs"
+
+export RESTART_N=12
+export flux_scheme='-1'
+export FV3_RUN=cpld_datm_cdeps.IN
diff --git a/tests/tests/datm_cdeps_control_cfsr b/tests/tests/datm_cdeps_control_cfsr
new file mode 100644
index 0000000000..ac959229c1
--- /dev/null
+++ b/tests/tests/datm_cdeps_control_cfsr
@@ -0,0 +1,19 @@
+#
+# DATM_CDEPS_MOM6_CICE_CMEPS_CFSR test
+#
+
+export TEST_DESCR="DATM_CDEPS-MOM6-CICE-CMEPS_CFSR - control "
+
+export CNTL_DIR="datm_cdeps_control_cfsr"
+
+export LIST_FILES="RESTART/MOM.res.nc \
+ RESTART/iced.2011-10-02-00000.nc \
+ RESTART/DATM_CFSR.cpl.r.2011-10-02-00000.nc"
+
+export_datm_cdeps
+export DATM_SRC="CFSR"
+export FILENAME_BASE='cfsr.'
+export IATM=1760
+export JATM=880
+export RESTART_N=12
+export FV3_RUN=cpld_datm_cdeps.IN
diff --git a/tests/tests/datm_cdeps_control_gefs b/tests/tests/datm_cdeps_control_gefs
new file mode 100644
index 0000000000..8438ab603f
--- /dev/null
+++ b/tests/tests/datm_cdeps_control_gefs
@@ -0,0 +1,31 @@
+#
+# DATM_CDEPS_MOM6_CICE_CMEPS_GEFS test
+#
+
+export TEST_DESCR="DATM_CDEPS-MOM6-CICE-CMEPS_GEFS - control"
+
+export CNTL_DIR="datm_cdeps_control_gefs"
+
+export LIST_FILES="RESTART/MOM.res.nc \
+ RESTART/iced.2011-10-02-00000.nc \
+ RESTART/DATM_GEFS.cpl.r.2011-10-02-00000.nc"
+
+export_datm_cdeps
+export atm_datamode="GEFS"
+
+# atm configure
+export IATM=1536
+export JATM=768
+export ATM_NX_GLB=$IATM
+export ATM_NY_GLB=$JATM
+export ATMRES='1536x768'
+export DATM_SRC="GEFS"
+export FILENAME_BASE='gefs.'
+export mesh_file="gefs_mesh.nc"
+export MESH_ATM="DATM_INPUT/${mesh_file}"
+# nems configure
+#export NEMS_CONFIGURE="nems.configure.datm_cdeps.IN"
+export atm_model="datm_gefs"
+
+export RESTART_N=12
+export FV3_RUN=cpld_datm_cdeps.IN
diff --git a/tests/tests/datm_cdeps_debug_cfsr b/tests/tests/datm_cdeps_debug_cfsr
new file mode 100644
index 0000000000..82cec41e20
--- /dev/null
+++ b/tests/tests/datm_cdeps_debug_cfsr
@@ -0,0 +1,21 @@
+#
+# DATM_CDEPS_MOM6_CICE_CMEPS_CFSR debug test
+#
+
+export TEST_DESCR="DATM_CDEPS-MOM6-CICE-CMEPS_CFSR - debug test"
+
+export CNTL_DIR="datm_cdeps_debug_cfsr"
+
+export LIST_FILES="RESTART/MOM.res.nc \
+ RESTART/iced.2011-10-01-21600.nc \
+ RESTART/DATM_CFSR.cpl.r.2011-10-01-21600.nc"
+
+export_datm_cdeps
+export DATM_SRC="CFSR"
+export FILENAME_BASE='cfsr.'
+export IATM=1760
+export JATM=880
+export DAYS="0.25"
+export FHMAX=6
+export RESTART_N=${FHMAX}
+export FV3_RUN=cpld_datm_cdeps.IN
diff --git a/tests/tests/datm_cdeps_mx025_cfsr b/tests/tests/datm_cdeps_mx025_cfsr
new file mode 100644
index 0000000000..d291ca5b02
--- /dev/null
+++ b/tests/tests/datm_cdeps_mx025_cfsr
@@ -0,0 +1,47 @@
+#
+# DATM_CDEPS_MOM6_CICE_CMEPS_CFSR test
+#
+
+export TEST_DESCR="DATM_CDEPS-MOM6-CICE-CMEPS_CFSR - 1/4deg ocean+ice"
+
+export CNTL_DIR="datm_cdeps_mx025_cfsr"
+
+export LIST_FILES="RESTART/MOM.res.nc \
+ RESTART/MOM.res_1.nc \
+ RESTART/MOM.res_2.nc \
+ RESTART/MOM.res_3.nc \
+ RESTART/iced.2011-10-02-00000.nc \
+ RESTART/DATM_CFSR.cpl.r.2011-10-02-00000.nc"
+
+export_datm_cdeps
+export WLCLK=40
+export DATM_SRC="CFSR"
+export FILENAME_BASE='cfsr.'
+export IATM=1760
+export JATM=880
+
+export TASKS=$TASKS_cdeps_025
+export TPN=$TPN_cdeps_025
+export atm_petlist_bounds=$APB_cdeps_025
+export med_petlist_bounds=$MPB_cdeps_025
+export ocn_petlist_bounds=$OPB_cdeps_025
+export ice_petlist_bounds=$IPB_cdeps_025
+export NPROC_ICE='48'
+
+# ocn/ice resolution
+export OCNRES='025'
+export ICERES='0.25'
+export NX_GLB=1440
+export NY_GLB=1080
+
+# resolution dependent files
+export MOM_INPUT="MOM_input_template_${OCNRES}"
+export MESHOCN_ICE="mesh.mx${OCNRES}.nc"
+export CICEGRID="grid_cice_NEMS_mx${OCNRES}.nc"
+export CICEMASK="kmtu_cice_NEMS_mx${OCNRES}.nc"
+export CHLCLIM='"seawifs-clim-1997-2010.1440x1080.v20180328.nc"'
+export MOM6_RIVER_RUNOFF='True'
+export FRUNOFF="runoff.daitren.clim.1440x1080.v20180328.nc"
+export MOM6_RESTART_SETTING='r'
+
+export FV3_RUN=cpld_datm_cdeps.IN
diff --git a/tests/tests/datm_cdeps_mx025_gefs b/tests/tests/datm_cdeps_mx025_gefs
new file mode 100644
index 0000000000..89e6cfcdea
--- /dev/null
+++ b/tests/tests/datm_cdeps_mx025_gefs
@@ -0,0 +1,56 @@
+#
+# DATM_CDEPS_MOM6_CICE_CMEPS_GEFS test
+#
+
+export TEST_DESCR="DATM_CDEPS-MOM6-CICE-CMEPS_GEFS - 1/4deg ocean+ice"
+
+export CNTL_DIR="datm_cdeps_mx025_gefs"
+
+export LIST_FILES="RESTART/MOM.res.nc \
+ RESTART/MOM.res_1.nc \
+ RESTART/MOM.res_2.nc \
+ RESTART/MOM.res_3.nc \
+ RESTART/iced.2011-10-02-00000.nc \
+ RESTART/DATM_GEFS.cpl.r.2011-10-02-00000.nc"
+
+export_datm_cdeps
+export atm_datamode="GEFS"
+
+export WLCLK=40
+export IATM=1536
+export JATM=768
+export ATM_NX_GLB=$IATM
+export ATM_NY_GLB=$JATM
+export ATMRES='1536x768'
+export DATM_SRC="GEFS"
+export FILENAME_BASE='gefs.'
+export mesh_file="gefs_mesh.nc"
+export MESH_ATM="DATM_INPUT/${mesh_file}"
+# nems configure
+export atm_model="datm_gefs"
+
+export TASKS=$TASKS_cdeps_025
+export TPN=$TPN_cdeps_025
+export atm_petlist_bounds=$APB_cdeps_025
+export med_petlist_bounds=$MPB_cdeps_025
+export ocn_petlist_bounds=$OPB_cdeps_025
+export ice_petlist_bounds=$IPB_cdeps_025
+export NPROC_ICE='48'
+
+# ocn/ice resolution
+export OCNRES='025'
+export ICERES='0.25'
+export NX_GLB=1440
+export NY_GLB=1080
+
+# resolution dependent files
+export MOM_INPUT="MOM_input_template_${OCNRES}"
+export MESHOCN_ICE="mesh.mx${OCNRES}.nc"
+export CICEGRID="grid_cice_NEMS_mx${OCNRES}.nc"
+export CICEMASK="kmtu_cice_NEMS_mx${OCNRES}.nc"
+export CHLCLIM='"seawifs-clim-1997-2010.1440x1080.v20180328.nc"'
+export MOM6_RIVER_RUNOFF='True'
+export FRUNOFF="runoff.daitren.clim.1440x1080.v20180328.nc"
+export MOM6_RESTART_SETTING='r'
+
+export FV3_RUN=cpld_datm_cdeps.IN
diff --git a/tests/tests/datm_cdeps_restart_cfsr b/tests/tests/datm_cdeps_restart_cfsr
new file mode 100644
index 0000000000..6bd01ae4dc
--- /dev/null
+++ b/tests/tests/datm_cdeps_restart_cfsr
@@ -0,0 +1,26 @@
+#
+# DATM_CDEPS_MOM6_CICE_CMEPS_CFSR restart test
+#
+
+export TEST_DESCR="DATM_CDEPS-MOM6-CICE-CMEPS_CFSR - restart test "
+
+export CNTL_DIR="datm_cdeps_control_cfsr"
+
+export LIST_FILES="RESTART/MOM.res.nc \
+ RESTART/iced.2011-10-02-00000.nc \
+ RESTART/DATM_CFSR.cpl.r.2011-10-02-00000.nc"
+
+export_datm_cdeps
+export DATM_SRC="CFSR"
+export FILENAME_BASE='cfsr.'
+export IATM=1760
+export JATM=880
+export FHMAX=24
+export FHOUT=12
+export WARM_START='.T.'
+export FHROT=12
+export RESTART_N=$((FHMAX-$FHROT))
+export RUNTYPE='continue'
+export USE_RESTART_TIME='.true.'
+export MOM6_RESTART_SETTING="r"
+export FV3_RUN=cpld_datm_cdeps.IN