diff --git a/fix/gsi/anavinfo.rrfs_conv_dbz b/fix/gsi/anavinfo.rrfs_conv_dbz
new file mode 100644
index 000000000..574a7a79c
--- /dev/null
+++ b/fix/gsi/anavinfo.rrfs_conv_dbz
@@ -0,0 +1,81 @@
+met_guess::
+!var level crtm_use desc orig_name
+ ps 1 -1 surface_pressure ps
+ z 1 -1 geopotential_height phis
+ u 65 2 zonal_wind u
+ v 65 2 meridional_wind v
+ w 65 2 vertical velocity w
+ tv 65 2 virtual_temperature tv
+ q 65 2 specific_humidity sphu
+ oz 65 2 ozone ozone
+ delp 65 -1 fv3 del pressure delp
+ t2m 1 -1 2-m_T t2m
+ q2m 1 -1 2-m_Q q2m
+ ql 65 10 cloud_condensate QCLOUD
+ qr 65 10 rain QRAIN
+ qs 65 10 snow QSNOW
+ qi 65 10 ice QICE
+ qg 65 10 graupel QGRAUP
+ dbz 65 10 reflectivity REFL_10CM
+::
+
+state_derivatives::
+!var level src
+ ps 1 met_guess
+ u 65 met_guess
+ v 65 met_guess
+ tv 65 met_guess
+ q 65 met_guess
+ oz 65 met_guess
+ cw 65 met_guess
+ prse 66 met_guess
+::
+
+state_tendencies::
+!var levels source
+ u 65 met_guess
+ v 65 met_guess
+ tv 65 met_guess
+ q 65 met_guess
+ oz 65 met_guess
+ prse 66 met_guess
+::
+
+state_vector::
+!var level itracer source funcof
+ u 65 0 met_guess u
+ v 65 0 met_guess v
+ w 65 0 met_guess w
+ tv 65 0 met_guess tv
+ tsen 65 0 met_guess tv,q
+ q 65 1 met_guess q
+ oz 65 1 met_guess oz
+ prse 66 0 met_guess prse
+ ps 1 0 met_guess prse
+ sst 1 0 met_guess sst
+ qr 65 1 met_guess qr
+ ql 65 1 met_guess qc
+ qs 65 1 met_guess qs
+ qi 65 1 met_guess qi
+ qg 65 1 met_guess qg
+ dbz 65 1 met_guess dbz
+::
+
+control_vector::
+!var level itracer as/tsfc_sdv an_amp0 source funcof
+ sf 65 0 0.90 -1.0 state u,v
+ vp 65 0 0.90 -1.0 state u,v
+ ps 1 0 1.00 -1.0 state prse
+ t 65 0 1.40 -1.0 state tv
+ q 65 1 0.80 -1.0 state q
+ sst 1 0 1.00 -1.0 state sst
+ stl 1 0 1.00 -1.0 motley sst
+ sti 1 0 1.00 -1.0 motley sst
+ w 65 11 1.00 -1.0 state w
+ qr 65 11 1.00 -1.0 state qr
+ qs 65 11 1.00 -1.0 state qs
+ qi 65 11 1.00 -1.0 state qi
+ qg 65 11 1.00 -1.0 state qg
+ ql 65 11 1.00 -1.0 state qc
+ dbz 65 11 1.00 -1.0 state dbz
+::
diff --git a/fix/gsi/gsiparm.anl.sh b/fix/gsi/gsiparm.anl.sh
index e5418bbcd..9417cd3df 100755
--- a/fix/gsi/gsiparm.anl.sh
+++ b/fix/gsi/gsiparm.anl.sh
@@ -149,6 +149,7 @@ OBS_INPUT::
q_hyb_ens=${q_hyb_ens},
aniso_a_en=.false.,generate_ens=.false.,
n_ens=${nummem},
+ l_both_fv3sar_gfs_ens=${l_both_fv3sar_gfs_ens},n_ens_gfs=${nummem_gfs},n_ens_fv3sar=${nummem_fv3sar},
beta_s0=${beta1_inv},s_ens_h=${ens_h},s_ens_v=${ens_v},
regional_ensemble_option=${regional_ensemble_option},
pseudo_hybens = .false.,
@@ -159,7 +160,18 @@ OBS_INPUT::
jcap_ens=574,
fv3sar_bg_opt=${fv3lam_bg_type},
readin_localization=${readin_localization},
- ens_fast_read=${ens_fast_read},
+ parallelization_over_ensmembers=${ens_fast_read},
+ nsclgrp=${nsclgrp},l_timloc_opt=.false.,ngvarloc=${ngvarloc},naensloc=${naensloc},
+ i_ensloccov4tim=${i_ensloccov4tim},i_ensloccov4var=${i_ensloccov4var},i_ensloccov4scl=${i_ensloccov4scl},
+ global_spectral_filter_sd=.false.,assign_vdl_nml=${assign_vdl_nml},vdl_scale=${vdl_scale},
+ vloc_varlist(1,1)='sf ',vloc_varlist(2,1)='w ',vloc_varlist(3,1)='sf ',vloc_varlist(4,1)='w ',
+ vloc_varlist(1,2)='vp ',vloc_varlist(2,2)='qr ',vloc_varlist(3,2)='vp ',vloc_varlist(4,2)='qr ',
+ vloc_varlist(1,3)='ps ',vloc_varlist(2,3)='qs ',vloc_varlist(3,3)='ps ',vloc_varlist(4,3)='qs ',
+ vloc_varlist(1,4)='t ',vloc_varlist(2,4)='qi ',vloc_varlist(3,4)='t ',vloc_varlist(4,4)='qi ',
+ vloc_varlist(1,5)='q ',vloc_varlist(2,5)='qg ',vloc_varlist(3,5)='q ',vloc_varlist(4,5)='qg ',
+ vloc_varlist(1,6)='sst',vloc_varlist(2,6)='ql ',vloc_varlist(3,6)='sst',vloc_varlist(4,6)='ql ',
+ vloc_varlist(1,7)='stl',vloc_varlist(2,7)='dbz',vloc_varlist(3,7)='stl',vloc_varlist(4,7)='dbz',
+ vloc_varlist(1,8)='sti',vloc_varlist(2,8)='aaa',vloc_varlist(3,8)='sti',vloc_varlist(4,8)='aaa',
/
&RAPIDREFRESH_CLDSURF
dfi_radar_latent_heat_time_period=20.0,
diff --git a/scripts/exregional_nonvarcldanl.sh b/scripts/exregional_nonvarcldanl.sh
index a225f5255..61c57d0cc 100755
--- a/scripts/exregional_nonvarcldanl.sh
+++ b/scripts/exregional_nonvarcldanl.sh
@@ -269,7 +269,7 @@ fi
if [ ${DO_ENKF_RADAR_REF} == "TRUE" ]; then
l_qnr_from_qr=".true."
fi
-if [ -r "${cycle_dir}/anal_radardbz_gsi${cycle_tag}/stdout" ]; then
+if [ -r "${cycle_dir}/anal_radardbz_gsi${cycle_tag}/gsi_complete_radar.txt" ] || [ -r "${cycle_dir}/anal_conv_dbz_gsi${cycle_tag}/gsi_complete_radar.txt" ]; then
l_precip_clear_only=".true."
l_qnr_from_qr=".true."
fi
diff --git a/scripts/exregional_run_analysis.sh b/scripts/exregional_run_analysis.sh
index 0362ed956..deec28131 100755
--- a/scripts/exregional_run_analysis.sh
+++ b/scripts/exregional_run_analysis.sh
@@ -188,6 +188,10 @@ else
regional_ensemble_option=1
fi
+if [ ${ob_type} != "conv" ] || [ ${BKTYPE} -eq 1 ]; then #not using GDAS
+ l_both_fv3sar_gfs_ens=.false.
+fi
+
#---------------------------------------------------------------------
#
# decide regional_ensemble_option: global ensemble (1) or FV3LAM ensemble (5)
@@ -246,10 +250,11 @@ if [[ ${regional_ensemble_option:-1} -eq 5 ]]; then
if [[ $ifound -ne ${NUM_ENS_MEMBERS} ]] || [[ ${BKTYPE} -eq 1 ]]; then
print_info_msg "Not enough FV3_LAM ensembles, will fall to GDAS"
regional_ensemble_option=1
+ l_both_fv3sar_gfs_ens=.false.
fi
fi
#
-if [[ ${regional_ensemble_option:-1} -eq 1 ]]; then #using GDAS
+if [[ ${regional_ensemble_option:-1} -eq 1 || ${l_both_fv3sar_gfs_ens} = ".true." ]]; then #using GDAS
#-----------------------------------------------------------------------
# Make a list of the latest GFS EnKF ensemble
#-----------------------------------------------------------------------
@@ -349,6 +354,9 @@ niter2=50
lread_obs_save=.false.
lread_obs_skip=.false.
if_model_dbz=.false.
+nummem_gfs=0
+nummem_fv3sar=0
+anav_type=${ob_type}
i_use_2mQ4B=2
i_use_2mT4B=1
@@ -356,7 +364,12 @@ i_use_2mT4B=1
memname='atmf009'
if [ ${regional_ensemble_option:-1} -eq 5 ] && [ ${BKTYPE} != 1 ]; then
- nummem=$NUM_ENS_MEMBERS
+ if [ ${l_both_fv3sar_gfs_ens} = ".true." ]; then
+ nummem_gfs=$(more filelist03 | wc -l)
+ nummem_gfs=$((nummem_gfs - 3 ))
+ fi
+ nummem_fv3sar=$NUM_ENS_MEMBERS
+ nummem=`expr ${nummem_gfs} + ${nummem_fv3sar}`
print_info_msg "$VERBOSE" "Do hybrid with FV3LAM ensemble"
ifhyb=.true.
print_info_msg "$VERBOSE" " Cycle ${YYYYMMDDHH}: GSI hybrid uses FV3LAM ensemble with n_ens=${nummem}"
@@ -364,8 +377,9 @@ if [ ${regional_ensemble_option:-1} -eq 5 ] && [ ${BKTYPE} != 1 ]; then
grid_ratio_ens="1"
ens_fast_read=.true.
else
- nummem=$(more filelist03 | wc -l)
- nummem=$((nummem - 3 ))
+ nummem_gfs=$(more filelist03 | wc -l)
+ nummem_gfs=$((nummem_gfs - 3 ))
+ nummem=${nummem_gfs}
if [[ ${nummem} -ge ${HYBENSMEM_NMIN} ]]; then
print_info_msg "$VERBOSE" "Do hybrid with ${memname}"
ifhyb=.true.
@@ -376,6 +390,9 @@ else
print_info_msg "$VERBOSE" " Hybrid needs at least ${HYBENSMEM_NMIN} ${memname} ensembles, only ${nummem} available"
echo " ${YYYYMMDDHH}(${cycle_type}): GSI dose pure 3DVAR" >> ${EXPTDIR}/log.cycles
fi
+ if [[ ${anav_type} == "conv_dbz" ]]; then
+ anav_type="conv"
+ fi
fi
#
@@ -473,7 +490,7 @@ else
esac
fi
-if [[ ${gsi_type} == "OBSERVER" || ${ob_type} == "conv" ]]; then
+if [[ ${gsi_type} == "OBSERVER" || ${anav_type} == "conv" || ${anav_type} == "conv_dbz" ]]; then
obs_files_source[0]=${obspath_tmp}/${obsfileprefix}.t${HH}${SUBH}z.prepbufr.tm00
obs_files_target[0]=prepbufr
@@ -486,15 +503,19 @@ if [[ ${gsi_type} == "OBSERVER" || ${ob_type} == "conv" ]]; then
obs_files_source[${obs_number}]=${obspath_tmp}/${obsfileprefix}.t${HH}${SUBH}z.nexrad.tm00.bufr_d
obs_files_target[${obs_number}]=l2rwbufr
- if [ ${DO_ENKF_RADAR_REF} == "TRUE" ]; then
+ if [[ ${DO_ENKF_RADAR_REF} == "TRUE" || ${anav_type} == "conv_dbz" ]]; then
obs_number=${#obs_files_source[@]}
- obs_files_source[${obs_number}]=${cycle_dir}/process_radarref/00/Gridded_ref.nc
+ if [ ${cycle_type} == "spinup" ]; then
+ obs_files_source[${obs_number}]=${cycle_dir}/process_radarref_spinup/00/Gridded_ref.nc
+ else
+ obs_files_source[${obs_number}]=${cycle_dir}/process_radarref/00/Gridded_ref.nc
+ fi
obs_files_target[${obs_number}]=dbzobs.nc
fi
else
- if [ ${ob_type} == "radardbz" ]; then
+ if [ ${anav_type} == "radardbz" ]; then
if [ ${cycle_type} == "spinup" ]; then
obs_files_source[0]=${cycle_dir}/process_radarref_spinup/00/Gridded_ref.nc
@@ -506,7 +527,7 @@ else
fi
- if [ ${ob_type} == "AERO" ]; then
+ if [ ${anav_type} == "AERO" ]; then
obs_files_source[0]=${OBSPATH_PM}/${YYYYMMDD}/pm25.airnow.${YYYYMMDD}${HH}.bufr
obs_files_target[0]=pm25bufr
fi
@@ -624,7 +645,7 @@ if [ ${DO_ENKF_RADAR_REF} == "TRUE" ]; then
beta1_inv=0.0
if_model_dbz=.true.
fi
-if [[ ${gsi_type} == "ANALYSIS" && ${ob_type} == "radardbz" ]]; then
+if [[ ${gsi_type} == "ANALYSIS" && ${anav_type} == "radardbz" ]]; then
ANAVINFO=${FIX_GSI}/${ENKF_ANAVINFO_DBZ_FN}
miter=1
niter1=100
@@ -632,19 +653,34 @@ if [[ ${gsi_type} == "ANALYSIS" && ${ob_type} == "radardbz" ]]; then
bkgerr_vs=0.1
bkgerr_hzscl="0.4,0.5,0.6"
beta1_inv=0.0
- ens_h=4.10790
- ens_v=-0.30125
readin_localization=.false.
+ ens_h=${ens_h_radardbz}
+ ens_v=${ens_v_radardbz}
+ nsclgrp=1
+ ngvarloc=1
+ i_ensloccov4tim=0
+ i_ensloccov4var=0
+ i_ensloccov4scl=0
q_hyb_ens=.true.
if_model_dbz=.true.
fi
+if [[ ${gsi_type} == "ANALYSIS" && ${anav_type} == "conv_dbz" ]]; then
+ ANAVINFO=${FIX_GSI}/${ANAVINFO_CONV_DBZ_FN}
+ beta1_inv=0.0
+ if_model_dbz=.true.
+fi
+naensloc=`expr ${nsclgrp} \* ${ngvarloc} + ${nsclgrp} - 1`
+if [ ${assign_vdl_nml} = ".true." ]; then
+ nsclgrp=`expr ${nsclgrp} \* ${ngvarloc}`
+ ngvarloc=1
+fi
CONVINFO=${FIX_GSI}/${CONVINFO_FN}
HYBENSINFO=${FIX_GSI}/${HYBENSINFO_FN}
OBERROR=${FIX_GSI}/${OBERROR_FN}
BERROR=${FIX_GSI}/${BERROR_FN}
-if [[ ${gsi_type} == "ANALYSIS" && ${ob_type} == "AERO" ]]; then
+if [[ ${gsi_type} == "ANALYSIS" && ${anav_type} == "AERO" ]]; then
if [ ${BKTYPE} -eq 1 ]; then
echo "cold start, skip GSI SD DA"
exit 0
@@ -833,7 +869,7 @@ fi
# skip radar reflectivity analysis if no RRFSE ensemble
#-----------------------------------------------------------------------
-if [[ ${gsi_type} == "ANALYSIS" && ${ob_type} == "radardbz" ]]; then
+if [[ ${gsi_type} == "ANALYSIS" && ${anav_type} == "radardbz" ]]; then
if [[ ${regional_ensemble_option:-1} -eq 1 ]]; then
echo "No RRFSE ensemble available, cannot do radar reflectivity analysis"
exit 0
@@ -879,7 +915,7 @@ EOF
#
gsi_exec="${EXECDIR}/gsi.x"
-if [[ ${gsi_type} == "ANALYSIS" && ${ob_type} == "AERO" ]]; then
+if [[ ${gsi_type} == "ANALYSIS" && ${anav_type} == "AERO" ]]; then
gsi_exec="${EXECDIR}/gsi.x.sd"
fi
@@ -916,7 +952,7 @@ fi
$APRUN ./gsi.x < gsiparm.anl > stdout 2>&1 || print_err_msg_exit "\
Call to executable to run GSI returned with nonzero exit code."
-if [ ${ob_type} == "radardbz" ]; then
+if [ ${anav_type} == "radardbz" ]; then
cat fort.238 > $comout/rrfs_a.t${HH}z.fits3.tm00
else
mv fort.207 fit_rad1
@@ -935,7 +971,7 @@ else
fi
-cp stdout $comout/stdout_${ob_type}
+cp stdout $comout/stdout_${anav_type}
#
#-----------------------------------------------------------------------
#
@@ -945,6 +981,9 @@ cp stdout $comout/stdout_${ob_type}
#-----------------------------------------------------------------------
#
touch gsi_complete.txt
+if [[ ${anav_type} == "radardbz" || ${anav_type} == "conv_dbz" ]]; then
+ touch gsi_complete_radar.txt # for nonvarcldanl
+fi
#
#-----------------------------------------------------------------------
#
diff --git a/scripts/exregional_run_enkf.sh b/scripts/exregional_run_enkf.sh
index 8dd97f98e..9f4819ad0 100755
--- a/scripts/exregional_run_enkf.sh
+++ b/scripts/exregional_run_enkf.sh
@@ -238,14 +238,12 @@ CONVINFO=${FIX_GSI}/convinfo.rrfs
if [ ${ob_type} == "conv" ]; then
ANAVINFO=${FIX_GSI}/${ENKF_ANAVINFO_FN}
- CORRLENGTH=400
- LNSIGCUTOFF=0.5
found_ob_type=1
fi
if [ ${ob_type} == "radardbz" ]; then
ANAVINFO=${FIX_GSI}/${ENKF_ANAVINFO_DBZ_FN}
- CORRLENGTH=18
- LNSIGCUTOFF=0.5
+ CORRLENGTH=${CORRLENGTH_radardbz}
+ LNSIGCUTOFF=${LNSIGCUTOFF_radardbz}
found_ob_type=1
fi
if [ ${found_ob_type} == 0 ]; then
diff --git a/ush/config.sh.RRFS_CONUS_13km b/ush/config.sh.RRFS_CONUS_13km
index 2885ef4e0..4fac3c24c 100644
--- a/ush/config.sh.RRFS_CONUS_13km
+++ b/ush/config.sh.RRFS_CONUS_13km
@@ -8,6 +8,7 @@ EXPT_SUBDIR="rrfs_conus_13km"
PREDEF_GRID_NAME=RRFS_CONUS_13km
. set_rrfs_config_general.sh
+. set_rrfs_config_SDL_VDL_MixEn.sh
DO_DACYCLE="TRUE"
DO_SURFACE_CYCLE="TRUE"
diff --git a/ush/config.sh.RRFS_CONUS_3km b/ush/config.sh.RRFS_CONUS_3km
index 899ec13cd..2a5529441 100644
--- a/ush/config.sh.RRFS_CONUS_3km
+++ b/ush/config.sh.RRFS_CONUS_3km
@@ -8,6 +8,7 @@ EXPT_SUBDIR="RRFS_CONUS_3km"
PREDEF_GRID_NAME=RRFS_CONUS_3km
. set_rrfs_config_general.sh
+. set_rrfs_config_SDL_VDL_MixEn.sh
DO_DACYCLE="TRUE"
DO_SURFACE_CYCLE="TRUE"
diff --git a/ush/config.sh.RRFS_CONUS_3km.2022HWT b/ush/config.sh.RRFS_CONUS_3km.2022HWT
index e02a79bc5..954ae1f62 100644
--- a/ush/config.sh.RRFS_CONUS_3km.2022HWT
+++ b/ush/config.sh.RRFS_CONUS_3km.2022HWT
@@ -7,6 +7,7 @@ EXPT_SUBDIR="RRFS_CONUS_3km"
PREDEF_GRID_NAME=RRFS_CONUS_3km
. set_rrfs_config_general.sh
+. set_rrfs_config_SDL_VDL_MixEn.sh
DO_DACYCLE="TRUE"
DO_SURFACE_CYCLE="TRUE"
diff --git a/ush/config.sh.RRFS_NA_13km b/ush/config.sh.RRFS_NA_13km
index c5437dfcb..ec2056122 100644
--- a/ush/config.sh.RRFS_NA_13km
+++ b/ush/config.sh.RRFS_NA_13km
@@ -6,6 +6,7 @@ EXPT_SUBDIR="RRFS_NA_13km_dev1"
PREDEF_GRID_NAME=GSD_RAP13km
. set_rrfs_config_general.sh
+. set_rrfs_config_SDL_VDL_MixEn.sh
ADDNL_OUTPUT_GRIDS=( "130" "242" )
diff --git a/ush/config.sh.RRFS_NA_3km b/ush/config.sh.RRFS_NA_3km
index 5a1f495a9..f5a80a79c 100644
--- a/ush/config.sh.RRFS_NA_3km
+++ b/ush/config.sh.RRFS_NA_3km
@@ -7,6 +7,7 @@ EXPT_SUBDIR="RRFS_NA_3km"
PREDEF_GRID_NAME="RRFS_NA_3km"
. set_rrfs_config_general.sh
+. set_rrfs_config_SDL_VDL_MixEn.sh
DO_DACYCLE="TRUE"
DO_SURFACE_CYCLE="TRUE"
diff --git a/ush/config.sh.rrfs_a_c13 b/ush/config.sh.rrfs_a_c13
index 1e7ce8a33..bdf98cd2e 100644
--- a/ush/config.sh.rrfs_a_c13
+++ b/ush/config.sh.rrfs_a_c13
@@ -9,6 +9,7 @@ EXPT_SUBDIR="rrfs_conus_13km"
PREDEF_GRID_NAME=RRFS_CONUS_13km
. set_rrfs_config_general.sh
+. set_rrfs_config_SDL_VDL_MixEn.sh
DO_DACYCLE="TRUE"
DO_SURFACE_CYCLE="TRUE"
diff --git a/ush/config.sh.rrfs_a_c3 b/ush/config.sh.rrfs_a_c3
index 7aa0e7052..e7393d596 100644
--- a/ush/config.sh.rrfs_a_c3
+++ b/ush/config.sh.rrfs_a_c3
@@ -8,6 +8,7 @@ EXPT_SUBDIR="rrfs_conus"
PREDEF_GRID_NAME=RRFS_CONUS_3km
. set_rrfs_config_general.sh
+. set_rrfs_config_SDL_VDL_MixEn.sh
#DO_ENSEMBLE="TRUE"
#DO_ENSFCST="TRUE"
diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh
index 8b8f629ee..0ca9125d3 100644
--- a/ush/config_defaults.sh
+++ b/ush/config_defaults.sh
@@ -682,16 +682,30 @@ netcdf_diag=.false.
binary_diag=.true.
# &HYBRID_ENSEMBLE
+l_both_fv3sar_gfs_ens=.false.
readin_localization=.true. #if true, it overwrites the "beta1_inv/ens_h/ens_v" setting
beta1_inv=0.15 #beata_inv is 1-ensemble_wgt
-ens_h=110
-ens_v=3
+ens_h=110 #horizontal localization scale of "Gaussian function=exp(-0.5)" for EnVar (km)
+ens_v=3 #vertical localization scale of "Gaussian function=exp(-0.5)" for EnVar (positive:grids, negative:lnp)
+ens_h_radardbz=4.10790 #horizontal localization scale of "Gaussian function=exp(-0.5)" for radardbz EnVar (km)
+ens_v_radardbz=-0.30125 #vertical localization scale of "Gaussian function=exp(-0.5)" for radardbz EnVar (positive:grids, negative:lnp)
+nsclgrp=1
+ngvarloc=1
+i_ensloccov4tim=0
+i_ensloccov4var=0
+i_ensloccov4scl=0
regional_ensemble_option=1 #1 for GDAS ; 5 for FV3LAM ensemble
grid_ratio_fv3=2.0 #fv3 resolution 3km, so analysis=3*2=6km
grid_ratio_ens=3 #if analysis is 3km, then ensemble=3*3=9km. GDAS ensemble is 20km
i_en_perts_io=1 #0 or 1: original file 3: pre-processed ensembles
q_hyb_ens=.false.
ens_fast_read=.false.
+CORRLENGTH=400 #horizontal localization scale of "Gaspari-Cohn function=0" for EnKF (km)
+LNSIGCUTOFF=0.5 #vertical localization scale of "Gaspari-Cohn function=0" for EnKF (lnp)
+CORRLENGTH_radardbz=18 #horizontal localization scale of "Gaspari-Cohn function=0" for radardbz EnKF (km)
+LNSIGCUTOFF_radardbz=0.5 #vertical localization scale of "Gaspari-Cohn function=0" for radardbz EnKF (lnp)
+assign_vdl_nml=.false.
+vdl_scale=0
# &RAPIDREFRESH_CLDSURF
l_PBL_pseudo_SurfobsT=.false.
@@ -712,6 +726,7 @@ HYBENSMEM_NMIN=80
ANAVINFO_FN="anavinfo.rrfs"
ANAVINFO_SD_FN="anavinfo.rrfs_sd"
ANAVINFO_DBZ_FN="anavinfo.rrfs_dbz"
+ANAVINFO_CONV_DBZ_FN="anavinfo.rrfs_conv_dbz"
ENKF_ANAVINFO_FN="anavinfo.rrfs"
ENKF_ANAVINFO_DBZ_FN="anavinfo.enkf.rrfs_dbz"
CONVINFO_FN="convinfo.rrfs"
@@ -1989,6 +2004,9 @@ TILE_SETS="full"
# DO_ENVAR_RADAR_REF:
# Decide whether or not to run Radar Reflectivity hybrid analysis
#
+# DO_ENVAR_RADAR_REF_ONCE:
+# Decide whether or not to run Radar Reflectivity hybrid analysis simultaneously with other observations
+#
# DO_RECENTER:
# Decide whether or not to run recenter for the ensemble members
#
@@ -2036,6 +2054,7 @@ DO_GSIOBSERVER="FALSE"
DO_ENKFUPDATE="FALSE"
DO_ENKF_RADAR_REF="FALSE"
DO_ENVAR_RADAR_REF="FALSE"
+DO_ENVAR_RADAR_REF_ONCE="FALSE"
DO_RECENTER="FALSE"
DO_ENS_GRAPHICS="FALSE"
DO_ENSPOST="FALSE"
diff --git a/ush/generate_FV3LAM_wflow.sh b/ush/generate_FV3LAM_wflow.sh
index 68038b27f..d9f2db11d 100755
--- a/ush/generate_FV3LAM_wflow.sh
+++ b/ush/generate_FV3LAM_wflow.sh
@@ -487,6 +487,7 @@ settings="\
'do_enkfupdate': ${DO_ENKFUPDATE}
'do_enkf_radar_ref': ${DO_ENKF_RADAR_REF}
'do_envar_radar_ref': ${DO_ENVAR_RADAR_REF}
+ 'do_envar_radar_ref_once': ${DO_ENVAR_RADAR_REF_ONCE}
'do_recenter': ${DO_RECENTER}
'do_bufrsnd': ${DO_BUFRSND}
'do_ens_graphics': ${DO_ENS_GRAPHICS}
diff --git a/ush/get_extrn_mdl_file_dir_info.sh b/ush/get_extrn_mdl_file_dir_info.sh
index 37ce16038..705d59228 100755
--- a/ush/get_extrn_mdl_file_dir_info.sh
+++ b/ush/get_extrn_mdl_file_dir_info.sh
@@ -414,6 +414,9 @@ fi
elif [ "${MACHINE}" = "JET" ] ; then
fns_on_disk=( "${yy}${ddd}${hh}${mn}.gdas.t${hh}z.atmf0${fcst_hh}.${GDAS_MEM_NAME}.nc" "${yy}${ddd}${hh}${mn}.gdas.t${hh}z.sfcf0${fcst_hh}.${GDAS_MEM_NAME}.nc") # use netcdf
fns_in_arcv=( "gdas.t${hh}z.atmf0${fcst_hh}.nc" "gdas.t${hh}z.sfcf0${fcst_hh}.nc") # use netcdf
+ elif [ "${MACHINE}" = "ORION" ] ; then
+ fns_on_disk=( "${yy}${ddd}${hh}${mn}.gdas.t${hh}z.atmf0${fcst_hh}.${GDAS_MEM_NAME}.nc" "${yy}${ddd}${hh}${mn}.gdas.t${hh}z.sfcf0${fcst_hh}.${GDAS_MEM_NAME}.nc") # use netcdf
+ fns_in_arcv=( "gdas.t${hh}z.atmf0${fcst_hh}.nc" "gdas.t${hh}z.sfcf0${fcst_hh}.nc") # use netcdf
fi
;;
@@ -535,6 +538,9 @@ and analysis or forecast (anl_or_fcst):
elif [ "${MACHINE}" = "JET" ]; then
fns_on_disk=( "${yy}${ddd}${hh}${mn}.gdas.t${hh}z.atmf0${fcst_hh}.${GDAS_MEM_NAME}.nc" "${yy}${ddd}${hh}${mn}.gdas.t${hh}z.sfcf0${fcst_hh}.${GDAS_MEM_NAME}.nc") # use netcdf
fns_in_arcv=( "gdas.t${hh}z.atmf${fcst_hhh}.nc" "gdas.t${hh}z.sfcf${fcst_hhh}.nc" ) # for now.
+ elif [ "${MACHINE}" = "ORION" ]; then
+ fns_on_disk=( "${yy}${ddd}${hh}${mn}.gdas.t${hh}z.atmf0${fcst_hh}.${GDAS_MEM_NAME}.nc" "${yy}${ddd}${hh}${mn}.gdas.t${hh}z.sfcf0${fcst_hh}.${GDAS_MEM_NAME}.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
;;
@@ -707,6 +713,9 @@ has not been specified for this external model and machine combination:
"JET")
sysdir="$sysbasedir"
;;
+ "ORION")
+ sysdir="$sysbasedir"
+ ;;
*)
print_err_msg_exit "\
The system directory in which to look for external model output files
diff --git a/ush/set_rrfs_config.sh b/ush/set_rrfs_config.sh
index 2f23f0d5e..72aa6e673 100644
--- a/ush/set_rrfs_config.sh
+++ b/ush/set_rrfs_config.sh
@@ -108,8 +108,21 @@ if [[ $DO_RETRO == "TRUE" ]] ; then
RAPHRR_SOIL_ROOT="/scratch2/BMC/zrtrr/rli/data/rap_hrrr_soil"
fi
if [[ $MACHINE == "orion" ]] ; then
- EXTRN_MDL_SOURCE_BASEDIR_ICS=/work/noaa/wrfruc/mhu/rrfs/data/gfs/0p25deg/grib2
- EXTRN_MDL_SOURCE_BASEDIR_LBCS=/work/noaa/wrfruc/mhu/rrfs/data/gfs/0p25deg/grib2
+ if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then
+ if [[ ${EXTRN_MDL_NAME_ICS} == "GDASENKF" ]]; then
+ EXTRN_MDL_SOURCE_BASEDIR_ICS="/work/noaa/wrfruc/mhu/rrfs/data/enkf/atm"
+ elif [[ ${EXTRN_MDL_NAME_ICS} == "FV3GFS" ]]; then
+ EXTRN_MDL_SOURCE_BASEDIR_ICS="/work/noaa/wrfruc/mhu/rrfs/data/gfs/0p25deg/grib2"
+ fi
+ if [[ ${EXTRN_MDL_NAME_LBCS} == "GDASENKF" ]]; then
+ EXTRN_MDL_SOURCE_BASEDIR_LBCS="/work/noaa/wrfruc/mhu/rrfs/data/enkf/atm"
+ elif [[ ${EXTRN_MDL_NAME_LBCS} == "FV3GFS" ]]; then
+ EXTRN_MDL_SOURCE_BASEDIR_LBCS="/work/noaa/wrfruc/mhu/rrfs/data/gfs/0p25deg/grib2"
+ fi
+ else
+ EXTRN_MDL_SOURCE_BASEDIR_ICS=/work/noaa/wrfruc/mhu/rrfs/data/gfs/0p25deg/grib2
+ EXTRN_MDL_SOURCE_BASEDIR_LBCS=/work/noaa/wrfruc/mhu/rrfs/data/gfs/0p25deg/grib2
+ fi
OBSPATH=/work/noaa/wrfruc/mhu/rrfs/data/obs_rap
OBSPATH_NSSLMOSIAC=/work/noaa/wrfruc/mhu/rrfs/data/reflectivity
LIGHTNING_ROOT=/work/noaa/wrfruc/mhu/rrfs/data/lightning
diff --git a/ush/set_rrfs_config_SDL_VDL_MixEn.sh b/ush/set_rrfs_config_SDL_VDL_MixEn.sh
new file mode 100644
index 000000000..6d8deb457
--- /dev/null
+++ b/ush/set_rrfs_config_SDL_VDL_MixEn.sh
@@ -0,0 +1,35 @@
+
+l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble (MixEn)
+nsclgrp=1 #number of scales for scale-dependent localization (SDL)
+ngvarloc=1 #number of scales for variable-dependent localization (VDL)
+assign_vdl_nml=.false. #if true, vdl_scale and vloc_varlist are used to set VDL
+
+if [[ ${ngvarloc} == "1" ]] && [[ ${nsclgrp} == "2" ]]; then
+ readin_localization=.false.
+ ens_h="328.632,82.1580,82.1580"
+ ens_v="-0.30125,-0.30125,0.0"
+ ens_h_radardbz="4.10790"
+ ens_v_radardbz="-0.30125"
+elif [[ ${ngvarloc} == "2" ]] && [[ ${nsclgrp} == "1" ]]; then
+ DO_ENVAR_RADAR_REF_ONCE="TRUE"
+ readin_localization=.false.
+ ens_h="82.1580,4.10790"
+ ens_v="-0.30125,-0.30125"
+ if [ ${assign_vdl_nml} = ".true." ]; then
+ vdl_scale="2,2"
+ else
+ i_ensloccov4var=1
+ fi
+elif [[ ${ngvarloc} == "2" ]] && [[ ${nsclgrp} == "2" ]]; then
+ DO_ENVAR_RADAR_REF_ONCE="TRUE"
+ readin_localization=.false.
+ if [ ${assign_vdl_nml} = ".true." ]; then
+ ens_h="82.1580,16.4316,8.21580,4.10790,2.73860"
+ ens_v="-0.30125,-0.30125,-0.30125,-0.30125,0.0"
+ vdl_scale="2,2,2,2"
+ else
+ ens_h="328.632,82.1580,4.10790,4.10790,82.1580"
+ ens_v="-0.30125,-0.30125,-0.30125,-0.30125,0.0"
+ i_ensloccov4var=1
+ fi
+fi
diff --git a/ush/set_rrfs_config_general.sh b/ush/set_rrfs_config_general.sh
index a82c7162a..c6a9fd239 100644
--- a/ush/set_rrfs_config_general.sh
+++ b/ush/set_rrfs_config_general.sh
@@ -39,6 +39,7 @@ fi
if [[ $MACHINE == "orion" ]] ; then
ACCOUNT=wrfruc
+ PARTITION_ANALYSIS=orion
QUEUE_ANALYSIS="batch"
QUEUE_PRDGEN="batch"
QUEUE_GRAPHICS="batch"
diff --git a/ush/templates/FV3LAM_wflow.xml b/ush/templates/FV3LAM_wflow.xml
index 0f0c35708..afb785efd 100644
--- a/ush/templates/FV3LAM_wflow.xml
+++ b/ush/templates/FV3LAM_wflow.xml
@@ -703,8 +703,6 @@ MODULES_RUN_TASK_FP script.
{{ extrn_mdl_sysbasedir_ics }}/gfs.@Y@m@d/@H/atmos/gfs.t@Hz.pgrb2.0p25.f{{ "%03d" % extrn_mdl_ics_offset_hrs }}
{%- endif %}
{%- endif %}
- {%- elif machine in ["ORION"] %}
- {{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }}
{% else %}
{%- if extrn_mdl_name_ics in ["GEFS"] %}
{{ extrn_mdl_sysbasedir_ics }}/#subdirGE#/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }}
@@ -716,6 +714,9 @@ MODULES_RUN_TASK_FP script.
{%- elif machine in ["JET"] %}
{{ extrn_mdl_sysbasedir_ics }}/@y@j@H00.gdas.t@Hz.atmf00{{ extrn_mdl_ics_offset_hrs }}.#memNameGDAS#.nc
{{ extrn_mdl_sysbasedir_ics }}/@y@j@H00.gdas.t@Hz.sfcf00{{ extrn_mdl_ics_offset_hrs }}.#memNameGDAS#.nc
+ {%- elif machine in ["ORION"] %}
+ {{ extrn_mdl_sysbasedir_ics }}/@y@j@H00.gdas.t@Hz.atmf00{{ extrn_mdl_ics_offset_hrs }}.#memNameGDAS#.nc
+ {{ extrn_mdl_sysbasedir_ics }}/@y@j@H00.gdas.t@Hz.sfcf00{{ extrn_mdl_ics_offset_hrs }}.#memNameGDAS#.nc
{%- endif %}
{%- elif extrn_mdl_name_ics in ["HRRRDAS"] %}
@@ -725,6 +726,8 @@ MODULES_RUN_TASK_FP script.
{{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }}
{%- elif machine in ["HERA"] %}
{{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }}
+ {%- elif machine in ["ORION"] %}
+ {{ extrn_mdl_sysbasedir_ics }}/@y@j@H000{{ "%03d" % extrn_mdl_ics_offset_hrs }}
{%- endif %}
{%- endif %}
{%- endif %}
@@ -767,8 +770,6 @@ MODULES_RUN_TASK_FP script.
{%- else %}
{{ extrn_mdl_sysbasedir_lbcs }}/gfs.@Y@m@d/@H/atmos/gfs.t@Hz.pgrb2.0p25.f{{ "%03d" % h }}
{%- endif %}
- {%- elif machine in ["ORION"] %}
- {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H000{{ "%03d" % h }}
{%- else %}
{%- if extrn_mdl_name_lbcs in ["GEFS"] %}
{{ extrn_mdl_sysbasedir_lbcs }}/#subdirGE#/@y@j@H000{{ "%03d" % h }}
@@ -779,12 +780,17 @@ MODULES_RUN_TASK_FP script.
{%- elif machine in ["JET"] %}
{{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H00.gdas.t@Hz.atmf{{ "%03d" % h }}.#memNameGDAS#.nc
{{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H00.gdas.t@Hz.sfcf{{ "%03d" % h }}.#memNameGDAS#.nc
+ {%- elif machine in ["ORION"] %}
+ {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H00.gdas.t@Hz.atmf{{ "%03d" % h }}.#memNameGDAS#.nc
+ {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H00.gdas.t@Hz.sfcf{{ "%03d" % h }}.#memNameGDAS#.nc
{%- endif %}
{%- else %}
{%- if machine in ["JET"] %}
{{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H000{{ "%03d" % h }}
{%- elif machine in ["HERA"] %}
{{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H000{{ "%03d" % h }}
+ {%- elif machine in ["ORION"] %}
+ {{ extrn_mdl_sysbasedir_lbcs }}/@y@j@H000{{ "%03d" % h }}
{%- endif %}
{%- endif %}
{%- endif %}
@@ -1279,6 +1285,9 @@ MODULES_RUN_TASK_FP script.
SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
SATBIAS_DIR&NWGES_BASEDIR;/satbias
nens{{ num_ens_members }}
+ {%- if do_envar_radar_ref and do_envar_radar_ref_once %}
+ OB_TYPEconv_dbz
+ {%- endif %}
@@ -1291,6 +1300,9 @@ MODULES_RUN_TASK_FP script.
{%- if do_retro %}
+ {%- if do_envar_radar_ref and do_envar_radar_ref_once %}
+
+ {%- endif %}
{%- for h in cycl_hrs_hyb_fv3lam_ens %}
{{ h }}@H
@@ -1368,7 +1380,7 @@ MODULES_RUN_TASK_FP script.
-{%- if do_envar_radar_ref %}
+{%- if do_envar_radar_ref and not do_envar_radar_ref_once %}