Skip to content

Warning catalog (W1–W10)

nwp-compose validate, generate, and run collect a set of numbered warnings. Most are advisory (printed in yellow on stderr, the run proceeds). The WRF physics codes W-7 through W-10 are different: a configuration that trips them is blocked unless you explicitly acknowledge it, because it will produce a forecast that crashes or is physically meaningless.

Code Triggers when Fix
W1 cycling.lbc_interval_default is not one of {1, 3, 6} hours Use a standard boundary cadence; non-standard intervals are rarely what you want.
W2 forecast_hours_default is not a whole multiple of lbc_interval_default Adjust one so the last boundary update lands at or before the forecast end.
W3 lbc_interval_default == 1 and a data_ingest uses data_source: gfs GFS is not published hourly for boundaries; use a 3- or 6-hour interval, or RAP.
W4 Peak post-processing rank occupancy exceeds the node estimate (mpassit_nprocs × max_active > tasks_per_node × nodes) Lower mpassit concurrency (max active) or raise the node estimate (globals.estimated_node_count).
Code Path Triggers when Fix Blocks?
W5 MPAS mpas_run.dt > dx_km × 6.0 (CFL guideline) Reduce the time step or coarsen the mesh. advisory
W-7 WRF cu_physics != 0 and dx_km < 4 (cumulus scheme at convection-permitting scale) Turn off the cumulus parameterization (cu_physics: 0) below ~4 km. blocks
W-8 WRF time_step > 6 × dx_km (CFL analog) Reduce time_step. blocks
W-9 WRF w_damping != 1 and dx_km < 4 Enable w_damping: 1 at CP scale to avoid vertical-velocity blowups. blocks
W-10 WRF (bl_pbl_physics, sf_sfclay_physics) is not a legal pairing Choose a PBL/surface-layer pair from the compatible set. blocks
Code Triggers when Fix
W-REQ-EXE A component’s declared requires.executables / must_have entry is not on PATH module load it, or install it into your environment. nwp-compose doctor checks these too.
W-REQ-ENV A component’s declared requires.env_vars entry is unset Export the variable before running.
Terminal window
nwp-compose validate forecast.yaml --no-warnings # hide advisory W-codes (does NOT bypass blocks)

--no-warnings only silences advisory output. It does not disable the W-7..W-10 hard block — that requires acknowledge_unphysical: true in the YAML, which is the auditable, deliberate escape hatch.