Components — overview & catalog
A forecast is a graph of components. Each component is a versioned, schema-declared unit that states its inputs, outputs, parameters, platform needs, the Cylc fragment it owns, and (for plugins) its prerequisites. List what is available on your install:
nwp-compose components list # core + discovered pluginsnwp-compose components list --json # machine-readableThe catalog
Section titled “The catalog”| Component | Role | Path | Fan-out | Notes |
|---|---|---|---|---|
data_ingest | ingest | shared | — | Unified GFS/RAP downloader (dispatches on data_source). |
subset_grib | preprocess | shared | — | wgrib2 bbox subsetter; optional in the ungrib graph. |
ungrib | preprocess | WRF + MPAS | — | GRIB2 → WPS intermediate; needs a data_ingest upstream. |
metgrid | preprocess | WRF | — | metgrid.exe; needs geogrid + ungrib. |
geogrid | sub-workflow | WRF | — | One-shot WPS geogrid; publishes geo_em.d??.nc. |
mesh_gen | sub-workflow | MPAS | — | One-shot MPAS static mesh; publishes .static.nc + partitions. |
init_atmosphere | model init | MPAS | — | ICs (init_case 7); needs ungrib. |
lbc | model init | MPAS | — | LBCs (init_case 9); needs init_atmosphere + ungrib. |
real | model init | WRF | — | real.exe IC+LBC generation; needs metgrid. |
mpas_run | model run | MPAS | — | atmosphere_model; emits a per-fhr completion message. |
wrf | model run | WRF | — | wrf.exe; emits a per-fhr completion message. |
mpassit | postprocess | MPAS | ✓ | Native → regular grid, per forecast hour. |
upp | postprocess | MPAS/shared | ✓ | UPP GRIB2 conversion, per forecast hour. |
archive_s3 | archive | MPAS/shared | ✓ | S3 upload, per forecast hour. |
housekeeping | housekeeping | shared | — | Daily (P1D) prune of work dirs. |
data_assimilation | reserved | — | — | Slot reserved in the schema; referencing it is a hard error today. |
The two model paths
Section titled “The two model paths”MPAS — data_ingest → [subset_grib →] ungrib → init_atmosphere → lbc → mpas_run → mpassit → upp → archive_s3, with mesh_gen as a once-only sub-workflow.
WRF — data_ingest → ungrib → metgrid → real → wrf → [upp], with geogrid as a once-only
sub-workflow. ungrib and upp are shared between the paths.
Fan-out families
Section titled “Fan-out families”mpassit, upp, and archive_s3 are fan_out_compatible: one instance per forecast hour,
triggered by the model’s per-fhr completion message, with concurrency capped per family. This is
how per-output-file post-processing scales without writing 50 near-identical task stanzas by hand.
Extending with plugins
Section titled “Extending with plugins”Drop a directory with component.yaml + template.cylc.j2 (+ optional namelist/task templates)
into the plugin path; it is auto-discovered and listed alongside core components. Plugins are
sandboxed — schema and templates only, no arbitrary code at generate time — and declare their
requires: so nwp-compose doctor and the validator can check prerequisites.
Troubleshooting
Section titled “Troubleshooting”Each golden-path component ships a TROUBLESHOOTING.md next to its component.yaml, following a
strict 5-section template (Symptoms / Diagnose / Recover / Blast radius / Escalate). These will be
mirrored into per-component pages in this section.