diff --git a/scripts/exregional_make_ics.sh b/scripts/exregional_make_ics.sh index e18455590..7a991bd9b 100755 --- a/scripts/exregional_make_ics.sh +++ b/scripts/exregional_make_ics.sh @@ -171,6 +171,7 @@ case "${CCPP_PHYS_SUITE}" in elif [ "${EXTRN_MDL_NAME_ICS}" = "NAM" ] || \ [ "${EXTRN_MDL_NAME_ICS}" = "FV3GFS" ] || \ [ "${EXTRN_MDL_NAME_ICS}" = "GEFS" ] || \ + [ "${EXTRN_MDL_NAME_ICS}" = "GDASENKF" ] || \ [ "${EXTRN_MDL_NAME_ICS}" = "GSMGFS" ]; then varmap_file="GFSphys_var_map.txt" fi @@ -429,6 +430,22 @@ case "${EXTRN_MDL_NAME_ICS}" in tg3_from_soil=True ;; +"GDASENKF") + tracers_input="[\"spfh\",\"clwmr\",\"o3mr\",\"icmr\",\"rwmr\",\"snmr\",\"grle\"]" + tracers="[\"sphum\",\"liq_wat\",\"o3mr\",\"ice_wat\",\"rainwat\",\"snowwat\",\"graupel\"]" + external_model="GFS" + input_type="gaussian_netcdf" + convert_nst=False + fn_atm_nemsio="${EXTRN_MDL_FNS[0]}" + fn_sfc_nemsio="${EXTRN_MDL_FNS[1]}" + vgtyp_from_climo=True + sotyp_from_climo=True + vgfrc_from_climo=True + minmax_vgfrc_from_climo=True + lai_from_climo=True + tg3_from_soil=True + ;; + "GEFS") external_model="GFS" fn_grib2="${EXTRN_MDL_FNS[0]}" diff --git a/scripts/exregional_make_lbcs.sh b/scripts/exregional_make_lbcs.sh index 711263466..8a71cca66 100755 --- a/scripts/exregional_make_lbcs.sh +++ b/scripts/exregional_make_lbcs.sh @@ -170,6 +170,7 @@ case "${CCPP_PHYS_SUITE}" in elif [ "${EXTRN_MDL_NAME_LBCS}" = "NAM" ] || \ [ "${EXTRN_MDL_NAME_LBCS}" = "FV3GFS" ] || \ [ "${EXTRN_MDL_NAME_LBCS}" = "GEFS" ] || \ + [ "${EXTRN_MDL_NAME_LBCS}" = "GDASENKF" ] || \ [ "${EXTRN_MDL_NAME_LBCS}" = "GSMGFS" ]; then varmap_file="GFSphys_var_map.txt" fi @@ -333,6 +334,15 @@ case "${EXTRN_MDL_NAME_LBCS}" in fi ;; +"GDASENKF") + tracers_input="[\"spfh\",\"clwmr\",\"o3mr\",\"icmr\",\"rwmr\",\"snmr\",\"grle\"]" + tracers="[\"sphum\",\"liq_wat\",\"o3mr\",\"ice_wat\",\"rainwat\",\"snowwat\",\"graupel\"]" + external_model="GFS" + input_type="gaussian_netcdf" + fn_atm_nemsio="${EXTRN_MDL_FNS[0]}" + fn_sfc_nemsio="${EXTRN_MDL_FNS[1]}" + ;; + "GEFS") external_model="GFS" fn_grib2="${EXTRN_MDL_FNS[0]}" @@ -412,6 +422,10 @@ for (( i=0; i<${num_fhrs}; i++ )); do fn_atm_nemsio="${EXTRN_MDL_FNS[$i]}" fi ;; + "GDASENKF") + fn_atm_nemsio="${EXTRN_MDL_FNS[0][$i]}" + fn_sfc_nemsio="${EXTRN_MDL_FNS[1][$i]}" + ;; "GEFS") fn_grib2="${EXTRN_MDL_FNS[$i]}" ;; diff --git a/ush/get_extrn_mdl_file_dir_info.sh b/ush/get_extrn_mdl_file_dir_info.sh index 86320e7bd..03c83144a 100755 --- a/ush/get_extrn_mdl_file_dir_info.sh +++ b/ush/get_extrn_mdl_file_dir_info.sh @@ -311,6 +311,7 @@ fi [ "${extrn_mdl_name}" = "FV3GFS" -a "${MACHINE}" = "ORION" ] || \ [ "${extrn_mdl_name}" = "GEFS" -a "${MACHINE}" = "JET" ] || \ [ "${extrn_mdl_name}" = "GEFS" -a "${MACHINE}" = "HERA" ] || \ + [ "${extrn_mdl_name}" = "GDASENKF" -a "${MACHINE}" = "JET" ] || \ [ "${extrn_mdl_name}" = "FV3GFS" -a "${MACHINE}" = "JET" ] || \ [ "${extrn_mdl_name}" = "FV3GFS" -a "${MACHINE}" = "HERA" ]; then # @@ -395,8 +396,10 @@ fi # fns=( "gfs.t${hh}z.pgrb2.0p25.anl" ) # Get only 0.25 degree files for now. # fns=( "gfs.t${hh}z.pgrb2.0p25.f000" ) # Get only 0.25 degree files for now. - if [ "${MACHINE}" = "JET" ] || [ "${MACHINE}" = "HERA" ] || [ "${MACHINE}" = "ORION" ]; then + if [ "${MACHINE}" = "JET" ] || [ "${MACHINE}" = "ORION" ]; then fns_on_disk=( "${yy}${ddd}${hh}0${fcst_mn}0${fcst_hh}" ) + elif [ "${MACHINE}" = "HERA" ] ; then + fns_on_disk=( "gfs.t${hh}z.pgrb2.0p25.f0${fcst_hh}" ) else fns_on_disk=( "gfs.t${hh}z.pgrb2.0p25.f0${fcst_hh}" "gfs.t${hh}z.sfcf0${fcst_hh}.nc") # use netcdf fi @@ -408,6 +411,13 @@ fi fi ;; + "GDASENKF") + if [ "${MACHINE}" = "HERA" ] ; then + fns_on_disk=( "gdas.t${hh}z.atmf0${fcst_hh}.nc" "gdas.t${hh}z.sfcf0${fcst_hh}.nc") # use netcdf + fns_in_arcv=( "gfs.t${hh}z.pgrb2.0p25.f0${fcst_hh}" ) # Get only 0.25 degree files for now. + fi + ;; + "GEFS") fcst_hh=( $( printf "%02d " "${time_offset_hrs}" ) ) prefix="${yy}${ddd}${hh}${mn}${fcst_mn}" @@ -493,7 +503,7 @@ and analysis or forecast (anl_or_fcst): fcst_hhh=( $( printf "%03d " "${lbc_spec_fhrs[@]}" ) ) - if [ "${MACHINE}" = "JET" ] || [ "${MACHINE}" = "HERA" ] || [ "${MACHINE}" = "ORION" ]; then + if [ "${MACHINE}" = "JET" ] || [ "${MACHINE}" = "ORION" ]; then prefix=( "${yy}${ddd}${hh}${fcst_mn}0" ) fns_on_disk=( "${fcst_hhh[@]/#/$prefix}" ) else @@ -511,6 +521,14 @@ and analysis or forecast (anl_or_fcst): fi ;; + "GDASENKF") + fcst_hhh=( $( printf "%03d " "${lbc_spec_fhrs[@]}" ) ) + if [ "${MACHINE}" = "HERA" ]; then + fns_on_disk=( "gdas.t${hh}z.atmf${fcst_hhh[@]}.nc" "gdas.t${hh}z.sfcf${fcst_hhh[@]}.nc") # use netcdf + fns_in_arcv=( "gdas.t${hh}z.atmf${fcst_hhh}.nc" "gdas.t${hh}z.sfcf${fcst_hhh}.nc" ) # for now. + fi + ;; + "GEFS") fcst_hh=( $( printf "%02d " "${lbc_spec_fhrs[@]}" ) ) prefix="${yy}${ddd}${hh}${mn}${fcst_mn}" @@ -644,7 +662,7 @@ has not been specified for this external model and machine combination: sysdir="$sysbasedir/gfs.${yyyymmdd}/${hh}/atmos" ;; "HERA") - sysdir="$sysbasedir" + sysdir="$sysbasedir/gfs.${yyyymmdd}/${hh}/atmos" ;; "ORION") sysdir="$sysbasedir/gdas.${yyyymmdd}/${hh}/atmos" @@ -664,6 +682,24 @@ has not been specified for this external model and machine combination: *) print_err_msg_exit "\ The system directory in which to look for external model output files +has not been specified for this external model and machine combination: + extrn_mdl_name = \"${extrn_mdl_name}\" + MACHINE = \"$MACHINE\"" + ;; + esac + ;; + + "GDASENKF") + case "$MACHINE" in + "HERA") + sysdir="$sysbasedir/enkfgdas.${yyyymmdd}/${hh}/atmos/${GDASENKF_INPUT_SUBDIR}" + ;; + "JET") + sysdir="$sysbasedir" + ;; + *) + print_err_msg_exit "\ +The system directory in which to look for external model output files has not been specified for this external model and machine combination: extrn_mdl_name = \"${extrn_mdl_name}\" MACHINE = \"$MACHINE\"" @@ -978,6 +1014,13 @@ has not been specified for this external model: arcvrel_dir="" ;; + "GDASENKF") + arcv_dir="" + arcv_fmt="tar" + arcv_fns="" + arcv_fps="$arcv_dir/$arcv_fns" + arcvrel_dir="" + ;; *) print_err_msg_exit "\ diff --git a/ush/set_extrn_mdl_params.sh b/ush/set_extrn_mdl_params.sh index 336d9fb0f..12ced2700 100644 --- a/ush/set_extrn_mdl_params.sh +++ b/ush/set_extrn_mdl_params.sh @@ -109,6 +109,17 @@ else esac ;; + "GDASENKF") + case "$MACHINE" in + "HERA") + EXTRN_MDL_SYSBASEDIR_ICS="/scratch1/NCEPDEV/rstprod/com/gfs/prod" + ;; + "JET") + EXTRN_MDL_SYSBASEDIR_ICS="/mnt/lfs4/BMC/public/data/grids/enkf/atm" + ;; + esac + ;; + "GEFS") case "$MACHINE" in "HERA") @@ -205,6 +216,9 @@ if [[ -z ${EXTRN_MDL_LBCS_OFFSET_HRS} ]]; then "FV3GFS") EXTRN_MDL_LBCS_OFFSET_HRS="0" ;; + "GDASENKF") + EXTRN_MDL_LBCS_OFFSET_HRS="6" + ;; "GEFS") EXTRN_MDL_LBCS_OFFSET_HRS="6" ;; @@ -297,6 +311,17 @@ else esac ;; + "GDASENKF") + case "$MACHINE" in + "HERA") + EXTRN_MDL_SYSBASEDIR_LBCS="/scratch1/NCEPDEV/rstprod/com/gfs/prod" + ;; + "JET") + EXTRN_MDL_SYSBASEDIR_LBCS="/mnt/lfs4/BMC/public/data/grids/enkf/atm" + ;; + esac + ;; + "GEFS") case "$MACHINE" in "JET") diff --git a/ush/set_rrfs_config.sh b/ush/set_rrfs_config.sh index ce2f25600..cab989dd7 100644 --- a/ush/set_rrfs_config.sh +++ b/ush/set_rrfs_config.sh @@ -52,14 +52,22 @@ if [[ $DO_RETRO == "TRUE" ]] ; then fi if [[ $MACHINE == "hera" ]] ; then - if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then - if [[ ${EXTRN_MDL_NAME_ICS} == "GEFS" ]]; then - EXTRN_MDL_SOURCE_BASEDIR_ICS="/scratch1/BMC/wrfruc/chunhua/data/GEFS/pgrb2" - elif [[ ${EXTRN_MDL_NAME_ICS} == "HRRRDAS" ]]; then - EXTRN_MDL_SOURCE_BASEDIR_ICS="/scratch1/BMC/wrfruc/chunhua/data/HRRRDAS" - fi - EXTRN_MDL_SOURCE_BASEDIR_LBCS="/scratch1/BMC/wrfruc/chunhua/data/GEFS/pgrb2" - OBSPATH="/scratch1/BMC/wrfruc/chunhua/data/obs" + if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then + if [[ ${EXTRN_MDL_NAME_ICS} == "GEFS" ]]; then + EXTRN_MDL_SOURCE_BASEDIR_ICS="/scratch1/BMC/wrfruc/chunhua/data/GEFS/pgrb2" + elif [[ ${EXTRN_MDL_NAME_ICS} == "HRRRDAS" ]]; then + EXTRN_MDL_SOURCE_BASEDIR_ICS="/scratch1/BMC/wrfruc/chunhua/data/HRRRDAS" + elif [[ ${EXTRN_MDL_NAME_ICS} == "GDASENKF" ]]; then + EXTRN_MDL_SOURCE_BASEDIR_ICS="/scratch1/BMC/wrfruc/chunhua/data/GDASENKF" + fi + if [[ ${EXTRN_MDL_NAME_LBCS} == "GEFS" ]]; then + EXTRN_MDL_SOURCE_BASEDIR_LBCS="/scratch1/BMC/wrfruc/chunhua/data/GEFS/pgrb2" + elif [[ ${EXTRN_MDL_NAME_LBCS} == "GDASENKF" ]]; then + EXTRN_MDL_SOURCE_BASEDIR_LBCS="/scratch1/BMC/wrfruc/chunhua/data/GDASENKF" + elif [[ ${EXTRN_MDL_NAME_LBCS} == "FV3GFS" ]]; then + EXTRN_MDL_SOURCE_BASEDIR_LBCS="/scratch1/BMC/wrfruc/chunhua/data/FV3GFS" + fi + OBSPATH="/scratch1/BMC/wrfruc/chunhua/data/obs" else # EXTRN_MDL_SOURCE_BASEDIR_ICS=/scratch2/BMC/zrtrr/rli/data/hrrr/conus/wrfnat/grib2 # EXTRN_MDL_SOURCE_BASEDIR_LBCS=/scratch2/BMC/zrtrr/rli/data/rap/full/wrfnat/grib2 diff --git a/ush/templates/FV3LAM_wflow.xml b/ush/templates/FV3LAM_wflow.xml index 1534cfe33..d30bfca84 100644 --- a/ush/templates/FV3LAM_wflow.xml +++ b/ush/templates/FV3LAM_wflow.xml @@ -318,10 +318,11 @@ MODULES_RUN_TASK_FP script. {%- if do_enscontrol %} /gec00{% for m in range(2, num_ens_members+1) %}{{ " /gep%02d"%m }}{% endfor %} _mem0000{% for m in range(2, num_ens_members+1) %}{{ " _mem%04d"%m }}{% endfor %} - {%- else -%} + {%- else %} {% for m in range(1, num_ens_members+1) %}{{ " /gep%02d"%m }}{% endfor %} {% for m in range(1, num_ens_members+1) %}{{ " _mem%04d"%m }}{% endfor %} {%- endif %} + {% for m in range(1, num_ens_members+1) %}{{ " /mem%03d"%m }}{% endfor %} {%- endif %}