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]
Input fields
Section titled “Input fields”| 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 1440at 0.25 degree, North Pole first; the South Pole row is dropped to make the720 x 1440mesh. - 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.
Model call
Section titled “Model call”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.
netCDF contents
Section titled “netCDF contents”| 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.
S3 layout
Section titled “S3 layout”forecasts/init=<YYYY-MM-DDTHHZ>/lead=<NNNh>/weathermesh3.fNNN.ncforecasts/init=<YYYY-MM-DDTHHZ>/lead=<NNNh>/overview.pngforecasts/init=<YYYY-MM-DDTHHZ>/lead=<NNNh>/metadata.jsonforecasts/init=<YYYY-MM-DDTHHZ>/metadata.jsonlatest.jsonInvalid forecasts use the same partition layout under quarantine/ and never update
latest.json.