The model bestiary
The windgram derivation is model-agnostic: give it nine surface fields, five fields on nine pressure levels, and a terrain height, and it produces the same profile shape regardless of where the numbers came from. What differs per model is everything else — access method, resolution, cadence, horizon, retention, and a collection of sharp edges found only by pointing real requests at real servers. This page records what we know about each one, so nobody has to rediscover it.
The roster: HRDPS continental 2.5 km and HRDPS West 1 km (the two founding builders), and RDPS 10 km, GDPS 15 km, HRRR 3 km, and GFS 0.25° (verified against the live services and joining the pipeline). ECMWF IFS open data was investigated and turned down, for reasons worth recording.
All figures below are from live verification against the services, not from documentation alone. Cadences and layouts are the providers' to change; when this page and the servers disagree, believe the servers and send a PR.
HRDPS continental 2.5 km — the baseline
Environment and Climate Change Canada's High Resolution Deterministic Prediction System: 2.5 km grid over nearly all of Canada, 48 hourly steps, four runs a day (00/06/12/18Z).
The pipeline reads it through GeoMet's WCS endpoint — not the Datamart. Every request asks for a tiny GeoTIFF crop around the catalogued launches at the model's 0.0225° spacing, and each crop comes back at roughly 2 KB. A full build for the founding four-site catalogue is 1,622 requests, ~6 MB transferred, ~135 s (one capabilities probe, one terrain crop, then 54 layers × 30 flyable-day hours). The entire 48-hour run costs less bandwidth than one photograph.
The trade-off is request count: WCS has no bulk mode, so the build is many
small HTTP calls. The client keeps concurrency at five, retries 429/5xx with
jittered backoff, honours Retry-After, and reports its request count in the
published manifest so the cost stays visible.
HRDPS West 1 km — experimental, and honest about terrain
ECCC also runs an experimental 1 km HRDPS over BC and western Alberta, published only as whole-domain GRIB2 on the alpha Datamart — no WCS, no subsetting. The grid is a rotated lat-lon, 1330 × 1180 points; ecCodes handles the rotation so the sampler only ever speaks geographic coordinates. Runs are 00Z and 12Z only, files are retained for roughly 24 hours, and the feed goes dark occasionally — the workflow treats a 1 km failure as a warning, never a blocked 2.5 km publish.
Because there is no subsetting, this is the pipeline's heavyweight leg: ~1.2 GB downloaded per run to sample four points. It earns its keep with terrain honesty. Dundee launch is 1,485 m in reality, 1,311 m in the 1 km model, and 1,072 m at 2.5 km. Every derived quantity that hangs off the model's ground — cloud base, boundary-layer top, which pressure levels even exist above the surface — starts from a floor that is 400 m closer to the truth at 1 km. That is the single clearest demonstration in this project of why resolution matters for mountain sites.
RDPS 10 km — the mid-range bridge
The Regional Deterministic Prediction System: 10 km, 84 hourly steps, four runs a day. It extends the windgram from HRDPS's two days to three and a half.
Verified facts:
- Fully available on GeoMet WCS under the new-style
RDPS_10km_*layer names (the olderRDPS.ETA_*convention is on its way out). - All nine windgram pressure levels (925–600 hPa) exist, and both sensible and latent heat fluxes are published — the full derivation runs with no substitutions.
- The resampling gotcha: GeoMet will happily serve a WCS crop at any resolution you ask for — and the resolution you ask for changes the value at your point. It is tempting to request the model's native spacing (0.09° for RDPS) to "avoid resampling", but GeoMet stretches whatever resolution you request to fit the subset bounding box, so a coarse request over a small box lands the grid cells in the wrong places: in verification, a native-resolution request returned terrain of 1,426 gpm where the model's true cell value (confirmed against GeoMet's own GetFeatureInfo) is 1,168 gpm, and 2 m temperatures were off by 2.5 °C at half the sites. Fine oversampling (0.0225°) reproduced GetFeatureInfo exactly at every site for both RDPS and GDPS. The rule that survives contact: sample finely and verify your crop values against GetFeatureInfo at a few points, because the failure is silent and physically plausible.
GDPS 15 km — ten days out
The Global Deterministic Prediction System: 15 km, 00Z and 12Z, pressure levels 3-hourly out to 240 hours — mostly. A ten-day windgram with real model physics — actual heat fluxes, not proxies.
Verified facts:
- The old
GDPS.ETA_*GeoMet layer names are dead; everything lives underGDPS_15km_*now. Documentation and forum posts referencing the old names will burn an afternoon if you let them. - All nine pressure levels and both heat fluxes are available — but six of the nine levels (900, 875, 800, 750, 650, 600 hPa) thin to 6-hourly after hour 168; only 925, 850, 700 and the surface fields stay 3-hourly to the end. The builder tolerates a level being absent at a valid time, so day 8–10 columns ride on the three levels that remain.
- Precipitation must be differenced. No fixed-window precipitation layer
spans the full horizon; the reliable quantity is the run-total
accumulation, so per-step precipitation is
accum(h) − accum(h_prev)between consecutive published steps.
HRRR 3 km — the CONUS counterpart
NOAA's High-Resolution Rapid Refresh: 3 km over the continental United States, hourly runs, with the synoptic runs (00/06/12/18Z) extending to 48 hours, published to public cloud buckets roughly T+107 minutes after the reference time.
Verified facts:
- The domain reaches further north than its reputation. The oft-quoted 47.8°N northern limit is the eastern corner of the Lambert conformal grid. At −117.7°W the boundary is at 51.24°N — the southern-BC founding sites sit about 215 km inside the domain. Check the corner nearest your longitude before assuming HRRR excludes you.
- All 54 records the windgram needs live in a single
wrfprsfile per hour, and its.idxsidecar lets a client fetch exactly those records by byte range — the cheap-subsetting story from the pipeline article, at its best. - Heat fluxes are instantaneous values — no de-averaging dance (contrast GFS below).
- Winds are grid-relative. U/V components on the native Lambert projection point along grid axes, not geographic east/north. Skip the rotation and wind directions bias by 10–15° at these latitudes — enough to turn a safe forecast cross-breeze into a surprise at launch.
GFS 0.25° — sixteen days, with homework
NOAA's Global Forecast System at 0.25°: the long-horizon leg, out to 384 hours. Since the 2021 upgrades the output is 3-hourly all the way to f384 — the old 12-hourly tail beyond day 10 is gone.
Verified facts:
875 hPa does not exist in the
pgrb2.0p25files. The windgram's nine levels become eight, or 875 is interpolated; either way, don't loop over the HRDPS level list and expect nine hits.Pressure-level dew point isn't published; dew point depression must be computed from temperature and relative humidity per level.
The flux averaging trap.
SHTFL/LHTFLexist only as averages over a growing window that resets every 6 hours: f001 averages hour 0–1, f002 averages 0–2, … f006 averages 0–6, then f007 starts again. Difference the window-hours to recover the mean flux over any sub-interval:mean(h1→h2) = ((h2−h0)·A(h2) − (h1−h0)·A(h1)) / (h2−h1)where
h0is the window start andA(h)the published average at hourh. Feed the averaged flux straight into w* and midday thermals smear into the morning.
ECMWF IFS open data — investigated, not adopted
The obvious candidate for a premium long-range leg: ECMWF's open-data IFS, 15-day horizon (360 h at 00/12Z since cycle 50r1), CC-BY-4.0. We verified it and said no — for now. Two findings decided it:
- No surface heat fluxes are published. w* — the number the whole soaring derivation hangs off — has no direct input. The physics would need a radiation-proxy flux: net solar radiation partitioned by an assumed Bowen ratio. That is a different, and honestly weaker, product than the measured-physics windgrams above, and it should not be published under the same name without being labelled as such.
- Only four of our nine pressure levels exist in the open-data set (925/850/700/600) — and at the founding mountain sites, 925 hPa is below the model terrain. Three usable levels is not a sounding; boundary-layer and stability estimates from it would be mostly interpolation.
The 15-day horizon is genuinely tempting, and the proxy-physics outlook product is a real candidate — see where this goes next. But it will arrive as its own clearly-labelled thing, not as a windgram that quietly means something different.
Licensing and attribution
- ECCC (HRDPS, RDPS, GDPS): used under the Environment and Climate Change Canada Data Server End-use Licence. Derived profiles carry the attribution requirement.
- NOAA (HRRR, GFS): U.S. government open data. Attribution is requested, and use implies no NOAA endorsement of this project.
- ECMWF open data is CC-BY-4.0 — relevant only if an IFS-based product is adopted later.