jgfs_wave_postsbs_master ecf (v17) Analysis - TerrenceMcGuinness-NOAA/global-workflow GitHub Wiki
Branch / tenant: dev/gfs.v17 (gw_v17)
Path: ecf/scripts/gfs/product/wave/gridded/jgfs_wave_post_gridded_master.ecf
Note: Renamed from jgfs_wave_postsbs_master.ecf in v17. The Rocoto breadcrumb
still references wavepostsbs.sh.
Analysis date: 2026-06-11
Method: AWS Bedrock AgentCore agentcore-mcp-rag MCP cross-checked against the
on-disk v17 worktree.
jgfs_wave_postsbs_master.ecf (renamed to jgfs_wave_post_gridded_master.ecf in v17) is
the NCO production ecFlow task template that performs wave model post-processing —
converting WaveWatch III native output into standard gridded GRIB2 products for each
forecast hour. It is a _master template deployed per forecast hour. At runtime it calls
JGLOBAL_WAVE_POST_GRIDDED, which drives exglobal_wave_post_gridded.sh.
#PBS -S /bin/bash
#PBS -N gfs_wave_post_gridded_%CYC%_f%FHR%
#PBS -j oe
#PBS -q %QUEUE%
#PBS -A %PROJ%-%PROJENVIR%
#PBS -l walltime=01:30:00
#PBS -l select=1:mpiprocs=128:ompthreads=1:ncpus=128:mem=20GB
#PBS -l place=vscatter:shared
#PBS -l debug=true
model=gfs
export cyc="%CYC%"
%include <head.h>
%include <envir-p1.h>
############################################################
# Load modules
############################################################
source ${HOMEgfs}/dev/ush/load_modules.sh ufswm
module list
export WGF="%WGF%"
export FHR="%FHR%"
export FHR_LIST="%FHR_LIST%"
export FORECAST_HOUR="${FHR_LIST}"
############################################################
# CALL executable job script here
############################################################
export CDATE=${PDY}${cyc}
export HOMEglobal=${HOMEgfs}
#### ${HOMEgfs}/dev/job_cards/rocoto/wavepostsbs.sh
${HOMEgfs}/jobs/JGLOBAL_WAVE_POST_GRIDDED
if [ $? -ne 0 ]; then
ecflow_client --msg="***JOB ${ECF_NAME} ERROR RUNNING J-SCRIPT ***"
ecflow_client --abort
exit
fi
%include <tail.h>
%manual
%end| Section | Role |
|---|---|
#PBS directives |
PBS Pro: 1 node, 128 mpiprocs/cpus, 20 GB, 1.5-hour wall. Heavy compute for WW3 output regridding/interpolation. |
load_modules.sh ufswm |
Loads the UFS Weather Model modules (needed for wave post tools that link against WW3 libraries). |
WGF, FHR, FHR_LIST, FORECAST_HOUR
|
ecFlow placeholders. |
${HOMEgfs}/jobs/JGLOBAL_WAVE_POST_GRIDDED |
The J-Job. |
Single .ecf backs per-forecast-hour tasks (jgfs_wave_post_gridded_f000.ecf,
jgfs_wave_post_gridded_f003.ecf, etc.).
ecf/defs/gfs_prod.def : task jgfs_wave_post_gridded_fNNN
+-- jgfs_wave_post_gridded_master.ecf (PBS submit; deployed as *_fNNN.ecf)
+-- ${HOMEgfs}/jobs/JGLOBAL_WAVE_POST_GRIDDED (J-Job, shared GFS/GDAS/EnKF)
+-- wave_domain_grid.sh (sourced: grid config)
+-- ${SCRglobal}/exglobal_wave_post_gridded.sh (ex-script)
+-- ww3_ounf / ww3_grib (WW3 post tools)
Converts WW3 native binary output from the forecast into standard gridded GRIB2 files:
| Input | Output | Location |
|---|---|---|
WW3 history files (COMIN_WAVE_HISTORY) |
Gridded GRIB2 per wave grid | ${COMOUT_WAVE_GRID_${REGION}_${RES}}/ |
The J-Job iterates over wavepostGRD and waveinterpGRD grid lists, creating per-grid
output directories and processing each grid via the ex-script.
Uses the EE2-correct pattern: && true + err_exit.
| Variable | Origin | Meaning |
|---|---|---|
WGF |
suite edit
|
Wave component. |
FHR / FORECAST_HOUR
|
per-task edit
|
Forecast hour. |
wavepostGRD |
config.wavepostgridded | Grid IDs for direct post-processing. |
waveinterpGRD |
config.wavepostgridded | Grid IDs requiring interpolation. |
COMIN_WAVE_INIT |
J-Job (declare -rx) |
Wave initialization files (mod_def). |
COMIN_WAVE_HISTORY |
J-Job (declare -rx) |
Wave model history output. |
COMOUT_WAVE_GRID |
J-Job (declare -rx) |
Base output directory. |
COMOUT_WAVE_GRID_* |
J-Job (dynamic) | Per-grid output directories. |
ENSMEM |
env (optional) | Ensemble member number (supports EnKF wave post). |
The J-Job sources jjob_header.sh -e "wavepostgridded" -c "base wave wavepostgridded",
loading:
-
config.base— fundamental paths. -
config.wave— wave model settings. -
config.wavepostgridded— post grid lists and settings.
-
Renamed:
postsbs->post_griddedin v17 (the Rocoto breadcrumb retains the oldwavepostsbs.shname). -
UFS modules: loads
ufswm(not justrun) because WW3 post tools link against the model libraries. -
Shared J-Job: supports GFS, GDAS, and EnKF members via
ENSMEMconditional. -
Dynamic grid processing: uses
wave_domain_grid.shfor grid resolution. - Heavy resources: 128 cpus, 20 GB for WW3 output processing.
-
_mastertemplate with per-hour deployment. -
Centralized module loading via
load_modules.sh ufswm.
| Symbol | Change type | Risk | Direct dependents |
|---|---|---|---|
JGLOBAL_WAVE_POST_GRIDDED |
behavior | LOW (0.10) | 0 (per graph) |
exglobal_wave_post_gridded.sh |
signature | MEDIUM | Shared across GFS/GDAS/EnKF |
wave_domain_grid.sh |
behavior | MEDIUM | Shared across all wave jobs |
Note: although the graph shows 0 dependents, the wave gridded output feeds into
JGLOBAL_WAVE_GEMPAK and JGLOBAL_WAVE_PRDGEN_GRIDDED (AWIPS) downstream.
- On-disk v17 worktree:
ecf/scripts/gfs/product/wave/gridded/jgfs_wave_post_gridded_master.ecf,dev/jobs/JGLOBAL_WAVE_POST_GRIDDED. -
agentcore-mcp-ragMCP (tenantgw_v17):get_change_impact.