diff --git a/dev/ci/cases/yamls/sfs_defaults.yaml b/dev/ci/cases/yamls/sfs_defaults.yaml index 2842b8e73f..d0a334ff89 100644 --- a/dev/ci/cases/yamls/sfs_defaults.yaml +++ b/dev/ci/cases/yamls/sfs_defaults.yaml @@ -25,6 +25,6 @@ fcst: TYPE: "hydro" MONO: "mono" reforecast: "YES" - FHZER: 24 + FHZERO: 24 ocn: MOM6_INTERP_ICS: "YES" diff --git a/dev/ci/cases/yamls/sfs_full.yaml b/dev/ci/cases/yamls/sfs_full.yaml index 1c8ef604a1..79f5324d0e 100644 --- a/dev/ci/cases/yamls/sfs_full.yaml +++ b/dev/ci/cases/yamls/sfs_full.yaml @@ -25,6 +25,6 @@ fcst: TYPE: "hydro" MONO: "mono" reforecast: "YES" - FHZER: 24 + FHZERO: 24 ocn: MOM6_INTERP_ICS: "YES" diff --git a/parm/config/gefs/config.efcs b/parm/config/gefs/config.efcs index 86d4a50a22..c02bdf1f01 100644 --- a/parm/config/gefs/config.efcs +++ b/parm/config/gefs/config.efcs @@ -37,10 +37,11 @@ source "${EXPDIR}/config.resources" efcs # Stochastic physics parameters (only for ensemble forecasts) if [[ "${CASE}" == "C96" ]] ; then export DO_SKEB="NO" # SKEB turned off for C96 + export SKEB="-999." else export DO_SKEB="YES" # SKEB turned on for all other resolutions + export SKEB="0.8,-999,-999,-999,-999" fi -export SKEB="0.8,-999,-999,-999,-999" export SKEB_TAU="2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7" export SKEB_LSCALE="500.E3,1000.E3,2000.E3,2000.E3,2000.E3" export SKEBNORM=1 diff --git a/parm/config/gefs/config.fcst.j2 b/parm/config/gefs/config.fcst.j2 index 10f9006932..530e606d99 100644 --- a/parm/config/gefs/config.fcst.j2 +++ b/parm/config/gefs/config.fcst.j2 @@ -40,7 +40,7 @@ export FHOUT=${FHOUT_GFS} export FHOUT_HF=${FHOUT_HF_GFS} export FHOUT_OCN=${FHOUT_OCN_GFS} export FHOUT_ICE=${FHOUT_ICE_GFS} -export FHZER="{{ FHZER }}" +export FHZERO="{{ FHZERO }}" # Get task specific resources source "${EXPDIR}/config.resources" fcst diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index d4276c5718..a8504f36b1 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -71,8 +71,11 @@ fi # (Standard) Model resolution dependent variables case "${fv3_res}" in "C48") - export DELTIM=1200 - export layout_x=1 + # TODO: change this back to 1200 when "SKEBINT" can be set + # currently, the value is fixed to 1800 by the WM and must be a multiple of DELTIM + # when running stochastic physics + export DELTIM=900 + export layout_x=2 export layout_y=1 export nthreads_fv3=1 export nthreads_ufs=1 diff --git a/parm/config/gefs/yaml/defaults.yaml b/parm/config/gefs/yaml/defaults.yaml index ac9c9553ed..bdf4c89019 100644 --- a/parm/config/gefs/yaml/defaults.yaml +++ b/parm/config/gefs/yaml/defaults.yaml @@ -24,7 +24,7 @@ base: DO_TEST_MODE: "NO" fcst: reforecast: "NO" - FHZER: 6 + FHZERO: 6 TYPE: "nh" MONO: "non-mono" ocn: diff --git a/parm/config/gfs/config.efcs b/parm/config/gfs/config.efcs index 7378403de9..b579436e85 100644 --- a/parm/config/gfs/config.efcs +++ b/parm/config/gfs/config.efcs @@ -86,7 +86,7 @@ export ISOL=2 export ICO2=2 export dspheat=".true." export shal_cnv=".true." -export FHZER=6 +export FHZERO=6 # Set PREFIX_ATMINC to r when recentering on if [[ ${RECENTER_ENKF:-"YES"} == "YES" ]]; then diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 11e81d8d60..245f2a5753 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -87,13 +87,16 @@ fi # (Standard) Model resolution dependent variables case "${fv3_res}" in "C48") - export layout_x=1 + export layout_x=2 export layout_y=1 export nthreads_fv3=1 export nthreads_ufs=1 export WRITE_GROUP=1 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=1 - export DELTIM=1200 + # TODO: change this back to 1200 when "SKEBINT" can be set + # currently, the value is fixed to 1800 by the WM and must be a multiple of DELTIM + # when running stochastic physics + export DELTIM=900 export xr_cnvcld=".false." # Do not pass conv. clouds to Xu-Randall cloud fraction export cdmbgwd="0.071,2.1,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="40.0,1.77,1.0,1.0" # settings for GSL drag suite diff --git a/parm/config/sfs/config.efcs b/parm/config/sfs/config.efcs index 37812ab027..2f8662dac9 100644 --- a/parm/config/sfs/config.efcs +++ b/parm/config/sfs/config.efcs @@ -29,10 +29,11 @@ source "${EXPDIR}/config.resources" efcs # Stochastic physics parameters (only for ensemble forecasts) if [[ "${CASE}" == "C96" ]] ; then export DO_SKEB="NO" # SKEB turned off for C96 + export SKEB=-999. else export DO_SKEB="YES" # SKEB turned on for all other resolutions + export SKEB="0.8,-999,-999,-999,-999" fi -export SKEB="0.8,-999,-999,-999,-999" export SKEB_TAU="2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7" export SKEB_LSCALE="500.E3,1000.E3,2000.E3,2000.E3,2000.E3" export SKEBNORM=1 diff --git a/parm/config/sfs/config.fcst.j2 b/parm/config/sfs/config.fcst.j2 index bd7d3ca50d..2b9818e909 100644 --- a/parm/config/sfs/config.fcst.j2 +++ b/parm/config/sfs/config.fcst.j2 @@ -32,7 +32,7 @@ export FHOUT=${FHOUT_GFS} export FHOUT_HF=${FHOUT_HF_GFS} export FHOUT_OCN=${FHOUT_OCN_GFS} export FHOUT_ICE=${FHOUT_ICE_GFS} -export FHZER="{{ FHZER }}" +export FHZERO="{{ FHZERO }}" # Get task specific resources source "${EXPDIR}/config.resources" fcst diff --git a/parm/config/sfs/yaml/defaults.yaml b/parm/config/sfs/yaml/defaults.yaml index d918d12ebc..27d54833ed 100644 --- a/parm/config/sfs/yaml/defaults.yaml +++ b/parm/config/sfs/yaml/defaults.yaml @@ -24,7 +24,7 @@ base: DO_TEST_MODE: "NO" fcst: reforecast: "NO" - FHZER: 6 + FHZERO: 6 TYPE: "nh" MONO: "non-mono" ocn: diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index aab6108a0b..61a87e00b2 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -195,6 +195,11 @@ for file in "${ufs_templates[@]}"; do ${LINK_OR_COPY} "${HOMEgfs}/sorc/ufs_model.fd/tests/parm/${file}" . done +# Link global_control.nml.IN template to parm/fv3 +cd "${HOMEgfs}/parm/ufs/fv3" || exit 1 +[[ -s "global_control.nml.IN" ]] && rm -f "global_control.nml.IN" +${LINK_OR_COPY} "${HOMEgfs}/sorc/ufs_model.fd/tests/parm/global_control.nml.IN" . + # Link the script from ufs-weather-model that parses the templates cd "${HOMEgfs}/ush" || exit 1 if [[ -s "atparse.bash" ]]; then diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 27d0394be1..918b441784 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -152,7 +152,7 @@ FV3_predet(){ if [[ ! -d "${DATArestart}/FV3_RESTART" ]]; then mkdir -p "${DATArestart}/FV3_RESTART"; fi ${NLN} "${DATArestart}/FV3_RESTART" "${DATA}/RESTART" - FHZER=${FHZER:-6} + FHZERO=${FHZERO:-6} FHCYC=${FHCYC:-24} restart_interval=${restart_interval:-${FHMAX}} # restart_interval = 0 implies write restart at the END of the forecast i.e. at FHMAX diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 8c059f6f97..0df2d49b3b 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -80,674 +80,421 @@ else ${NCP} "${FIELD_TABLE}" field_table fi -cat > input.nml <> input.nml << EOF - oz_phys = .false. - oz_phys_2015 = .true. -EOF - ;; - "FV3_GSD_v0") - cat >> input.nml << EOF - iovr = ${iovr:-"3"} - ltaerosol = ${ltaerosol:-".false."} - lradar = ${lradar:-".false."} - ttendlim = ${ttendlim:-0.005} - oz_phys = ${oz_phys:-".false."} - oz_phys_2015 = ${oz_phys_2015:-".true."} - lsoil_lsm = ${lsoil_lsm:-"4"} - do_mynnedmf = ${do_mynnedmf:-".false."} - do_mynnsfclay = ${do_mynnsfclay:-".false."} - icloud_bl = ${icloud_bl:-"1"} - bl_mynn_edmf = ${bl_mynn_edmf:-"1"} - bl_mynn_tkeadvect=${bl_mynn_tkeadvect:-".true."} - bl_mynn_edmf_mom=${bl_mynn_edmf_mom:-"1"} - min_lakeice = ${min_lakeice:-"0.15"} - min_seaice = ${min_seaice:-"0.15"} - use_cice_alb = ${use_cice_alb:-".false."} -EOF - ;; - FV3_GFS_v16_coupled*) - cat >> input.nml << EOF - iovr = ${iovr:-"3"} - ltaerosol = ${ltaerosol:-".false."} - lradar = ${lradar:-".false."} - ttendlim = ${ttendlim:-"0.005"} - oz_phys = ${oz_phys:-".false."} - oz_phys_2015 = ${oz_phys_2015:-".true."} - do_mynnedmf = ${do_mynnedmf:-".false."} - do_mynnsfclay = ${do_mynnsfclay:-".false."} - icloud_bl = ${icloud_bl:-"1"} - bl_mynn_edmf = ${bl_mynn_edmf:-"1"} - bl_mynn_tkeadvect = ${bl_mynn_tkeadvect:-".true."} - bl_mynn_edmf_mom = ${bl_mynn_edmf_mom:-"1"} - min_lakeice = ${min_lakeice:-"0.15"} - min_seaice = ${min_seaice:-"0.15"} -EOF - ;; - FV3_GFS_v16*) - cat >> input.nml << EOF - iovr = ${iovr:-"3"} - ltaerosol = ${ltaerosol:-".false."} - lradar = ${lradar:-".false."} - ttendlim = ${ttendlim:-"0.005"} - oz_phys = ${oz_phys:-".false."} - oz_phys_2015 = ${oz_phys_2015:-".true."} - lsoil_lsm = ${lsoil_lsm:-"4"} - do_mynnedmf = ${do_mynnedmf:-".false."} - do_mynnsfclay = ${do_mynnsfclay:-".false."} - icloud_bl = ${icloud_bl:-"1"} - bl_mynn_edmf = ${bl_mynn_edmf:-"1"} - bl_mynn_tkeadvect = ${bl_mynn_tkeadvect:-".true."} - bl_mynn_edmf_mom = ${bl_mynn_edmf_mom:-"1"} - min_lakeice = ${min_lakeice:-"0.15"} - min_seaice = ${min_seaice:-"0.15"} -EOF - ;; - FV3_GFS_v17*) - local default_dt_inner=$(( DELTIM/2 )) - cat >> input.nml << EOF - iovr = ${iovr:-"3"} - ltaerosol = ${ltaerosol:-".false."} - lradar = ${lradar:-".true."} - ttendlim = ${ttendlim:-"-999"} - dt_inner = ${dt_inner:-"${default_dt_inner}"} - sedi_semi = ${sedi_semi:-".true."} - decfl = ${decfl:-"10"} - oz_phys = ${oz_phys:-".false."} - oz_phys_2015 = ${oz_phys_2015:-".true."} - lsoil_lsm = ${lsoil_lsm:-"4"} - do_mynnedmf = ${do_mynnedmf:-".false."} - do_mynnsfclay = ${do_mynnsfclay:-".false."} - icloud_bl = ${icloud_bl:-"1"} - bl_mynn_edmf = ${bl_mynn_edmf:-"1"} - bl_mynn_tkeadvect = ${bl_mynn_tkeadvect:-".true."} - bl_mynn_edmf_mom = ${bl_mynn_edmf_mom:-"1"} - do_ugwp = ${do_ugwp:-".false."} - do_tofd = ${do_tofd:-".false."} - gwd_opt = ${gwd_opt:-"2"} - do_ugwp_v0 = ${do_ugwp_v0:-".false."} - do_ugwp_v1 = ${do_ugwp_v1:-".true."} - do_ugwp_v0_orog_only = ${do_ugwp_v0_orog_only:-".false."} - do_ugwp_v0_nst_only = ${do_ugwp_v0_nst_only:-".false."} - do_gsl_drag_ls_bl = ${do_gsl_drag_ls_bl:-".true."} - do_gsl_drag_ss = ${do_gsl_drag_ss:-".true."} - do_gsl_drag_tofd = ${do_gsl_drag_tofd:-".true."} - do_gwd_opt_psl = ${do_gwd_opt_psl:-".false."} - do_ugwp_v1_orog_only = ${do_ugwp_v1_orog_only:-".false."} - min_lakeice = ${min_lakeice:-"0.15"} - min_seaice = ${min_seaice:-"0.15"} - use_cice_alb = ${use_cice_alb:-".false."} -EOF - ;; - FV3_global_nest*) - local default_dt_inner=$(( DELTIM/2 )) - cat >> input.nml << EOF - iovr = ${iovr:-"3"} - lcnorm = ${lcnorm:-".false."} - ltaerosol = ${ltaerosol:-".false."} - lradar = ${lradar:-".true."} - ttendlim = ${ttendlim:-"-999"} - dt_inner = ${dt_inner:-"${default_dt_inner}"} - sedi_semi = ${sedi_semi:-".true."} - decfl = ${decfl:-"10"} - oz_phys = ${oz_phys:-".false."} - oz_phys_2015 = ${oz_phys_2015:-".true."} - lsoil_lsm = ${lsoil_lsm:-"4"} - do_mynnedmf = ${do_mynnedmf:-".false."} - do_mynnsfclay = ${do_mynnsfclay:-".false."} - icloud_bl = ${icloud_bl:-"1"} - bl_mynn_edmf = ${bl_mynn_edmf:-"1"} - bl_mynn_tkeadvect = ${bl_mynn_tkeadvect:-".true."} - bl_mynn_edmf_mom = ${bl_mynn_edmf_mom:-"1"} - do_ugwp = ${do_ugwp:-".false."} - do_tofd = ${do_tofd:-".false."} - gwd_opt = ${gwd_opt:-"2"} - do_ugwp_v0 = ${do_ugwp_v0:-".false."} - do_ugwp_v1 = ${do_ugwp_v1:-".true."} - do_ugwp_v0_orog_only = ${do_ugwp_v0_orog_only:-".false."} - do_ugwp_v0_nst_only = ${do_ugwp_v0_nst_only:-".false."} - do_gsl_drag_ls_bl = ${do_gsl_drag_ls_bl:-".true."} - do_gsl_drag_ss = ${do_gsl_drag_ss:-".true."} - do_gsl_drag_tofd = ${do_gsl_drag_tofd:-".true."} - do_ugwp_v1_orog_only = ${do_ugwp_v1_orog_only:-".false."} - min_lakeice = ${min_lakeice:-"0.15"} - min_seaice = ${min_seaice:-"0.15"} - use_cice_alb = ${use_cice_alb:-".false."} -EOF - ;; - *) - cat >> input.nml << EOF - iovr = ${iovr:-"3"} -EOF - ;; -esac - -cat >> input.nml <> input.nml << EOF - fscav_aero = ${fscav_aero:-'*:0.0'} -EOF -fi - -cat >> input.nml <> input.nml <> input.nml << EOF - iaufhrs = ${IAUFHRS} - iau_delthrs = ${IAU_DELTHRS} - iau_inc_files= ${IAU_INC_FILES} - iau_drymassfixer = .false. - iau_filter_increments = ${IAU_FILTER_INCREMENTS:-".false."} -EOF + local FSCAV_AERO=${fscav_aero:-'*:0.0'} +else + local FSCAV_AERO='"*:0.3","so2:0.0","msa:0.0","dms:0.0","nh3:0.4","nh4:0.6","bc1:0.6","bc2:0.6","oc1:0.4","oc2:0.4","dust1:0.6","dust2:0.6","dust3:0.6","dust4:0.6","dust5:0.6","seas1:0.5","seas2:0.5","seas3:0.5","seas4:0.5","seas5:0.5"' fi -if [[ ${DO_CA:-"NO"} = "YES" ]]; then - cat >> input.nml << EOF - do_ca = .true. - ca_global = ${ca_global:-".false."} - ca_sgs = ${ca_sgs:-".true."} - nca = ${nca:-"1"} - ncells = ${ncells:-"5"} - nlives = ${nlives:-"12"} - nseed = ${nseed:-"1"} - nfracseed = ${nfracseed:-"0.5"} - nthresh = ${nthresh:-"18"} - ca_trigger = ${ca_trigger:-".true."} - nspinup = ${nspinup:-"1"} - iseed_ca = ${ISEED_CA:-"12345"} -EOF +local IAUFHRS=${IAUFHRS} +local IAU_DELTHRS=${IAU_DELTHRS} +local IAU_INC_FILES=${IAU_INC_FILES:-"''"} +local IAU_DRYMASSFIXER=.false. +local IAU_FILTER_INCREMENTS=${IAU_FILTER_INCREMENTS:-".false."} + +# CA options +local DO_CA=".true." +local CA_GLOBAL=${ca_global:-".false."} +local CA_SGS=${ca_sgs:-".true."} +local NCA=${nca:-"1"} +local NCELLS=${ncells:-"5"} +local NLIVES=${nlives:-"12"} +local NSEED=${nseed:-"1"} +local NFRACSEED=${nfracseed:-"0.5"} +local NTHRESH=${nthresh:-"18"} +local CA_TRIGGER=${ca_trigger:-".true."} +local NSPINUP=${nspinup:-"1"} +local ISEED_CA=${ISEED_CA:-"12345"} + +# Land pert options +local LNDP_TYPE=${lndp_type:-2} +local N_VAR_LNDP=${n_var_lndp:-0} + +local LCNORM=${lcnorm:-".false."} +local PERT_MP=${PERT_MP:-".false."} +local PERT_RADTEND=${PERT_RADTEND:-".false."} +local PERT_CLDS=${PERT_CLDS:-".false."} + +if [[ ${DO_SPPT} = ".true." ]]; then + local PERT_CLDS=".true." fi -if [[ "${DO_LAND_PERT:-NO}" == "YES" ]]; then - cat >> input.nml << EOF - lndp_type = ${lndp_type:-2} - n_var_lndp = ${n_var_lndp:-0} -EOF +if [[ "${DOIAU}" = "YES" ]]; then + local HIDE_AIAU=" " +else + local HIDE_AIAU="!" fi -# Close &gfs_physics_nml section -cat >> input.nml << EOF -/ -EOF - +#GWP options if [[ ${knob_ugwp_version} -eq 0 ]]; then - cat >> input.nml << EOF -&cires_ugwp_nml - knob_ugwp_solver = ${knob_ugwp_solver:-2} - knob_ugwp_source = ${knob_ugwp_source:-1,1,0,0} - knob_ugwp_wvspec = ${knob_ugwp_wvspec:-1,25,25,25} - knob_ugwp_azdir = ${knob_ugwp_azdir:-2,4,4,4} - knob_ugwp_stoch = ${knob_ugwp_stoch:-0,0,0,0} - knob_ugwp_effac = ${knob_ugwp_effac:-1,1,1,1} - knob_ugwp_doaxyz = ${knob_ugwp_doaxyz:-1} - knob_ugwp_doheat = ${knob_ugwp_doheat:-1} - knob_ugwp_dokdis = ${knob_ugwp_dokdis:-1} - knob_ugwp_ndx4lh = ${knob_ugwp_ndx4lh:-1} - knob_ugwp_version = ${knob_ugwp_version:-0} - launch_level = ${launch_level:-54} -/ -EOF -fi - -if [[ ${knob_ugwp_version} -eq 1 ]]; then - cat >> input.nml << EOF -&cires_ugwp_nml - knob_ugwp_solver = ${knob_ugwp_solver:-2} - knob_ugwp_source = ${knob_ugwp_source:-1,1,0,0} - knob_ugwp_wvspec = ${knob_ugwp_wvspec:-1,25,25,25} - knob_ugwp_azdir = ${knob_ugwp_azdir:-2,4,4,4} - knob_ugwp_stoch = ${knob_ugwp_stoch:-0,0,0,0} - knob_ugwp_effac = ${knob_ugwp_effac:-1,1,1,1} - knob_ugwp_doaxyz = ${knob_ugwp_doaxyz:-1} - knob_ugwp_doheat = ${knob_ugwp_doheat:-1} - knob_ugwp_dokdis = ${knob_ugwp_dokdis:-2} - knob_ugwp_ndx4lh = ${knob_ugwp_ndx4lh:-4} - knob_ugwp_version = ${knob_ugwp_version:-1} - knob_ugwp_palaunch = ${knob_ugwp_palaunch:-275.0e2} - knob_ugwp_nslope = ${knob_ugwp_nslope:-1} - knob_ugwp_lzmax = ${knob_ugwp_lzmax:-15.750e3} - knob_ugwp_lzmin = ${knob_ugwp_lzmin:-0.75e3} - knob_ugwp_lzstar = ${knob_ugwp_lzstar:-2.0e3} - knob_ugwp_taumin = ${knob_ugwp_taumin:-0.25e-3} - knob_ugwp_tauamp = ${knob_ugwp_tauamp:-3.0e-3} - knob_ugwp_lhmet = ${knob_ugwp_lhmet:-200.0e3} - knob_ugwp_orosolv = ${knob_ugwp_orosolv:-'pss-1986'} -/ -EOF + local HIDE_UGWPV0=" " + local HIDE_UGWPV1="!" +elif [[ ${knob_ugwp_version} -eq 1 ]]; then + local HIDE_UGWPV0="!" + local HIDE_UGWPV1=" " +else + local HIDE_UGWPV0="!" + local HIDE_UGWPV1="!" fi -echo "" >> input.nml - -cat >> input.nml <> input.nml -#if [ $MEMBER -gt 0 ]; then -if [[ "${DO_SPPT}" = "YES" || "${DO_SHUM}" = "YES" || "${DO_SKEB}" = "YES" || "${DO_LAND_PERT}" = "YES" ]]; then - - cat >> input.nml << EOF -&nam_stochy - stochini=${stochini:-".false."} -EOF - - if [[ ${DO_SKEB} = "YES" ]]; then - cat >> input.nml << EOF - skeb = ${SKEB} - iseed_skeb = ${ISEED_SKEB:-${ISEED}} - skeb_tau = ${SKEB_TAU:-"-999."} - skeb_lscale = ${SKEB_LSCALE:-"-999."} - skebnorm = ${SKEBNORM:-"1"} - skeb_npass = ${SKEB_NPASS:-"30"} - skeb_vdof = ${SKEB_VDOF:-"5"} -EOF - fi - - if [[ ${DO_SHUM} = "YES" ]]; then - cat >> input.nml << EOF - shum = ${SHUM} - iseed_shum = ${ISEED_SHUM:-${ISEED}} - shum_tau = ${SHUM_TAU:-"-999."} - shum_lscale = ${SHUM_LSCALE:-"-999."} -EOF - fi - - if [[ ${DO_SPPT} = "YES" ]]; then - cat >> input.nml << EOF - sppt = ${SPPT} - iseed_sppt = ${ISEED_SPPT:-${ISEED}} - sppt_tau = ${SPPT_TAU:-"-999."} - sppt_lscale = ${SPPT_LSCALE:-"-999."} - sppt_logit = ${SPPT_LOGIT:-".true."} - sppt_sfclimit = ${SPPT_SFCLIMIT:-".true."} - use_zmtnblck = ${use_zmtnblck:-".true."} - pbl_taper = ${pbl_taper:-"0,0,0,0.125,0.25,0.5,0.75"} -EOF - fi - - if [[ "${DO_OCN_SPPT:-NO}" == "YES" ]]; then - cat >> input.nml <> input.nml <> input.nml << EOF -/ -EOF - - if [[ ${DO_LAND_PERT} = "YES" ]]; then - cat >> input.nml << EOF -&nam_sfcperts - lndp_type = ${lndp_type} - LNDP_TAU = ${LNDP_TAU} - LNDP_SCALE = ${LNDP_SCALE} - ISEED_LNDP = ${ISEED_LNDP:-${ISEED}} - lndp_var_list = ${lndp_var_list} - lndp_prt_list = ${lndp_prt_list} -/ -EOF - else - cat >> input.nml << EOF -&nam_sfcperts -/ -EOF - fi - +# Common GWP options +local KNOB_UGWP_SOLVER=${knob_ugwp_solver:-2} +local KNOB_UGWP_SOURCE=${knob_ugwp_source:-1,1,0,0} +local KNOB_UGWP_WVSPEC=${knob_ugwp_wvspec:-1,25,25,25} +local KNOB_UGWP_AZDIR=${knob_ugwp_azdir:-2,4,4,4} +local KNOB_UGWP_STOCH=${knob_ugwp_stoch:-0,0,0,0} +local KNOB_UGWP_EFFAC=${knob_ugwp_effac:-1,1,1,1} +local KNOB_UGWP_DOAXYZ=${knob_ugwp_doaxyz:-1} +local KNOB_UGWP_DOHEAT=${knob_ugwp_doheat:-1} +# UGWP Version 0 options +local KNOB_UGWP_DOKDIS=${knob_ugwp_dokdis:-1} +local KNOB_UGWP_NDX4LH=${knob_ugwp_ndx4lh:-1} +local KNOB_UGWP_VERSION=${knob_ugwp_version:-0} +local LAUNCH_LEVEL=${launch_level:-54} +# UGWP Version 1 options +local KNOB_UGWP_DOKDIS=${knob_ugwp_dokdis:-2} +local KNOB_UGWP_NDX4LH=${knob_ugwp_ndx4lh:-4} +local KNOB_UGWP_VERSION=${knob_ugwp_version:-1} +local KNOB_UGWP_PALAUNCH=${knob_ugwp_palaunch:-275.0e2} +local KNOB_UGWP_NSLOPE=${knob_ugwp_nslope:-1} +local KNOB_UGWP_LZMAX=${knob_ugwp_lzmax:-15.750e3} +local KNOB_UGWP_LZMIN=${knob_ugwp_lzmin:-0.75e3} +local KNOB_UGWP_LZSTAR=${knob_ugwp_lzstar:-2.0e3} +local KNOB_UGWP_TAUMIN=${knob_ugwp_taumin:-0.25e-3} +local KNOB_UGWP_TAUAMP=${knob_ugwp_tauamp:-3.0e-3} +local KNOB_UGWP_LHMET=${knob_ugwp_lhmet:-200.0e3} +local KNOB_UGWP_OROSOLV=${knob_ugwp_orosolv:-\'pss-1986\'} + +# gfdl_cloud_microphysics options +local REIFLAG=${reiflag:-"2"} + +# interpolator_nml options + +# nam sfc options +local FNGLAC="'${FNGLAC}'" +local FNMXIC="'${FNMXIC}'" +local FNTSFC="'${FNTSFC}'" +local FNSNOC="'${FNSNOC}'" +local FNZORC="'${FNZORC}'" +local FNALBC="'${FNALBC}'" +local FNALBC2="'${FNALBC2}'" +local FNAISC="'${FNAISC}'" +local FNTG3C="'${FNTG3C}'" +local FNVEGC="'${FNVEGC}'" +local FNVETC="'${FNVETC}'" +local FNSOTC="'${FNSOTC}'" +local FNSOCC="'${FNSOCC}'" +local FNSMCC="'${FNSMCC}'" +local FNMSKH="'${FNMSKH}'" +local FNTSFA="'${FNTSFA}'" +local FNACNA="'${FNACNA:-}'" +local FNSNOA="'${FNSNOA:-}'" +local FNVMNC="'${FNVMNC:-}'" +local FNVMXC="'${FNVMXC:-}'" +local FNSLPC="'${FNSLPC:-}'" +local FNABSC="'${FNABSC:-}'" +local LDEBUG=${LDEBUG:-".false."} +local FSMCL2=${FSMCL2:+\'${FSMCL2}\'}${FSMCL2:-99999} +local FSMCL3=${FSMCL3:+\'${FSMCL3}\'}${FSMCL3:-99999} +local FSMCL4=${FSMCL4:+\'${FSMCL4}\'}${FSMCL4:-99999} +local LANDICE=${landice:-".true."} +local FTSFS=${FTSFS:-90} +local FAISL=${FAISL:+\'${FAISL}\'}${FAISL:-99999} +local FAISS=${FAISS:+\'${FAISS}\'}${FAISS:-99999} +local FSNOL=${FSNOL:+\'${FSNOL}\'}${FSNOL:-99999} +local FSNOS=${FSNOS:+\'${FSNOS}\'}${FSNOS:-99999} +local FSICL=${FSICL:-99999} +local FSICS=${FSICS:-99999} +local FTSFL=${FTSFL:+\'${FTSFL}\'}${FTSFL:-99999} +local FVETL=${FVETL:+\'${FVETL}\'}${FVETL:-99999} +local FSOTL=${FSOTL:+\'${FSOTL}\'}${FSOTL:-99999} +local FVMNL=${FvmnL:+\'${FvmnL}\'}${FvmnL:-99999} +local FVMXL=${FvmxL:+\'${FvmxL}\'}${FvmxL:-99999} +local FSLPL=${FSLPL:+\'${FSLPL}\'}${FSLPL:-99999} +local FABSL=${FABSL:+\'${FABSL}\'}${FABSL:-99999} +local FNTSFA="'${FNTSFA:-}'" + +#fv_grid_nml options + +#nam stochy options +local STOCHINI=${stochini:-".false."} +local SKEB=${SKEB:-0} +local ISEED_SKEB=${ISEED_SKEB:-${ISEED}} +local SKEB_TAU=${SKEB_TAU:-"-999."} +local SKEB_LSCALE=${SKEB_LSCALE:-"-999."} +local SKEBNORM=${SKEBNORM:-"1"} +local SKEB_NPASS=${SKEB_NPASS:-"30"} +local SKEB_VDOF=${SKEB_VDOF:-"5"} +local SHUM=${SHUM:-"-999."} +local ISEED_SHUM=${ISEED_SHUM:-${ISEED}} +local SHUM_TAU=${SHUM_TAU:-"-999."} +local SHUM_LSCALE=${SHUM_LSCALE:-"-999."} +local SPPT=${SPPT:-"-999."} +local ISEED_SPPT=${ISEED_SPPT:-${ISEED}} +local SPPT_TAU=${SPPT_TAU:-"-999."} +local SPPT_LSCALE=${SPPT_LSCALE:-"-999."} +local SPPT_LOGIT=${SPPT_LOGIT:-".true."} +local SPPT_SFCLIMIT=${SPPT_SFCLIMIT:-".true."} +local USE_ZMTNBLCK=${use_zmtnblck:-".true."} +local PBL_TAPER=${pbl_taper:-"0,0,0,0.125,0.25,0.5,0.75"} +local OCNSPPT=${OCNSPPT:-"0.8,0.4,0.2,0.08,0.04"} +local OCNSPPT_LSCALE=${OCNSPPT_LSCALE:-"500.E3,1000.E3,2000.E3,2000.E3,2000.E3"} +local OCNSPPT_TAU=${OCNSPPT_TAU:-"2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7"} +local ISEED_OCNSPPT=${ISEED_OCNSPPT:-${ISEED}} +local EPBL=${EPBL:-"0.8,0.4,0.2,0.08,0.04"} +local EPBL_LSCALE=${EPBL_LSCALE:-"500.E3,1000.E3,2000.E3,2000.E3,2000.E3"} +local EPBL_TAU=${EPBL_TAU:-"2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7"} +local ISEED_EPBL=${ISEED_EPBL:-${ISEED}} +local LNDP_TYPE=${lndp_type:-"0"} +local LNDP_MODEL_TYPE=${lndp_model_type:-"0"} +local LNDP_TAU=${LNDP_TAU:-"21600"} +local LNDP_LSCALE=${LNDP_SCALE:-"500000"} +local ISEED_LNDP=${ISEED_LNDP:-${ISEED}} +local LNDP_VAR_LIST=${lndp_var_list:-"'XXX'"} +local LNDP_PRT_LIST=${lndp_prt_list:-"-999"} + +local MOM6_OUTPUT_DIR=MOM6_OUTPUT/ +local MOM6_RESTART_SETTING=${MOM6_RESTART_SETTING:-'n'} +local MOM6_RESTART_DIR=MOM6_RESTART/ + +# Land IAU defaults + +local DO_LAND_IAU=.false. +local LAND_IAU_FHRS=3,6,9 +local LAND_IAU_DELHRS=6 +local LAND_IAU_INC_FILES="'sfc_inc',''" +local LSOIL_INCR=3 +local LAND_IAU_FILTER_INC=.false. +local LAND_IAU_UPD_STC=.true. +local LAND_IAU_UPD_SLC=.true. +local LAND_IAU_DP_STCSMC_ADJ=.true. +local LAND_IAU_MIN_T_INC=0.0001 + +# Check will need to be modified in the future +# once GW is ready to add in land IAU +if [[ "${DO_LAND_IAU}" = ".true." ]]; then + local HIDE_LIAU=" " else - - cat >> input.nml << EOF -&nam_stochy -/ -&nam_sfcperts -/ -EOF - + local HIDE_LIAU="!" fi -# Echo out formatted "input.nml" -echo "====================================" -echo "FV3_namelists(): 'input.nml'" -cat input.nml -echo "====================================" +local global_template="${HOMEgfs}/parm/ufs/fv3/global_control.nml.IN" +atparse < "${global_template}" >> "input.nml" + } diff --git a/ush/parsing_namelists_FV3_nest.sh b/ush/parsing_namelists_FV3_nest.sh index 0080641275..b729fbb696 100755 --- a/ush/parsing_namelists_FV3_nest.sh +++ b/ush/parsing_namelists_FV3_nest.sh @@ -239,7 +239,7 @@ cat >> "${nml_file}" <> input.nml <> input.nml <