Skip to content

Commit

Permalink
Separate use of initial increment/perturbation file from REPLAY/+03 I…
Browse files Browse the repository at this point in the history
…Cs (#3119)

This PR is a continuation of the previous SFS PR. The use of initial
perturbations/increments for ensemble long forecasts (e.g., SFS and
GEFS) was missing from the previous PR because this option was included
with the REPLAY_IC option.

In this PR, the REPLAY_IC option is now strictly for the +03 ICs, and
the variables USE_ATM_ENS_PERTURB_FILES and USE_OCN_ENS_PERTURB_FILES
are used for initialization with the initial perturbation/increment
files used for SFS and GEFS reforecasting. This separation will also
make it easier to remove the +03 IC optoin.

---------

Co-authored-by: Eric.Sinsky <eric.sinsky@noaa.gov>
Co-authored-by: Walter Kolczynski - NOAA <Walter.Kolczynski@noaa.gov>
Co-authored-by: Rahul Mahajan <aerorahul@users.noreply.github.com>
Co-authored-by: Xiaqiong.Zhou <Xiaqiong.Zhou@noaa.gov>
  • Loading branch information
5 people authored Jan 8, 2025
1 parent 673470a commit bb029b5
Show file tree
Hide file tree
Showing 14 changed files with 36 additions and 35 deletions.
1 change: 0 additions & 1 deletion ci/cases/yamls/gefs_defaults_ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ base:
ACCOUNT: {{ 'HPC_ACCOUNT' | getenv }}
SFS_POST: "NO"
FHOUT_GFS: 6
stage_ic:
USE_OCN_ENS_PERTURB_FILES: "NO"
USE_ATM_ENS_PERTURB_FILES: "NO"
ocn:
Expand Down
7 changes: 3 additions & 4 deletions ci/cases/yamls/sfs_defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ base:
DO_BUFRSND: "NO"
DO_GEMPAK: "NO"
DO_AWIPS: "NO"
KEEPDATA: "YES"
KEEPDATA: "NO"
DO_EXTRACTVARS: "NO"
FHMAX_GFS: 2976
FHMAX_HF_GFS: 0
Expand All @@ -17,6 +17,8 @@ base:
FHOUT_ICE_GFS: 24
FCST_BREAKPOINTS: ""
REPLAY_ICS: "NO"
USE_OCN_ENS_PERTURB_FILES: "YES"
USE_ATM_ENS_PERTURB_FILES: "YES"
HPSSARCH: "NO"
LOCALARCH: "NO"
SFS_POST: "YES"
Expand All @@ -26,8 +28,5 @@ fcst:
MONO: "mono"
reforecast: "YES"
FHZER: 24
stage_ic:
USE_OCN_ENS_PERTURB_FILES: "YES"
USE_ATM_ENS_PERTURB_FILES: "YES"
ocn:
MOM6_INTERP_ICS: "YES"
5 changes: 5 additions & 0 deletions parm/config/gefs/config.base
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,13 @@ export SDATE_GFS=@SDATE_GFS@
export REPLAY_ICS=@REPLAY_ICS@
if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then
export OFFSET_START_HOUR=$(( assim_freq / 2 ))
echo "WARNING: Replay ICs require perturbation files, ignoring any previous settings"
export USE_OCN_ENS_PERTURB_FILES="YES"
export USE_ATM_ENS_PERTURB_FILES="YES"
else
export OFFSET_START_HOUR=0
export USE_OCN_ENS_PERTURB_FILES=@USE_OCN_ENS_PERTURB_FILES@
export USE_ATM_ENS_PERTURB_FILES=@USE_ATM_ENS_PERTURB_FILES@
fi

# GFS output and frequency
Expand Down
2 changes: 1 addition & 1 deletion parm/config/gefs/config.efcs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ if (( OCNRES <= 100 )); then
export EPBL_LSCALE="500.E3,1000.E3,2000.E3,2000.E3,2000.E3"
fi

if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then
if [[ "${USE_OCN_ENS_PERTURB_FILES:-NO}" == "YES" ]]; then
export ODA_INCUPD="True"
export ODA_TEMPINC_VAR='t_pert'
export ODA_SALTINC_VAR='s_pert'
Expand Down
3 changes: 2 additions & 1 deletion parm/config/gefs/config.fcst
Original file line number Diff line number Diff line change
Expand Up @@ -192,14 +192,14 @@ case ${imp_physics} in

export hord_mt_nh_nonmono=5
export hord_xx_nh_nonmono=5
export hord_dp_nh_nonmono=-5
export vtdm4_nh_nonmono=0.02
export nord=2
if [[ "${TYPE}" == "nh"* ]]; then
export dddmp=0.1
else
export dddmp=0.
fi
export dddmp=0.1
export d4_bg=0.12
;;
11) # GFDL
Expand All @@ -216,6 +216,7 @@ case ${imp_physics} in

export hord_mt_nh_nonmono=5
export hord_xx_nh_nonmono=5
export hord_dp_nh_nonmono=-5
export vtdm4_nh_nonmono=0.02
export nord=2
export d4_bg=0.12
Expand Down
4 changes: 0 additions & 4 deletions parm/config/gefs/config.nsst
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ export NST_MODEL=2

# nstf_name(2) : NST_SPINUP : 0 = OFF, 1 = ON,
export NST_SPINUP=0
cdate="${PDY}${cyc}"
if (( cdate < 2017072000 )); then
export NST_SPINUP=1
fi

# nstf_name(3) : NST_RESV (Reserved, NSST Analysis) : 0 = OFF, 1 = ON
export NST_RESV=0
Expand Down
2 changes: 1 addition & 1 deletion parm/config/gefs/config.resources
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ case ${step} in

case "${CASE}" in
"C48" | "C96" | "C192")
declare -x "walltime"="03:00:00"
declare -x "walltime"="04:00:00"
;;
"C384" | "C768" | "C1152")
declare -x "walltime"="06:00:00"
Expand Down
4 changes: 0 additions & 4 deletions parm/config/gefs/config.stage_ic
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,4 @@ if [[ -z "${ICSDIR}" ]] ; then

fi

#use of perturbations files for ensembles
export USE_OCN_ENS_PERTURB_FILES=@USE_OCN_ENS_PERTURB_FILES@
export USE_ATM_ENS_PERTURB_FILES=@USE_ATM_ENS_PERTURB_FILES@

echo "END: config.stage_ic"
4 changes: 2 additions & 2 deletions parm/config/gefs/config.ufs
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ case "${fv3_res}" in
export DELTIM=600
export layout_x=2
export layout_y=2
export layout_x_gfs=4
export layout_y_gfs=4
export layout_x_gfs=6
export layout_y_gfs=8
export nthreads_fv3=1
export nthreads_fv3_gfs=1
export nthreads_ufs=1
Expand Down
6 changes: 2 additions & 4 deletions parm/config/gefs/yaml/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,20 @@ base:
FHOUT_HF_GFS: 1
FCST_BREAKPOINTS: "48"
REPLAY_ICS: "NO"
USE_OCN_PERTURB_FILES: "false"
FHOUT_GFS: 6
FHOUT_OCN_GFS: 6
FHOUT_ICE_GFS: 6
HPSSARCH: "NO"
LOCALARCH: "NO"
SFS_POST: "NO"
USE_OCN_ENS_PERTURB_FILES: "NO"
USE_ATM_ENS_PERTURB_FILES: "NO"
DO_TEST_MODE: "NO"
fcst:
reforecast: "NO"
FHZER: 6
TYPE: "nh"
MONO: "non-mono"
stage_ic:
USE_OCN_ENS_PERTURB_FILES: "NO"
USE_ATM_ENS_PERTURB_FILES: "NO"
ocn:
MOM6_INTERP_ICS: "NO"
# config.aero has just a system-specific path to add.
Expand Down
2 changes: 2 additions & 0 deletions parm/config/gfs/config.fcst
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ case ${imp_physics} in

export hord_mt_nh_nonmono=5
export hord_xx_nh_nonmono=5
export hord_dp_nh_nonmono=-5
export vtdm4_nh_nonmono=0.02
export nord=2
export dddmp=0.1
Expand Down Expand Up @@ -236,6 +237,7 @@ case ${imp_physics} in

export hord_mt_nh_nonmono=5
export hord_xx_nh_nonmono=5
export hord_dp_nh_nonmono=-5
export vtdm4_nh_nonmono=0.02
export nord=2
export d4_bg=0.12
Expand Down
1 change: 1 addition & 0 deletions ush/forecast_det.sh
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ UFS_det(){
MOM6_INIT_FROM_Z=True
MOM6_WARMSTART_FILE="none"
MOM6_INIT_UV="zero"
ODA_INCUPD="False"
fi

# Check for CICE6 restart availability
Expand Down
14 changes: 9 additions & 5 deletions ush/forecast_postdet.sh
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,10 @@ FV3_postdet() {
# Determine increment files when doing cold start
if [[ "${warm_start}" == ".false." ]]; then

if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then
IAU_FHROT=${half_window} # Replay ICs start at the end of the assimilation window
if [[ "${USE_ATM_ENS_PERTURB_FILES:-NO}" == "YES" ]]; then
if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then
IAU_FHROT=${half_window} # Replay ICs start at the end of the assimilation window
fi
if (( MEMBER == 0 )); then
inc_files=()
else
Expand All @@ -109,7 +111,7 @@ FV3_postdet() {
fi
local increment_file
for inc_file in "${inc_files[@]}"; do
increment_file="${COMIN_ATMOS_INPUT}/${RUN}.t${cyc}z.${inc_file}"
increment_file="${COMIN_ATMOS_ANALYSIS}/${RUN}.t${cyc}z.${inc_file}"
if [[ -f "${increment_file}" ]]; then
${NCP} "${increment_file}" "${DATA}/INPUT/${inc_file}"
else
Expand Down Expand Up @@ -173,8 +175,10 @@ EOF
inc_files=("atminc.nc")
read_increment=".true."
res_latlon_dynamics="atminc.nc"
if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then
IAU_FHROT=${half_window} # Replay ICs start at the end of the assimilation window
if [[ "${USE_ATM_ENS_PERTURB_FILES:-NO}" == "YES" ]]; then
if [[ "${REPLAY_ICS:-NO}" == "YES" ]]; then
IAU_FHROT=${half_window} # Replay ICs start at the end of the assimilation window
fi
# Control member has no perturbation
if (( MEMBER == 0 )); then
inc_files=()
Expand Down
16 changes: 8 additions & 8 deletions ush/forecast_predet.sh
Original file line number Diff line number Diff line change
Expand Up @@ -351,27 +351,27 @@ FV3_predet(){
if [[ "${TYPE}" == "nh" ]]; then # monotonic and non-hydrostatic
hord_mt=${hord_mt_nh_mono:-"10"}
hord_xx=${hord_xx_nh_mono:-"10"}
hord_dp=-${hord_xx_nh_nonmono:-"-10"}
hord_dp=${hord_xx_nh_mono:-"10"}
else # monotonic and hydrostatic
hord_mt=${hord_mt_hydro_mono:-"10"}
hord_xx=${hord_xx_hydro_mono:-"10"}
hord_dp=-${hord_xx_nh_nonmono:-"-10"}
hord_dp=${hord_xx_hydro_mono:-"10"}
kord_tm=${kord_tm_hydro_mono:-"-12"}
kord_mt=${kord_mt_hydro_mono:-"12"}
kord_wz=${kord_wz_hydro_mono:-"12"}
kord_tr=${kord_tr_hydro_mono:-"12"}
fi
else # non-monotonic options
d_con=${d_con_nonmono:-"1."}
do_vort_damp=".true."
if [[ "${TYPE}" == "nh" ]]; then # non-monotonic and non-hydrostatic
hord_mt=${hord_mt_nh_nonmono:-"5"}
hord_xx=${hord_xx_nh_nonmono:-"5"}
hord_dp=${hord_xx_hydro_mono:-"-5"}
hord_dp=${hord_dp_nh_nonmono:-"-5"}
else # non-monotonic and hydrostatic
hord_mt=${hord_mt_hydro_nonmono:-"10"}
hord_xx=${hord_xx_hydro_nonmono:-"10"}
hord_dp=${hord_xx_hydro_mono:-"10"}
kord_tm=${kord_tm_hydro_mono:-"-12"}
kord_mt=${kord_mt_hydro_mono:-"12"}
kord_wz=${kord_wz_hydro_mono:-"12"}
kord_tr=${kord_tr_hydro_mono:-"12"}
hord_dp=${hord_xx_hydro_nonmono:-"10"}
fi
fi

Expand Down

0 comments on commit bb029b5

Please sign in to comment.