diff --git a/env/WCOSS2.env b/env/WCOSS2.env index ebb55a4077..4533629edc 100755 --- a/env/WCOSS2.env +++ b/env/WCOSS2.env @@ -173,14 +173,11 @@ elif [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then # https://github.com/ufs-community/ufs-weather-model/blob/develop/tests/fv3_conf/fv3_qsub.IN_wcoss2 export FI_OFI_RXM_RX_SIZE=40000 export FI_OFI_RXM_TX_SIZE=40000 - if [[ "${step}" = "fcst" ]]; then + if [[ "${step}" = "fcst" ]] || [[ "${step}" = "efcs" ]]; then export OMP_PLACES=cores export OMP_STACKSIZE=2048M export MPICH_MPIIO_HINTS="*:romio_cb_write=disable" export FI_OFI_RXM_SAR_LIMIT=3145728 - elif [[ "${step}" = "efcs" ]]; then - export MPICH_MPIIO_HINTS="*:romio_cb_write=disable" - export FI_OFI_RXM_SAR_LIMIT=3145728 fi elif [[ "${step}" = "upp" ]]; then diff --git a/parm/config/gefs/config.base b/parm/config/gefs/config.base index 7ec3993f5f..07664f15ff 100644 --- a/parm/config/gefs/config.base +++ b/parm/config/gefs/config.base @@ -262,7 +262,7 @@ export MEMDIR="mem${ENSMEM}" # initialize ocean ensemble members with perturbations # if true, only occurs for members greater than zero -export USE_OCN_PERTURB_FILES=@STAGE_OCN_PERTURB_FILES@ +export USE_OCN_PERTURB_FILES=@USE_OCN_PERTURB_FILES@ export DOIAU="NO" # While we are not doing IAU, we may want to warm start w/ IAU in the future # Check if cycle is cold starting diff --git a/parm/config/gefs/config.efcs b/parm/config/gefs/config.efcs index e57584be17..ad90fa864c 100644 --- a/parm/config/gefs/config.efcs +++ b/parm/config/gefs/config.efcs @@ -38,16 +38,12 @@ if [[ "${RUN}" == "enkfgfs" ]]; then export FHMAX=${FHMAX_ENKF_GFS:-${FHMAX}} fi -# Use serial I/O for ensemble (lustre?) -export OUTPUT_FILETYPE_ATM="netcdf" -export OUTPUT_FILETYPE_SFC="netcdf" - # Stochastic physics parameters (only for ensemble forecasts) export DO_SKEB="YES" -export SKEB=0.3 -export SKEB_TAU=21600. -export SKEB_LSCALE=250000. -export SKEBNORM=0 +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 export SKEB_NPASS=30 export SKEB_VDOF=5 export DO_SHUM="YES" @@ -55,11 +51,12 @@ export SHUM=0.005 export SHUM_TAU=21600. export SHUM_LSCALE=500000. export DO_SPPT="YES" -export SPPT=0.5 -export SPPT_TAU=21600. -export SPPT_LSCALE=500000. +export SPPT="0.56,0.28,0.14,0.056,0.028" +export SPPT_TAU="2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7" +export SPPT_LSCALE="500.E3,1000.E3,2000.E3,2000.E3,2000.E3" export SPPT_LOGIT=".true." export SPPT_SFCLIMIT=".true." +export DO_CA="YES" # OCN options export DO_OCN_SPPT="YES" export OCNSPPT="0.8,0.4,0.2,0.08,0.04" diff --git a/parm/config/gefs/config.fcst b/parm/config/gefs/config.fcst index c3f41c5e7e..5c592556c8 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -105,9 +105,6 @@ if (( gwd_opt == 2 )); then export do_ugwp_v1_orog_only=".false." launch_level=$(echo "${LEVS}/2.35" |bc) export launch_level - if [[ ${do_gsl_drag_ls_bl} == ".true." ]]; then - export cdmbgwd=${cdmbgwd_gsl} - fi fi # Sponge layer settings @@ -137,7 +134,11 @@ tbp="" if [[ "${progsigma}" == ".true." ]]; then tbp="_progsigma" ; fi # Radiation options -export IAER=1011 ; #spectral band mapping method for aerosol optical properties +if [[ "${DO_AERO}" == "YES" ]]; then + export IAER=2011 # spectral band mapping method for aerosol optical properties +else + export IAER=1011 +fi export iovr_lw=3 ; #de-correlation length cloud overlap method (Barker, 2008) export iovr_sw=3 ; #de-correlation length cloud overlap method (Barker, 2008) export iovr=3 ; #de-correlation length cloud overlap method (Barker, 2008) diff --git a/parm/config/gefs/yaml/defaults.yaml b/parm/config/gefs/yaml/defaults.yaml index 5d5fe5963d..d252e0d1b2 100644 --- a/parm/config/gefs/yaml/defaults.yaml +++ b/parm/config/gefs/yaml/defaults.yaml @@ -6,7 +6,5 @@ base: DO_MERGENSST: "NO" KEEPDATA: "NO" FHMAX_GFS: 120 - -stage_ic: USE_OCN_PERTURB_FILES: "false" diff --git a/parm/config/gfs/config.fcst b/parm/config/gfs/config.fcst index a3e67f8cf9..5f8be6210d 100644 --- a/parm/config/gfs/config.fcst +++ b/parm/config/gfs/config.fcst @@ -117,9 +117,6 @@ if (( gwd_opt == 2 )); then export do_ugwp_v1_orog_only=".false." launch_level=$(echo "${LEVS}/2.35" |bc) export launch_level - if [[ ${do_gsl_drag_ls_bl} == ".true." ]]; then - export cdmbgwd=${cdmbgwd_gsl} - fi fi # Sponge layer settings @@ -149,7 +146,11 @@ tbp="" if [[ "${progsigma}" == ".true." ]]; then tbp="_progsigma" ; fi # Radiation options -export IAER=1011 ; #spectral band mapping method for aerosol optical properties +if [[ "${DO_AERO}" == "YES" ]]; then + export IAER=2011 # spectral band mapping method for aerosol optical properties +else + export IAER=1011 +fi export iovr_lw=3 ; #de-correlation length cloud overlap method (Barker, 2008) export iovr_sw=3 ; #de-correlation length cloud overlap method (Barker, 2008) export iovr=3 ; #de-correlation length cloud overlap method (Barker, 2008) diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index d112271d0c..23482832e4 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -242,12 +242,13 @@ EOF MM=$(printf %02d "${month}") ${NLN} "${FIXgfs}/aer/merra2.aerclim.2003-2014.m${MM}.nc" "aeroclim.m${MM}.nc" done - ${NLN} "${FIXgfs}/lut/optics_BC.v1_3.dat" "${DATA}/optics_BC.dat" - ${NLN} "${FIXgfs}/lut/optics_OC.v1_3.dat" "${DATA}/optics_OC.dat" - ${NLN} "${FIXgfs}/lut/optics_DU.v15_3.dat" "${DATA}/optics_DU.dat" - ${NLN} "${FIXgfs}/lut/optics_SS.v3_3.dat" "${DATA}/optics_SS.dat" - ${NLN} "${FIXgfs}/lut/optics_SU.v1_3.dat" "${DATA}/optics_SU.dat" fi + + ${NLN} "${FIXgfs}/lut/optics_BC.v1_3.dat" "${DATA}/optics_BC.dat" + ${NLN} "${FIXgfs}/lut/optics_OC.v1_3.dat" "${DATA}/optics_OC.dat" + ${NLN} "${FIXgfs}/lut/optics_DU.v15_3.dat" "${DATA}/optics_DU.dat" + ${NLN} "${FIXgfs}/lut/optics_SS.v3_3.dat" "${DATA}/optics_SS.dat" + ${NLN} "${FIXgfs}/lut/optics_SU.v1_3.dat" "${DATA}/optics_SU.dat" ${NLN} "${FIXgfs}/am/global_co2historicaldata_glob.txt" "${DATA}/co2historicaldata_glob.txt" ${NLN} "${FIXgfs}/am/co2monthlycyc.txt" "${DATA}/co2monthlycyc.txt" @@ -439,26 +440,26 @@ EOF fi # Stochastic Physics Options - if [[ ${SET_STP_SEED:-"YES"} = "YES" ]]; then - ISEED_SKEB=$((current_cycle*1000 + MEMBER*10 + 1)) - ISEED_SHUM=$((current_cycle*1000 + MEMBER*10 + 2)) - ISEED_SPPT=$((current_cycle*1000 + MEMBER*10 + 3)) - ISEED_CA=$(( (current_cycle*1000 + MEMBER*10 + 4) % 2147483647 )) - ISEED_LNDP=$(( (current_cycle*1000 + MEMBER*10 + 5) % 2147483647 )) + if [[ ${DO_SPPT:-"NO"} = "YES" ]]; then + do_sppt=".true." + ISEED_SPPT=$((current_cycle*10000 + ${MEMBER#0}*100 + 3)),$((current_cycle*10000 + ${MEMBER#0}*100 + 4)),$((current_cycle*10000 + ${MEMBER#0}*100 + 5)),$((current_cycle*10000 + ${MEMBER#0}*100 + 6)),$((current_cycle*10000 + ${MEMBER#0}*100 + 7)) else ISEED=${ISEED:-0} fi + if (( MEMBER > 0 )) && [[ ${DO_CA:-"NO"} = "YES" ]]; then + ISEED_CA=$(( (current_cycle*10000 + ${MEMBER#0}*100 + 18) % 2147483647 )) + fi if [[ ${DO_SKEB} = "YES" ]]; then do_skeb=".true." - fi - if [[ ${DO_SPPT} = "YES" ]]; then - do_sppt=".true." + ISEED_SKEB=$((current_cycle*10000 + ${MEMBER#0}*100 + 1)) fi if [[ ${DO_SHUM} = "YES" ]]; then do_shum=".true." + ISEED_SHUM=$((current_cycle*1000 + MEMBER*10 + 2)) fi if [[ ${DO_LAND_PERT} = "YES" ]]; then lndp_type=${lndp_type:-2} + ISEED_LNDP=$(( (current_cycle*1000 + MEMBER*10 + 5) % 2147483647 )) LNDP_TAU=${LNDP_TAU:-21600} LNDP_SCALE=${LNDP_SCALE:-500000} ISEED_LNDP=${ISEED_LNDP:-${ISEED}} @@ -708,7 +709,6 @@ MOM6_postdet() { if (( MEMBER > 0 )) && [[ "${ODA_INCUPD:-False}" == "True" ]]; then ${NLN} "${COM_OCEAN_RESTART_PREV}/${sPDY}.${scyc}0000.mom6_increment.nc" "${DATA}/INPUT/mom6_increment.nc" fi - # Copy MOM6 fixed files ${NCP} "${FIXgfs}/mom6/${OCNRES}/"* "${DATA}/INPUT/" # TODO: These need to be explicit diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index ac18b06e71..1cc1c7cff1 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -19,6 +19,11 @@ DIAG_TABLE_APPEND=${DIAG_TABLE_APPEND:-${PARMgfs}/ufs/fv3/diag_table_aod} DATA_TABLE=${DATA_TABLE:-${PARMgfs}/ufs/MOM6_data_table.IN} FIELD_TABLE=${FIELD_TABLE:-${PARMgfs}/ufs/fv3/field_table} +# set cdmbgwd +if (( gwd_opt == 2 )) && [[ ${do_gsl_drag_ls_bl} == ".true." ]]; then + cdmbgwd=${cdmbgwd_gsl} +fi + # ensure non-prognostic tracers are set dnats=${dnats:-0} @@ -393,6 +398,14 @@ cat >> input.nml <> input.nml <> input.nml << EOF @@ -606,7 +619,7 @@ EOF skeb_tau = ${SKEB_TAU:-"-999."} skeb_lscale = ${SKEB_LSCALE:-"-999."} skebnorm = ${SKEBNORM:-"1"} - skeb_npass = ${SKEB_nPASS:-"30"} + skeb_npass = ${SKEB_NPASS:-"30"} skeb_vdof = ${SKEB_VDOF:-"5"} EOF fi @@ -629,6 +642,25 @@ EOF 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 <