From 4fda327d4ab8790382fa29d1e92c297e095701a3 Mon Sep 17 00:00:00 2001 From: Sho Yokota Date: Mon, 28 Nov 2022 20:11:23 -0600 Subject: [PATCH 1/4] Add options for Scale/Variable/Time-Dependent Localization --- fix/gsi/anavinfo.rrfs_all | 81 ++++++++++++++++++++++++++ fix/gsi/gsiparm.anl.sh | 3 + scripts/exregional_nonvarcldanl.sh | 2 +- scripts/exregional_run_analysis.sh | 85 +++++++++++++++++++--------- scripts/exregional_run_enkf.sh | 6 +- ush/config.sh.RRFS_CONUS_13km | 25 +++++++- ush/config.sh.RRFS_CONUS_13km_ens | 10 ++-- ush/config.sh.RRFS_CONUS_3km | 25 +++++++- ush/config.sh.RRFS_CONUS_3km.2022HWT | 25 +++++++- ush/config.sh.RRFS_CONUS_3km_ens | 30 ++++++++-- ush/config_defaults.sh | 21 ++++++- ush/generate_FV3LAM_wflow.sh | 1 + ush/get_extrn_mdl_file_dir_info.sh | 9 +++ ush/set_rrfs_config.sh | 17 +++++- ush/templates/FV3LAM_wflow.xml | 35 ++++++++---- 15 files changed, 314 insertions(+), 61 deletions(-) create mode 100644 fix/gsi/anavinfo.rrfs_all diff --git a/fix/gsi/anavinfo.rrfs_all b/fix/gsi/anavinfo.rrfs_all new file mode 100644 index 000000000..574a7a79c --- /dev/null +++ b/fix/gsi/anavinfo.rrfs_all @@ -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 2ed7d4c56..d37769697 100755 --- a/fix/gsi/gsiparm.anl.sh +++ b/fix/gsi/gsiparm.anl.sh @@ -148,6 +148,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,6 +160,8 @@ OBS_INPUT:: fv3sar_bg_opt=${fv3lam_bg_type}, readin_localization=${readin_localization}, ens_fast_read=${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}, / &RAPIDREFRESH_CLDSURF dfi_radar_latent_heat_time_period=20.0, diff --git a/scripts/exregional_nonvarcldanl.sh b/scripts/exregional_nonvarcldanl.sh index 9c1b348cf..90a483ba7 100755 --- a/scripts/exregional_nonvarcldanl.sh +++ b/scripts/exregional_nonvarcldanl.sh @@ -268,7 +268,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_all_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 5889aed58..68c98f0f1 100755 --- a/scripts/exregional_run_analysis.sh +++ b/scripts/exregional_run_analysis.sh @@ -187,6 +187,10 @@ else BKTYPE=1 # cold start fi +if [ ${ob_type} != "conv" ]; then #not using GDAS + l_both_fv3sar_gfs_ens=.false. +fi + #--------------------------------------------------------------------- # # decide regional_ensemble_option: global ensemble (1) or FV3LAM ensemble (5) @@ -237,10 +241,11 @@ if [[ ${regional_ensemble_option:-1} -eq 5 ]]; then if [[ $ifound -ne ${NUM_ENS_MEMBERS} ]]; 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 #----------------------------------------------------------------------- @@ -340,20 +345,29 @@ niter2=50 lread_obs_save=.false. lread_obs_skip=.false. if_model_dbz=.false. +nummem_gfs=0 +nummem_fv3sar=0 +anav_type=${ob_type} # Determine if hybrid option is available 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}" 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. @@ -362,6 +376,9 @@ else print_info_msg "$VERBOSE" " Cycle ${YYYYMMDDHH}: GSI does pure 3DVAR." print_info_msg "$VERBOSE" " Hybrid needs at least ${HYBENSMEM_NMIN} ${memname} ensembles, only ${nummem} available" fi + if [[ ${anav_type} == "all" ]]; then + anav_type="conv" + fi fi # @@ -392,6 +409,17 @@ if [ ${BKTYPE} -eq 1 ]; then # cold start uses background from INPUT fv3lam_bg_type=1 else # cycle uses background from restart if [ "${IO_LAYOUT_Y}" == "1" ]; then + if [ -r "${bkpath}/bk_${ob_type}_fv_core.res.tile1.nc" ]; then + cp_vrfy -f ${bkpath}/bk_${ob_type}_fv_core.res.tile1.nc ${bkpath}/fv_core.res.tile1.nc + cp_vrfy -f ${bkpath}/bk_${ob_type}_fv_tracer.res.tile1.nc ${bkpath}/fv_tracer.res.tile1.nc + cp_vrfy -f ${bkpath}/bk_${ob_type}_sfc_data.nc ${bkpath}/sfc_data.nc + cp_vrfy -f ${bkpath}/bk_${ob_type}_phy_data.nc ${bkpath}/phy_data.nc + else + cp_vrfy ${bkpath}/fv_core.res.tile1.nc ${bkpath}/bk_${ob_type}_fv_core.res.tile1.nc + cp_vrfy ${bkpath}/fv_tracer.res.tile1.nc ${bkpath}/bk_${ob_type}_fv_tracer.res.tile1.nc + cp_vrfy ${bkpath}/sfc_data.nc ${bkpath}/bk_${ob_type}_sfc_data.nc + cp_vrfy ${bkpath}/phy_data.nc ${bkpath}/bk_${ob_type}_phy_data.nc + fi ln_vrfy -snf ${bkpath}/fv_core.res.tile1.nc fv3_dynvars ln_vrfy -snf ${bkpath}/fv_tracer.res.tile1.nc fv3_tracer ln_vrfy -snf ${bkpath}/sfc_data.nc fv3_sfcdata @@ -459,7 +487,7 @@ else esac fi -if [[ ${gsi_type} == "OBSERVER" || ${ob_type} == "conv" ]]; then +if [[ ${gsi_type} == "OBSERVER" || ${anav_type} == "conv" || ${anav_type} == "all" ]]; then obs_files_source[0]=${obspath_tmp}/${obsfileprefix}.t${HH}${SUBH}z.prepbufr.tm00 obs_files_target[0]=prepbufr @@ -472,15 +500,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} == "all" ]]; 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 @@ -604,7 +636,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 @@ -612,12 +644,23 @@ 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} == "all" ]]; then + ANAVINFO=${FIX_GSI}/${ANAVINFO_ALL_FN} + beta1_inv=0.0 + if_model_dbz=.true. +fi +naensloc=`expr ${nsclgrp} \* ${ngvarloc} + ${nsclgrp} - 1` CONVINFO=${FIX_GSI}/${CONVINFO_FN} HYBENSINFO=${FIX_GSI}/${HYBENSINFO_FN} OBERROR=${FIX_GSI}/${OBERROR_FN} @@ -871,6 +914,9 @@ cat fort.208 fort.210 fort.211 fort.212 fort.213 fort.220 > $comout/rrfs_a.t${HH #----------------------------------------------------------------------- # touch gsi_complete.txt +if [[ ${anav_type} == "radardbz" || ${anav_type} == "all" ]]; then + touch gsi_complete_radar.txt # for nonvarcldanl +fi # #----------------------------------------------------------------------- # @@ -933,23 +979,10 @@ if [ $netcdf_diag = ".true." ]; then listall_cnv="conv_ps conv_q conv_t conv_uv conv_pw conv_rw conv_sst conv_dbz" listall_rad="hirs2_n14 msu_n14 sndr_g08 sndr_g11 sndr_g11 sndr_g12 sndr_g13 sndr_g08_prep sndr_g11_prep sndr_g12_prep sndr_g13_prep sndrd1_g11 sndrd2_g11 sndrd3_g11 sndrd4_g11 sndrd1_g15 sndrd2_g15 sndrd3_g15 sndrd4_g15 sndrd1_g13 sndrd2_g13 sndrd3_g13 sndrd4_g13 hirs3_n15 hirs3_n16 hirs3_n17 amsua_n15 amsua_n16 amsua_n17 amsua_n18 amsua_n19 amsua_metop-a amsua_metop-b amsua_metop-c amsub_n15 amsub_n16 amsub_n17 hsb_aqua airs_aqua amsua_aqua imgr_g08 imgr_g11 imgr_g12 pcp_ssmi_dmsp pcp_tmi_trmm conv sbuv2_n16 sbuv2_n17 sbuv2_n18 omi_aura ssmi_f13 ssmi_f14 ssmi_f15 hirs4_n18 hirs4_metop-a mhs_n18 mhs_n19 mhs_metop-a mhs_metop-b mhs_metop-c amsre_low_aqua amsre_mid_aqua amsre_hig_aqua ssmis_las_f16 ssmis_uas_f16 ssmis_img_f16 ssmis_env_f16 iasi_metop-a iasi_metop-b iasi_metop-c seviri_m08 seviri_m09 seviri_m10 seviri_m11 cris_npp atms_npp ssmis_f17 cris-fsr_npp cris-fsr_n20 atms_n20 abi_g16" - cat_exec="${EXECDIR}/nc_diag_cat.x" - - if [ -f $cat_exec ]; then - print_info_msg "$VERBOSE" " - Copying the nc_diag_cat executable to the run directory..." - cp_vrfy ${cat_exec} ${analworkdir}/nc_diag_cat.x - else - print_err_msg_exit "\ - The nc_diag_cat executable specified in cat_exec does not exist: - cat_exec = \"$cat_exec\" - Build GSI and rerun." - fi - for type in $listall_cnv; do count=$(ls pe*.${type}_${loop}.nc4 | wc -l) if [[ $count -gt 0 ]]; then - ${APRUN} ./nc_diag_cat.x -o diag_${type}_${string}.${YYYYMMDDHH}.nc4 pe*.${type}_${loop}.nc4 + ${APRUN} nc_diag_cat.x -o diag_${type}_${string}.${YYYYMMDDHH}.nc4 pe*.${type}_${loop}.nc4 gzip diag_${type}_${string}.${YYYYMMDDHH}.nc4* cp diag_${type}_${string}.${YYYYMMDDHH}.nc4.gz $comout echo "diag_${type}_${string}.${YYYYMMDDHH}.nc4*" >> listcnv @@ -960,7 +993,7 @@ if [ $netcdf_diag = ".true." ]; then for type in $listall_rad; do count=$(ls pe*.${type}_${loop}.nc4 | wc -l) if [[ $count -gt 0 ]]; then - ${APRUN} ./nc_diag_cat.x -o diag_${type}_${string}.${YYYYMMDDHH}.nc4 pe*.${type}_${loop}.nc4 + ${APRUN} nc_diag_cat.x -o diag_${type}_${string}.${YYYYMMDDHH}.nc4 pe*.${type}_${loop}.nc4 gzip diag_${type}_${string}.${YYYYMMDDHH}.nc4* cp diag_${type}_${string}.${YYYYMMDDHH}.nc4.gz $comout echo "diag_${type}_${string}.${YYYYMMDDHH}.nc4*" >> listrad diff --git a/scripts/exregional_run_enkf.sh b/scripts/exregional_run_enkf.sh index e8c75c3ab..6583cc0c2 100755 --- a/scripts/exregional_run_enkf.sh +++ b/scripts/exregional_run_enkf.sh @@ -240,14 +240,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 1428d66df..91b4ad5e9 100644 --- a/ush/config.sh.RRFS_CONUS_13km +++ b/ush/config.sh.RRFS_CONUS_13km @@ -35,11 +35,11 @@ fi if [[ $MACHINE == "orion" ]] ; then ACCOUNT=wrfruc + PARTITION_ANALYSIS=orion QUEUE_ANALYSIS="batch" QUEUE_WGRIB2="batch" QUEUE_GRAPHICS="batch" QUEUE_POST="batch" - NCORES_PER_NODE=24 fi if [[ $MACHINE == "wcoss2" ]] ; then @@ -76,6 +76,29 @@ DO_SOIL_ADJUST="TRUE" DO_RADDA="FALSE" DO_BUFRSND="FALSE" +l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble +nsclgrp=1 #number of scales for scale-dependent localization +ngvarloc=1 #number of scales for variable-dependent localization +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 + readin_localization=.false. + ens_h="82.1580,4.10790" + ens_v="-0.30125,-0.30125" + i_ensloccov4var=1 + DO_ENVAR_RADAR_REF_ONCE="TRUE" +elif [[ ${ngvarloc} == "2" ]] && [[ ${nsclgrp} == "2" ]]; then + readin_localization=.false. + 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 + DO_ENVAR_RADAR_REF_ONCE="TRUE" +fi + QUILTING="TRUE" CCPP_PHYS_SUITE="FV3_HRRR" diff --git a/ush/config.sh.RRFS_CONUS_13km_ens b/ush/config.sh.RRFS_CONUS_13km_ens index b7c5a48f1..6a061b677 100644 --- a/ush/config.sh.RRFS_CONUS_13km_ens +++ b/ush/config.sh.RRFS_CONUS_13km_ens @@ -35,11 +35,11 @@ fi if [[ $MACHINE == "orion" ]] ; then ACCOUNT=wrfruc + PARTITION_ANALYSIS=orion QUEUE_ANALYSIS="batch" QUEUE_WGRIB2="batch" QUEUE_GRAPHICS="batch" QUEUE_POST="batch" - NCORES_PER_NODE=24 fi if [[ $MACHINE == "wcoss2" ]] ; then @@ -306,9 +306,7 @@ COMINgfs="" STMP="YourOwnSpace/NCO_dirs/stmp" # Path to directory STMP that mostly contains input files. PTMP="YourOwnSpace/NCO_dirs/ptmp" # Path to directory STMP that mostly contains input files. NWGES="YourOwnSpace/NCO_dirs/nwges" # Path to directory NWGES that save boundary, cold initial, restart files -if [[ ${DO_RECENTER} == "TRUE" || ${DO_ENSINIT} == "TRUE" ]]; then - ENSCTRL_STMP="YourOwnSpace/NCO_dirs/stmp" # Path to directory STMP that mostly contains control input files for ensemble recentering. - ENSCTRL_PTMP="YourOwnSpace/NCO_dirs/ptmp" # Path to directory STMP that mostly contains control input files for ensemble recentering. - ENSCTRL_NWGES="YourOwnSpace/NCO_dirs/nwges" # Path to directory STMP that mostly contains control input files for ensemble recentering. -fi +ENSCTRL_STMP="YourOwnSpace/NCO_dirs/stmp" # Path to directory STMP that mostly contains control input files for ensemble recentering. +ENSCTRL_PTMP="YourOwnSpace/NCO_dirs/ptmp" # Path to directory STMP that mostly contains control input files for ensemble recentering. +ENSCTRL_NWGES="YourOwnSpace/NCO_dirs/nwges" # Path to directory STMP that mostly contains control input files for ensemble recentering. diff --git a/ush/config.sh.RRFS_CONUS_3km b/ush/config.sh.RRFS_CONUS_3km index 2946721e8..8fee0e0bf 100644 --- a/ush/config.sh.RRFS_CONUS_3km +++ b/ush/config.sh.RRFS_CONUS_3km @@ -35,11 +35,11 @@ fi if [[ $MACHINE == "orion" ]] ; then ACCOUNT=wrfruc + PARTITION_ANALYSIS=orion QUEUE_ANALYSIS="batch" QUEUE_WGRIB2="batch" QUEUE_GRAPHICS="batch" QUEUE_POST="batch" - NCORES_PER_NODE=24 fi if [[ $MACHINE == "wcoss2" ]] ; then @@ -78,6 +78,29 @@ DO_SOIL_ADJUST="TRUE" DO_RADDA="FALSE" DO_BUFRSND="FALSE" +l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble +nsclgrp=1 #number of scales for scale-dependent localization +ngvarloc=1 #number of scales for variable-dependent localization +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 + readin_localization=.false. + ens_h="82.1580,4.10790" + ens_v="-0.30125,-0.30125" + i_ensloccov4var=1 + DO_ENVAR_RADAR_REF_ONCE="TRUE" +elif [[ ${ngvarloc} == "2" ]] && [[ ${nsclgrp} == "2" ]]; then + readin_localization=.false. + 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 + DO_ENVAR_RADAR_REF_ONCE="TRUE" +fi + QUILTING="TRUE" CCPP_PHYS_SUITE="FV3_HRRR" diff --git a/ush/config.sh.RRFS_CONUS_3km.2022HWT b/ush/config.sh.RRFS_CONUS_3km.2022HWT index de2666f56..35f4729b3 100644 --- a/ush/config.sh.RRFS_CONUS_3km.2022HWT +++ b/ush/config.sh.RRFS_CONUS_3km.2022HWT @@ -34,11 +34,11 @@ fi if [[ $MACHINE == "orion" ]] ; then ACCOUNT=wrfruc + PARTITION_ANALYSIS=orion QUEUE_ANALYSIS="batch" QUEUE_WGRIB2="batch" QUEUE_GRAPHICS="batch" QUEUE_POST="batch" - NCORES_PER_NODE=24 fi if [[ $MACHINE == "wcoss2" ]] ; then @@ -75,6 +75,29 @@ DO_SOIL_ADJUST="TRUE" DO_RADDA="FALSE" DO_BUFRSND="FALSE" +l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble +nsclgrp=1 #number of scales for scale-dependent localization +ngvarloc=1 #number of scales for variable-dependent localization +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 + readin_localization=.false. + ens_h="82.1580,4.10790" + ens_v="-0.30125,-0.30125" + i_ensloccov4var=1 + DO_ENVAR_RADAR_REF_ONCE="TRUE" +elif [[ ${ngvarloc} == "2" ]] && [[ ${nsclgrp} == "2" ]]; then + readin_localization=.false. + 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 + DO_ENVAR_RADAR_REF_ONCE="TRUE" +fi + QUILTING="TRUE" CCPP_PHYS_SUITE="FV3_HRRR" diff --git a/ush/config.sh.RRFS_CONUS_3km_ens b/ush/config.sh.RRFS_CONUS_3km_ens index a3dc44c6e..14da51ccc 100644 --- a/ush/config.sh.RRFS_CONUS_3km_ens +++ b/ush/config.sh.RRFS_CONUS_3km_ens @@ -34,8 +34,12 @@ if [[ $MACHINE == "hera" ]] ; then fi if [[ $MACHINE == "orion" ]] ; then - ACCOUNT=ztrr + ACCOUNT=wrfruc + PARTITION_ANALYSIS=orion QUEUE_ANALYSIS="batch" + QUEUE_WGRIB2="batch" + QUEUE_GRAPHICS="batch" + QUEUE_POST="batch" fi if [[ $MACHINE == "wcoss2" ]] ; then @@ -94,6 +98,15 @@ CYCL_HRS_STOCH=("00" "12") CYCLEMONTH="11" CYCLEDAY="10-30" +STARTYEAR=${DATE_FIRST_CYCL:0:4} +STARTMONTH=${DATE_FIRST_CYCL:4:2} +STARTDAY=${DATE_FIRST_CYCL:6:2} +STARTHOUR="00" +ENDYEAR=${DATE_LAST_CYCL:0:4} +ENDMONTH=${DATE_LAST_CYCL:4:2} +ENDDAY=${DATE_LAST_CYCL:6:2} +ENDHOUR="23" + PREEXISTING_DIR_METHOD="upgrade" # "rename" INITIAL_CYCLEDEF="${DATE_FIRST_CYCL}0600 ${DATE_LAST_CYCL}2300 12:00:00" BOUNDARY_CYCLEDEF="00 06,18 * 11 2022 *" @@ -220,6 +233,13 @@ if [[ $MACHINE == "wcoss2" ]] ; then FV3GFS_FILE_FMT_LBCS="grib2" fi +if [[ $MACHINE == "orion" ]] ; then + LAYOUT_X="30" + LAYOUT_Y="40" + PPN_RUN_FCST="40" + WTIME_RUN_WGRIB2="00:20:00" +fi + if [[ ${DO_ENSEMBLE} == "TRUE" ]]; then NUM_ENS_MEMBERS=30 # DO_SPPT=TRUE @@ -255,9 +275,7 @@ COMINgfs="" STMP="/mnt/lfs4/BMC/wrfruc/RRFSE/NCO_dirs/stmp" # Path to directory STMP that mostly contains input files. PTMP="/mnt/lfs4/BMC/wrfruc/RRFSE/NCO_dirs/ptmp" # Path to directory STMP that mostly contains input files. NWGES="/mnt/lfs4/BMC/wrfruc/RRFSE/NCO_dirs/nwges" # Path to directory NWGES that save boundary, cold initial, restart files -if [[ ${DO_RECENTER} == "TRUE" || ${DO_ENSINIT} == "TRUE" ]]; then - ENSCTRL_STMP="/mnt/lfs4/BMC/nrtrr/NCO_dirs/stmp" # Path to directory STMP that mostly contains control input files for ensemble recentering. - ENSCTRL_PTMP="/mnt/lfs4/BMC/nrtrr/NCO_dirs/ptmp" # Path to directory STMP that mostly contains control input files for ensemble recentering. - ENSCTRL_NWGES="/mnt/lfs4/BMC/nrtrr/NCO_dirs/nwges" # Path to directory STMP that mostly contains control input files for ensemble recentering. -fi +ENSCTRL_STMP="/mnt/lfs4/BMC/nrtrr/NCO_dirs/stmp" # Path to directory STMP that mostly contains control input files for ensemble recentering. +ENSCTRL_PTMP="/mnt/lfs4/BMC/nrtrr/NCO_dirs/ptmp" # Path to directory STMP that mostly contains control input files for ensemble recentering. +ENSCTRL_NWGES="/mnt/lfs4/BMC/nrtrr/NCO_dirs/nwges" # Path to directory STMP that mostly contains control input files for ensemble recentering. diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh index c43eb63de..2021a1b46 100644 --- a/ush/config_defaults.sh +++ b/ush/config_defaults.sh @@ -679,16 +679,28 @@ 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) # &RAPIDREFRESH_CLDSURF l_PBL_pseudo_SurfobsT=.false. @@ -705,6 +717,7 @@ i_precip_vertical_check=0 HYBENSMEM_NMIN=80 ANAVINFO_FN="anavinfo.rrfs" ANAVINFO_DBZ_FN="anavinfo.rrfs_dbz" +ANAVINFO_ALL_FN="anavinfo.rrfs_all" ENKF_ANAVINFO_FN="anavinfo.rrfs" ENKF_ANAVINFO_DBZ_FN="anavinfo.enkf.rrfs_dbz" CONVINFO_FN="convinfo.rrfs" @@ -1951,6 +1964,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 # @@ -1995,6 +2011,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 6a4672649..b544780ca 100755 --- a/ush/generate_FV3LAM_wflow.sh +++ b/ush/generate_FV3LAM_wflow.sh @@ -467,6 +467,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 029cb6c68..5a3839d49 100644 --- a/ush/set_rrfs_config.sh +++ b/ush/set_rrfs_config.sh @@ -103,8 +103,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/templates/FV3LAM_wflow.xml b/ush/templates/FV3LAM_wflow.xml index 17ef959a4..1607e5e8b 100644 --- a/ush/templates/FV3LAM_wflow.xml +++ b/ush/templates/FV3LAM_wflow.xml @@ -407,8 +407,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 }} @@ -420,6 +418,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"] %} @@ -429,6 +430,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 %} @@ -471,8 +474,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 }} @@ -483,12 +484,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 %} @@ -1172,6 +1178,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_TYPEall + {%- endif %} @@ -1180,6 +1189,9 @@ MODULES_RUN_TASK_FP script. {%- if use_rrfse_ens %} + {%- if do_envar_radar_ref and do_envar_radar_ref_once %} + + {%- endif %} {%- for h in cycl_hrs_hyb_fv3lam_ens %} {{ h }}@H @@ -1258,12 +1270,12 @@ MODULES_RUN_TASK_FP script. -{%- if do_envar_radar_ref %} +{%- if do_envar_radar_ref and not do_envar_radar_ref_once %} - + &RSRV_ANALYSIS; &WALL_LIMIT_ANAL; @@ -1271,7 +1283,7 @@ MODULES_RUN_TASK_FP script. &LOAD_MODULES_RUN_TASK_FP; "&HYBRID_RADAR_REF_TN;" "&JOBSDIR;/JREGIONAL_RUN_ANAL" 360 --cpus-per-task 2 --exclusive &RRFS_RESERVE; - 00:50:00 + {{ wtime_run_anal }} &TAG;_&HYBRID_RADAR_REF_TN;_#type# &LOGDIR;/&HYBRID_RADAR_REF_TN;_#type#_@Y@m@d@H.log @@ -1292,6 +1304,7 @@ MODULES_RUN_TASK_FP script. + {%- for h in cycl_hrs_hyb_fv3lam_ens %} @@ -1423,7 +1436,7 @@ MODULES_RUN_TASK_FP script. {%- endif %} - {%- elif do_envar_radar_ref %} + {%- elif do_envar_radar_ref and not do_envar_radar_ref_once %} @@ -1495,7 +1508,7 @@ MODULES_RUN_TASK_FP script. {%- elif do_dacycle and do_refl2tten%} {%- elif do_dacycle %} - {%- if do_envar_radar_ref %} + {%- if do_envar_radar_ref and not do_envar_radar_ref_once %} {%- else %} @@ -1918,7 +1931,7 @@ MODULES_RUN_TASK_FP script. LOGDIR&LOGDIR; CDATE@Y@m@d@H NWGES_BASEDIR&NWGES_BASEDIR; - SLASH_ENSMEM_SUBDIR + SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }} @@ -2087,7 +2100,7 @@ MODULES_RUN_TASK_FP script. - {% if machine in ["JET", "HERA"] -%} + {% if machine in ["JET", "HERA", "ORION"] -%} &OBSPATH;/@Y@m@d@H.rap.t@Hz.prepbufr.tm00 {% else -%} &OBSPATH;/rap.@Y@m@d/rap.t@Hz.prepbufr.tm00 From e81c80550c2377326cedf73056db5a0ed2815aa4 Mon Sep 17 00:00:00 2001 From: Sho Yokota Date: Tue, 7 Feb 2023 15:21:35 -0600 Subject: [PATCH 2/4] Add options for Variable-Dependent Localization of OU/MAP --- fix/gsi/gsiparm.anl.sh | 11 ++++++++++- scripts/exregional_run_analysis.sh | 4 ++++ ush/config.sh.RRFS_CONUS_13km | 23 +++++++++++++++++------ ush/config.sh.RRFS_CONUS_3km | 23 +++++++++++++++++------ ush/config.sh.RRFS_CONUS_3km.2022HWT | 23 +++++++++++++++++------ ush/config_defaults.sh | 2 ++ 6 files changed, 67 insertions(+), 19 deletions(-) diff --git a/fix/gsi/gsiparm.anl.sh b/fix/gsi/gsiparm.anl.sh index 4638afd18..9417cd3df 100755 --- a/fix/gsi/gsiparm.anl.sh +++ b/fix/gsi/gsiparm.anl.sh @@ -160,9 +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_run_analysis.sh b/scripts/exregional_run_analysis.sh index 811f217df..680cdaf9f 100755 --- a/scripts/exregional_run_analysis.sh +++ b/scripts/exregional_run_analysis.sh @@ -681,6 +681,10 @@ if [[ ${gsi_type} == "ANALYSIS" && ${anav_type} == "all" ]]; then 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} diff --git a/ush/config.sh.RRFS_CONUS_13km b/ush/config.sh.RRFS_CONUS_13km index e7abcbdae..1a3777168 100644 --- a/ush/config.sh.RRFS_CONUS_13km +++ b/ush/config.sh.RRFS_CONUS_13km @@ -28,6 +28,7 @@ DO_BUFRSND="FALSE" l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble nsclgrp=1 #number of scales for scale-dependent localization ngvarloc=1 #number of scales for variable-dependent localization +assign_vdl_nml=.false. if [[ ${ngvarloc} == "1" ]] && [[ ${nsclgrp} == "2" ]]; then readin_localization=.false. ens_h="328.632,82.1580,82.1580" @@ -35,17 +36,27 @@ if [[ ${ngvarloc} == "1" ]] && [[ ${nsclgrp} == "2" ]]; then 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" - i_ensloccov4var=1 - DO_ENVAR_RADAR_REF_ONCE="TRUE" + if [ ${assign_vdl_nml} = ".true." ]; then + vdl_scale="2,2" + else + i_ensloccov4var=1 + fi elif [[ ${ngvarloc} == "2" ]] && [[ ${nsclgrp} == "2" ]]; then - readin_localization=.false. - 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 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 EXTRN_MDL_ICS_OFFSET_HRS="3" diff --git a/ush/config.sh.RRFS_CONUS_3km b/ush/config.sh.RRFS_CONUS_3km index f61a6876e..45f547d3d 100644 --- a/ush/config.sh.RRFS_CONUS_3km +++ b/ush/config.sh.RRFS_CONUS_3km @@ -30,6 +30,7 @@ DO_BUFRSND="FALSE" l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble nsclgrp=1 #number of scales for scale-dependent localization ngvarloc=1 #number of scales for variable-dependent localization +assign_vdl_nml=.false. if [[ ${ngvarloc} == "1" ]] && [[ ${nsclgrp} == "2" ]]; then readin_localization=.false. ens_h="328.632,82.1580,82.1580" @@ -37,17 +38,27 @@ if [[ ${ngvarloc} == "1" ]] && [[ ${nsclgrp} == "2" ]]; then 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" - i_ensloccov4var=1 - DO_ENVAR_RADAR_REF_ONCE="TRUE" + if [ ${assign_vdl_nml} = ".true." ]; then + vdl_scale="2,2" + else + i_ensloccov4var=1 + fi elif [[ ${ngvarloc} == "2" ]] && [[ ${nsclgrp} == "2" ]]; then - readin_localization=.false. - 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 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 NET="rrfs_b" diff --git a/ush/config.sh.RRFS_CONUS_3km.2022HWT b/ush/config.sh.RRFS_CONUS_3km.2022HWT index c78c265a9..6cd5e357f 100644 --- a/ush/config.sh.RRFS_CONUS_3km.2022HWT +++ b/ush/config.sh.RRFS_CONUS_3km.2022HWT @@ -27,6 +27,7 @@ DO_BUFRSND="FALSE" l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble nsclgrp=1 #number of scales for scale-dependent localization ngvarloc=1 #number of scales for variable-dependent localization +assign_vdl_nml=.false. if [[ ${ngvarloc} == "1" ]] && [[ ${nsclgrp} == "2" ]]; then readin_localization=.false. ens_h="328.632,82.1580,82.1580" @@ -34,17 +35,27 @@ if [[ ${ngvarloc} == "1" ]] && [[ ${nsclgrp} == "2" ]]; then 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" - i_ensloccov4var=1 - DO_ENVAR_RADAR_REF_ONCE="TRUE" + if [ ${assign_vdl_nml} = ".true." ]; then + vdl_scale="2,2" + else + i_ensloccov4var=1 + fi elif [[ ${ngvarloc} == "2" ]] && [[ ${nsclgrp} == "2" ]]; then - readin_localization=.false. - 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 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 EXTRN_MDL_ICS_OFFSET_HRS="3" diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh index 1ce0246ec..2f1d9eb04 100644 --- a/ush/config_defaults.sh +++ b/ush/config_defaults.sh @@ -699,6 +699,8 @@ CORRLENGTH=400 #horizontal localization scale of "Gaspari-Cohn f 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. From c6084ab6fecb50ca114ed5601ade856b545f2583 Mon Sep 17 00:00:00 2001 From: Sho Yokota Date: Thu, 9 Feb 2023 12:08:19 -0600 Subject: [PATCH 3/4] rename 'all' to 'conv_dbz' and separate configuration files to set_rrfs_config_SDL_VDL_MixEn.sh --- ...avinfo.rrfs_all => anavinfo.rrfs_conv_dbz} | 0 scripts/exregional_nonvarcldanl.sh | 2 +- scripts/exregional_run_analysis.sh | 12 +++---- ush/config.sh.RRFS_CONUS_13km | 35 +------------------ ush/config.sh.RRFS_CONUS_3km | 35 +------------------ ush/config.sh.RRFS_CONUS_3km.2022HWT | 35 +------------------ ush/config.sh.RRFS_NA_13km | 1 + ush/config.sh.RRFS_NA_3km | 1 + ush/config.sh.rrfs_a_c13 | 1 + ush/config.sh.rrfs_a_c3 | 1 + ush/config_defaults.sh | 2 +- ush/set_rrfs_config_SDL_VDL_MixEn.sh | 35 +++++++++++++++++++ ush/templates/FV3LAM_wflow.xml | 4 +-- 13 files changed, 52 insertions(+), 112 deletions(-) rename fix/gsi/{anavinfo.rrfs_all => anavinfo.rrfs_conv_dbz} (100%) create mode 100644 ush/set_rrfs_config_SDL_VDL_MixEn.sh diff --git a/fix/gsi/anavinfo.rrfs_all b/fix/gsi/anavinfo.rrfs_conv_dbz similarity index 100% rename from fix/gsi/anavinfo.rrfs_all rename to fix/gsi/anavinfo.rrfs_conv_dbz diff --git a/scripts/exregional_nonvarcldanl.sh b/scripts/exregional_nonvarcldanl.sh index 90a483ba7..5d3299bdd 100755 --- a/scripts/exregional_nonvarcldanl.sh +++ b/scripts/exregional_nonvarcldanl.sh @@ -268,7 +268,7 @@ fi if [ ${DO_ENKF_RADAR_REF} == "TRUE" ]; then l_qnr_from_qr=".true." fi -if [ -r "${cycle_dir}/anal_radardbz_gsi${cycle_tag}/gsi_complete_radar.txt" ] || [ -r "${cycle_dir}/anal_all_gsi${cycle_tag}/gsi_complete_radar.txt" ]; 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 680cdaf9f..94ae0bec6 100755 --- a/scripts/exregional_run_analysis.sh +++ b/scripts/exregional_run_analysis.sh @@ -390,7 +390,7 @@ 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} == "all" ]]; then + if [[ ${anav_type} == "conv_dbz" ]]; then anav_type="conv" fi fi @@ -501,7 +501,7 @@ else esac fi -if [[ ${gsi_type} == "OBSERVER" || ${anav_type} == "conv" || ${anav_type} == "all" ]]; 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 @@ -514,7 +514,7 @@ if [[ ${gsi_type} == "OBSERVER" || ${anav_type} == "conv" || ${anav_type} == "al 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" || ${anav_type} == "all" ]]; then + if [[ ${DO_ENKF_RADAR_REF} == "TRUE" || ${anav_type} == "conv_dbz" ]]; then obs_number=${#obs_files_source[@]} if [ ${cycle_type} == "spinup" ]; then obs_files_source[${obs_number}]=${cycle_dir}/process_radarref_spinup/00/Gridded_ref.nc @@ -675,8 +675,8 @@ if [[ ${gsi_type} == "ANALYSIS" && ${anav_type} == "radardbz" ]]; then q_hyb_ens=.true. if_model_dbz=.true. fi -if [[ ${gsi_type} == "ANALYSIS" && ${anav_type} == "all" ]]; then - ANAVINFO=${FIX_GSI}/${ANAVINFO_ALL_FN} +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 @@ -990,7 +990,7 @@ cp stdout $comout/stdout_${anav_type} #----------------------------------------------------------------------- # touch gsi_complete.txt -if [[ ${anav_type} == "radardbz" || ${anav_type} == "all" ]]; then +if [[ ${anav_type} == "radardbz" || ${anav_type} == "conv_dbz" ]]; then touch gsi_complete_radar.txt # for nonvarcldanl fi # diff --git a/ush/config.sh.RRFS_CONUS_13km b/ush/config.sh.RRFS_CONUS_13km index 1a3777168..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" @@ -25,40 +26,6 @@ DO_SOIL_ADJUST="TRUE" DO_RADDA="FALSE" DO_BUFRSND="FALSE" -l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble -nsclgrp=1 #number of scales for scale-dependent localization -ngvarloc=1 #number of scales for variable-dependent localization -assign_vdl_nml=.false. -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 - EXTRN_MDL_ICS_OFFSET_HRS="3" LBC_SPEC_INTVL_HRS="1" EXTRN_MDL_LBCS_OFFSET_HRS="6" diff --git a/ush/config.sh.RRFS_CONUS_3km b/ush/config.sh.RRFS_CONUS_3km index 45f547d3d..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" @@ -27,40 +28,6 @@ DO_SOIL_ADJUST="TRUE" DO_RADDA="FALSE" DO_BUFRSND="FALSE" -l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble -nsclgrp=1 #number of scales for scale-dependent localization -ngvarloc=1 #number of scales for variable-dependent localization -assign_vdl_nml=.false. -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 - NET="rrfs_b" TAG="RRFS_CONUS_3km" ARCHIVEDIR="/1year/BMC/wrfruc/rrfs_b" diff --git a/ush/config.sh.RRFS_CONUS_3km.2022HWT b/ush/config.sh.RRFS_CONUS_3km.2022HWT index 6cd5e357f..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" @@ -24,40 +25,6 @@ DO_SOIL_ADJUST="TRUE" DO_RADDA="FALSE" DO_BUFRSND="FALSE" -l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble -nsclgrp=1 #number of scales for scale-dependent localization -ngvarloc=1 #number of scales for variable-dependent localization -assign_vdl_nml=.false. -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 - EXTRN_MDL_ICS_OFFSET_HRS="3" LBC_SPEC_INTVL_HRS="1" EXTRN_MDL_LBCS_OFFSET_HRS="6" 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 d343f7877..a9ca973fa 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_DACYCLE="TRUE" DO_SURFACE_CYCLE="TRUE" diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh index 2f1d9eb04..ac55c398b 100644 --- a/ush/config_defaults.sh +++ b/ush/config_defaults.sh @@ -721,7 +721,7 @@ HYBENSMEM_NMIN=80 ANAVINFO_FN="anavinfo.rrfs" ANAVINFO_SD_FN="anavinfo.rrfs_sd" ANAVINFO_DBZ_FN="anavinfo.rrfs_dbz" -ANAVINFO_ALL_FN="anavinfo.rrfs_all" +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" 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/templates/FV3LAM_wflow.xml b/ush/templates/FV3LAM_wflow.xml index 13d8be42d..6025190d4 100644 --- a/ush/templates/FV3LAM_wflow.xml +++ b/ush/templates/FV3LAM_wflow.xml @@ -1272,7 +1272,7 @@ MODULES_RUN_TASK_FP script. SATBIAS_DIR&NWGES_BASEDIR;/satbias nens{{ num_ens_members }} {%- if do_envar_radar_ref and do_envar_radar_ref_once %} - OB_TYPEall + OB_TYPEconv_dbz {%- endif %} @@ -2120,7 +2120,7 @@ MODULES_RUN_TASK_FP script. SATBIAS_DIR&NWGES_BASEDIR;/satbias nens{{ num_ens_members }} {%- if do_envar_radar_ref and do_envar_radar_ref_once %} - OB_TYPEall + OB_TYPEconv_dbz {%- endif %} From 10d6c2a1b644e5c89b1cfdea18c5d62565c9f34e Mon Sep 17 00:00:00 2001 From: Sho Yokota Date: Tue, 21 Feb 2023 10:06:14 -0600 Subject: [PATCH 4/4] remove change for preventing from crashing restart files for now --- scripts/exregional_run_analysis.sh | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/scripts/exregional_run_analysis.sh b/scripts/exregional_run_analysis.sh index 94ae0bec6..5a7501418 100755 --- a/scripts/exregional_run_analysis.sh +++ b/scripts/exregional_run_analysis.sh @@ -423,17 +423,6 @@ if [ ${BKTYPE} -eq 1 ]; then # cold start uses background from INPUT fv3lam_bg_type=1 else # cycle uses background from restart if [ "${IO_LAYOUT_Y}" == "1" ]; then - if [ -r "${bkpath}/bk_${ob_type}_fv_core.res.tile1.nc" ]; then - cp_vrfy -f ${bkpath}/bk_${ob_type}_fv_core.res.tile1.nc ${bkpath}/fv_core.res.tile1.nc - cp_vrfy -f ${bkpath}/bk_${ob_type}_fv_tracer.res.tile1.nc ${bkpath}/fv_tracer.res.tile1.nc - cp_vrfy -f ${bkpath}/bk_${ob_type}_sfc_data.nc ${bkpath}/sfc_data.nc - cp_vrfy -f ${bkpath}/bk_${ob_type}_phy_data.nc ${bkpath}/phy_data.nc - else - cp_vrfy ${bkpath}/fv_core.res.tile1.nc ${bkpath}/bk_${ob_type}_fv_core.res.tile1.nc - cp_vrfy ${bkpath}/fv_tracer.res.tile1.nc ${bkpath}/bk_${ob_type}_fv_tracer.res.tile1.nc - cp_vrfy ${bkpath}/sfc_data.nc ${bkpath}/bk_${ob_type}_sfc_data.nc - cp_vrfy ${bkpath}/phy_data.nc ${bkpath}/bk_${ob_type}_phy_data.nc - fi ln_vrfy -snf ${bkpath}/fv_core.res.tile1.nc fv3_dynvars ln_vrfy -snf ${bkpath}/fv_tracer.res.tile1.nc fv3_tracer ln_vrfy -snf ${bkpath}/sfc_data.nc fv3_sfcdata