Skip to content

Commit d530e7a

Browse files
committed
Mods for HRRR-smoke verification
1 parent d9e3b4c commit d530e7a

File tree

6 files changed

+68
-21
lines changed

6 files changed

+68
-21
lines changed

parm/data_locations.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,13 +279,16 @@ HRRR:
279279
archive_path:
280280
- /NCEPPROD/hpssprod/runhistory/rh{yyyy}/{yyyymm}/{yyyymmdd}
281281
- /NCEPPROD/hpssprod/runhistory/rh{yyyy}/{yyyymm}/{yyyymmdd}
282+
- /NCEPPROD/hpssprod/runhistory/rh{yyyy}/{yyyymm}/{yyyymmdd}
282283
archive_internal_dir:
283284
- ./
284285
- ./
286+
- ./
285287
archive_file_names:
286288
# HRRR forecasts are binned into 6 hour tar files.
287289
- gpfs_hps_nco_ops_com_hrrr_prod_hrrr.{yyyymmdd}_conus{bin6}.wrf.tar
288290
- com_hrrr_prod_hrrr.{yyyymmdd}_conus{bin6}.wrf.tar
291+
- com_hrrr_v4.1_hrrr.{yyyymmdd}_conus{bin6}.wrf.tar
289292
file_names: &hrrr_file_names
290293
anl:
291294
- hrrr.t{hh}z.wrfprsf{fcst_hr:02d}.grib2

parm/wflow/pygraf.yaml

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,34 @@ task_run_pygraf:
77
maxtries: '1'
88
envars: &default_envars
99
GLOBAL_VAR_DEFNS_FP: '&GLOBAL_VAR_DEFNS_FP;'
10-
PDY: !cycstr "@Y@m@d"
11-
cyc: !cycstr "@H"
12-
fhr: '#fhr#'
13-
LOGDIR: !cycstr "&LOGDIR;"
14-
nprocs: '{{ parent.nnodes * parent.ppn }}'
10+
PDY:
11+
cyclestr:
12+
value: "@Y@m@d"
13+
cyc:
14+
cyclestr:
15+
value: "@H"
16+
LOGDIR:
17+
cyclestr:
18+
value: "&LOGDIR;"
19+
nprocs: '{{ task_pygraf.execution.batchargs.nodes * task_pygraf.execution.batchargs.tasks_per_node }}'
1520
PYGRAF_DIR: "&PYGRAF_DIR;"
16-
OUTDIR: !cycstr "&FCST_DIR;/pygraf"
21+
OUTDIR:
22+
cyclestr:
23+
value: "&FCST_DIR;/pygraf"
1724
VX_FCST_INPUT_BASEDIR: '{{ verification.VX_FCST_INPUT_BASEDIR }}'
18-
CAPTION: '{{ pygraf.caption }}'
19-
RESOLUTION: '{{ pygraf.resolution }}'
20-
join: !cycstr '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;'
25+
CAPTION: '{{ task_pygraf.envvars.caption }}'
26+
RESOLUTION: '{{ task_pygraf.envvars.resolution }}'
27+
join:
28+
cyclestr:
29+
value: '&LOGDIR;/{{ jobname }}_@Y@m@d@H&LOGEXT;'
30+
memory: '{{ task_pygraf.execution.batchargs.memory }}'
2131
native: '{{ platform.SCHED_NATIVE_CMD }}'
22-
nnodes: 1
23-
nodes: '{{ nnodes }}:ppn={{ ppn }}'
32+
nodes: '{{ task_pygraf.execution.batchargs.nodes }}:ppn={{ task_pygraf.execution.batchargs.tasks_per_node }}'
2433
partition: '{% if platform.get("PARTITION_DEFAULT") %}&PARTITION_DEFAULT;{% else %}None{% endif %}'
25-
ppn: 24
2634
queue: '&QUEUE_DEFAULT;'
27-
walltime: 01:00:00
35+
walltime: '{{ task_pygraf.execution.batchargs.walltime }}'
2836

29-
command: !cycstr '&LOAD_MODULES_RUN_TASK; "pygraf" "&USHdir;/run_pygraf.sh"'
37+
command: '&LOAD_MODULES_RUN_TASK; "pygraf" "&USHdir;/run_pygraf.sh"'
3038
dependency:
3139
and:
3240
metataskdep_check_post_output: &check_post_output

scripts/exregional_run_met_pcpcombine.sh

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,20 @@ if [ "${FCST_OR_OBS}" = "FCST" ]; then
205205
PCP_COMBINE_METHOD="USER_DEFINED"
206206

207207
if [ "${FIELD_GROUP}" = "PM25" ]; then
208-
# Need to combine two fields (different PM types) and convert units from forecast files to create PM25 equivalent to obs
209-
PCP_COMBINE_COMMAND="-add {FCST_PCP_COMBINE_INPUT_DIR}/{FCST_PCP_COMBINE_INPUT_TEMPLATE} 'name=\"MASSDEN\"; level=\"Z8\"; GRIB2_aerosol_type=62010; convert(x)=x*1e9;' {FCST_PCP_COMBINE_INPUT_DIR}/{FCST_PCP_COMBINE_INPUT_TEMPLATE} 'name=\"MASSDEN\"; level=\"Z8\"; GRIB2_aerosol_type=62001; GRIB2_aerosol_interval_type=0; convert(x)=x*1e9;'"
208+
if [ "${FCST_SMOKE_TYPE}" = "HRRR" ]; then
209+
# for HRRR, all PM 2.5 is a single variable, so just pass through
210+
PCP_COMBINE_COMMAND="-add {FCST_PCP_COMBINE_INPUT_DIR}/{FCST_PCP_COMBINE_INPUT_TEMPLATE} -field 'name=\"MASSDEN\"; level=\"Z8\"; convert(x)=x*1e9;'"
211+
elif [ "${FCST_SMOKE_TYPE}" = "RRFS" ]; then
212+
# Need to combine two fields (different PM types) and convert units from forecast files to create PM25 equivalent to obs
213+
PCP_COMBINE_COMMAND="-add {FCST_PCP_COMBINE_INPUT_DIR}/{FCST_PCP_COMBINE_INPUT_TEMPLATE} 'name=\"MASSDEN\"; level=\"Z8\"; GRIB2_aerosol_type=62010; convert(x)=x*1e9;' {FCST_PCP_COMBINE_INPUT_DIR}/{FCST_PCP_COMBINE_INPUT_TEMPLATE} 'name=\"MASSDEN\"; level=\"Z8\"; GRIB2_aerosol_type=62001; GRIB2_aerosol_interval_type=0; convert(x)=x*1e9;'"
214+
fi
210215
elif [ "${FIELD_GROUP}" = "PM10" ]; then
211-
# for PM10, command is just a passthrough
212-
PCP_COMBINE_COMMAND="-add {FCST_PCP_COMBINE_INPUT_DIR}/{FCST_PCP_COMBINE_INPUT_TEMPLATE} -field 'name=\"MASSDEN\"; level=\"Z8\"; GRIB2_aerosol_type=62001; GRIB2_aerosol_interval_type=2; convert(x)=x*1e9;'"
216+
if [ "${FCST_SMOKE_TYPE}" = "RRFS" ]; then
217+
# for PM10, command is just a passthrough
218+
PCP_COMBINE_COMMAND="-add {FCST_PCP_COMBINE_INPUT_DIR}/{FCST_PCP_COMBINE_INPUT_TEMPLATE} -field 'name=\"MASSDEN\"; level=\"Z8\"; GRIB2_aerosol_type=62001; GRIB2_aerosol_interval_type=2; convert(x)=x*1e9;'"
219+
else
220+
print_err_msg_exit "PM10 only available for RRFS output, not available for ${FCST_SMOKE_TYPE}"
221+
fi
213222
fi
214223
fi
215224
elif [ "${FCST_OR_OBS}" = "OBS" ]; then

ush/config_defaults.yaml

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2669,6 +2669,14 @@ verification:
26692669

26702670
AIRNOW_INPUT_FORMAT: "airnowhourlyaqobs"
26712671

2672+
# FCST_SMOKE_TYPE:
2673+
# Different forecast data have different particulate matter variables that must be verified differently.
2674+
# Options are:
2675+
# HRRR: HRRR output contains only PM 2.5 in a variable named MASSDEN.
2676+
# RRFS: RRFS output contains three MASSDEN variables, one of which is PM 10 and the other two combined
2677+
# are summed in PCP Combine task to get total PM 2.5
2678+
2679+
FCST_SMOKE_TYPE: RRFS
26722680
#
26732681
# OBS_DATA_STORE*:
26742682
# Location(s) to retrieve observation data from. Valid values are "aws" and/or "hpss", see
@@ -3174,6 +3182,13 @@ fire:
31743182
FIRE_IGNITION_START_TIME: 6480
31753183
FIRE_IGNITION_END_TIME: 7000
31763184

3177-
pygraf:
3178-
caption: "plot"
3179-
resolution: 150
3185+
task_pygraf:
3186+
execution:
3187+
batchargs:
3188+
memory: 60G
3189+
nodes: 1
3190+
tasks_per_node: 24
3191+
walltime: 00:30:00
3192+
envvars:
3193+
caption: "plot"
3194+
resolution: 150

ush/experiment.jsonschema

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,13 @@
212212
"verification": {
213213
"additionalProperties": true,
214214
"properties": {
215+
"FCST_SMOKE_TYPE": {
216+
"enum": [
217+
"HRRR",
218+
"RRFS"
219+
],
220+
"type": "string"
221+
},
215222
"VX_APCP_ACCUMS_HRS": {
216223
"prefixItems": [
217224
{

ush/run_pygraf.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
cd ${PYGRAF_DIR}
4+
python3 -u create_graphics.py maps -d ${VX_FCST_INPUT_BASEDIR}/${PDY}${cyc} -f 0 ${FCST_LEN_HRS} --file_type prs --file_tmpl "hrrr.t${cyc}z.wrfprsf{FCST_TIME:02d}.grib2" --images image_lists/hrrr_smoke.yml hourly -m "${CAPTION}" -n $nprocs -o $OUTDIR -s ${PDY}${cyc} -r ${RESOLUTION}
5+

0 commit comments

Comments
 (0)