From 8ce541b79369654663eded533e868327b3ab70c6 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Thu, 19 Dec 2024 20:32:03 +0000 Subject: [PATCH 01/26] Finalized parsing changes --- ush/parsing_namelists_FV3.sh | 1106 +++++++++++++-------------------- ush/parsing_namelists_MOM6.sh | 32 - 2 files changed, 443 insertions(+), 695 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index bb6a204cc8..f1c831a988 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -80,691 +80,471 @@ else ${NCP} "${FIELD_TABLE}" field_table fi -cat > input.nml <> input.nml << EOF - oz_phys = .false. - oz_phys_2015 = .true. -EOF + local OZ_PHYS_NEW=.false. #oz_phys + local OZ_PHYS_OLD=.true. #oz_phys_2015 ;; "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 + local IOVR=${iovr:-"3"} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".false."} + local TTENDLIM=${ttendlim:-0.005} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local LSOIL_LSM=${lsoil_lsm:-"4"} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} + local USE_CICE_ALB=${use_cice_alb:-".false."} ;; 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 + local IOVR=${iovr:-"3"} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".false."} + local TTENDLIM=${ttendlim:-"0.005"} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} ;; 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 + local IOVR=${iovr:-"3"} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".false."} + local TTENDLIM=${ttendlim:-"0.005"} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local LSOIL_LSM=${lsoil_lsm:-"4"} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} ;; 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 + local DT_INNER=$(( DELTIM/2 )) + local IOVR=${iovr:-"3"} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".true."} + local TTENDLIM=${ttendlim:-"-999"} + local DT_INNER=${dt_inner:-"${default_dt_inner}"} + local SEDI_SEMI=${sedi_semi:-".true."} + local DECFL=${decfl:-"10"} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local LSOIL_LSM=${lsoil_lsm:-"4"} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local DO_UGWP=${do_ugwp:-".false."} + local DO_TOFD=${do_tofd:-".false."} + local GWD_OPT=${gwd_opt:-"2"} + local DO_UGWP_V0=${do_ugwp_v0:-".false."} + local DO_UGWP_V1=${do_ugwp_v1:-".true."} + local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} + local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} + local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} + local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} + local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} + local DO_GWD_OPT_PSL=${do_gwd_opt_psl:-".false."} + local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} + local USE_CICE_ALB=${use_cice_alb:-".false."} ;; 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 + local DT_INNER=$(( DELTIM/2 )) + local IOVR=${iovr:-"3"} + local LCNORM=${lcnorm:-".false."} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".true."} + local TTENDLIM=${ttendlim:-"-999"} + local DT_INNER=${dt_inner:-"${default_dt_inner}"} + local SEDI_SEMI=${sedi_semi:-".true."} + local DECFL=${decfl:-"10"} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local LSOIL_LSM=${lsoil_lsm:-"4"} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local DO_UGWP=${do_ugwp:-".false."} + local DO_TOFD=${do_tofd:-".false."} + local GWD_OPT=${gwd_opt:-"2"} + local DO_UGWP_V0=${do_ugwp_v0:-".false."} + local DO_UGWP_V1=${do_ugwp_v1:-".true."} + local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} + local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} + local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} + local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} + local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} + local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} + local USE_CICE_ALB=${use_cice_alb:-".false."} ;; *) - cat >> input.nml << EOF - iovr = ${iovr:-"3"} -EOF + local IOVR=${iovr:-"3"} ;; 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 -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 -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 + 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 -# Close &gfs_physics_nml section -cat >> input.nml << EOF -/ -EOF - +local pert_mp=.false. +local pert_radtend=.false. +local pert_clds=.false. + +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:-".true."} + +#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 -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 <> 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 - + local HIDE_UGWPV0=" " + local HIDE_UGWPV1="!" +elif [[ ${knob_ugwp_version} -eq 1 ]]; then + local HIDE_UGWPV0="!" + local HIDE_UGWPV1=" " else - - cat >> input.nml << EOF -&nam_stochy -/ -&nam_sfcperts -/ -EOF - + local HIDE_UGWPV0="!" + local HIDE_UGWPV1="!" fi - -# Echo out formatted "input.nml" -echo "====================================" -echo "FV3_namelists(): 'input.nml'" -cat input.nml -echo "====================================" +# 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 FNACNA=${FNACNA:-} +local FNSNOA=${FNSNOA:-} +local FNVMNC=${FNVMNC:-} +local FNVMXC=${FNVMXC:-} +local FNSLPC=${FNSLPC:-} +local FNABSC=${FNABSC:-} +local LDEBUG=${LDEBUG:-".false."} +local FSMCL2=${FSMCL2:-99999} +local FSMCL3=${FSMCL3:-99999} +local FSMCL4=${FSMCL4:-99999} +local LANDICE=${landice:-".true."} +local FTSFS=${FTSFS:-90} +local FAISL=${FAISL:-99999} +local FAISS=${FAISS:-99999} +local FSNOL=${FSNOL:-99999} +local FSNOS=${FSNOS:-99999} +local FSICL=${FSICL:-99999} +local FSICS=${FSICS:-99999} +local FTSFL=${FTSFL:-99999} +local FVETL=${FVETL:-99999} +local FSOTL=${FSOTL:-99999} +local FVMNL=${FvmnL:-99999} +local FVMXL=${FvmxL:-99999} +local FSLPL=${FSLPL:-99999} +local FABSL=${FABSL:-99999} +local FNTSFA=${FNTSFA:-''} + +#fv_grid_nml options + +#nam stochy options +local SKEB=${SKEB:-"-999."} +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:-"0.005"} +local ISEED_SHUM=${ISEED_SHUM:-${ISEED}} +local SHUM_TAU=${SHUM_TAU:-"-999."} +local SHUM_LSCALE=${SHUM_LSCALE:-"-999."} +local SPPT=${SPPT:-"0.2"} +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=" " +local MOM6_RESTART_SETTING=" " +local MOM6_RESTART_DIR=" " + +local global_template='/scratch1/NCEPDEV/stmp2/Daniel.Sarmiento/gw_branch/global_control.nml.IN' +atparse < "${global_template}" >> "input.nml" } diff --git a/ush/parsing_namelists_MOM6.sh b/ush/parsing_namelists_MOM6.sh index 3ac2cb465e..b8c5074fcc 100755 --- a/ush/parsing_namelists_MOM6.sh +++ b/ush/parsing_namelists_MOM6.sh @@ -4,38 +4,6 @@ # shellcheck disable=SC2034 MOM6_namelists(){ -# MOM6 namelists generation - -# ================================================================ -# input.nml -# --------- -cat >> input.nml <> input.nml < Date: Fri, 20 Dec 2024 19:18:30 +0000 Subject: [PATCH 02/26] adjust MOM6 nml changes --- ush/parsing_namelists_FV3.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index f1c831a988..b76bd933a3 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -540,10 +540,10 @@ 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=" " -local MOM6_RESTART_SETTING=" " -local MOM6_RESTART_DIR=" " + +local MOM6_OUTPUT_DIR=MOM6_OUTPUT/ +local MOM6_RESTART_SETTING=r +local MOM6_RESTART_DIR=MOM6_RESTART/ local global_template='/scratch1/NCEPDEV/stmp2/Daniel.Sarmiento/gw_branch/global_control.nml.IN' atparse < "${global_template}" >> "input.nml" From f4e23b7d6eaae1f274f34eee9b2dd9feb6a99407 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Wed, 15 Jan 2025 15:03:52 +0000 Subject: [PATCH 03/26] Fixes FHZER calls/definitions --- parm/config/gefs/config.fcst | 2 +- parm/config/gefs/yaml/defaults.yaml | 2 +- parm/config/gfs/config.efcs | 2 +- ush/parsing_namelists_FV3.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/parm/config/gefs/config.fcst b/parm/config/gefs/config.fcst index 2fef1ba0a0..afc9264602 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -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/gefs/yaml/defaults.yaml b/parm/config/gefs/yaml/defaults.yaml index df12b16282..66d088bd8e 100644 --- a/parm/config/gefs/yaml/defaults.yaml +++ b/parm/config/gefs/yaml/defaults.yaml @@ -25,7 +25,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 d27fd13cfa..b485485b5d 100644 --- a/parm/config/gfs/config.efcs +++ b/parm/config/gfs/config.efcs @@ -78,7 +78,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/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index b76bd933a3..21d96311b4 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -160,7 +160,7 @@ local FILTERED_TERRAIN=${filtered_terrain} local NPZP=${LEVS} #levp local GFS_DWINDS=${gfs_dwinds} -local FHZERO=${FHZER} +local FHZERO=${FHZERO:-6} local H2O_PHYS=${h2o_phys:-".true."} local LDIAG3D=${ldiag3d:-".false."} local QDIAG3D=${qdiag3d:-".false."} From b22742b1a6584960bf47935feb149ea96e035ac5 Mon Sep 17 00:00:00 2001 From: Daniel Sarmiento <42810219+dpsarmie@users.noreply.github.com> Date: Thu, 16 Jan 2025 09:55:06 -0500 Subject: [PATCH 04/26] Fixes typo in PERT_MP Added a missing period --- ush/parsing_namelists_FV3.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 21d96311b4..692a8bf487 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -427,7 +427,7 @@ 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_MP=${PERT_MP:-".false."} local PERT_RADTEND=${PERT_RADTEND:-".false."} local PERT_CLDS=${PERT_CLDS:-".true."} From 0030f5b65b80831954295e30895d7444d83da656 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Thu, 16 Jan 2025 19:26:45 +0000 Subject: [PATCH 05/26] Revert conflicts --- ush/parsing_namelists_FV3.sh | 1088 ++++++++++++++++++++-------------- 1 file changed, 645 insertions(+), 443 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 692a8bf487..2628b03594 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -80,471 +80,673 @@ else ${NCP} "${FIELD_TABLE}" field_table fi -# Set variables for global_control.nml template - -local BLOCKSIZE=${blocksize} -local CHKSUM_DEBUG=${chksum_debug} -local DYCORE_ONLY=${dycore_only} -local CCPP_SUITE=${CCPP_SUITE} - -local MAX_OUTPUT_FIELDS=300 - -local DOMAINS_STACK_SIZE=${domains_stack_size:-3000000} -local PRINT_MEMORY_USAGE=${print_memory_usage:-".false."} - -local INPES=${layout_x} -local JNPES=${layout_y} -local IO_LAYOUT=${io_layout} -local NPX=${npx} -local NPY=${npy} -local NTILES=${ntiles} -local NPZ=${npz} -local DZ_MIN=${dz_min:-"6"} -local PSM_BC=${psm_bc:-"0"} -local MAKE_NH=${make_nh} -local FV_DEBUG=${fv_debug:-".false."} -local RANGE_WARN=${range_warn:-".true."} -local N_SPONGE=${n_sponge:-"10"} -local NUDGE_QV=${nudge_qv:-".false."} -local NUDGE_DZ=${nudge_dz:-".false."} -local TAU=${tau:-10.} -local FAST_TAU_W_SEC=${fast_tau_w_sec:-"0.2"} -local RF_CUTOFF=${rf_cutoff:-"7.5e2"} -local D2_BG_K1=${d2_bg_k1:-"0.15"} -local D2_BG_K2=${d2_bg_k2:-"0.02"} -local KORD_TM=${kord_tm:-"-9"} -local KORD_MT=${kord_mt:-"9"} -local KORD_WZ=${kord_wz:-"9"} -local KORD_TR=${kord_tr:-"9"} -local HYDROSTATIC=${hydrostatic} -local PHYS_HYDROSTATIC=${phys_hydrostatic} -local USE_HYDRO_PRESSURE=${use_hydro_pressure} -local UPDATE_FULL_OMEGA=${pass_full_omega_to_physics_in_non_hydrostatic_mode:-".false."} -local K_SPLIT=${k_split} -local N_SPLIT=${n_split} -local NWAT=${nwat:-2} -local NA_INIT=${na_init} -local DNATS=${dnats} -local FV_SG_ADJ=${fv_sg_adj:-"450"} -local NORD=${nord:-3} -local DDDMP=${dddmp:-0.1} -local D4_BG=${d4_bg:-0.15} -local VTDM4=${vtdm4} -local DELT_MAX=${delt_max:-"0.002"} -local DO_VORT_DAMP=${do_vort_damp} -local EXTERNAL_IC=${external_ic} -local EXTERNAL_ETA=${external_eta:-.true.} -local GFS_PHIL=${gfs_phil:-".false."} -local NGGPS_IC=${nggps_ic} -local MOUNTAIN=${mountain} -local NCEP_IC=${ncep_ic} -local D_CON=${d_con} -local HORD_MT=${hord_mt} -local HORD_VT=${hord_xx} -local HORD_TM=${hord_xx} -local HORD_DP=-${hord_xx} -local HORD_TR=${hord_tr:-"8"} -local ADJUST_DRY_MASS=${adjust_dry_mass:-".true."} -local DRY_MASS=${dry_mass:-98320.0} -local CONSV_TE=${consv_te} -local DO_SAT_ADJ=${do_sat_adj:-".false."} -local PRINT_FREQ=${print_freq} -local WARM_START=${warm_start} -local NO_DYCORE=${no_dycore} -local AGRID_VEL_RST=${agrid_vel_rst:-".true."} -local READ_INCREMENT=${read_increment} -local RES_LATLON_DYNAMICS=${res_latlon_dynamics} -local INCREMENT_FILE_ON_NATIVE_GRID=.true. - -local FILTERED_TERRAIN=${filtered_terrain} -local NPZP=${LEVS} #levp -local GFS_DWINDS=${gfs_dwinds} - -local FHZERO=${FHZERO:-6} -local H2O_PHYS=${h2o_phys:-".true."} -local LDIAG3D=${ldiag3d:-".false."} -local QDIAG3D=${qdiag3d:-".false."} -local PRINT_DIFF_PGR=${print_diff_pgr:-".false."} -local FHCYC=${FHCYC} -local USE_UFO=${use_ufo:-".true."} -local PRE_RAD=${pre_rad:-".false."} -local IMP_PHYSICS=${imp_physics:-"99"} - +cat > input.nml <> input.nml << EOF + oz_phys = .false. + oz_phys_2015 = .true. +EOF ;; "FV3_GSD_v0") - local IOVR=${iovr:-"3"} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".false."} - local TTENDLIM=${ttendlim:-0.005} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local LSOIL_LSM=${lsoil_lsm:-"4"} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} - local USE_CICE_ALB=${use_cice_alb:-".false."} + 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*) - local IOVR=${iovr:-"3"} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".false."} - local TTENDLIM=${ttendlim:-"0.005"} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} + 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*) - local IOVR=${iovr:-"3"} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".false."} - local TTENDLIM=${ttendlim:-"0.005"} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local LSOIL_LSM=${lsoil_lsm:-"4"} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} + 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 DT_INNER=$(( DELTIM/2 )) - local IOVR=${iovr:-"3"} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".true."} - local TTENDLIM=${ttendlim:-"-999"} - local DT_INNER=${dt_inner:-"${default_dt_inner}"} - local SEDI_SEMI=${sedi_semi:-".true."} - local DECFL=${decfl:-"10"} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local LSOIL_LSM=${lsoil_lsm:-"4"} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local DO_UGWP=${do_ugwp:-".false."} - local DO_TOFD=${do_tofd:-".false."} - local GWD_OPT=${gwd_opt:-"2"} - local DO_UGWP_V0=${do_ugwp_v0:-".false."} - local DO_UGWP_V1=${do_ugwp_v1:-".true."} - local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} - local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} - local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} - local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} - local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} - local DO_GWD_OPT_PSL=${do_gwd_opt_psl:-".false."} - local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} - local USE_CICE_ALB=${use_cice_alb:-".false."} + 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 DT_INNER=$(( DELTIM/2 )) - local IOVR=${iovr:-"3"} - local LCNORM=${lcnorm:-".false."} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".true."} - local TTENDLIM=${ttendlim:-"-999"} - local DT_INNER=${dt_inner:-"${default_dt_inner}"} - local SEDI_SEMI=${sedi_semi:-".true."} - local DECFL=${decfl:-"10"} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local LSOIL_LSM=${lsoil_lsm:-"4"} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local DO_UGWP=${do_ugwp:-".false."} - local DO_TOFD=${do_tofd:-".false."} - local GWD_OPT=${gwd_opt:-"2"} - local DO_UGWP_V0=${do_ugwp_v0:-".false."} - local DO_UGWP_V1=${do_ugwp_v1:-".true."} - local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} - local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} - local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} - local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} - local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} - local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} - local USE_CICE_ALB=${use_cice_alb:-".false."} + 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 ;; *) - local IOVR=${iovr:-"3"} + cat >> input.nml << EOF + iovr = ${iovr:-"3"} +EOF ;; esac -local PDFCLD=${pdfcld:-".false."} -local FHSWR=${FHSWR:-"3600."} -local FHLWR=${FHLWR:-"3600."} -local IALB=${IALB:-"1"} -local IEMS=${IEMS:-"1"} -local IAER=${IAER} -local ICLIQ_SW=${icliq_sw:-"2"} -local ICO2=${ICO2} -local ISUBC_SW=${isubc_sw:-"2"} -local ISUBC_LW=${isubc_lw:-"2"} -local ISOL=${ISOL:-"2"} -local LWHTR=${lwhtr:-".true."} -local SWHTR=${swhtr:-".true."} -local CNVGWD=${cnvgwd:-".true."} -local SHAL_CNV=${shal_cnv:-".true."} -local CAL_PRE=${cal_pre:-".true."} -local REDRAG=${redrag:-".true."} -local DSPHEAT=${dspheat:-".true."} -local HYBEDMF=${hybedmf:-".false."} -local SATMEDMF=${satmedmf-".true."} -local ISATMEDMF=${isatmedmf-"1"} -local LHEATSTRG=${lheatstrg-".false."} -local LSEASPRAY=${lseaspray:-".true."} -local RANDOM_CLDS=${random_clds:-".true."} -local TRANS_TRAC=${trans_trac:-".true."} -local CNVCLD=${cnvcld:-".true."} -local XR_CNVCLD=${xr_cnvcld:-".true."} -local IMFSHALCNV=${imfshalcnv:-"2"} -local IMFDEEPCNV=${imfdeepcnv:-"2"} -local PROGSIGMA=${progsigma:-".true."} -local BETASCU=${betascu:-"8.0"} -local BETAMCU=${betamcu:-"1.0"} -local BETADCU=${betadcu:-"2.0"} -local RAS=${ras:-".false."} -local CDMBWD=${cdmbgwd:-"3.5,0.25"} -local PSL_GWD_DX_FACTOR=${psl_gwd_dx_factor:-"6.0"} -local PRSLRD0=${prslrd0:-"0."} -local IVEGSRC=${ivegsrc:-"1"} -local ISOT=${isot:-"1"} -local LSOIL=${lsoil:-"4"} -local LSM=${lsm:-"2"} -local IOPT_DVEG=${iopt_dveg:-"1"} -local IOPT_CRS=${iopt_crs:-"1"} -local IOPT_BTR=${iopt_btr:-"1"} -local IOPT_RUN=${iopt_run:-"1"} -local IOPT_SFC=${iopt_sfc:-"1"} -local IOPT_TRS=${iopt_trs:-"2"} -local IOPT_DIAG=${iopt_diag:-"2"} -local IOPT_FRZ=${iopt_frz:-"1"} -local IOPT_INF=${iopt_inf:-"1"} -local IOPT_RAD=${iopt_rad:-"1"} -local IOPT_ALB=${iopt_alb:-"2"} -local IOPT_SNF=${iopt_snf:-"4"} -local IOPT_TBOT=${iopt_tbot:-"2"} -local IOPT_STC=${iopt_stc:-"1"} -local DEBUG=${gfs_phys_debug:-".false."} -local NSTF_NAME=${nstf_name} -local NST_ANL=${nst_anl} -local PSAUTCO=${psautco:-"0.0008,0.0005"} -local PRAUTCO=${prautco:-"0.00015,0.00015"} -local LGFDLMPRAD=${lgfdlmprad:-".false."} -local EFFR_IN=${effr_in:-".false."} -local LDIAG_UGWP=${ldiag_ugwp:-".false."} -local DO_RRTMGP=${do_RRTMGP:-".false."} -local ACTIVE_GASES=${active_gases:-'h2o_co2_o3_n2o_ch4_o2'} -local NGASES=${ngases:-"6"} -local LW_FILE_GAS=${lw_file_gas:-'rrtmgp-data-lw-g128-210809.nc'} -local LW_FILE_CLOUDS=${lw_file_clouds:-'rrtmgp-cloud-optics-coeffs-lw.nc'} -local SW_FILE_GAS=${sw_file_gas:-'rrtmgp-data-sw-g112-210809.nc'} -local SW_FILE_CLOUDS=${sw_file_clouds:-'rrtmgp-cloud-optics-coeffs-sw.nc'} -local RRTMGP_NGPTSSW=${rrtmgp_nGptsSW:-"112"} -local RRTMGP_NGPTSLW=${rrtmgp_nGptsLW:-"128"} -local RRTMGP_NBANDSLW=${rrtmgp_nBandsLW:-"16"} -local RRTMGP_NBANDSSW=${rrtmgp_nBandsSW:-"14"} -local DOGP_CLDOPTICS_LUT=${doGP_cldoptics_LUT:-".false."} -local DOGP_LWSCAT=${doGP_lwscat:-".false."} -local DOGP_SGS_CNV=.true. - -local DO_SPPT=${do_sppt:-".false."} -local DO_SHUM=${do_shum:-".false."} -local DO_SKEB=${do_skeb:-".false."} -local FRAC_GRID=${FRAC_GRID:-".true."} -local CPLCHM=${cplchm:-".false."} -local CPLFLX=${cplflx:-".false."} -local CPLICE=${cplice:-".false."} -local CPLWAV=${cplwav:-".false."} -local CPLWAV2ATM=${cplwav2atm:-".false."} -local USE_MED_FLUX=${use_med_flux:-".false."} -local CPLLND=${cpllnd:-".false."} -local CPLLND2ATM=${cpllnd2atm:-".false."} - -# CPL CHM options +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 +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 +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 fi -local pert_mp=.false. -local pert_radtend=.false. -local pert_clds=.false. - -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:-".true."} - -#GWP options +# Close &gfs_physics_nml section +cat >> input.nml << EOF +/ +EOF + if [[ ${knob_ugwp_version} -eq 0 ]]; then - local HIDE_UGWPV0=" " - local HIDE_UGWPV1="!" -elif [[ ${knob_ugwp_version} -eq 1 ]]; then - local HIDE_UGWPV0="!" - local HIDE_UGWPV1=" " + 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 +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 + else - local HIDE_UGWPV0="!" - local HIDE_UGWPV1="!" + + cat >> input.nml << EOF +&nam_stochy +/ +&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 FNACNA=${FNACNA:-} -local FNSNOA=${FNSNOA:-} -local FNVMNC=${FNVMNC:-} -local FNVMXC=${FNVMXC:-} -local FNSLPC=${FNSLPC:-} -local FNABSC=${FNABSC:-} -local LDEBUG=${LDEBUG:-".false."} -local FSMCL2=${FSMCL2:-99999} -local FSMCL3=${FSMCL3:-99999} -local FSMCL4=${FSMCL4:-99999} -local LANDICE=${landice:-".true."} -local FTSFS=${FTSFS:-90} -local FAISL=${FAISL:-99999} -local FAISS=${FAISS:-99999} -local FSNOL=${FSNOL:-99999} -local FSNOS=${FSNOS:-99999} -local FSICL=${FSICL:-99999} -local FSICS=${FSICS:-99999} -local FTSFL=${FTSFL:-99999} -local FVETL=${FVETL:-99999} -local FSOTL=${FSOTL:-99999} -local FVMNL=${FvmnL:-99999} -local FVMXL=${FvmxL:-99999} -local FSLPL=${FSLPL:-99999} -local FABSL=${FABSL:-99999} -local FNTSFA=${FNTSFA:-''} - -#fv_grid_nml options - -#nam stochy options -local SKEB=${SKEB:-"-999."} -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:-"0.005"} -local ISEED_SHUM=${ISEED_SHUM:-${ISEED}} -local SHUM_TAU=${SHUM_TAU:-"-999."} -local SHUM_LSCALE=${SHUM_LSCALE:-"-999."} -local SPPT=${SPPT:-"0.2"} -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=r -local MOM6_RESTART_DIR=MOM6_RESTART/ - -local global_template='/scratch1/NCEPDEV/stmp2/Daniel.Sarmiento/gw_branch/global_control.nml.IN' -atparse < "${global_template}" >> "input.nml" + +# Echo out formatted "input.nml" +echo "====================================" +echo "FV3_namelists(): 'input.nml'" +cat input.nml +echo "====================================" } From 61d3b0ae6452fcf521ca049384fa280984b3f9bf Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Thu, 16 Jan 2025 19:30:48 +0000 Subject: [PATCH 06/26] Resolve conflict --- ush/parsing_namelists_FV3.sh | 1088 ++++++++++++++-------------------- 1 file changed, 443 insertions(+), 645 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 2628b03594..692a8bf487 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -80,673 +80,471 @@ else ${NCP} "${FIELD_TABLE}" field_table fi -cat > input.nml <> input.nml << EOF - oz_phys = .false. - oz_phys_2015 = .true. -EOF + local OZ_PHYS_NEW=.false. #oz_phys + local OZ_PHYS_OLD=.true. #oz_phys_2015 ;; "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 + local IOVR=${iovr:-"3"} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".false."} + local TTENDLIM=${ttendlim:-0.005} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local LSOIL_LSM=${lsoil_lsm:-"4"} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} + local USE_CICE_ALB=${use_cice_alb:-".false."} ;; 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 + local IOVR=${iovr:-"3"} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".false."} + local TTENDLIM=${ttendlim:-"0.005"} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} ;; 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 + local IOVR=${iovr:-"3"} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".false."} + local TTENDLIM=${ttendlim:-"0.005"} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local LSOIL_LSM=${lsoil_lsm:-"4"} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} ;; 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 + local DT_INNER=$(( DELTIM/2 )) + local IOVR=${iovr:-"3"} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".true."} + local TTENDLIM=${ttendlim:-"-999"} + local DT_INNER=${dt_inner:-"${default_dt_inner}"} + local SEDI_SEMI=${sedi_semi:-".true."} + local DECFL=${decfl:-"10"} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local LSOIL_LSM=${lsoil_lsm:-"4"} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local DO_UGWP=${do_ugwp:-".false."} + local DO_TOFD=${do_tofd:-".false."} + local GWD_OPT=${gwd_opt:-"2"} + local DO_UGWP_V0=${do_ugwp_v0:-".false."} + local DO_UGWP_V1=${do_ugwp_v1:-".true."} + local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} + local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} + local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} + local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} + local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} + local DO_GWD_OPT_PSL=${do_gwd_opt_psl:-".false."} + local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} + local USE_CICE_ALB=${use_cice_alb:-".false."} ;; 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 + local DT_INNER=$(( DELTIM/2 )) + local IOVR=${iovr:-"3"} + local LCNORM=${lcnorm:-".false."} + local LTAEROSOL=${ltaerosol:-".false."} + local LRADAR=${lradar:-".true."} + local TTENDLIM=${ttendlim:-"-999"} + local DT_INNER=${dt_inner:-"${default_dt_inner}"} + local SEDI_SEMI=${sedi_semi:-".true."} + local DECFL=${decfl:-"10"} + local OZ_PHYS_NEW=${oz_phys:-".false."} + local OZ_PHYS_OLD=${oz_phys_2015:-".true."} + local LSOIL_LSM=${lsoil_lsm:-"4"} + local DO_MYNNEDMF=${do_mynnedmf:-".false."} + local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} + local ICLOUD_BL=${icloud_bl:-"1"} + local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} + local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} + local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} + local DO_UGWP=${do_ugwp:-".false."} + local DO_TOFD=${do_tofd:-".false."} + local GWD_OPT=${gwd_opt:-"2"} + local DO_UGWP_V0=${do_ugwp_v0:-".false."} + local DO_UGWP_V1=${do_ugwp_v1:-".true."} + local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} + local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} + local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} + local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} + local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} + local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} + local MIN_LAKEICE=${min_lakeice:-"0.15"} + local MIN_SEAICE=${min_seaice:-"0.15"} + local USE_CICE_ALB=${use_cice_alb:-".false."} ;; *) - cat >> input.nml << EOF - iovr = ${iovr:-"3"} -EOF + local IOVR=${iovr:-"3"} ;; 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 -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 -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 + 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 -# Close &gfs_physics_nml section -cat >> input.nml << EOF -/ -EOF - +local pert_mp=.false. +local pert_radtend=.false. +local pert_clds=.false. + +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:-".true."} + +#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 -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 - + local HIDE_UGWPV0=" " + local HIDE_UGWPV1="!" +elif [[ ${knob_ugwp_version} -eq 1 ]]; then + local HIDE_UGWPV0="!" + local HIDE_UGWPV1=" " else - - cat >> input.nml << EOF -&nam_stochy -/ -&nam_sfcperts -/ -EOF - + local HIDE_UGWPV0="!" + local HIDE_UGWPV1="!" fi - -# Echo out formatted "input.nml" -echo "====================================" -echo "FV3_namelists(): 'input.nml'" -cat input.nml -echo "====================================" +# 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 FNACNA=${FNACNA:-} +local FNSNOA=${FNSNOA:-} +local FNVMNC=${FNVMNC:-} +local FNVMXC=${FNVMXC:-} +local FNSLPC=${FNSLPC:-} +local FNABSC=${FNABSC:-} +local LDEBUG=${LDEBUG:-".false."} +local FSMCL2=${FSMCL2:-99999} +local FSMCL3=${FSMCL3:-99999} +local FSMCL4=${FSMCL4:-99999} +local LANDICE=${landice:-".true."} +local FTSFS=${FTSFS:-90} +local FAISL=${FAISL:-99999} +local FAISS=${FAISS:-99999} +local FSNOL=${FSNOL:-99999} +local FSNOS=${FSNOS:-99999} +local FSICL=${FSICL:-99999} +local FSICS=${FSICS:-99999} +local FTSFL=${FTSFL:-99999} +local FVETL=${FVETL:-99999} +local FSOTL=${FSOTL:-99999} +local FVMNL=${FvmnL:-99999} +local FVMXL=${FvmxL:-99999} +local FSLPL=${FSLPL:-99999} +local FABSL=${FABSL:-99999} +local FNTSFA=${FNTSFA:-''} + +#fv_grid_nml options + +#nam stochy options +local SKEB=${SKEB:-"-999."} +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:-"0.005"} +local ISEED_SHUM=${ISEED_SHUM:-${ISEED}} +local SHUM_TAU=${SHUM_TAU:-"-999."} +local SHUM_LSCALE=${SHUM_LSCALE:-"-999."} +local SPPT=${SPPT:-"0.2"} +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=r +local MOM6_RESTART_DIR=MOM6_RESTART/ + +local global_template='/scratch1/NCEPDEV/stmp2/Daniel.Sarmiento/gw_branch/global_control.nml.IN' +atparse < "${global_template}" >> "input.nml" } From 76cdcaca20ffca5d037d4aa8fea657a3a270716e Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Tue, 21 Jan 2025 03:56:49 +0000 Subject: [PATCH 07/26] Add links to nml --- sorc/link_workflow.sh | 5 +++++ ush/parsing_namelists_FV3.sh | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index 95067ca4b4..63aa63b46a 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -188,6 +188,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 [[ -s "atparse.bash" ]] && rm -f "atparse.bash" diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 692a8bf487..9e57beee52 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -545,6 +545,6 @@ local MOM6_OUTPUT_DIR=MOM6_OUTPUT/ local MOM6_RESTART_SETTING=r local MOM6_RESTART_DIR=MOM6_RESTART/ -local global_template='/scratch1/NCEPDEV/stmp2/Daniel.Sarmiento/gw_branch/global_control.nml.IN' +local global_template="${HOMEgfs}/parm/ufs/fv3/global_control.nml.IN" atparse < "${global_template}" >> "input.nml" } From c4b8b55f4b1cba763ed09da23a1a807cadf3cca1 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Tue, 21 Jan 2025 20:07:38 +0000 Subject: [PATCH 08/26] Fix single quotes and PERT_CLDS setting Single quotes have been forced on all filenames in the namelist. PERT_CLDS has also been set to .false. unless the DO_SPPT flag is on, then PRET_CLDS is set to .true. --- ush/parsing_namelists_FV3.sh | 82 +++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 33 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 9e57beee52..dca74ec2c5 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -364,12 +364,12 @@ local LGFDLMPRAD=${lgfdlmprad:-".false."} local EFFR_IN=${effr_in:-".false."} local LDIAG_UGWP=${ldiag_ugwp:-".false."} local DO_RRTMGP=${do_RRTMGP:-".false."} -local ACTIVE_GASES=${active_gases:-'h2o_co2_o3_n2o_ch4_o2'} +local ACTIVE_GASES=${active_gases:-"'h2o_co2_o3_n2o_ch4_o2'"} local NGASES=${ngases:-"6"} -local LW_FILE_GAS=${lw_file_gas:-'rrtmgp-data-lw-g128-210809.nc'} -local LW_FILE_CLOUDS=${lw_file_clouds:-'rrtmgp-cloud-optics-coeffs-lw.nc'} -local SW_FILE_GAS=${sw_file_gas:-'rrtmgp-data-sw-g112-210809.nc'} -local SW_FILE_CLOUDS=${sw_file_clouds:-'rrtmgp-cloud-optics-coeffs-sw.nc'} +local LW_FILE_GAS=${lw_file_gas:-"'rrtmgp-data-lw-g128-210809.nc'"} +local LW_FILE_CLOUDS=${lw_file_clouds:-"'rrtmgp-cloud-optics-coeffs-lw.nc'"} +local SW_FILE_GAS=${sw_file_gas:-"'rrtmgp-data-sw-g112-210809.nc'"} +local SW_FILE_CLOUDS=${sw_file_clouds:-"'rrtmgp-cloud-optics-coeffs-sw.nc'"} local RRTMGP_NGPTSSW=${rrtmgp_nGptsSW:-"112"} local RRTMGP_NGPTSLW=${rrtmgp_nGptsLW:-"128"} local RRTMGP_NBANDSLW=${rrtmgp_nBandsLW:-"16"} @@ -398,10 +398,6 @@ 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 -local pert_mp=.false. -local pert_radtend=.false. -local pert_clds=.false. - local IAUFHRS=${IAUFHRS} local IAU_DELTHRS=${IAU_DELTHRS} local IAU_INC_FILES=${IAU_INC_FILES:-"''"} @@ -429,7 +425,11 @@ 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:-".true."} +local PERT_CLDS=${PERT_CLDS:-".false."} + +if [[ ${DO_SPPT} = "YES" ]]; then + local PERT_CLDS=".true." +fi #GWP options if [[ ${knob_ugwp_version} -eq 0 ]]; then @@ -468,7 +468,7 @@ 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'} +local KNOB_UGWP_OROSOLV=${knob_ugwp_orosolv:-\'pss-1986\'} # gfdl_cloud_microphysics options local REIFLAG=${reiflag:-"2"} @@ -476,32 +476,48 @@ local REIFLAG=${reiflag:-"2"} # interpolator_nml options # nam sfc options -local FNACNA=${FNACNA:-} -local FNSNOA=${FNSNOA:-} -local FNVMNC=${FNVMNC:-} -local FNVMXC=${FNVMXC:-} -local FNSLPC=${FNSLPC:-} -local FNABSC=${FNABSC:-} +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:-99999} -local FSMCL3=${FSMCL3:-99999} -local FSMCL4=${FSMCL4:-99999} +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:-99999} -local FAISS=${FAISS:-99999} -local FSNOL=${FSNOL:-99999} -local FSNOS=${FSNOS:-99999} +local FTSFS=${FTSFS:+\'${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:-99999} -local FVETL=${FVETL:-99999} -local FSOTL=${FSOTL:-99999} -local FVMNL=${FvmnL:-99999} -local FVMXL=${FvmxL:-99999} -local FSLPL=${FSLPL:-99999} -local FABSL=${FABSL:-99999} -local FNTSFA=${FNTSFA:-''} +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 From 34b48fef071cc54d94f848d443478c4788f7a38e Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Thu, 20 Feb 2025 17:12:20 +0000 Subject: [PATCH 09/26] Modify link_workflow to try to address CI failures Changes were made to sorc/link_workflow.sh and ush/parsing_namelists_FV3.sh to try and address the CI failures. There were still some discrepancies in the namelists where XR_CNVCLD was being used but was not declared in the template and INCREMENT_FILE_ON_NATIVE_GRID was in the template but the default value might have been incompatible with some of the CI cases. If the CI tests pass, then a more permanent solution should be found and the code will need to be cleaned up before the final merge into the GW repo. --- sorc/link_workflow.sh | 8 +++++++- ush/parsing_namelists_FV3.sh | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index 992c7d6258..d1acb1d6e7 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -192,7 +192,13 @@ 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_OR_COPY} "${HOMEgfs}/sorc/ufs_model.fd/tests/parm/global_control.nml.IN" . +cp "${HOMEgfs}/sorc/ufs_model.fd/tests/parm/global_control.nml.IN" . + +# Correct global_control.nml.IN discrepancies +sed -i "175 a xr_cnvcld = @[XR_CNVCLD]" "global_control.nml.IN" +sed -i "97d" "global_control.nml.IN" + # Link the script from ufs-weather-model that parses the templates cd "${HOMEgfs}/ush" || exit 1 diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index dca74ec2c5..36b72baa5d 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -326,7 +326,7 @@ local LSEASPRAY=${lseaspray:-".true."} local RANDOM_CLDS=${random_clds:-".true."} local TRANS_TRAC=${trans_trac:-".true."} local CNVCLD=${cnvcld:-".true."} -local XR_CNVCLD=${xr_cnvcld:-".true."} +local XR_CNVCLD=${xr_cnvcld:-".false."} local IMFSHALCNV=${imfshalcnv:-"2"} local IMFDEEPCNV=${imfdeepcnv:-"2"} local PROGSIGMA=${progsigma:-".true."} @@ -503,7 +503,7 @@ 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:+\'${FTSFS}\'}${FTSFS:-90} +local FTSFS=${FTSFS:-90} local FAISL=${FAISL:+\'${FAISL}\'}${FAISL:-99999} local FAISS=${FAISS:+\'${FAISS}\'}${FAISS:-99999} local FSNOL=${FSNOL:+\'${FSNOL}\'}${FSNOL:-99999} @@ -562,5 +562,5 @@ local MOM6_RESTART_SETTING=r local MOM6_RESTART_DIR=MOM6_RESTART/ local global_template="${HOMEgfs}/parm/ufs/fv3/global_control.nml.IN" -atparse < "${global_template}" >> "input.nml" -} + +atparse < "${global_template}" >> "input.nml"} From 1f63b654012e30513f26afbd5b947e8cd2607d06 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Thu, 27 Feb 2025 20:25:07 +0000 Subject: [PATCH 10/26] Modify defaults for GEFS CI The default values of the following variables have been changed: XR_CNVCLD has been reverted to the GW default. INCREMENT_FILE_ON_NATIVE_GRID has been changed to .false. all LAND_IAU variables have been added SHUM default has been set to -999 because it was turning on even when do_shum was set to .false. --- sorc/link_workflow.sh | 8 +------- ush/parsing_namelists_FV3.sh | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index d1acb1d6e7..992c7d6258 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -192,13 +192,7 @@ 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" . -cp "${HOMEgfs}/sorc/ufs_model.fd/tests/parm/global_control.nml.IN" . - -# Correct global_control.nml.IN discrepancies -sed -i "175 a xr_cnvcld = @[XR_CNVCLD]" "global_control.nml.IN" -sed -i "97d" "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 diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 36b72baa5d..0909a72593 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -154,7 +154,7 @@ local NO_DYCORE=${no_dycore} local AGRID_VEL_RST=${agrid_vel_rst:-".true."} local READ_INCREMENT=${read_increment} local RES_LATLON_DYNAMICS=${res_latlon_dynamics} -local INCREMENT_FILE_ON_NATIVE_GRID=.true. +local INCREMENT_FILE_ON_NATIVE_GRID=.false. local FILTERED_TERRAIN=${filtered_terrain} local NPZP=${LEVS} #levp @@ -326,7 +326,7 @@ local LSEASPRAY=${lseaspray:-".true."} local RANDOM_CLDS=${random_clds:-".true."} local TRANS_TRAC=${trans_trac:-".true."} local CNVCLD=${cnvcld:-".true."} -local XR_CNVCLD=${xr_cnvcld:-".false."} +local XR_CNVCLD=${xr_cnvcld:-".true."} local IMFSHALCNV=${imfshalcnv:-"2"} local IMFDEEPCNV=${imfdeepcnv:-"2"} local PROGSIGMA=${progsigma:-".true."} @@ -529,7 +529,7 @@ 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:-"0.005"} +local SHUM=${SHUM:-"-999."} local ISEED_SHUM=${ISEED_SHUM:-${ISEED}} local SHUM_TAU=${SHUM_TAU:-"-999."} local SHUM_LSCALE=${SHUM_LSCALE:-"-999."} @@ -561,6 +561,19 @@ local MOM6_OUTPUT_DIR=MOM6_OUTPUT/ local MOM6_RESTART_SETTING=r 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 + local global_template="${HOMEgfs}/parm/ufs/fv3/global_control.nml.IN" +atparse < "${global_template}" >> "input.nml" -atparse < "${global_template}" >> "input.nml"} +} From 5db8feccdc135a70434d088a3506e95a6be0a099 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Wed, 5 Mar 2025 14:03:06 +0000 Subject: [PATCH 11/26] Change remaining FHZER to FHZERO --- parm/config/sfs/yaml/defaults.yaml | 2 +- ush/forecast_predet.sh | 2 +- ush/parsing_namelists_FV3.sh | 4 ++-- ush/parsing_namelists_FV3_nest.sh | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) 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/ush/forecast_predet.sh b/ush/forecast_predet.sh index ba0e3b84a7..5519cd57c2 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -146,7 +146,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 0909a72593..502a8255a5 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -142,7 +142,7 @@ local D_CON=${d_con} local HORD_MT=${hord_mt} local HORD_VT=${hord_xx} local HORD_TM=${hord_xx} -local HORD_DP=-${hord_xx} +local HORD_DP=${hord_dp} local HORD_TR=${hord_tr:-"8"} local ADJUST_DRY_MASS=${adjust_dry_mass:-".true."} local DRY_MASS=${dry_mass:-98320.0} @@ -533,7 +533,7 @@ 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:-"0.2"} +local SPPT=${SPPT:-"-999."} local ISEED_SPPT=${ISEED_SPPT:-${ISEED}} local SPPT_TAU=${SPPT_TAU:-"-999."} local SPPT_LSCALE=${SPPT_LSCALE:-"-999."} 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}" < Date: Fri, 7 Mar 2025 13:24:50 +0000 Subject: [PATCH 12/26] Fix C96mx100_sfs CI case --- ci/cases/yamls/sfs_defaults.yaml | 2 +- ci/cases/yamls/sfs_full.yaml | 2 +- parm/config/gefs/config.efcs | 3 ++- ush/forecast_predet.sh | 2 +- ush/parsing_namelists_FV3.sh | 9 +++++---- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/ci/cases/yamls/sfs_defaults.yaml b/ci/cases/yamls/sfs_defaults.yaml index 777849abb6..c5c2383322 100644 --- a/ci/cases/yamls/sfs_defaults.yaml +++ b/ci/cases/yamls/sfs_defaults.yaml @@ -26,6 +26,6 @@ fcst: TYPE: "hydro" MONO: "mono" reforecast: "YES" - FHZER: 24 + FHZERO: 24 ocn: MOM6_INTERP_ICS: "YES" diff --git a/ci/cases/yamls/sfs_full.yaml b/ci/cases/yamls/sfs_full.yaml index 1312d715fb..69e63b0f45 100644 --- a/ci/cases/yamls/sfs_full.yaml +++ b/ci/cases/yamls/sfs_full.yaml @@ -26,6 +26,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/ush/forecast_predet.sh b/ush/forecast_predet.sh index 5519cd57c2..087a32e0e8 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -146,7 +146,7 @@ FV3_predet(){ if [[ ! -d "${DATArestart}/FV3_RESTART" ]]; then mkdir -p "${DATArestart}/FV3_RESTART"; fi ${NLN} "${DATArestart}/FV3_RESTART" "${DATA}/RESTART" - FHZERO={FHZERO:-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 502a8255a5..ae181519f8 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -405,7 +405,7 @@ local IAU_DRYMASSFIXER=.false. local IAU_FILTER_INCREMENTS=${IAU_FILTER_INCREMENTS:-".false."} # CA options -local DO_CA=.true. +local DO_CA=".true." local CA_GLOBAL=${ca_global:-".false."} local CA_SGS=${ca_sgs:-".true."} local NCA=${nca:-"1"} @@ -427,7 +427,7 @@ local PERT_MP=${PERT_MP:-".false."} local PERT_RADTEND=${PERT_RADTEND:-".false."} local PERT_CLDS=${PERT_CLDS:-".false."} -if [[ ${DO_SPPT} = "YES" ]]; then +if [[ ${DO_SPPT} = ".true." ]]; then local PERT_CLDS=".true." fi @@ -522,7 +522,8 @@ local FNTSFA="'${FNTSFA:-}'" #fv_grid_nml options #nam stochy options -local SKEB=${SKEB:-"-999."} +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."} @@ -558,7 +559,7 @@ 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=r +local MOM6_RESTART_SETTING=${MOM6_RESTART_SETTING:-'n'} local MOM6_RESTART_DIR=MOM6_RESTART/ # Land IAU defaults From 34f45910ba05458f4530c48945aa977f92e4443d Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Mon, 10 Mar 2025 15:53:39 +0000 Subject: [PATCH 13/26] Fix SFS SKEB variable --- parm/config/sfs/config.efcs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 From a820abe713095b500dcb7d6b997c82ebac17a534 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Thu, 13 Mar 2025 18:06:59 +0000 Subject: [PATCH 14/26] Remove outdated CCPP_SUITE case block --- ush/parsing_namelists_FV3.sh | 161 +++++++---------------------------- 1 file changed, 32 insertions(+), 129 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index ae181519f8..1c5838e7c2 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -170,135 +170,38 @@ local USE_UFO=${use_ufo:-".true."} local PRE_RAD=${pre_rad:-".false."} local IMP_PHYSICS=${imp_physics:-"99"} - -case "${CCPP_SUITE:-}" in - "FV3_GFS_v15p2_coupled") - local OZ_PHYS_NEW=.false. #oz_phys - local OZ_PHYS_OLD=.true. #oz_phys_2015 - ;; - "FV3_GSD_v0") - local IOVR=${iovr:-"3"} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".false."} - local TTENDLIM=${ttendlim:-0.005} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local LSOIL_LSM=${lsoil_lsm:-"4"} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} - local USE_CICE_ALB=${use_cice_alb:-".false."} - ;; - FV3_GFS_v16_coupled*) - local IOVR=${iovr:-"3"} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".false."} - local TTENDLIM=${ttendlim:-"0.005"} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} - ;; - FV3_GFS_v16*) - local IOVR=${iovr:-"3"} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".false."} - local TTENDLIM=${ttendlim:-"0.005"} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local LSOIL_LSM=${lsoil_lsm:-"4"} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} - ;; - FV3_GFS_v17*) - local DT_INNER=$(( DELTIM/2 )) - local IOVR=${iovr:-"3"} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".true."} - local TTENDLIM=${ttendlim:-"-999"} - local DT_INNER=${dt_inner:-"${default_dt_inner}"} - local SEDI_SEMI=${sedi_semi:-".true."} - local DECFL=${decfl:-"10"} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local LSOIL_LSM=${lsoil_lsm:-"4"} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local DO_UGWP=${do_ugwp:-".false."} - local DO_TOFD=${do_tofd:-".false."} - local GWD_OPT=${gwd_opt:-"2"} - local DO_UGWP_V0=${do_ugwp_v0:-".false."} - local DO_UGWP_V1=${do_ugwp_v1:-".true."} - local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} - local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} - local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} - local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} - local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} - local DO_GWD_OPT_PSL=${do_gwd_opt_psl:-".false."} - local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} - local USE_CICE_ALB=${use_cice_alb:-".false."} - ;; - FV3_global_nest*) - local DT_INNER=$(( DELTIM/2 )) - local IOVR=${iovr:-"3"} - local LCNORM=${lcnorm:-".false."} - local LTAEROSOL=${ltaerosol:-".false."} - local LRADAR=${lradar:-".true."} - local TTENDLIM=${ttendlim:-"-999"} - local DT_INNER=${dt_inner:-"${default_dt_inner}"} - local SEDI_SEMI=${sedi_semi:-".true."} - local DECFL=${decfl:-"10"} - local OZ_PHYS_NEW=${oz_phys:-".false."} - local OZ_PHYS_OLD=${oz_phys_2015:-".true."} - local LSOIL_LSM=${lsoil_lsm:-"4"} - local DO_MYNNEDMF=${do_mynnedmf:-".false."} - local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} - local ICLOUD_BL=${icloud_bl:-"1"} - local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} - local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} - local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} - local DO_UGWP=${do_ugwp:-".false."} - local DO_TOFD=${do_tofd:-".false."} - local GWD_OPT=${gwd_opt:-"2"} - local DO_UGWP_V0=${do_ugwp_v0:-".false."} - local DO_UGWP_V1=${do_ugwp_v1:-".true."} - local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} - local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} - local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} - local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} - local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} - local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} - local MIN_LAKEICE=${min_lakeice:-"0.15"} - local MIN_SEAICE=${min_seaice:-"0.15"} - local USE_CICE_ALB=${use_cice_alb:-".false."} - ;; - *) - local IOVR=${iovr:-"3"} - ;; -esac +local default_dt_inner=$(( DELTIM/2 )) +local IOVR=${iovr:-"3"} +local LTAEROSOL=${ltaerosol:-".false."} +local LRADAR=${lradar:-".true."} +local TTENDLIM=${ttendlim:-"-999"} +local DT_INNER=${dt_inner:-"${default_dt_inner}"} +local SEDI_SEMI=${sedi_semi:-".true."} +local DECFL=${decfl:-"10"} +local OZ_PHYS_NEW=${oz_phys:-".false."} +local OZ_PHYS_OLD=${oz_phys_2015:-".true."} +local LSOIL_LSM=${lsoil_lsm:-"4"} +local DO_MYNNEDMF=${do_mynnedmf:-".false."} +local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} +local ICLOUD_BL=${icloud_bl:-"1"} +local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} +local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} +local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} +local DO_UGWP=${do_ugwp:-".false."} +local DO_TOFD=${do_tofd:-".false."} +local GWD_OPT=${gwd_opt:-"2"} +local DO_UGWP_V0=${do_ugwp_v0:-".false."} +local DO_UGWP_V1=${do_ugwp_v1:-".true."} +local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} +local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} +local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} +local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} +local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} +local DO_GWD_OPT_PSL=${do_gwd_opt_psl:-".false."} +local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} +local MIN_LAKEICE=${min_lakeice:-"0.15"} +local MIN_SEAICE=${min_seaice:-"0.15"} +local USE_CICE_ALB=${use_cice_alb:-".false."} local PDFCLD=${pdfcld:-".false."} local FHSWR=${FHSWR:-"3600."} From 8d2b50cff0bdd6eb0d46eda77391bf32c089604c Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Mon, 24 Mar 2025 20:10:24 +0000 Subject: [PATCH 15/26] Resolve conflicts P1 of 2 --- ush/parsing_namelists_FV3.sh | 1056 +++++++++++++++++++++------------- 1 file changed, 663 insertions(+), 393 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 1c5838e7c2..8c059f6f97 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -43,7 +43,7 @@ local CHOUR=${current_cycle:8:2} local MOM6_OUTPUT_DIR="./MOM6_OUTPUT" if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then - local current_cycle_p1 + local current_cycle_p1 current_cycle_p1=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${FHOUT_OCN} hours" +%Y%m%d%H) local current_cycle_offset current_cycle_offset=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${OFFSET_START_HOUR} hours" +%Y%m%d%H) @@ -80,404 +80,674 @@ else ${NCP} "${FIELD_TABLE}" field_table fi -# Set variables for global_control.nml template - -local BLOCKSIZE=${blocksize} -local CHKSUM_DEBUG=${chksum_debug} -local DYCORE_ONLY=${dycore_only} -local CCPP_SUITE=${CCPP_SUITE} - -local MAX_OUTPUT_FIELDS=300 - -local DOMAINS_STACK_SIZE=${domains_stack_size:-3000000} -local PRINT_MEMORY_USAGE=${print_memory_usage:-".false."} - -local INPES=${layout_x} -local JNPES=${layout_y} -local IO_LAYOUT=${io_layout} -local NPX=${npx} -local NPY=${npy} -local NTILES=${ntiles} -local NPZ=${npz} -local DZ_MIN=${dz_min:-"6"} -local PSM_BC=${psm_bc:-"0"} -local MAKE_NH=${make_nh} -local FV_DEBUG=${fv_debug:-".false."} -local RANGE_WARN=${range_warn:-".true."} -local N_SPONGE=${n_sponge:-"10"} -local NUDGE_QV=${nudge_qv:-".false."} -local NUDGE_DZ=${nudge_dz:-".false."} -local TAU=${tau:-10.} -local FAST_TAU_W_SEC=${fast_tau_w_sec:-"0.2"} -local RF_CUTOFF=${rf_cutoff:-"7.5e2"} -local D2_BG_K1=${d2_bg_k1:-"0.15"} -local D2_BG_K2=${d2_bg_k2:-"0.02"} -local KORD_TM=${kord_tm:-"-9"} -local KORD_MT=${kord_mt:-"9"} -local KORD_WZ=${kord_wz:-"9"} -local KORD_TR=${kord_tr:-"9"} -local HYDROSTATIC=${hydrostatic} -local PHYS_HYDROSTATIC=${phys_hydrostatic} -local USE_HYDRO_PRESSURE=${use_hydro_pressure} -local UPDATE_FULL_OMEGA=${pass_full_omega_to_physics_in_non_hydrostatic_mode:-".false."} -local K_SPLIT=${k_split} -local N_SPLIT=${n_split} -local NWAT=${nwat:-2} -local NA_INIT=${na_init} -local DNATS=${dnats} -local FV_SG_ADJ=${fv_sg_adj:-"450"} -local NORD=${nord:-3} -local DDDMP=${dddmp:-0.1} -local D4_BG=${d4_bg:-0.15} -local VTDM4=${vtdm4} -local DELT_MAX=${delt_max:-"0.002"} -local DO_VORT_DAMP=${do_vort_damp} -local EXTERNAL_IC=${external_ic} -local EXTERNAL_ETA=${external_eta:-.true.} -local GFS_PHIL=${gfs_phil:-".false."} -local NGGPS_IC=${nggps_ic} -local MOUNTAIN=${mountain} -local NCEP_IC=${ncep_ic} -local D_CON=${d_con} -local HORD_MT=${hord_mt} -local HORD_VT=${hord_xx} -local HORD_TM=${hord_xx} -local HORD_DP=${hord_dp} -local HORD_TR=${hord_tr:-"8"} -local ADJUST_DRY_MASS=${adjust_dry_mass:-".true."} -local DRY_MASS=${dry_mass:-98320.0} -local CONSV_TE=${consv_te} -local DO_SAT_ADJ=${do_sat_adj:-".false."} -local PRINT_FREQ=${print_freq} -local WARM_START=${warm_start} -local NO_DYCORE=${no_dycore} -local AGRID_VEL_RST=${agrid_vel_rst:-".true."} -local READ_INCREMENT=${read_increment} -local RES_LATLON_DYNAMICS=${res_latlon_dynamics} -local INCREMENT_FILE_ON_NATIVE_GRID=.false. - -local FILTERED_TERRAIN=${filtered_terrain} -local NPZP=${LEVS} #levp -local GFS_DWINDS=${gfs_dwinds} - -local FHZERO=${FHZERO:-6} -local H2O_PHYS=${h2o_phys:-".true."} -local LDIAG3D=${ldiag3d:-".false."} -local QDIAG3D=${qdiag3d:-".false."} -local PRINT_DIFF_PGR=${print_diff_pgr:-".false."} -local FHCYC=${FHCYC} -local USE_UFO=${use_ufo:-".true."} -local PRE_RAD=${pre_rad:-".false."} -local IMP_PHYSICS=${imp_physics:-"99"} - -local default_dt_inner=$(( DELTIM/2 )) -local IOVR=${iovr:-"3"} -local LTAEROSOL=${ltaerosol:-".false."} -local LRADAR=${lradar:-".true."} -local TTENDLIM=${ttendlim:-"-999"} -local DT_INNER=${dt_inner:-"${default_dt_inner}"} -local SEDI_SEMI=${sedi_semi:-".true."} -local DECFL=${decfl:-"10"} -local OZ_PHYS_NEW=${oz_phys:-".false."} -local OZ_PHYS_OLD=${oz_phys_2015:-".true."} -local LSOIL_LSM=${lsoil_lsm:-"4"} -local DO_MYNNEDMF=${do_mynnedmf:-".false."} -local DO_MYNNSFCLAY=${do_mynnsfclay:-".false."} -local ICLOUD_BL=${icloud_bl:-"1"} -local BL_MYNN_EDMF=${bl_mynn_edmf:-"1"} -local BL_MYNN_TKEADVECT=${bl_mynn_tkeadvect:-".true."} -local BL_MYNN_EDMF_MOM=${bl_mynn_edmf_mom:-"1"} -local DO_UGWP=${do_ugwp:-".false."} -local DO_TOFD=${do_tofd:-".false."} -local GWD_OPT=${gwd_opt:-"2"} -local DO_UGWP_V0=${do_ugwp_v0:-".false."} -local DO_UGWP_V1=${do_ugwp_v1:-".true."} -local DO_UGWP_V0_OROG_ONLY=${do_ugwp_v0_orog_only:-".false."} -local DO_UGWP_V0_NST_ONLY=${do_ugwp_v0_nst_only:-".false."} -local DO_GSL_DRAG_LS_BL=${do_gsl_drag_ls_bl:-".true."} -local DO_GSL_DRAG_SS=${do_gsl_drag_ss:-".true."} -local DO_GSL_DRAG_TOFD=${do_gsl_drag_tofd:-".true."} -local DO_GWD_OPT_PSL=${do_gwd_opt_psl:-".false."} -local DO_UGWP_V1_OROG_ONLY=${do_ugwp_v1_orog_only:-".false."} -local MIN_LAKEICE=${min_lakeice:-"0.15"} -local MIN_SEAICE=${min_seaice:-"0.15"} -local USE_CICE_ALB=${use_cice_alb:-".false."} - -local PDFCLD=${pdfcld:-".false."} -local FHSWR=${FHSWR:-"3600."} -local FHLWR=${FHLWR:-"3600."} -local IALB=${IALB:-"1"} -local IEMS=${IEMS:-"1"} -local IAER=${IAER} -local ICLIQ_SW=${icliq_sw:-"2"} -local ICO2=${ICO2} -local ISUBC_SW=${isubc_sw:-"2"} -local ISUBC_LW=${isubc_lw:-"2"} -local ISOL=${ISOL:-"2"} -local LWHTR=${lwhtr:-".true."} -local SWHTR=${swhtr:-".true."} -local CNVGWD=${cnvgwd:-".true."} -local SHAL_CNV=${shal_cnv:-".true."} -local CAL_PRE=${cal_pre:-".true."} -local REDRAG=${redrag:-".true."} -local DSPHEAT=${dspheat:-".true."} -local HYBEDMF=${hybedmf:-".false."} -local SATMEDMF=${satmedmf-".true."} -local ISATMEDMF=${isatmedmf-"1"} -local LHEATSTRG=${lheatstrg-".false."} -local LSEASPRAY=${lseaspray:-".true."} -local RANDOM_CLDS=${random_clds:-".true."} -local TRANS_TRAC=${trans_trac:-".true."} -local CNVCLD=${cnvcld:-".true."} -local XR_CNVCLD=${xr_cnvcld:-".true."} -local IMFSHALCNV=${imfshalcnv:-"2"} -local IMFDEEPCNV=${imfdeepcnv:-"2"} -local PROGSIGMA=${progsigma:-".true."} -local BETASCU=${betascu:-"8.0"} -local BETAMCU=${betamcu:-"1.0"} -local BETADCU=${betadcu:-"2.0"} -local RAS=${ras:-".false."} -local CDMBWD=${cdmbgwd:-"3.5,0.25"} -local PSL_GWD_DX_FACTOR=${psl_gwd_dx_factor:-"6.0"} -local PRSLRD0=${prslrd0:-"0."} -local IVEGSRC=${ivegsrc:-"1"} -local ISOT=${isot:-"1"} -local LSOIL=${lsoil:-"4"} -local LSM=${lsm:-"2"} -local IOPT_DVEG=${iopt_dveg:-"1"} -local IOPT_CRS=${iopt_crs:-"1"} -local IOPT_BTR=${iopt_btr:-"1"} -local IOPT_RUN=${iopt_run:-"1"} -local IOPT_SFC=${iopt_sfc:-"1"} -local IOPT_TRS=${iopt_trs:-"2"} -local IOPT_DIAG=${iopt_diag:-"2"} -local IOPT_FRZ=${iopt_frz:-"1"} -local IOPT_INF=${iopt_inf:-"1"} -local IOPT_RAD=${iopt_rad:-"1"} -local IOPT_ALB=${iopt_alb:-"2"} -local IOPT_SNF=${iopt_snf:-"4"} -local IOPT_TBOT=${iopt_tbot:-"2"} -local IOPT_STC=${iopt_stc:-"1"} -local DEBUG=${gfs_phys_debug:-".false."} -local NSTF_NAME=${nstf_name} -local NST_ANL=${nst_anl} -local PSAUTCO=${psautco:-"0.0008,0.0005"} -local PRAUTCO=${prautco:-"0.00015,0.00015"} -local LGFDLMPRAD=${lgfdlmprad:-".false."} -local EFFR_IN=${effr_in:-".false."} -local LDIAG_UGWP=${ldiag_ugwp:-".false."} -local DO_RRTMGP=${do_RRTMGP:-".false."} -local ACTIVE_GASES=${active_gases:-"'h2o_co2_o3_n2o_ch4_o2'"} -local NGASES=${ngases:-"6"} -local LW_FILE_GAS=${lw_file_gas:-"'rrtmgp-data-lw-g128-210809.nc'"} -local LW_FILE_CLOUDS=${lw_file_clouds:-"'rrtmgp-cloud-optics-coeffs-lw.nc'"} -local SW_FILE_GAS=${sw_file_gas:-"'rrtmgp-data-sw-g112-210809.nc'"} -local SW_FILE_CLOUDS=${sw_file_clouds:-"'rrtmgp-cloud-optics-coeffs-sw.nc'"} -local RRTMGP_NGPTSSW=${rrtmgp_nGptsSW:-"112"} -local RRTMGP_NGPTSLW=${rrtmgp_nGptsLW:-"128"} -local RRTMGP_NBANDSLW=${rrtmgp_nBandsLW:-"16"} -local RRTMGP_NBANDSSW=${rrtmgp_nBandsSW:-"14"} -local DOGP_CLDOPTICS_LUT=${doGP_cldoptics_LUT:-".false."} -local DOGP_LWSCAT=${doGP_lwscat:-".false."} -local DOGP_SGS_CNV=.true. - -local DO_SPPT=${do_sppt:-".false."} -local DO_SHUM=${do_shum:-".false."} -local DO_SKEB=${do_skeb:-".false."} -local FRAC_GRID=${FRAC_GRID:-".true."} -local CPLCHM=${cplchm:-".false."} -local CPLFLX=${cplflx:-".false."} -local CPLICE=${cplice:-".false."} -local CPLWAV=${cplwav:-".false."} -local CPLWAV2ATM=${cplwav2atm:-".false."} -local USE_MED_FLUX=${use_med_flux:-".false."} -local CPLLND=${cpllnd:-".false."} -local CPLLND2ATM=${cpllnd2atm:-".false."} - -# CPL CHM options +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 +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 fi -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." +if [[ "${DO_LAND_PERT:-NO}" == "YES" ]]; then + cat >> input.nml << EOF + lndp_type = ${lndp_type:-2} + n_var_lndp = ${n_var_lndp:-0} +EOF fi - -#GWP options + +# Close &gfs_physics_nml section +cat >> input.nml << EOF +/ +EOF + if [[ ${knob_ugwp_version} -eq 0 ]]; then - local HIDE_UGWPV0=" " - local HIDE_UGWPV1="!" -elif [[ ${knob_ugwp_version} -eq 1 ]]; then - local HIDE_UGWPV0="!" - local HIDE_UGWPV1=" " + 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 +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 + else - local HIDE_UGWPV0="!" - local HIDE_UGWPV1="!" + + cat >> input.nml << EOF +&nam_stochy +/ +&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 - -local global_template="${HOMEgfs}/parm/ufs/fv3/global_control.nml.IN" -atparse < "${global_template}" >> "input.nml" +# Echo out formatted "input.nml" +echo "====================================" +echo "FV3_namelists(): 'input.nml'" +cat input.nml +echo "====================================" } From 60b4294623f241b68eafb6819d49adfd72f56e03 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Mon, 24 Mar 2025 20:14:23 +0000 Subject: [PATCH 16/26] Resolve conflicts P2 of 2 --- ush/parsing_namelists_FV3.sh | 1056 +++++++++++++--------------------- 1 file changed, 393 insertions(+), 663 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 8c059f6f97..1c5838e7c2 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -43,7 +43,7 @@ local CHOUR=${current_cycle:8:2} local MOM6_OUTPUT_DIR="./MOM6_OUTPUT" if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then - local current_cycle_p1 + local current_cycle_p1 current_cycle_p1=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${FHOUT_OCN} hours" +%Y%m%d%H) local current_cycle_offset current_cycle_offset=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${OFFSET_START_HOUR} hours" +%Y%m%d%H) @@ -80,674 +80,404 @@ 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 -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 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_LAND_PERT:-NO}" == "YES" ]]; then - cat >> input.nml << EOF - lndp_type = ${lndp_type:-2} - n_var_lndp = ${n_var_lndp:-0} -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 - -# 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 -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 - + local HIDE_UGWPV0=" " + local HIDE_UGWPV1="!" +elif [[ ${knob_ugwp_version} -eq 1 ]]; then + local HIDE_UGWPV0="!" + local HIDE_UGWPV1=" " else - - cat >> input.nml << EOF -&nam_stochy -/ -&nam_sfcperts -/ -EOF - + local HIDE_UGWPV0="!" + local HIDE_UGWPV1="!" 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 + +local global_template="${HOMEgfs}/parm/ufs/fv3/global_control.nml.IN" +atparse < "${global_template}" >> "input.nml" -# Echo out formatted "input.nml" -echo "====================================" -echo "FV3_namelists(): 'input.nml'" -cat input.nml -echo "====================================" } From 874a0d9738a38436791de0849d2ff87eaee2a8b3 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Fri, 25 Apr 2025 19:32:51 +0000 Subject: [PATCH 17/26] Resolve conflicts 1 of 2 --- ci/cases/yamls/sfs_defaults.yaml | 3 +-- ci/cases/yamls/sfs_full.yaml | 3 +-- parm/config/gefs/config.fcst | 8 ++++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/ci/cases/yamls/sfs_defaults.yaml b/ci/cases/yamls/sfs_defaults.yaml index c5c2383322..2842b8e73f 100644 --- a/ci/cases/yamls/sfs_defaults.yaml +++ b/ci/cases/yamls/sfs_defaults.yaml @@ -21,11 +21,10 @@ base: USE_ATM_ENS_PERTURB_FILES: "YES" HPSSARCH: "NO" LOCALARCH: "NO" - ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }} fcst: TYPE: "hydro" MONO: "mono" reforecast: "YES" - FHZERO: 24 + FHZER: 24 ocn: MOM6_INTERP_ICS: "YES" diff --git a/ci/cases/yamls/sfs_full.yaml b/ci/cases/yamls/sfs_full.yaml index 69e63b0f45..1c8ef604a1 100644 --- a/ci/cases/yamls/sfs_full.yaml +++ b/ci/cases/yamls/sfs_full.yaml @@ -21,11 +21,10 @@ base: USE_ATM_ENS_PERTURB_FILES: "YES" HPSSARCH: "NO" LOCALARCH: "NO" - ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }} fcst: TYPE: "hydro" MONO: "mono" reforecast: "YES" - FHZERO: 24 + FHZER: 24 ocn: MOM6_INTERP_ICS: "YES" diff --git a/parm/config/gefs/config.fcst b/parm/config/gefs/config.fcst index b5e631d027..10f9006932 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -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 FHZERO=@FHZERO@ +export FHZER="{{ FHZER }}" # Get task specific resources source "${EXPDIR}/config.resources" fcst @@ -63,8 +63,8 @@ export FCSTEXEC="${NET}_model.x" ####################################################################### # Model configuration -export TYPE=@TYPE@ -export MONO=@MONO@ +export TYPE="{{ TYPE }}" +export MONO="{{ MONO }}" # Use stratosphere h2o physics export h2o_phys=".true." @@ -276,7 +276,7 @@ else export io_layout="1,1" fi -export reforecast=@reforecast@ +export reforecast="{{ reforecast }}" # Remember config.efcs will over-ride these values for ensemble forecasts # if these variables are re-defined there. # Otherwise, the ensemble forecast will inherit from config.fcst From aee56ad6ba807411a9a95c892ed7603cbb9a378a Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Fri, 25 Apr 2025 19:39:52 +0000 Subject: [PATCH 18/26] Resolve conflicts 2 of 2 --- ci/cases/yamls/sfs_defaults.yaml | 1 + ci/cases/yamls/sfs_full.yaml | 1 + parm/config/gefs/config.efcs | 3 +-- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ci/cases/yamls/sfs_defaults.yaml b/ci/cases/yamls/sfs_defaults.yaml index 2842b8e73f..777849abb6 100644 --- a/ci/cases/yamls/sfs_defaults.yaml +++ b/ci/cases/yamls/sfs_defaults.yaml @@ -21,6 +21,7 @@ base: USE_ATM_ENS_PERTURB_FILES: "YES" HPSSARCH: "NO" LOCALARCH: "NO" + ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }} fcst: TYPE: "hydro" MONO: "mono" diff --git a/ci/cases/yamls/sfs_full.yaml b/ci/cases/yamls/sfs_full.yaml index 1c8ef604a1..1312d715fb 100644 --- a/ci/cases/yamls/sfs_full.yaml +++ b/ci/cases/yamls/sfs_full.yaml @@ -21,6 +21,7 @@ base: USE_ATM_ENS_PERTURB_FILES: "YES" HPSSARCH: "NO" LOCALARCH: "NO" + ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }} fcst: TYPE: "hydro" MONO: "mono" diff --git a/parm/config/gefs/config.efcs b/parm/config/gefs/config.efcs index c02bdf1f01..86d4a50a22 100644 --- a/parm/config/gefs/config.efcs +++ b/parm/config/gefs/config.efcs @@ -37,11 +37,10 @@ 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 From 44e0820b2d2842070a2e41751e84667b9a1670da Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Fri, 25 Apr 2025 19:43:39 +0000 Subject: [PATCH 19/26] Revert efcs / correct fcst files --- parm/config/gefs/config.efcs | 3 ++- parm/config/gefs/config.fcst | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) 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 b/parm/config/gefs/config.fcst index 10f9006932..fd5494eecb 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -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 FHZER=@FHZER@ # Get task specific resources source "${EXPDIR}/config.resources" fcst @@ -63,8 +63,8 @@ export FCSTEXEC="${NET}_model.x" ####################################################################### # Model configuration -export TYPE="{{ TYPE }}" -export MONO="{{ MONO }}" +export TYPE=@TYPE@ +export MONO=@MONO@ # Use stratosphere h2o physics export h2o_phys=".true." @@ -276,7 +276,7 @@ else export io_layout="1,1" fi -export reforecast="{{ reforecast }}" +export reforecast=@reforecast@ # Remember config.efcs will over-ride these values for ensemble forecasts # if these variables are re-defined there. # Otherwise, the ensemble forecast will inherit from config.fcst From 5a13a2580ca70aa2bb3b6a79230cde6dc32239dd Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Fri, 25 Apr 2025 19:54:59 +0000 Subject: [PATCH 20/26] Add FHZERO changes back --- dev/ci/cases/yamls/sfs_defaults.yaml | 2 +- dev/ci/cases/yamls/sfs_full.yaml | 2 +- parm/config/gefs/config.fcst.j2 | 2 +- parm/config/sfs/config.fcst.j2 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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.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/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 From bde204f8564983275e405329508f72dd444f1b4e Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Mon, 28 Apr 2025 15:10:10 +0000 Subject: [PATCH 21/26] Final parsing_namelist_FV3.sh changes --- ush/parsing_namelists_FV3.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 1c5838e7c2..a50e80e226 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -154,6 +154,7 @@ local NO_DYCORE=${no_dycore} local AGRID_VEL_RST=${agrid_vel_rst:-".true."} local READ_INCREMENT=${read_increment} local RES_LATLON_DYNAMICS=${res_latlon_dynamics} +local ATM_IGNORE_RST_CKSUM=.false. local INCREMENT_FILE_ON_NATIVE_GRID=.false. local FILTERED_TERRAIN=${filtered_terrain} @@ -333,7 +334,13 @@ local PERT_CLDS=${PERT_CLDS:-".false."} if [[ ${DO_SPPT} = ".true." ]]; then local PERT_CLDS=".true." fi - + +if [[ "${DOIAU}" = "YES" ]]; then + local HIDE_AIAU=" " +else + local HIDE_AIAU="!" +fi + #GWP options if [[ ${knob_ugwp_version} -eq 0 ]]; then local HIDE_UGWPV0=" " @@ -345,6 +352,7 @@ else local HIDE_UGWPV0="!" local HIDE_UGWPV1="!" fi + # Common GWP options local KNOB_UGWP_SOLVER=${knob_ugwp_solver:-2} local KNOB_UGWP_SOURCE=${knob_ugwp_source:-1,1,0,0} @@ -466,6 +474,13 @@ local MOM6_RESTART_SETTING=${MOM6_RESTART_SETTING:-'n'} local MOM6_RESTART_DIR=MOM6_RESTART/ # Land IAU defaults +local DO_LANDIAU=${do_landiau:".false."} +if [[ "${DO_LANDIAU}" = ".true." ]]; then + local HIDE_LIAU=" " +else + local HIDE_LIAU="!" +fi + local DO_LAND_IAU=.false. local LAND_IAU_FHRS=3,6,9 local LAND_IAU_DELHRS=6 From 8c55b1fcc0ce01e71487621be53660a6eac161f4 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Mon, 28 Apr 2025 22:23:32 +0000 Subject: [PATCH 22/26] Add increment_file and fix typos --- ush/parsing_namelists_FV3.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index a50e80e226..4b2bf96c77 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -155,7 +155,7 @@ local AGRID_VEL_RST=${agrid_vel_rst:-".true."} local READ_INCREMENT=${read_increment} local RES_LATLON_DYNAMICS=${res_latlon_dynamics} local ATM_IGNORE_RST_CKSUM=.false. -local INCREMENT_FILE_ON_NATIVE_GRID=.false. +local INCREMENT_FILE_ON_NATIVE_GRID=${increment_file_on_native_grid:-.false.} local FILTERED_TERRAIN=${filtered_terrain} local NPZP=${LEVS} #levp @@ -223,9 +223,9 @@ local CAL_PRE=${cal_pre:-".true."} local REDRAG=${redrag:-".true."} local DSPHEAT=${dspheat:-".true."} local HYBEDMF=${hybedmf:-".false."} -local SATMEDMF=${satmedmf-".true."} -local ISATMEDMF=${isatmedmf-"1"} -local LHEATSTRG=${lheatstrg-".false."} +local SATMEDMF=${satmedmf:-".true."} +local ISATMEDMF=${isatmedmf:-"1"} +local LHEATSTRG=${lheatstrg:-".false."} local LSEASPRAY=${lseaspray:-".true."} local RANDOM_CLDS=${random_clds:-".true."} local TRANS_TRAC=${trans_trac:-".true."} From 6c13abe32ce00928f1e11c09515697f9c60ffe62 Mon Sep 17 00:00:00 2001 From: dpsarmie Date: Tue, 29 Apr 2025 13:04:52 +0000 Subject: [PATCH 23/26] Rework land IAU check --- ush/parsing_namelists_FV3.sh | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 4b2bf96c77..c0d67011cd 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -474,12 +474,6 @@ local MOM6_RESTART_SETTING=${MOM6_RESTART_SETTING:-'n'} local MOM6_RESTART_DIR=MOM6_RESTART/ # Land IAU defaults -local DO_LANDIAU=${do_landiau:".false."} -if [[ "${DO_LANDIAU}" = ".true." ]]; then - local HIDE_LIAU=" " -else - local HIDE_LIAU="!" -fi local DO_LAND_IAU=.false. local LAND_IAU_FHRS=3,6,9 @@ -492,6 +486,14 @@ 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 + local HIDE_LIAU="!" +fi + local global_template="${HOMEgfs}/parm/ufs/fv3/global_control.nml.IN" atparse < "${global_template}" >> "input.nml" From 29cfbc208ffe6543e4856265977274003282f758 Mon Sep 17 00:00:00 2001 From: David Huber Date: Thu, 1 May 2025 18:21:05 +0000 Subject: [PATCH 24/26] Delete whitespace --- ush/parsing_namelists_FV3.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index c0d67011cd..0df2d49b3b 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -43,7 +43,7 @@ local CHOUR=${current_cycle:8:2} local MOM6_OUTPUT_DIR="./MOM6_OUTPUT" if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then - local current_cycle_p1 + local current_cycle_p1 current_cycle_p1=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${FHOUT_OCN} hours" +%Y%m%d%H) local current_cycle_offset current_cycle_offset=$(date --utc -d "${current_cycle:0:8} ${current_cycle:8:2} + ${OFFSET_START_HOUR} hours" +%Y%m%d%H) From 056158efceb1b71e64d7b4ef02025f0e10e13914 Mon Sep 17 00:00:00 2001 From: David Huber Date: Thu, 1 May 2025 18:29:04 +0000 Subject: [PATCH 25/26] Set C48 deltim to 900 to align with skebint requirement --- parm/config/gfs/config.ufs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 11e81d8d60..245089777c 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_y=1 + export layout_x=2 + export layout_y=2 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 From 2dbb0b6f42e54e86dd631515099edc58c7540b73 Mon Sep 17 00:00:00 2001 From: David Huber Date: Thu, 1 May 2025 18:32:36 +0000 Subject: [PATCH 26/26] Set deltim to 900 and increase layout for C48 --- parm/config/gefs/config.ufs | 7 +++++-- parm/config/gfs/config.ufs | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) 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/gfs/config.ufs b/parm/config/gfs/config.ufs index 245089777c..245f2a5753 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -88,7 +88,7 @@ fi case "${fv3_res}" in "C48") export layout_x=2 - export layout_y=2 + export layout_y=1 export nthreads_fv3=1 export nthreads_ufs=1 export WRITE_GROUP=1