Skip to content

Commit

Permalink
Correct wave restart fixes
Browse files Browse the repository at this point in the history
Removes an unnecessary loop when staging wave restarts and stops
creating output links for restart files that were already copied
in as ICs.

Also updates FHMIN_WAV when running with segments to stop creating
unneeded links from earlier in the forecast period.
  • Loading branch information
WalterKolczynski-NOAA committed Oct 16, 2024
1 parent 1314581 commit 6bbaa2b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 25 deletions.
3 changes: 2 additions & 1 deletion parm/config/gefs/config.fcst
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ IFS=', ' read -ra segments <<< "${FCST_SEGMENTS}"
# Determine MIN and MAX based on the forecast segment
export FHMIN=${segments[${FCST_SEGMENT}]}
export FHMAX=${segments[${FCST_SEGMENT}+1]}
# Cap other FHMAX variables at FHMAX for the segment
# Cap other FH variables at FHMAX for the segment
export FHMIN_WAV=$(( FHMIN > FHMIN_WAV ? FHMIN : FHMIN_WAV ))
export FHMAX_HF=$(( FHMAX_HF_GFS > FHMAX ? FHMAX : FHMAX_HF_GFS ))
export FHMAX_WAV=$(( FHMAX_WAV > FHMAX ? FHMAX : FHMAX_WAV ))
# shellcheck disable=SC2153
Expand Down
3 changes: 2 additions & 1 deletion parm/config/gfs/config.fcst
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ case ${RUN} in
# Determine MIN and MAX based on the forecast segment
export FHMIN=${segments[${FCST_SEGMENT}]}
export FHMAX=${segments[${FCST_SEGMENT}+1]}
# Cap other FHMAX variables at FHMAX for the segment
# Cap other FH variables at FHMAX for the segment
export FHMIN_WAV=$(( FHMIN > FHMIN_WAV ? FHMIN : FHMIN_WAV ))
export FHMAX_HF=$(( FHMAX_HF_GFS > FHMAX ? FHMAX : FHMAX_HF_GFS ))
export FHMAX_WAV=$(( FHMAX_WAV > FHMAX ? FHMAX : FHMAX_WAV ))
# shellcheck disable=SC2153
Expand Down
41 changes: 18 additions & 23 deletions ush/forecast_postdet.sh
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ FV3_out() {
WW3_postdet() {
echo "SUB ${FUNCNAME[0]}: Linking input data for WW3"

local ww3_grid
local ww3_grid first_ww3_restart_out ww3_restart_file
# Copy initial condition files:
if [[ "${warm_start}" == ".true." ]]; then
local restart_date restart_dir
Expand All @@ -338,36 +338,31 @@ WW3_postdet() {
restart_dir="${COMIN_WAVE_RESTART_PREV}"
fi
echo "Copying WW3 restarts for 'RUN=${RUN}' at '${restart_date}' from '${restart_dir}'"
local ww3_restart_file
for ww3_grid in ${waveGRD} ; do
ww3_restart_file="${restart_dir}/${restart_date:0:8}.${restart_date:8:2}0000.restart.ww3"
if [[ ! -f "${ww3_restart_file}" ]]; then
echo "WARNING: WW3 restart file '${ww3_restart_file}' not found for warm_start='${warm_start}', will start from rest!"
if [[ "${RERUN}" == "YES" ]]; then
# In the case of a RERUN, the WW3 restart file is required
echo "FATAL ERROR: WW3 restart file '${ww3_restart_file}' not found for RERUN='${RERUN}', ABORT!"
exit 1
fi
fi
if [[ "${waveMULTIGRID}" == ".true." ]]; then
${NCP} "${ww3_restart_file}" "${DATA}/restart.${ww3_grid}" \
|| ( echo "FATAL ERROR: Unable to copy WW3 IC, ABORT!"; exit 1 )
else
${NCP} "${ww3_restart_file}" "${DATA}/restart.ww3" \
|| ( echo "FATAL ERROR: Unable to copy WW3 IC, ABORT!"; exit 1 )
ww3_restart_file="${restart_dir}/${restart_date:0:8}.${restart_date:8:2}0000.restart.ww3"
if [[ ! -f "${ww3_restart_file}" ]]; then
echo "WARNING: WW3 restart file '${ww3_restart_file}' not found for warm_start='${warm_start}', will start from rest!"
if [[ "${RERUN}" == "YES" ]]; then
# In the case of a RERUN, the WW3 restart file is required
echo "FATAL ERROR: WW3 restart file '${ww3_restart_file}' not found for RERUN='${RERUN}', ABORT!"
exit 1
fi
done
fi
${NCP} "${ww3_restart_file}" "${DATA}/restart.ww3" \
|| ( echo "FATAL ERROR: Unable to copy WW3 IC, ABORT!"; exit 1 )

first_ww3_restart_out=$(date --utc -d "${restart_date:0:8} ${restart_date:8:2} + ${restart_interval} hours" +%Y%m%d%H)
else # cold start
echo "WW3 will start from rest!"
first_ww3_restart_out="${model_start_date_current_cycle}"
fi # [[ "${warm_start}" == ".true." ]]

# Link restart files
local restart_file
local ww3_restart_file
# Use restart_date if it was determined above, otherwise use initialization date
for (( vdate = "${restart_date:-${PDY}${cyc}}"; vdate <= forecast_end_cycle;
for (( vdate = first_ww3_restart_out; vdate <= forecast_end_cycle;
vdate = $(date --utc -d "${vdate:0:8} ${vdate:8:2} + ${restart_interval} hours" +%Y%m%d%H) )); do
restart_file="${vdate:0:8}.${vdate:8:2}0000.restart.ww3"
${NLN} "${DATArestart}/WW3_RESTART/${restart_file}" "${restart_file}"
ww3_restart_file="${vdate:0:8}.${vdate:8:2}0000.restart.ww3"
${NLN} "${DATArestart}/WW3_RESTART/${ww3_restart_file}" "${ww3_restart_file}"
done

# Link output files
Expand Down

0 comments on commit 6bbaa2b

Please sign in to comment.