-
Notifications
You must be signed in to change notification settings - Fork 177
/
Copy pathconfig.base.emc.dyn
393 lines (329 loc) · 11.8 KB
/
config.base.emc.dyn
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
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
#! /usr/bin/env bash
########## config.base ##########
# Common to all steps
echo "BEGIN: config.base"
# Machine environment
export machine="@MACHINE@"
# EMC parallel or NCO production
export RUN_ENVIR="emc"
# Account, queue, etc.
export ACCOUNT="@ACCOUNT@"
export QUEUE="@QUEUE@"
export QUEUE_SERVICE="@QUEUE_SERVICE@"
export PARTITION_BATCH="@PARTITION_BATCH@"
export PARTITION_SERVICE="@PARTITION_SERVICE@"
# Project to use in mass store:
HPSS_PROJECT=emc-global
# Directories relative to installation areas:
export HOMEgfs=@HOMEgfs@
export PARMgfs=${HOMEgfs}/parm
export FIXgfs=${HOMEgfs}/fix
export USHgfs=${HOMEgfs}/ush
export UTILgfs=${HOMEgfs}/util
export EXECgfs=${HOMEgfs}/exec
export SCRgfs=${HOMEgfs}/scripts
export FIXcice=${HOMEgfs}/fix/cice
export FIXmom=${HOMEgfs}/fix/mom6
export FIXreg2grb2=${HOMEgfs}/fix/reg2grb2
########################################################################
# GLOBAL static environment parameters
export PACKAGEROOT="@PACKAGEROOT@" # TODO: set via prod_envir in Ops
export COMROOT="@COMROOT@" # TODO: set via prod_envir in Ops
export COMINsyn="@COMINsyn@"
export DMPDIR="@DMPDIR@"
# USER specific paths
export HOMEDIR="@HOMEDIR@"
export STMP="@STMP@"
export PTMP="@PTMP@"
export NOSCRUB="@NOSCRUB@"
# Base directories for various builds
export BASE_GIT="@BASE_GIT@"
# Toggle to turn on/off GFS downstream processing.
export DO_BUFRSND="NO" # BUFR sounding products
export DO_GEMPAK="NO" # GEMPAK products
export DO_AWIPS="NO" # AWIPS products
export WAFSF="NO" # WAFS products
export DO_VRFY="YES" # VRFY step
# NO for retrospective parallel; YES for real-time parallel
# arch.sh uses REALTIME for MOS. Need to set REALTIME=YES
# if want MOS written to HPSS. Should update arch.sh to
# use RUNMOS flag (currently in config.vrfy)
export REALTIME="YES"
# Experiment mode (cycled or forecast-only)
export MODE="@MODE@" # cycled/forecast-only
####################################################
# DO NOT ADD MACHINE DEPENDENT STUFF BELOW THIS LINE
# IF YOU HAVE TO MAKE MACHINE SPECIFIC CHANGES BELOW
# FEEL FREE TO MOVE THEM ABOVE THIS LINE TO KEEP IT
# CLEAR
####################################################
# Build paths relative to $HOMEgfs
export FIXgsi="${HOMEgfs}/fix/gsi"
export HOMEfv3gfs="${HOMEgfs}/sorc/fv3gfs.fd"
export HOMEpost="${HOMEgfs}"
export HOMEobsproc="${BASE_GIT}/obsproc/v1.1.2"
# CONVENIENT utility scripts and other environment parameters
export NCP="/bin/cp -p"
export NMV="/bin/mv"
export NLN="/bin/ln -sf"
export VERBOSE="YES"
export KEEPDATA="NO"
export CHGRP_RSTPROD="@CHGRP_RSTPROD@"
export CHGRP_CMD="@CHGRP_CMD@"
export NCDUMP="$NETCDF/bin/ncdump"
export NCLEN="$HOMEgfs/ush/getncdimlen"
# Machine environment, jobs, and other utility scripts
export BASE_ENV="${HOMEgfs}/env"
export BASE_JOB="${HOMEgfs}/jobs/rocoto"
# EXPERIMENT specific environment parameters
export SDATE=@SDATE@
export EDATE=@EDATE@
export EXP_WARM_START="@EXP_WARM_START@"
export assim_freq=6
export PSLOT="@PSLOT@"
export EXPDIR="@EXPDIR@/${PSLOT}"
export ROTDIR="@ROTDIR@/${PSLOT}"
export ROTDIR_DUMP="YES" #Note: A value of "NO" does not currently work
export DUMP_SUFFIX=""
if [[ "${CDATE}" -ge "2019092100" && "${CDATE}" -le "2019110700" ]]; then
export DUMP_SUFFIX="p" # Use dumps from NCO GFS v15.3 parallel
fi
export DATAROOT="${STMP}/RUNDIRS/${PSLOT}" # TODO: set via prod_envir in Ops
export RUNDIR="${DATAROOT}" # TODO: Should be removed; use DATAROOT instead
export ARCDIR="${NOSCRUB}/archive/${PSLOT}"
export ATARDIR="@ATARDIR@"
# Commonly defined parameters in JJOBS
export envir=${envir:-"prod"}
export NET="gfs" # NET is defined in the job-card (ecf)
export RUN=${RUN:-${CDUMP:-"gfs"}} # RUN is defined in the job-card (ecf); CDUMP is used at EMC as a RUN proxy
# TODO: determine where is RUN actually used in the workflow other than here
# TODO: is it possible to replace all instances of ${CDUMP} to ${RUN} to be
# consistent w/ EE2?
export COMIN_OBS=${COMIN_OBS:-${ROTDIR}/${CDUMP/enkf}.${PDY}/${cyc}/obs}
export COMIN_GES_OBS=${COMIN_GES_OBS:-${ROTDIR}/${CDUMP/enkf}.${PDY}/${cyc}/obs}
export COMINatmos=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos
export COMOUTatmos=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos
export COMINwave=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/wave
export COMOUTwave=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/wave
export COMINocean=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/ocean
export COMOUTocean=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/ocean
export COMINice=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/ice
export COMOUTice=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/ice
export COMINaero=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/chem
export COMOUTaero=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/chem
export ERRSCRIPT=${ERRSCRIPT:-'eval [[ $err = 0 ]]'}
export LOGSCRIPT=${LOGSCRIPT:-""}
#export ERRSCRIPT=${ERRSCRIPT:-"err_chk"}
#export LOGSCRIPT=${LOGSCRIPT:-"startmsg"}
export REDOUT="1>"
export REDERR="2>"
export SENDECF=${SENDECF:-"NO"}
export SENDCOM=${SENDCOM:-"NO"}
export SENDSDM=${SENDSDM:-"NO"}
export SENDDBN_NTC=${SENDDBN_NTC:-"NO"}
export SENDDBN=${SENDDBN:-"NO"}
export DBNROOT=${DBNROOT:-${UTILROOT}/fakedbn}
# APP settings
export APP=@APP@
# Defaults:
export DO_ATM="YES"
export DO_COUPLED="NO"
export DO_WAVE="NO"
export DO_OCN="NO"
export DO_ICE="NO"
export DO_AERO="NO"
export CCPP_SUITE="@CCPP_SUITE@"
export WAVE_CDUMP="" # When to include wave suite: gdas, gfs, or both
export DOBNDPNT_WAVE="NO"
export cplwav2atm=".false."
export FRAC_GRID=".true."
# Set operational resolution
export OPS_RES="C768" # Do not change
# Resolution specific parameters
export LEVS=128
export CASE="@CASECTL@"
export CASE_ENKF="@CASEENS@"
case "$CASE" in
"C48") export OCNRES=500;;
"C96") export OCNRES=100;;
"C192") export OCNRES=050;;
"C384") export OCNRES=025;;
"C768") export OCNRES=025;;
*) export OCNRES=025;;
esac
export ICERES=$OCNRES
case "${APP}" in
ATM)
export confignamevarfornems="atm"
;;
ATMA)
export DO_AERO="YES"
export confignamevarfornems="atm_aero"
;;
ATMW)
export DO_COUPLED="YES"
export DO_WAVE="YES"
export WAVE_CDUMP="both"
export confignamevarfornems="leapfrog_atm_wav"
;;
NG-GODAS)
export DO_ATM="NO"
export DO_OCN="YES"
export DO_ICE="YES"
;;
S2S*)
export DO_COUPLED="YES"
export DO_OCN="YES"
export DO_ICE="YES"
export CCPP_SUITE="FV3_GFS_v17_coupled_p8"
export confignamevarfornems="cpld"
if [[ "${APP}" =~ A$ ]]; then
export DO_AERO="YES"
export confignamevarfornems="${confignamevarfornems}_aero"
fi
if [[ "${APP}" =~ ^S2SW ]]; then
export DO_WAVE="YES"
export WAVE_CDUMP="both"
export cplwav2atm=".true."
export confignamevarfornems="${confignamevarfornems}_wave"
fi
source ${EXPDIR}/config.defaults.s2sw
;;
*)
echo "Unrecognized APP: ${1}"
exit 1
;;
esac
# Surface cycle update frequency
if [[ "${CDUMP}" =~ "gdas" ]] ; then
export FHCYC=1
export FTSFS=10
elif [[ "${CDUMP}" =~ "gfs" ]] ; then
export FHCYC=24
fi
# Output frequency of the forecast model (for cycling)
export FHMIN=0
export FHMAX=9
export FHOUT=3 # Will be changed to 1 in config.base if DO_GLDAS is set or (DOHYBVAR set to NO and l4densvar set to false)
# Cycle to run EnKF (set to BOTH for both gfs and gdas)
export EUPD_CYC="gdas"
# GFS cycle info
export gfs_cyc=@gfs_cyc@ # 0: no GFS cycle, 1: 00Z only, 2: 00Z and 12Z only, 4: all 4 cycles.
# GFS output and frequency
export FHMIN_GFS=0
export FHMAX_GFS_00=${FHMAX_GFS_00:-384}
export FHMAX_GFS_06=${FHMAX_GFS_06:-384}
export FHMAX_GFS_12=${FHMAX_GFS_12:-384}
export FHMAX_GFS_18=${FHMAX_GFS_18:-384}
export FHMAX_GFS=$(eval echo \${FHMAX_GFS_${cyc}})
export FHOUT_GFS=${FHOUT_GFS:-3}
export FHMAX_HF_GFS=${FHMAX_HF_GFS:-0}
export FHOUT_HF_GFS=${FHOUT_HF_GFS:-1}
if (( gfs_cyc != 0 )); then
export STEP_GFS=$(( 24 / gfs_cyc ))
else
export STEP_GFS="0"
fi
export ILPOST=1 # gempak output frequency up to F120
# GFS restart interval in hours
export restart_interval_gfs=0
export QUILTING=".true."
export OUTPUT_GRID="gaussian_grid"
export WRITE_DOPOST=".true." # WRITE_DOPOST=true, use inline POST
export WRITE_NSFLIP=".true."
# IAU related parameters
export DOIAU="YES" # Enable 4DIAU for control with 3 increments
export IAUFHRS="3,6,9"
export IAU_FHROT=$(echo ${IAUFHRS} | cut -c1)
export IAU_DELTHRS=6
export IAU_OFFSET=6
export DOIAU_ENKF=${DOIAU:-"YES"} # Enable 4DIAU for EnKF ensemble
export IAUFHRS_ENKF="3,6,9"
export IAU_DELTHRS_ENKF=6
# Use Jacobians in eupd and thereby remove need to run eomg
export lobsdiag_forenkf=".true."
# run GLDAS to spin up land ICs
export DO_GLDAS="NO"
export gldas_cyc=00
# Exception handling that when DO_GLDAS is set, the FHOUT must be 1
if [[ ${DO_GLDAS} = "YES" ]]; then
export FHOUT=1
fi
# if [[ "$SDATE" -lt "2019020100" ]]; then # no rtofs in GDA
# export DO_WAVE="NO"
# echo "WARNING: Wave suite turned off due to lack of RTOFS in GDA for SDATE"
# fi
# Microphysics Options: 99-ZhaoCarr, 8-Thompson; 6-WSM6, 10-MG, 11-GFDL
export imp_physics=@IMP_PHYSICS@
# Shared parameters
# DA engine
export DO_JEDIVAR="NO"
export DO_JEDIENS="NO"
export DO_JEDIOCNVAR="NO"
# Hybrid related
export DOHYBVAR="@DOHYBVAR@"
export NMEM_ENKF=@NMEM_ENKF@
export NMEM_EFCS=30
export SMOOTH_ENKF="NO"
export l4densvar=".true."
export lwrite4danl=".true."
# EnKF output frequency
if [[ ${DOHYBVAR} = "YES" ]]; then
export FHMIN_ENKF=3
export FHMAX_ENKF=9
export FHMAX_ENKF_GFS=120
export FHOUT_ENKF_GFS=3
if [ $l4densvar = ".true." ]; then
export FHOUT=1
export FHOUT_ENKF=1
else
export FHOUT_ENKF=3
fi
fi
# if 3DVAR and IAU
if [[ ${DOHYBVAR} == "NO" && ${DOIAU} == "YES" ]]; then
export IAUFHRS="6"
export IAU_FHROT="3"
export IAU_FILTER_INCREMENTS=".true."
export IAUFHRS_ENKF="6"
fi
# Check if cycle is cold starting, DOIAU off, or free-forecast mode
if [[ "${MODE}" = "cycled" && "${SDATE}" = "${CDATE}" && ${EXP_WARM_START} = ".false." ]] || [[ "${DOIAU}" = "NO" ]] || [[ "${MODE}" = "forecast-only" && ${EXP_WARM_START} = ".false." ]] ; then
export IAU_OFFSET=0
export IAU_FHROT=0
fi
# turned on nsst in anal and/or fcst steps, and turn off rtgsst
export DONST="YES"
if [[ ${DONST} = "YES" ]]; then export FNTSFA=" "; fi
# The switch to apply SST elevation correction or not
export nst_anl=.true.
# Make the nsstbufr file on the fly or use the GDA version
export MAKE_NSSTBUFR="@MAKE_NSSTBUFR@"
# Make the aircraft prepbufr file on the fly or use the GDA version
export MAKE_ACFTBUFR="@MAKE_ACFTBUFR@"
# Analysis increments to zero in CALCINCEXEC
export INCREMENTS_TO_ZERO="'liq_wat_inc','icmr_inc'"
# Write analysis files for early cycle EnKF
export DO_CALC_INCREMENT_ENKF_GFS="YES"
# Stratospheric increments to zero
export INCVARS_ZERO_STRAT="'sphum_inc','liq_wat_inc','icmr_inc'"
export INCVARS_EFOLD="5"
# Swith to generate netcdf or binary diagnostic files. If not specified,
# script default to binary diagnostic files. Set diagnostic file
# variables here since used in both DA and vrfy jobs
export netcdf_diag=".true."
export binary_diag=".false."
# Verification options
export DO_METP="YES" # Run METPLUS jobs - set METPLUS settings in config.metp
# Archiving options
export HPSSARCH="@HPSSARCH@" # save data to HPSS archive
export LOCALARCH="@LOCALARCH@" # save data to local archive
if [[ ${HPSSARCH} = "YES" ]] && [[ ${LOCALARCH} = "YES" ]]; then
echo "Both HPSS and local archiving selected. Please choose one or the other."
exit 2
fi
export ARCH_CYC=00 # Archive data at this cycle for warm_start capability
export ARCH_WARMICFREQ=4 # Archive frequency in days for warm_start capability
export ARCH_FCSTICFREQ=1 # Archive frequency in days for gdas and gfs forecast-only capability
export DELETE_COM_IN_ARCHIVE_JOB="YES" # NO=retain ROTDIR. YES default in arch.sh and earc.sh.
echo "END: config.base"