forked from NOAA-EMC/GEFS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgefs_prdgen.parm
executable file
·246 lines (224 loc) · 14.3 KB
/
gefs_prdgen.parm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
#!/bin/ksh
#
# Product Generation Input Variables
#
# export makepgrb2=${makepgrb2:-yes}
export makegrb2i=${makegrb2i:-yes}
export makepgrb2b=${makepgrb2b:-yes}
# The following are options for $WGRIB2 when used to change grid resolution
export option1=${option1:-' -set_grib_type same -new_grid_winds earth '}
export option21=${option21:-' -new_grid_interpolation bilinear -if '}
export option22=${option22:-":(CSNOW|CRAIN|CFRZR|CICEP|ICSEV):"}
export option23=${option23:-' -new_grid_interpolation neighbor -fi '}
export option24=${option24:-' -set_bitmap 1 -set_grib_max_bits 16 -if '}
export option25=${option25:-":(APCP|ACPCP|NCPCP|PRATE|CPRAT):"}
export option26=${option26:-' -set_grib_max_bits 25 -fi -if '}
export option27=${option27:-":(APCP|ACPCP|NCPCP|PRATE|CPRAT|DZDT):"}
export option28=${option28:-' -new_grid_interpolation budget -fi '}
####################################
# Specify Timeout Behavior of Post
#
# SLEEP_TIME - Amount of time to wait for
# a restart file before exiting
# SLEEP_INT - Amount of time to wait between
# checking for restart files
####################################
export SLEEP_TIME=1800
export SLEEP_INT=5
# fhoroglist is the list of additional hours at which surface height should be included in pgrba
# this is normally fhmaxh + 12 to include the next gfs output time after the resolution change
export fhoroglist=
#
# Establish an array of stream names which will establish the number and be used as keys for the associative arrays
#
typeset -a PRDGEN_STREAMS=${PRDGEN_STREAMS:-res_2p50 res_0p50 res_0p25_s1 res_0p25_s2}
typeset -a PRDGEN_STREAMS_LR=${PRDGEN_STREAMS_LR:-res_2p50 res_0p50}
#typeset -a PRDGEN_STREAMS_GFS=${PRDGEN_STREAMS_GFS:-res_2p50 gfs_0p50_s1 gfs_0p50_s2 gfs_0p25_s1 gfs_0p25_s2 gfs_0p25_s3}
typeset -a PRDGEN_STREAMS_GFS=${PRDGEN_STREAMS_GFS:-res_2p50 res_0p50 gfs_0p25_s1 gfs_0p25_s2 gfs_0p25_s3}
export PRDGEN_STREAMS
export PRDGEN_STREAMS_LR
export PRDGEN_STREAMS_GFS
if [[ $cplchm == ".true." ]]; then
PRDGEN_STREAMS=${PRDGEN_STREAMS_AER:-aer_0p50 aer_0p25}
makepgrb2b="no"
fi
if [[ ${RUNMEM:-none} == "gegfs" ]]; then
PRDGEN_STREAMS=${PRDGEN_STREAMS_GFS:-$PRDGEN_STREAMS}
fi
export PRDGEN_STREAMS
#
# Establish associative arrays for needed variables.
#
# Each stream needs to define a value for their stream for each of these like this:
# stream="res_2p50"
# PRDGEN_GRID[res_2p50]="2p5"
# PRDGEN_GRID_SPEC[res_2p50]="latlon 0:144:2.5 90:73:-2.5"
# ...
#
# PRDGEN_HOURS can be an explicit list of hours, or you can use { .. } to create a list. You can even
# combine multiple { .. } notations as long as you enclose the combined expression in quotes:
#
# Examples:
# PRDGEN_HOURS[$stream]={0..120..3} # Every three hours from 0 to 120 (inclusive)
# PRDGEN_HOURS[$stream]="0 3 6 12" # Output at 0, 3, 6, and 12 hours
# PRDGEN_HOURS[$stream]="{0..120..3} {126..240..6}" # Every three hours from 0 to 120, then every 6 hours from 126 to 240
#
# Specified hours must be output by post.
#
[[ -v PRDGEN_GRID ]] || typeset -A PRDGEN_GRID # old jobgrid, used to set GRIB for DBN
[[ -v PRDGEN_GRID_SPEC ]] || typeset -A PRDGEN_GRID_SPEC # grid specification for wgrib2
[[ -v PRDGEN_HOURS ]] || typeset -A PRDGEN_HOURS # forecast hours to create product for
[[ -v PRDGEN_SUBMC ]] || typeset -A PRDGEN_SUBMC # temporary directory for files before partitioning into a and b
[[ -v PRDGEN_A_DIR ]] || typeset -A PRDGEN_A_DIR # directory name for pgrba files (e.g. pgrb2ap5)
[[ -v PRDGEN_A_PREFIX ]] || typeset -A PRDGEN_A_PREFIX # pgrba identifier in file name (e.g. pgrb2a.0p50.)
[[ -v PRDGEN_A_LIST_F00 ]] || typeset -A PRDGEN_A_LIST_F00 # parmlist file for a files at f00 (e.g. gefs_pgrb2a_f00.parm)
[[ -v PRDGEN_A_LIST_FHH ]] || typeset -A PRDGEN_A_LIST_FHH # parmlist file for a files at fhh (e.g. gefs_pgrb2a_fhh.parm)
[[ -v PRDGEN_B_DIR ]] || typeset -A PRDGEN_B_DIR # directory name for pgrbb files (e.g. pgrb2bp5)
[[ -v PRDGEN_B_PREFIX ]] || typeset -A PRDGEN_B_PREFIX # pgrbb identifier in file name (e.g. pgrb2b.0p50.)
[[ -v PRDGEN_B_LIST_F00 ]] || typeset -A PRDGEN_B_LIST_F00 # parmlist file for b files at f00 (e.g. gefs_pgrb2ab_f00.parm)
[[ -v PRDGEN_B_LIST_FHH ]] || typeset -A PRDGEN_B_LIST_FHH # parmlist file for b files at fhh (located in parm directory)
# DO_ANALYSIS can be omitted unless you want to change the default
[[ -v PRDGEN_DO_ANALYSIS ]] || typeset -A PRDGEN_DO_ANALYSIS # create analysis products for this stream
# 2.50°
PRDGEN_GRID[res_2p50]=${PRDGEN_GRID[res_2p50]:-"2p5"}
PRDGEN_GRID_SPEC[res_2p50]=${PRDGEN_GRID_SPEC[res_2p50]:-"latlon 0:144:2.5 90:73:-2.5"}
PRDGEN_HOURS[res_2p50]=${PRDGEN_HOURS[res_2p50]:-"{0..${FHMAXHF}..${FHOUTLF}} {$(( $FHMAXHF + ${FHOUTLF}))..${fhmax}..${FHOUTLF}}"}
PRDGEN_SUBMC[res_2p50]=${PRDGEN_SUBMC[res_2p50]:-"prd2p5"}
PRDGEN_A_DIR[res_2p50]=${PRDGEN_A_DIR[res_2p50]:-"pgrb22p5"}
PRDGEN_A_PREFIX[res_2p50]=${PRDGEN_A_PREFIX[res_2p50]:-"pgrb2.2p50."}
PRDGEN_A_LIST_F00[res_2p50]=${PRDGEN_A_LIST_F00[res_2p50]:-"gefs_pgrb2a_f00.parm_2p5"}
PRDGEN_A_LIST_FHH[res_2p50]=${PRDGEN_A_LIST_FHH[res_2p50]:-"gefs_pgrb2a_fhh.parm_2p5"}
PRDGEN_B_DIR[res_2p50]=${PRDGEN_B_DIR[res_2p50]:-""}
PRDGEN_B_PREFIX[res_2p50]=${PRDGEN_B_PREFIX[res_2p50]:-""}
PRDGEN_B_LIST_F00[res_2p50]=${PRDGEN_B_LIST_F00[res_2p50]:-"gefs_pgrb2ab_f00.parm"}
PRDGEN_B_LIST_FHH[res_2p50]=${PRDGEN_B_LIST_FHH[res_2p50]:-"gefs_pgrb2ab_fhh.parm"}
# 1.00°
PRDGEN_GRID[res_1p00]=${PRDGEN_GRID[res_1p00]:-"1p0"}
PRDGEN_GRID_SPEC[res_1p00]=${PRDGEN_GRID_SPEC[res_1p00]:-"latlon 0:360:1.0 90:181:-1.0"}
PRDGEN_HOURS[res_1p00]=${PRDGEN_HOURS[res_1p00]:-"{0..${FHMAXHF}..${FHOUTLF}} {$(( $FHMAXHF + ${FHOUTLF} ))..${fhmax}..${FHOUTLF}}"}
PRDGEN_SUBMC[res_1p00]=${PRDGEN_SUBMC[res_1p00]:-"prd1p0"}
PRDGEN_A_DIR[res_1p00]=${PRDGEN_A_DIR[res_1p00]:-"pgrb2a1p0"}
PRDGEN_A_PREFIX[res_1p00]=${PRDGEN_A_PREFIX[res_1p00]:-"pgrb2a.1p00."}
PRDGEN_A_LIST_F00[res_1p00]=${PRDGEN_A_LIST_F00[res_1p00]:-"gefs_pgrb2a_f00.parm"}
PRDGEN_A_LIST_FHH[res_1p00]=${PRDGEN_A_LIST_FHH[res_1p00]:-"gefs_pgrb2a_fhh.parm"}
PRDGEN_B_DIR[res_1p00]=${PRDGEN_B_DIR[res_1p00]:-"pgrb2b1p0"}
PRDGEN_B_PREFIX[res_1p00]=${PRDGEN_B_PREFIX[res_1p00]:-"pgrb2b.1p00."}
PRDGEN_B_LIST_F00[res_1p00]=${PRDGEN_B_LIST_F00[res_1p00]:-"gefs_pgrb2ab_f00.parm"}
PRDGEN_B_LIST_FHH[res_1p00]=${PRDGEN_B_LIST_FHH[res_1p00]:-"gefs_pgrb2ab_fhh.parm"}
# 0.50°
PRDGEN_GRID[res_0p50]=${PRDGEN_GRID[res_0p50]:-"0p5"}
PRDGEN_GRID_SPEC[res_0p50]=${PRDGEN_GRID_SPEC[res_0p50]:-"latlon 0:720:0.5 90:361:-0.5"}
PRDGEN_HOURS[res_0p50]=${PRDGEN_HOURS[res_0p50]:-"{0..${FHMAXHF}..${FHOUTHF}} {$(( $FHMAXHF + ${FHOUTLF} ))..${fhmax}..${FHOUTLF}}"}
PRDGEN_SUBMC[res_0p50]=${PRDGEN_SUBMC[res_0p50]:-"prd0p5"}
PRDGEN_A_DIR[res_0p50]=${PRDGEN_A_DIR[res_0p50]:-"pgrb2ap5"}
PRDGEN_A_PREFIX[res_0p50]=${PRDGEN_A_PREFIX[res_0p50]:-"pgrb2a.0p50."}
PRDGEN_A_LIST_F00[res_0p50]=${PRDGEN_A_LIST_F00[res_0p50]:-"gefs_pgrb2a_f00.parm"}
PRDGEN_A_LIST_FHH[res_0p50]=${PRDGEN_A_LIST_FHH[res_0p50]:-"gefs_pgrb2a_fhh.parm"}
PRDGEN_B_DIR[res_0p50]=${PRDGEN_B_DIR[res_0p50]:-"pgrb2bp5"}
PRDGEN_B_PREFIX[res_0p50]=${PRDGEN_B_PREFIX[res_0p50]:-"pgrb2b.0p50."}
PRDGEN_B_LIST_F00[res_0p50]=${PRDGEN_B_LIST_F00[res_0p50]:-"gefs_pgrb2ab_f00.parm"}
PRDGEN_B_LIST_FHH[res_0p50]=${PRDGEN_B_LIST_FHH[res_0p50]:-"gefs_pgrb2ab_fhh.parm"}
# 0.25° Stream 1
PRDGEN_GRID[res_0p25_s1]=${PRDGEN_GRID[res_0p25_s1]:-"0p25"}
PRDGEN_GRID_SPEC[res_0p25_s1]=${PRDGEN_GRID_SPEC[res_0p25_s1]:-"latlon 0:1440:0.25 90:721:-0.25"}
PRDGEN_HOURS[res_0p25_s1]=${PRDGEN_HOURS[res_0p25_s1]:-"{0..${FHMAXHF}..$(( ${FHOUTHF} * 2 ))}"}
PRDGEN_SUBMC[res_0p25_s1]=${PRDGEN_SUBMC[res_0p25_s1]:-"prd0p25"}
PRDGEN_A_DIR[res_0p25_s1]=${PRDGEN_A_DIR[res_0p25_s1]:-"pgrb2sp25"}
PRDGEN_A_PREFIX[res_0p25_s1]=${PRDGEN_A_PREFIX[res_0p25_s1]:-"pgrb2s.0p25."}
PRDGEN_A_LIST_F00[res_0p25_s1]=${PRDGEN_A_LIST_F00[res_0p25_s1]:-"gefs_pgrb2a_f00.parm_0p25"}
PRDGEN_A_LIST_FHH[res_0p25_s1]=${PRDGEN_A_LIST_FHH[res_0p25_s1]:-"gefs_pgrb2a_fhh.parm_0p25"}
PRDGEN_B_DIR[res_0p25_s1]=${PRDGEN_B_DIR[res_0p25_s1]:-"pgrb2p25"}
PRDGEN_B_PREFIX[res_0p25_s1]=${PRDGEN_B_PREFIX[res_0p25_s1]:-"pgrb2.0p25."}
PRDGEN_B_LIST_F00[res_0p25_s1]=${PRDGEN_B_LIST_F00[res_0p25_s1]:-"gefs_pgrb2ab_f00.parm"}
PRDGEN_B_LIST_FHH[res_0p25_s1]=${PRDGEN_B_LIST_FHH[res_0p25_s1]:-"gefs_pgrb2ab_fhh.parm"}
# 0.25° Stream 2
PRDGEN_GRID[res_0p25_s2]=${PRDGEN_GRID[res_0p25_s2]:-"0p25"}
PRDGEN_GRID_SPEC[res_0p25_s2]=${PRDGEN_GRID_SPEC[res_0p25_s2]:-"latlon 0:1440:0.25 90:721:-0.25"}
PRDGEN_HOURS[res_0p25_s2]=${PRDGEN_HOURS[res_0p25_s2]:-"{${FHOUTHF}..${FHMAXHF}..$(( ${FHOUTHF} * 2 ))}"}
PRDGEN_SUBMC[res_0p25_s2]=${PRDGEN_SUBMC[res_0p25_s2]:-"prd0p25"}
PRDGEN_A_DIR[res_0p25_s2]=${PRDGEN_A_DIR[res_0p25_s2]:-"pgrb2sp25"}
PRDGEN_A_PREFIX[res_0p25_s2]=${PRDGEN_A_PREFIX[res_0p25_s2]:-"pgrb2s.0p25."}
PRDGEN_A_LIST_F00[res_0p25_s2]=${PRDGEN_A_LIST_F00[res_0p25_s2]:-"gefs_pgrb2a_f00.parm_0p25"}
PRDGEN_A_LIST_FHH[res_0p25_s2]=${PRDGEN_A_LIST_FHH[res_0p25_s2]:-"gefs_pgrb2a_fhh.parm_0p25"}
PRDGEN_B_DIR[res_0p25_s2]=${PRDGEN_B_DIR[res_0p25_s2]:-"pgrb2p25"}
PRDGEN_B_PREFIX[res_0p25_s2]=${PRDGEN_B_PREFIX[res_0p25_s2]:-"pgrb2.0p25."}
PRDGEN_B_LIST_F00[res_0p25_s2]=${PRDGEN_B_LIST_F00[res_0p25_s2]:-"gefs_pgrb2ab_f00.parm"}
PRDGEN_B_LIST_FHH[res_0p25_s2]=${PRDGEN_B_LIST_FHH[res_0p25_s2]:-"gefs_pgrb2ab_fhh.parm"}
# GFS Stream 1 [0.25°]
PRDGEN_GRID[gfs_0p25_s1]=${PRDGEN_GRID[gfs_0p25_s1]:-"0p25"}
PRDGEN_GRID_SPEC[gfs_0p25_s1]=${PRDGEN_GRID_SPEC[gfs_0p25_s1]:-"latlon 0:1440:0.25 90:721:-0.25"}
PRDGEN_HOURS[gfs_0p25_s1]=${PRDGEN_HOURS[gfs_0p25_s1]:-"{0..${FHMAXHF}..$(( ${FHOUTHF} * 3 ))}"}
PRDGEN_SUBMC[gfs_0p25_s1]=${PRDGEN_SUBMC[gfs_0p25_s1]:-"prd0p25"}
PRDGEN_A_DIR[gfs_0p25_s1]=${PRDGEN_A_DIR[gfs_0p25_s1]:-"pgrb2sp25"}
PRDGEN_A_PREFIX[gfs_0p25_s1]=${PRDGEN_A_PREFIX[gfs_0p25_s1]:-"pgrb2s.0p25."}
PRDGEN_A_LIST_F00[gfs_0p25_s1]=${PRDGEN_A_LIST_F00[gfs_0p25_s1]:-"gefs_pgrb2a_f00.parm_0p25"}
PRDGEN_A_LIST_FHH[gfs_0p25_s1]=${PRDGEN_A_LIST_FHH[gfs_0p25_s1]:-"gefs_pgrb2a_fhh.parm_0p25"}
PRDGEN_B_DIR[gfs_0p25_s1]=${PRDGEN_B_DIR[gfs_0p25_s1]:-"pgrb2p25"}
PRDGEN_B_PREFIX[gfs_0p25_s1]=${PRDGEN_B_PREFIX[gfs_0p25_s1]:-"pgrb2.0p25."}
PRDGEN_B_LIST_F00[gfs_0p25_s1]=${PRDGEN_B_LIST_F00[gfs_0p25_s1]:-"gefs_pgrb2ab_f00.parm"}
PRDGEN_B_LIST_FHH[gfs_0p25_s1]=${PRDGEN_B_LIST_FHH[gfs_0p25_s1]:-"gefs_pgrb2ab_fhh.parm"}
# GFS Stream 2 [0.25°]
PRDGEN_GRID[gfs_0p25_s2]=${PRDGEN_GRID[gfs_0p25_s2]:-"0p25"}
PRDGEN_GRID_SPEC[gfs_0p25_s2]=${PRDGEN_GRID_SPEC[gfs_0p25_s2]:-"latlon 0:1440:0.25 90:721:-0.25"}
PRDGEN_HOURS[gfs_0p25_s2]=${PRDGEN_HOURS[gfs_0p25_s2]:-"{${FHOUTHF}..${FHMAXHF}..$(( ${FHOUTHF} * 3 ))}"}
PRDGEN_SUBMC[gfs_0p25_s2]=${PRDGEN_SUBMC[gfs_0p25_s2]:-"prd0p25"}
PRDGEN_A_DIR[gfs_0p25_s2]=${PRDGEN_A_DIR[gfs_0p25_s2]:-"pgrb2sp25"}
PRDGEN_A_PREFIX[gfs_0p25_s2]=${PRDGEN_A_PREFIX[gfs_0p25_s2]:-"pgrb2s.0p25."}
PRDGEN_A_LIST_F00[gfs_0p25_s2]=${PRDGEN_A_LIST_F00[gfs_0p25_s2]:-"gefs_pgrb2a_f00.parm_0p25"}
PRDGEN_A_LIST_FHH[gfs_0p25_s2]=${PRDGEN_A_LIST_FHH[gfs_0p25_s2]:-"gefs_pgrb2a_fhh.parm_0p25"}
PRDGEN_B_DIR[gfs_0p25_s2]=${PRDGEN_B_DIR[gfs_0p25_s2]:-"pgrb2p25"}
PRDGEN_B_PREFIX[gfs_0p25_s2]=${PRDGEN_B_PREFIX[gfs_0p25_s2]:-"pgrb2.0p25."}
PRDGEN_B_LIST_F00[gfs_0p25_s2]=${PRDGEN_B_LIST_F00[gfs_0p25_s2]:-"gefs_pgrb2ab_f00.parm"}
PRDGEN_B_LIST_FHH[gfs_0p25_s2]=${PRDGEN_B_LIST_FHH[gfs_0p25_s2]:-"gefs_pgrb2ab_fhh.parm"}
# GFS Stream 3 [0.25°]
PRDGEN_GRID[gfs_0p25_s3]=${PRDGEN_GRID[gfs_0p25_s3]:-"0p25"}
PRDGEN_GRID_SPEC[gfs_0p25_s3]=${PRDGEN_GRID_SPEC[gfs_0p25_s3]:-"latlon 0:1440:0.25 90:721:-0.25"}
PRDGEN_HOURS[gfs_0p25_s3]=${PRDGEN_HOURS[gfs_0p25_s3]:-"{$(( ${FHOUTHF} * 2 ))..${FHMAXHF}..$(( ${FHOUTHF} * 3 ))}"}
PRDGEN_SUBMC[gfs_0p25_s3]=${PRDGEN_SUBMC[gfs_0p25_s3]:-"prd0p25"}
PRDGEN_A_DIR[gfs_0p25_s3]=${PRDGEN_A_DIR[gfs_0p25_s3]:-"pgrb2sp25"}
PRDGEN_A_PREFIX[gfs_0p25_s3]=${PRDGEN_A_PREFIX[gfs_0p25_s3]:-"pgrb2s.0p25."}
PRDGEN_A_LIST_F00[gfs_0p25_s3]=${PRDGEN_A_LIST_F00[gfs_0p25_s3]:-"gefs_pgrb2a_f00.parm_0p25"}
PRDGEN_A_LIST_FHH[gfs_0p25_s3]=${PRDGEN_A_LIST_FHH[gfs_0p25_s3]:-"gefs_pgrb2a_fhh.parm_0p25"}
PRDGEN_B_DIR[gfs_0p25_s3]=${PRDGEN_B_DIR[gfs_0p25_s3]:-"pgrb2p25"}
PRDGEN_B_PREFIX[gfs_0p25_s3]=${PRDGEN_B_PREFIX[gfs_0p25_s3]:-"pgrb2.0p25."}
PRDGEN_B_LIST_F00[gfs_0p25_s3]=${PRDGEN_B_LIST_F00[gfs_0p25_s3]:-"gefs_pggb2ab_f00.parm"}
PRDGEN_B_LIST_FHH[gfs_0p25_s3]=${PRDGEN_B_LIST_FHH[gfs_0p25_s3]:-"gefs_pgrb2ab_fhh.parm"}
# Aerosol steam 0.50°
PRDGEN_GRID[aer_0p50]=${PRDGEN_GRID[aer_0p50]:-"0p5"}
PRDGEN_GRID_SPEC[aer_0p50]=${PRDGEN_GRID_SPEC[aer_0p50]:-"latlon 0:720:0.5 90:361:-0.5"}
PRDGEN_HOURS[aer_0p50]=${PRDGEN_HOURS[aer_0p50]:-"{0..${FHMAXHF}..${FHOUTHF}} {$(( $FHMAXHF + ${FHOUTLF} ))..${fhmax}..${FHOUTLF}}"}
PRDGEN_SUBMC[aer_0p50]=${PRDGEN_SUBMC[aer_0p50]:-"prd0p50"}
PRDGEN_A_DIR[aer_0p50]=${PRDGEN_A_DIR[aer_0p50]:-"pgrb2ap5"}
PRDGEN_A_PREFIX[aer_0p50]=${PRDGEN_A_PREFIX[aer_0p50]:-"a3d_0p50."}
PRDGEN_A_LIST_F00[aer_0p50]=${PRDGEN_A_LIST_F00[aer_0p50]:-"gefs_prgb2a_aer_3d.parm"}
PRDGEN_A_LIST_FHH[aer_0p50]=${PRDGEN_A_LIST_FHH[aer_0p50]:-"gefs_prgb2a_aer_3d.parm"}
PRDGEN_B_DIR[aer_0p50]=${PRDGEN_B_DIR[aer_0p50]:-""}
PRDGEN_B_PREFIX[aer_0p50]=${PRDGEN_B_PREFIX[aer_0p50]:-"pgrb2b.0p50."}
PRDGEN_B_LIST_F00[aer_0p50]=${PRDGEN_B_LIST_F00[aer_0p50]:-""}
PRDGEN_B_LIST_FHH[aer_0p50]=${PRDGEN_B_LIST_FHH[aer_0p50]:-""}
# Aerosol Stream [0.25°]
PRDGEN_GRID[aer_0p25]=${PRDGEN_GRID[aer_0p25]:-"0p25"}
PRDGEN_GRID_SPEC[aer_0p25]=${PRDGEN_GRID_SPEC[aer_0p25]:-"latlon 0:1440:0.25 90:721:-0.25"}
PRDGEN_HOURS[aer_0p25]=${PRDGEN_HOURS[aer_0p25]:-"{0..${FHMAXHF}..${FHOUTHF}} {$(( $FHMAXHF + ${FHOUTLF} ))..${fhmax}..${FHOUTLF}}"}
PRDGEN_SUBMC[aer_0p25]=${PRDGEN_SUBMC[aer_0p25]:-"prd0p25"}
PRDGEN_A_DIR[aer_0p25]=${PRDGEN_A_DIR[aer_0p25]:-"pgrb2ap25"}
PRDGEN_A_PREFIX[aer_0p25]=${PRDGEN_A_PREFIX[aer_0p25]:-"a2d_0p25."}
PRDGEN_A_LIST_F00[aer_0p25]=${PRDGEN_A_LIST_F00[aer_0p25]:-"gefs_prgb2a_aer_2d.parm"}
PRDGEN_A_LIST_FHH[aer_0p25]=${PRDGEN_A_LIST_FHH[aer_0p25]:-"gefs_prgb2a_aer_2d.parm"}
PRDGEN_B_DIR[aer_0p25]=${PRDGEN_B_DIR[aer_0p25]:-""}
PRDGEN_B_PREFIX[aer_0p25]=${PRDGEN_B_PREFIX[aer_0p25]:-"pgrb2b.0p25."}
PRDGEN_B_LIST_F00[aer_0p25]=${PRDGEN_B_LIST_F00[aer_0p25]:-""}
PRDGEN_B_LIST_FHH[aer_0p25]=${PRDGEN_B_LIST_FHH[aer_0p25]:-""}
export PRDGEN_GRID
export PRDGEN_GRID_SPEC
export PRDGEN_HOURS
export PRDGEN_SUBMC
export PRDGEN_A_DIR
export PRDGEN_A_PREFIX
export PRDGEN_A_LIST_F00
export PRDGEN_A_LIST_FHH
export PRDGEN_B_DIR
export PRDGEN_B_PREFIX
export PRDGEN_B_LIST_F00
export PRDGEN_B_LIST_FHH
export PRDGEN_DO_ANALYSIS