Skip to content

Commit 3f99f70

Browse files
Add wave post jobs to GEFS (NOAA-EMC#2292)
Adds the wave post jobs for gridded and points to GEFS. Boundary point jobs are added even though the current GEFS buoy file does not contain any (tested by manually subbing in the GFS buoy file). Resolves NOAA-EMC#827
1 parent 842adf3 commit 3f99f70

13 files changed

+284
-34
lines changed

parm/config/gefs/config.base.emc.dyn

+1-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ export DO_OCN="NO"
144144
export DO_ICE="NO"
145145
export DO_AERO="NO"
146146
export WAVE_CDUMP="" # When to include wave suite: gdas, gfs, or both
147-
export DOBNDPNT_WAVE="NO"
147+
export DOBNDPNT_WAVE="NO" # The GEFS buoys file does not currently have any boundary points
148148
export FRAC_GRID=".true."
149149

150150
# Set operational resolution

parm/config/gefs/config.resources

+44-22
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,15 @@ esac
6868
export npe_node_max
6969

7070
case ${step} in
71+
72+
"stage_ic")
73+
export wtime_stage_ic="00:15:00"
74+
export npe_stage_ic=1
75+
export npe_node_stage_ic=1
76+
export nth_stage_ic=1
77+
export is_exclusive=True
78+
;;
79+
7180
"waveinit")
7281
export wtime_waveinit="00:10:00"
7382
export npe_waveinit=12
@@ -77,25 +86,10 @@ case ${step} in
7786
export memory_waveinit="2GB"
7887
;;
7988

80-
"wavepostsbs")
81-
export wtime_wavepostsbs="00:20:00"
82-
export wtime_wavepostsbs_gfs="03:00:00"
83-
export npe_wavepostsbs=8
84-
export nth_wavepostsbs=1
85-
export npe_node_wavepostsbs=$(( npe_node_max / nth_wavepostsbs ))
86-
export NTASKS=${npe_wavepostsbs}
87-
export memory_wavepostsbs="10GB"
88-
export memory_wavepostsbs_gfs="10GB"
89-
;;
90-
9189
"fcst" | "efcs")
9290
export is_exclusive=True
9391

94-
if [[ "${step}" == "fcst" ]]; then
95-
_CDUMP_LIST=${CDUMP:-"gdas gfs"}
96-
elif [[ "${step}" == "efcs" ]]; then
97-
_CDUMP_LIST=${CDUMP:-"enkfgdas enkfgfs"}
98-
fi
92+
_CDUMP_LIST=${CDUMP:-"gdas gfs"}
9993

10094
# During workflow creation, we need resources for all CDUMPs and CDUMP is undefined
10195
for _CDUMP in ${_CDUMP_LIST}; do
@@ -224,11 +218,39 @@ case ${step} in
224218
export is_exclusive=True
225219
;;
226220

227-
"stage_ic")
228-
export wtime_stage_ic="00:15:00"
229-
export npe_stage_ic=1
230-
export npe_node_stage_ic=1
231-
export nth_stage_ic=1
221+
"wavepostsbs")
222+
export wtime_wavepostsbs="03:00:00"
223+
export npe_wavepostsbs=1
224+
export nth_wavepostsbs=1
225+
export npe_node_wavepostsbs=$(( npe_node_max / nth_wavepostsbs ))
226+
export NTASKS=${npe_wavepostsbs}
227+
export memory_wavepostsbs="10GB"
228+
;;
229+
230+
"wavepostbndpnt")
231+
export wtime_wavepostbndpnt="01:00:00"
232+
export npe_wavepostbndpnt=240
233+
export nth_wavepostbndpnt=1
234+
export npe_node_wavepostbndpnt=$(( npe_node_max / nth_wavepostbndpnt ))
235+
export NTASKS=${npe_wavepostbndpnt}
236+
export is_exclusive=True
237+
;;
238+
239+
"wavepostbndpntbll")
240+
export wtime_wavepostbndpntbll="01:00:00"
241+
export npe_wavepostbndpntbll=448
242+
export nth_wavepostbndpntbll=1
243+
export npe_node_wavepostbndpntbll=$(( npe_node_max / nth_wavepostbndpntbll ))
244+
export NTASKS=${npe_wavepostbndpntbll}
245+
export is_exclusive=True
246+
;;
247+
248+
"wavepostpnt")
249+
export wtime_wavepostpnt="04:00:00"
250+
export npe_wavepostpnt=200
251+
export nth_wavepostpnt=1
252+
export npe_node_wavepostpnt=$(( npe_node_max / nth_wavepostpnt ))
253+
export NTASKS=${npe_wavepostpnt}
232254
export is_exclusive=True
233255
;;
234256

@@ -239,4 +261,4 @@ case ${step} in
239261

240262
esac
241263

242-
echo "END: config.resources"
264+
echo "END: config.resources"
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#! /usr/bin/env bash
2+
3+
########## config.wavepostbndpnt ##########
4+
# Wave steps specific
5+
6+
echo "BEGIN: config.wavepostbndpnt"
7+
8+
# Get task specific resources
9+
source "${EXPDIR}/config.resources" wavepostbndpnt
10+
11+
echo "END: config.wavepostbndpnt"
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#! /usr/bin/env bash
2+
3+
########## config.wavepostbndpntbll ##########
4+
# Wave steps specific
5+
6+
echo "BEGIN: config.wavepostbndpntbll"
7+
8+
# Get task specific resources
9+
source "${EXPDIR}/config.resources" wavepostbndpntbll
10+
11+
echo "END: config.wavepostbndpntbll"

parm/config/gefs/config.wavepostpnt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#! /usr/bin/env bash
2+
3+
########## config.wavepostpnt ##########
4+
# Wave steps specific
5+
6+
echo "BEGIN: config.wavepostpnt"
7+
8+
# Get task specific resources
9+
source "${EXPDIR}/config.resources" wavepostpnt
10+
11+
echo "END: config.wavepostpnt"

parm/config/gefs/config.wavepostsbs

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#! /usr/bin/env bash
2+
3+
########## config.wavepostsbs ##########
4+
# Wave steps specific
5+
6+
echo "BEGIN: config.wavepostsbs"
7+
8+
# Get task specific resources
9+
source "${EXPDIR}/config.resources" wavepostsbs
10+
11+
# Subgrid info for grib2 encoding
12+
export WAV_SUBGRBSRC=""
13+
export WAV_SUBGRB=""
14+
15+
# Options for point output (switch on/off boundary point output)
16+
export DOIBP_WAV='NO' # Input boundary points
17+
export DOFLD_WAV='YES' # Field data
18+
export DOPNT_WAV='YES' # Station data
19+
export DOGRB_WAV='YES' # Create grib2 files
20+
if [[ -n "${waveinterpGRD}" ]]; then
21+
export DOGRI_WAV='YES' # Create interpolated grids
22+
else
23+
export DOGRI_WAV='NO' # Do not create interpolated grids
24+
fi
25+
export DOSPC_WAV='YES' # Spectral post
26+
export DOBLL_WAV='YES' # Bulletin post
27+
28+
echo "END: config.wavepostsbs"

parm/config/gfs/config.wavepostbndpnt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
echo "BEGIN: config.wavepostbndpnt"
77

88
# Get task specific resources
9-
. $EXPDIR/config.resources wavepostbndpnt
9+
source "${EXPDIR}/config.resources" wavepostbndpnt
1010

1111
echo "END: config.wavepostbndpnt"

parm/config/gfs/config.wavepostbndpntbll

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
echo "BEGIN: config.wavepostbndpntbll"
77

88
# Get task specific resources
9-
. $EXPDIR/config.resources wavepostbndpntbll
9+
source "${EXPDIR}/config.resources" wavepostbndpntbll
1010

1111
echo "END: config.wavepostbndpntbll"

parm/config/gfs/config.wavepostpnt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
echo "BEGIN: config.wavepostpnt"
77

88
# Get task specific resources
9-
. $EXPDIR/config.resources wavepostpnt
9+
source "${EXPDIR}/config.resources" wavepostpnt
1010

1111
echo "END: config.wavepostpnt"

parm/config/gfs/config.wavepostsbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
echo "BEGIN: config.wavepostsbs"
77

88
# Get task specific resources
9-
. $EXPDIR/config.resources wavepostsbs
9+
source "${EXPDIR}/config.resources" wavepostsbs
1010

1111
# Subgrid info for grib2 encoding
1212
export WAV_SUBGRBSRC=""

scripts/exgfs_wave_post_pnt.sh

+5-1
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,11 @@ source "$HOMEgfs/ush/preamble.sh"
156156
cp -f $PARMwave/wave_${NET}.buoys buoy.loc.temp
157157
if [ "$DOBNDPNT_WAV" = YES ]; then
158158
#only do boundary points
159-
sed -n '/^\$.*/!p' buoy.loc.temp | grep IBP > buoy.loc
159+
sed -n '/^\$.*/!p' buoy.loc.temp | grep IBP > buoy.loc || {
160+
echo "WARNING: No boundary points found in buoy file ${PARMwave}/wave_${NET}.buoys"
161+
echo " Ending job without doing anything."
162+
exit 0
163+
}
160164
else
161165
#exclude boundary points
162166
sed -n '/^\$.*/!p' buoy.loc.temp | grep -v IBP > buoy.loc

workflow/applications/gefs.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ def _get_app_configs(self):
2020
configs += ['efcs']
2121

2222
if self.do_wave:
23-
configs += ['waveinit']
23+
configs += ['waveinit', 'wavepostsbs', 'wavepostpnt']
24+
if self.do_wave_bnd:
25+
configs += ['wavepostbndpnt', 'wavepostbndpntbll']
2426

2527
return configs
2628

@@ -47,4 +49,10 @@ def get_task_names(self):
4749

4850
tasks += ['atmprod']
4951

52+
if self.do_wave:
53+
tasks += ['wavepostsbs']
54+
if self.do_wave_bnd:
55+
tasks += ['wavepostbndpnt', 'wavepostbndpntbll']
56+
tasks += ['wavepostpnt']
57+
5058
return {f"{self._base['CDUMP']}": tasks}

0 commit comments

Comments
 (0)