Skip to content

Inputs and outputs

The input is a live GFS analysis in GRIB2. The output is a CF-1.8 netCDF forecast, with JSON metadata and a PNG summary alongside.

flowchart LR
  GFS[GFS f000 GRIB2<br/>138 selected records] --> PRE[normalize and assemble]
  T0[initialization time] --> WM3
  PRE --> T1[GFS input<br/>720 x 1440 x 157]
  PRE --> T2[HRES-shaped input<br/>720 x 1440 x 157]
  T1 --> WM3[WeatherMesh-3]
  T2 --> WM3
  WM3 --> OUT[ERA5-space output<br/>720 x 1440 x 157]
  OUT --> NC[CF-1.8 netCDF]
  OUT --> META[validation metadata]
  OUT --> PNG[overview plot]
Group Variables Treatment
Pressure geopotential, temperature, u wind, v wind, specific humidity Read on the union of required GFS and HRES levels
Core surface 10 m u and v wind, 2 m temperature, mean sea-level pressure Required; a missing field raises an error
Extra surface total cloud cover, 2 m dewpoint, 100 m u and v wind Required; cloud cover converted from percent to fraction
  • Source grid is 721 x 1440 at 0.25 degree, North Pole first; the South Pole row is dropped to make the 720 x 1440 mesh.
  • Values are normalized with constants/normalization.json, arranged as pressure, core surface, extra surface, then zero padding, giving 157 channels.
  • The model also gets the initialization time as a Unix timestamp and derives solar angle internally.
x = [gfs_tensor[None], hres_tensor[None], t0]
out = model(x, [6])
pred = out[6][0]

The prediction is de-normalized with the output mesh means and standard deviations. The raw array stays available to validation, so clamping cannot hide NaN, Inf, or consistency violations.

Group Variables Dimensions
Surface temperature_2m, dewpoint_2m, pressure_msl, wind_u_10m, wind_v_10m, wind_speed_10m, wind_u_100m, wind_v_100m, wind_speed_100m, total_cloud_cover, total_precipitation_6h (time, lat, lon)
Upper air geopotential, temperature, wind_u, wind_v, specific_humidity (time, level, lat, lon)
  • One valid time and 25 pressure levels from 10 to 1,000 hPa: time=1, level=25, lat=720, lon=1440.
  • Product constraints: negative specific humidity clipped to zero, dewpoint capped at air temperature, six-hour precipitation limited to 0 to 1,000 mm.
  • Validation records the raw humidity and dewpoint violation fractions and precipitation diagnostics before those constraints.
forecasts/init=<YYYY-MM-DDTHHZ>/lead=<NNNh>/weathermesh3.fNNN.nc
forecasts/init=<YYYY-MM-DDTHHZ>/lead=<NNNh>/overview.png
forecasts/init=<YYYY-MM-DDTHHZ>/lead=<NNNh>/metadata.json
forecasts/init=<YYYY-MM-DDTHHZ>/metadata.json
latest.json

Invalid forecasts use the same partition layout under quarantine/ and never update latest.json.