diff --git a/.gitmodules b/.gitmodules index a3775fc12d..4eab6a3600 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,8 +4,8 @@ branch = develop [submodule "WW3"] path = WW3 - url = https://github.com/NOAA-EMC/WW3 - branch = dev/ufs-weather-model + url = https://github.com/NickSzapiro-NOAA/WW3 + branch = wavice_sync [submodule "stochastic_physics"] path = stochastic_physics url = https://github.com/NOAA-PSL/stochastic_physics diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f4d418862..395a4506f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,7 @@ set(JEDI_DRIVER OFF CACHE BOOL "Enable JEDI as top level driver") set(CMEPS_AOFLUX OFF CACHE BOOL "Enable atmosphere-ocean flux calculation in mediator") set(PDLIB OFF CACHE BOOL "Enable Domain Decomposition in WW3 via PDLIB") set(CDEPS_INLINE OFF CACHE BOOL "Enable CDEPS inline capability") +set(WAVICE OFF CACHE BOOL "Enable wave-sea ice coupling") set(HYDRO OFF CACHE BOOL "Enable hydrostatic set") set(CMAKE_Platform $ENV{CMAKE_Platform}) @@ -214,7 +215,11 @@ if(WW3) list(APPEND _ufs_defs_private FRONT_WW3=WMESMFMD) else() if(PDLIB) - set(SWITCH "meshcap_pdlib" CACHE STRING "NUOPC mesh cap") + if(WAVICE) + set(SWITCH "meshcap_pdlib_IC4" CACHE STRING "NUOPC mesh cap") + else() + set(SWITCH "meshcap_pdlib" CACHE STRING "NUOPC mesh cap") + endif() else() set(SWITCH "meshcap" CACHE STRING "NUOPC mesh cap") endif() diff --git a/WW3 b/WW3 index d9b3172f41..8580b34020 160000 --- a/WW3 +++ b/WW3 @@ -1 +1 @@ -Subproject commit d9b3172f4197c65d471662c6952a668152d71230 +Subproject commit 8580b340202ffa0a0806a577e7a6cb30ee71bab3 diff --git a/tests/default_vars.sh b/tests/default_vars.sh index 236a9202ee..5f3a338f22 100644 --- a/tests/default_vars.sh +++ b/tests/default_vars.sh @@ -840,6 +840,7 @@ export WW3_CUR='F' export WW3_ICE='F' export WW3_IC1='F' export WW3_IC5='F' +export wav_coupling_to_cice=false # ATMW export WW3_MULTIGRID=true export WW3_MODDEF=mod_def.glo_1deg @@ -945,6 +946,11 @@ export_cice6() { export CICE_FRAZIL_FWSALT=.true. export CICE_KTHERM=2 export CICE_TFREEZE_OPTION=mushy + #Wave-ice coupling variables + export CICE_nfsd=1 + export CICE_tr_fsd=.false. + export CICE_restart_fsd=.false. + export CICE_wave_spec_type=none # SlenderX2 export CICE_NPROC=${ICE_tasks} np2=$((CICE_NPROC/2)) diff --git a/tests/opnReqTests/rst.sh b/tests/opnReqTests/rst.sh index f01b2ca0cf..ae07c6243f 100644 --- a/tests/opnReqTests/rst.sh +++ b/tests/opnReqTests/rst.sh @@ -28,6 +28,9 @@ elif [[ $application == 'cpld' ]]; then CICE_RUNTYPE='continue' RUNTYPE='continue' CICE_USE_RESTART_TIME='.true.' + if [[ ${CICE_tr_fsd} ]]; then + CICE_restart_fsd='.true.' + fi MOM6_RESTART_SETTING="r" RESTART_N=$(( FHMAX - FHROT )) RESTART_FILE_PREFIX="${SYEAR}${SMONTH}${SDAY}.$(printf "%02d" $(( SHOUR + FHROT )))0000" @@ -75,6 +78,7 @@ export NSTF_NAME=${NSTF_NAME} export CICE_RUNTYPE=${CICE_RUNTYPE:-} export RUNTYPE=${RUNTYPE:-} export CICE_USE_RESTART_TIME=${CICE_USE_RESTART_TIME:-} +export CICE_restart_fsd=${CICE_restart_fsd:-} export MOM6_RESTART_SETTING=${MOM6_RESTART_SETTING:-} export RESTART_N=${RESTART_N:-} export RESTART_FILE_SUFFIX_SECS=${RESTART_FILE_SUFFIX_SECS:-} diff --git a/tests/parm/ice_in.IN b/tests/parm/ice_in.IN index e0a29ecacb..e53a7a822e 100644 --- a/tests/parm/ice_in.IN +++ b/tests/parm/ice_in.IN @@ -65,11 +65,10 @@ kmt_file = '@[CICE_MASK]' kcatbound = 0 ncat = 5 - nfsd = 1 + nfsd = @[CICE_nfsd] nilyr = 7 nslyr = 1 nblyr = 1 - nfsd = 1 grid_atm = '@[CICE_GRIDATM]' grid_ocn = '@[CICE_GRIDOCN]' grid_ice = '@[CICE_GRIDICE]' @@ -88,8 +87,8 @@ restart_pond_lvl = @[CICE_RESTART_POND_LVL] tr_aero = .false. restart_aero = .false. - tr_fsd = .false. - restart_fsd = .false. + tr_fsd = @[CICE_tr_fsd] + restart_fsd = @[CICE_restart_fsd] / &thermo_nml @@ -172,6 +171,7 @@ l_mpond_fresh = .false. tfrz_option = '@[CICE_TFREEZE_OPTION]' restart_coszen = .true. + wave_spec_type = '@[CICE_wave_spec_type]' / &domain_nml @@ -383,5 +383,21 @@ f_Cdn_ocn = 'x' / +&icefields_fsd_nml + f_fsdrad = 'mdhxx' + f_fsdperim = 'mdhxx' + f_afsd = 'mdhxx' + f_afsdn = 'mdhxx' + f_dafsd_newi = 'x' + f_dafsd_latg = 'x' + f_dafsd_latm = 'x' + f_dafsd_wave = 'x' + f_dafsd_weld = 'x' + f_wave_sig_ht = 'x' + f_aice_ww = 'x' + f_diam_ww = 'x' + f_hice_ww = 'x' +/ + &icefields_bgc_nml / diff --git a/tests/parm/ufs.configure.s2sw.IN b/tests/parm/ufs.configure.s2sw.IN index 95f35864bf..de0bd1ec99 100644 --- a/tests/parm/ufs.configure.s2sw.IN +++ b/tests/parm/ufs.configure.s2sw.IN @@ -134,4 +134,5 @@ ALLCOMP_attributes:: orb_mode = fixed_year orb_mvelp = 1.e36 orb_obliq = 1.e36 + wav_coupling_to_cice = @[wav_coupling_to_cice] :: diff --git a/tests/rt.conf b/tests/rt.conf index dbd84e0cb1..0b79583b16 100644 --- a/tests/rt.conf +++ b/tests/rt.conf @@ -78,14 +78,14 @@ RUN | cpld_restart_c48 | - noaacloud COMPILE | s2swa_faster | intel | -DAPP=S2SWA -DCCPP_SUITES=FV3_GFS_v17_coupled_p8 -DFASTER=ON | - noaacloud | fv3 | RUN | cpld_control_p8_faster | - noaacloud | baseline | -# Unstructured WW3 mesh -COMPILE | s2sw_pdlib | intel | -DAPP=S2SW -DCCPP_SUITES=FV3_GFS_v17_coupled_p8 -DPDLIB=ON | - noaacloud | fv3 | -RUN | cpld_control_pdlib_p8 | - noaacloud | baseline | -RUN | cpld_restart_pdlib_p8 | - noaacloud | | cpld_control_pdlib_p8 -RUN | cpld_mpi_pdlib_p8 | - noaacloud | | cpld_control_pdlib_p8 - -COMPILE | s2sw_pdlib_debug | intel | -DAPP=S2SW -DCCPP_SUITES=FV3_GFS_v17_coupled_p8 -DPDLIB=ON -DDEBUG=ON | - noaacloud | fv3 | -RUN | cpld_debug_pdlib_p8 | - noaacloud | baseline | +# Unstructured WW3 mesh with wave-ice coupling +COMPILE | s2sw_pdlib | intel | -DAPP=S2SW -DCCPP_SUITES=FV3_GFS_v17_coupled_p8 -DPDLIB=ON -DWAVICE=ON | - noaacloud | fv3 | +RUN | cpld_control_pdlib_p8 | - noaacloud | baseline | +RUN | cpld_restart_pdlib_p8 | - noaacloud | | cpld_control_pdlib_p8 +RUN | cpld_mpi_pdlib_p8 | - noaacloud | | cpld_control_pdlib_p8 + +COMPILE | s2sw_pdlib_debug | intel | -DAPP=S2SW -DCCPP_SUITES=FV3_GFS_v17_coupled_p8 -DPDLIB=ON -DDEBUG=ON -DWAVICE=ON | - noaacloud | fv3 | +RUN | cpld_debug_pdlib_p8 | - noaacloud | baseline | ### ATM tests ### COMPILE | atm_dyn32 | intel | -DAPP=ATM -DCCPP_SUITES=FV3_GFS_v16,FV3_GFS_v16_flake,FV3_GFS_v17_p8,FV3_GFS_v17_p8_rrtmgp,FV3_GFS_v15_thompson_mynn_lam3km,FV3_WoFS_v0,FV3_GFS_v17_p8_mynn,FV3_GFS_v17_p8_ugwpv1 -D32BIT=ON | | fv3 | diff --git a/tests/tests/cpld_control_pdlib_p8 b/tests/tests/cpld_control_pdlib_p8 index 17bb7805ef..6bd1532b78 100644 --- a/tests/tests/cpld_control_pdlib_p8 +++ b/tests/tests/cpld_control_pdlib_p8 @@ -94,7 +94,15 @@ export eps_imesh=2.5e-1 export WW3_DOMAIN=global_270k export MESH_WAV=mesh.${WW3_DOMAIN}.nc -export WW3_MODDEF=mod_def.exp.${WW3_DOMAIN} +export WW3_MODDEF=mod_def.ic4.exp.${WW3_DOMAIN} +export WW3_ICE='C' +export WW3_IC1='C' +export WW3_IC5='C' +export CICE_nfsd=12 +export CICE_tr_fsd=.true. +export CICE_restart_fsd=.false. +export CICE_wave_spec_type=constant +export wav_coupling_to_cice=true export DIAG_TABLE=diag_table_template export FIELD_TABLE=field_table_thompson_noaero_tke diff --git a/tests/tests/cpld_debug_pdlib_p8 b/tests/tests/cpld_debug_pdlib_p8 index fa7be3c086..d3c503e2e1 100644 --- a/tests/tests/cpld_debug_pdlib_p8 +++ b/tests/tests/cpld_debug_pdlib_p8 @@ -87,7 +87,15 @@ export CICE_DIAGFREQ=`expr $((FHMAX-$FHROT)) \* 3600 / $DT_CICE` export WW3_DOMAIN=global_270k export MESH_WAV=mesh.${WW3_DOMAIN}.nc -export WW3_MODDEF=mod_def.exp.${WW3_DOMAIN} +export WW3_MODDEF=mod_def.ic4.exp.${WW3_DOMAIN} +export WW3_ICE='C' +export WW3_IC1='C' +export WW3_IC5='C' +export CICE_nfsd=12 +export CICE_tr_fsd=.true. +export CICE_restart_fsd=.false. +export CICE_wave_spec_type=constant +export wav_coupling_to_cice=true export DIAG_TABLE=diag_table_template export FIELD_TABLE=field_table_thompson_noaero_tke diff --git a/tests/tests/cpld_mpi_pdlib_p8 b/tests/tests/cpld_mpi_pdlib_p8 index 18dcc1ee74..032d2a92ba 100644 --- a/tests/tests/cpld_mpi_pdlib_p8 +++ b/tests/tests/cpld_mpi_pdlib_p8 @@ -97,7 +97,15 @@ export eps_imesh=2.5e-1 export WW3_DOMAIN=global_270k export MESH_WAV=mesh.${WW3_DOMAIN}.nc -export WW3_MODDEF=mod_def.exp.${WW3_DOMAIN} +export WW3_MODDEF=mod_def.ic4.exp.${WW3_DOMAIN} +export WW3_ICE='C' +export WW3_IC1='C' +export WW3_IC5='C' +export CICE_nfsd=12 +export CICE_tr_fsd=.true. +export CICE_restart_fsd=.false. +export CICE_wave_spec_type=constant +export wav_coupling_to_cice=true export DIAG_TABLE=diag_table_template export FIELD_TABLE=field_table_thompson_noaero_tke diff --git a/tests/tests/cpld_restart_pdlib_p8 b/tests/tests/cpld_restart_pdlib_p8 index 01a351be21..e491a5ff0e 100644 --- a/tests/tests/cpld_restart_pdlib_p8 +++ b/tests/tests/cpld_restart_pdlib_p8 @@ -101,7 +101,15 @@ export CICE_DIAGFREQ=`expr $((FHMAX-$FHROT)) \* 3600 / $DT_CICE` export WW3_DOMAIN=global_270k export MESH_WAV=mesh.${WW3_DOMAIN}.nc -export WW3_MODDEF=mod_def.exp.${WW3_DOMAIN} +export WW3_MODDEF=mod_def.ic4.exp.${WW3_DOMAIN} +export WW3_ICE='C' +export WW3_IC1='C' +export WW3_IC5='C' +export CICE_nfsd=12 +export CICE_tr_fsd=.true. +export CICE_restart_fsd=.false. +export CICE_wave_spec_type=constant +export wav_coupling_to_cice=true export DIAG_TABLE=diag_table_template export FIELD_TABLE=field_table_thompson_noaero_tke