Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add options for Mixed Ensemble and Scale/Variable-Dependent Localization #451

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions fix/gsi/anavinfo.rrfs_all
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
met_guess::
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

About the name of this file: should have a name fit to the application. Using "_all" is too general.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I renamed 'all' to 'conv_dbz'.

!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
::
3 changes: 3 additions & 0 deletions fix/gsi/gsiparm.anl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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.,
Expand All @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion scripts/exregional_nonvarcldanl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
85 changes: 59 additions & 26 deletions scripts/exregional_run_analysis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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
#-----------------------------------------------------------------------
Expand Down Expand Up @@ -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.
Expand All @@ -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

#
Expand Down Expand Up @@ -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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Prep_cyc builds the background and make a link to original background files (named as bk_*).
Why do we need to make a copy of the background files here again?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"bk_*" built in prep_cyc is just a link before doing "ncatted -a checksum". To keep the "ncatted" files, this copy process is required. On Orion, overwriting these files by GSI analysis is often failed and this job is automatically rerun. To prevent the duplicate overwriting in the rerun, I added this copy process.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still cannot figure out why this part of copy needed?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this job, restart files are overwritten. Therefore, if this job is failed after outputting restart files, updated restart files are used as the first guess of EnVar in the rerun job by accident. In fact, such situation frequently occurred on Orion. To prevent from that issue, I added this part.

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
Expand Down Expand Up @@ -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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using "all" as analysis variable is too general. As this application doing all the thing and cannot be extended?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I renamed 'all' to 'conv_dbz'.


obs_files_source[0]=${obspath_tmp}/${obsfileprefix}.t${HH}${SUBH}z.prepbufr.tm00
obs_files_target[0]=prepbufr
Expand All @@ -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
Expand Down Expand Up @@ -604,20 +636,31 @@ 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
niter2=0
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}
Expand Down Expand Up @@ -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
#
#-----------------------------------------------------------------------
#
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
6 changes: 2 additions & 4 deletions scripts/exregional_run_enkf.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
25 changes: 24 additions & 1 deletion ush/config.sh.RRFS_CONUS_13km
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part is added in three configuration files: RRFS_CONUS_13km, RRFS_CONUS_3km, RRFS_CONUS_3km.2022HWT. If they are same or mostly same, can make a separate file just like
set_rrfs_config_general.sh and only include special setups in configure. You can also setup grid type related parameters in that file. Please let me know if you need more details on how to simplify this setups.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a separated file (set_rrfs_config_SDL_VDL_MixEn.sh) for setting of MixEn/SDL/VDL.

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"

Expand Down
10 changes: 4 additions & 6 deletions ush/config.sh.RRFS_CONUS_13km_ens
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.

Loading