jgfs_atmos_npoess_pgrb2_0p5 ecf (v17) Analysis - TerrenceMcGuinness-NOAA/global-workflow GitHub Wiki
Branch / tenant: dev/gfs.v17 (gw_v17)
Path: ecf/scripts/gfs/product/atmos/gempak/jgfs_atmos_npoess_pgrb2_0p5.ecf
Analysis date: 2026-06-11
Method: AWS Bedrock AgentCore agentcore-mcp-rag MCP (graph traversal, GraphRAG,
code-context) cross-checked against the on-disk v17 worktree.
jgfs_atmos_npoess_pgrb2_0p5.ecf is the NCO production ecFlow task that produces
two product families from GFS output: (1) NPOESS 0.5-degree GRIB2 subsets for f000-f024,
and (2) simulated GOES satellite imagery regridded to 0.25-degree and CONUS Lambert
grids for f000-f180. Unlike the _master templates, this is a single-instance task
(one per cycle, not per forecast hour) — it loops internally over all hours. It calls
JGFS_ATMOS_PGRB2_SPEC_NPOESS, which drives exgfs_atmos_grib2_special_npoess.sh.
#PBS -S /bin/bash
#PBS -N gfs_atmos_npoess_pgrb2_0p5_%CYC%
#PBS -j oe
#PBS -q %QUEUE%
#PBS -A %PROJ%-%PROJENVIR%
#PBS -l walltime=03:30:00
#PBS -l select=1:mpiprocs=1:ompthreads=1:ncpus=1:mem=3GB
#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 run
module list
############################################################
# CALL executable job script here
############################################################
export HOMEglobal=${HOMEgfs}
export CDATE=${PDY}${cyc}
#### ${HOMEgfs}/dev/job_cards/rocoto/npoess.sh
${HOMEgfs}/jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS
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, 1 cpu, 3 GB, 3.5-hour wall — long-running because it loops over all forecast hours internally and waits for upstream products. |
%include <head.h> / <envir-p1.h>
|
NCO boilerplate. |
load_modules.sh run |
v17 centralized module loading (general run set). |
No WGF/FHR3/FHR_LIST exports |
This is not a _master template — it is a single task per cycle. |
${HOMEgfs}/jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS |
The J-Job. Non-zero exit triggers ecflow_client --abort. |
Unlike jgfs_atmos_gempak_master.ecf (one task per forecast hour), this script is a
single ecFlow task per cycle (gfs_atmos_npoess_pgrb2_0p5_%CYC%). The internal
forecast-hour loop runs from f000 to f024 (NPOESS) and f000 to f180 (GOES simulated),
waiting for upstream GRIB products via wait_for_file.
The TODO comment in the J-Job notes: "This job is not part of the rocoto suite" — confirming it exists only in the NCO ecFlow path.
ecf/defs/gfs_prod.def : task jgfs_atmos_npoess_pgrb2_0p5
+-- jgfs_atmos_npoess_pgrb2_0p5.ecf (PBS submit)
+-- ${HOMEgfs}/jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS (J-Job)
+-- ${SCRglobal}/exgfs_atmos_grib2_special_npoess.sh
+-- wgrib2 (filter + regrid)
+-- wait_for_file (polling for upstream products)
Confirmed via MCP graph (tenant gw_v17): JGFS_ATMOS_PGRB2_SPEC_NPOESS is a suite
leaf with 0 direct dependents.
The ex-script generates two product families:
| Product | Source | Method | Output |
|---|---|---|---|
${RUN}.${cycle}.pgrb2f${fhr3}.npoess |
0p50 GRIB2 (pres_a + pres_b) | wgrib2 parameter filtering via global_npoess_paramlist_g2
|
${COMOUT_ATMOS_GOES}/ |
DBN alert: GFS_PGBNPOESS
| Product | Source | Method | Output |
|---|---|---|---|
goessimpgrb2.0p25.f${fhr3} |
GOES master GRIB2 | wgrib2 regrid to 0.25-degree global | ${COMOUT_ATMOS_GOES}/ |
goessimpgrb2.0p25.f${fhr3}.idx |
(index) | wgrib2 -s | ${COMOUT_ATMOS_GOES}/ |
goessimpgrb2f${fhr3}.grd221 |
GOES master GRIB2 | wgrib2 regrid to Lambert CONUS (grid 221) | ${COMOUT_ATMOS_GOES}/ |
DBN alerts: GFS_GOESSIMPGB2_0P25, GFS_GOESSIMPGB2_0P25_WIDX, GFS_GOESSIMGRD221_PGB2
The script uses bilinear interpolation by default, with neighbor for categorical fields (CSNOW/CRAIN/CFRZR/CICEP/ICSEV), budget for precipitation fields (APCP/ACPCP/PRATE/CPRAT), and 16/25-bit precision caps.
| Variable | Origin | Meaning |
|---|---|---|
COMIN_ATMOS_MASTER |
J-Job (declare -rx) |
Input: UPP GOES master GRIB2 files. |
COMIN_ATMOS_GRIB_0p50 |
J-Job (declare -rx) |
Input: 0.50-degree standard GRIB2 (pres_a/pres_b). |
COMOUT_ATMOS_GOES |
J-Job (declare -rx) |
Output: all NPOESS and GOES-sim products. |
FHMAX_GFS |
config.base | Max forecast hour; caps NPOESS range. |
FHMAX_GOES |
config.npoess | Max forecast hour for GOES simulation (default 180). |
FHOUT_GOES |
config.npoess | Hour increment for GOES loop. |
FHMIN_GFS |
config.base | Starting forecast hour. |
WGRIB2 |
module env | Path to wgrib2 executable. |
SENDDBN |
env / config | Controls DBNet alert distribution. |
PARMglobal |
jjob_header.sh | Parameter file directory (contains global_npoess_paramlist_g2). |
The J-Job sources jjob_header.sh -e "npoess" -c "base npoess", loading:
-
config.base— fundamental paths and settings. -
config.npoess— NPOESS/GOES-specific forecast hour ranges.
-
Single-instance with internal loop: unlike most v17
_mastertemplates that generate one task per hour, this task polls for upstream products and processes all hours in a single PBS job. The 3.5-hour walltime accommodates the wait. - Not in Rocoto suite: the TODO comment confirms this is NCO ecFlow-only.
- Dual-purpose job: combines both the NPOESS 0.5-degree subsetting and the GOES simulation regridding — two logically separate operations in one script.
-
Centralized module loading via
load_modules.sh run. -
HOMEglobalshim bridges v17 naming to NCO. -
Input dependency chain: depends on both
jgfs_atmos_product(for 0p50 GRIB2) andjgfs_atmos_goesupp(for GOES master files from UPP).
| Symbol | Change type | Risk | Direct dependents |
|---|---|---|---|
JGFS_ATMOS_PGRB2_SPEC_NPOESS |
behavior | LOW (0.10) | 0 (suite leaf) |
exgfs_atmos_grib2_special_npoess.sh |
signature | LOW | Single caller |
This is an isolated suite leaf. Changes to the NPOESS param list
(global_npoess_paramlist_g2) affect only this job. Changes to wait_for_file
behavior (shared ush utility) have wider impact.
- On-disk v17 worktree:
ecf/scripts/gfs/product/atmos/gempak/jgfs_atmos_npoess_pgrb2_0p5.ecf,dev/jobs/JGFS_ATMOS_PGRB2_SPEC_NPOESS,dev/scripts/exgfs_atmos_grib2_special_npoess.sh. -
agentcore-mcp-ragMCP (tenantgw_v17):get_change_impact.