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