Skip to content

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:

Terminal window
nwp-compose components list # core + discovered plugins
nwp-compose components list --json # machine-readable
ComponentRolePathFan-outNotes
data_ingestingestsharedUnified GFS/RAP downloader (dispatches on data_source).
subset_gribpreprocesssharedwgrib2 bbox subsetter; optional in the ungrib graph.
ungribpreprocessWRF + MPASGRIB2 → WPS intermediate; needs a data_ingest upstream.
metgridpreprocessWRFmetgrid.exe; needs geogrid + ungrib.
geogridsub-workflowWRFOne-shot WPS geogrid; publishes geo_em.d??.nc.
mesh_gensub-workflowMPASOne-shot MPAS static mesh; publishes .static.nc + partitions.
init_atmospheremodel initMPASICs (init_case 7); needs ungrib.
lbcmodel initMPASLBCs (init_case 9); needs init_atmosphere + ungrib.
realmodel initWRFreal.exe IC+LBC generation; needs metgrid.
mpas_runmodel runMPASatmosphere_model; emits a per-fhr completion message.
wrfmodel runWRFwrf.exe; emits a per-fhr completion message.
mpassitpostprocessMPASNative → regular grid, per forecast hour.
upppostprocessMPAS/sharedUPP GRIB2 conversion, per forecast hour.
archive_s3archiveMPAS/sharedS3 upload, per forecast hour.
housekeepinghousekeepingsharedDaily (P1D) prune of work dirs.
data_assimilationreservedSlot reserved in the schema; referencing it is a hard error today.

MPASdata_ingest → [subset_grib →] ungrib → init_atmosphere → lbc → mpas_run → mpassit → upp → archive_s3, with mesh_gen as a once-only sub-workflow.

WRFdata_ingest → ungrib → metgrid → real → wrf → [upp], with geogrid as a once-only sub-workflow. ungrib and upp are shared between the paths.

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.

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.

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.