Numerical weather modeling
How numerical weather prediction (NWP) turns observations into forecasts: the equations, grids, time stepping, physics parameterisations, data assimilation, ensembles and verification, with the operational systems as of September 2026. Basic mechanics and fluids are in physics fundamentals; constants in constants, units and conversions.
What NWP is
NWP solves an initial-value problem: estimate the current state of the atmosphere, then step the fluid equations forward on a computer. Global centers run the whole cycle every 6 hours (00, 06, 12, 18 UTC); rapid-update regional systems run it every hour.
observations (satellite, sonde, aircraft, radar, surface)
| quality control, bias correction
v
data assimilation <--- background: previous short forecast
| analysis (best estimate of the state now)
v
model integration: dynamics + physics, often an ensemble
| fields on the model grid
v
post-processing: interpolate, bias-correct, calibrate
v
products: GRIB files, charts, probabilities, warnings| Stage | What happens | Typical scale |
|---|---|---|
| observations | millions per cycle, mostly satellite radiances | cut-off 1–3 h after nominal time |
| data assimilation | blend a short forecast with observations, weighted by their error statistics | the costliest step after the model |
| integration | step the discretised equations; parameterise what the grid cannot resolve | minutes to hours |
| post-processing | regrid, derive fields (CAPE, visibility), model output statistics (MOS), ensemble calibration | minutes |
| products | GRIB2 or NetCDF data, charts, meteograms, warnings | continuous |
Forecast error has two sources: the initial state (never known exactly) and the model (discretisation and parameterisation errors). Chaos makes the first grow; the second adds bias.
Governing equations
The primitive equations: Newton's second law on a rotating sphere, mass conservation, the first law of thermodynamics, water conservation and the ideal gas law, with the hydrostatic approximation replacing the vertical momentum equation. With the material derivative :
In pressure coordinates the same set is tidier, because density disappears and continuity becomes diagnostic ( is the vertical velocity in Pa/s):
| Symbol | Meaning | SI unit |
|---|---|---|
| horizontal wind (east, north) | m/s | |
| , | vertical velocity in height, in pressure | m/s, Pa/s |
| , , | pressure, density, temperature | Pa, kg/m³, K |
| virtual temperature (moist air as if dry) | K | |
| potential temperature, hPa | K | |
| geopotential | m²/s² | |
| Coriolis parameter at latitude | 1/s | |
| Earth's rotation rate, | rad/s | |
| specific humidity | kg/kg | |
| moisture sources and sinks (evaporation minus condensation) | kg/(kg·s) | |
| diabatic heating rate per unit mass (radiation, latent heat) | W/kg | |
| friction and sub-grid momentum tendencies | m/s² | |
| , | dry-air gas constant , specific heat | J/(kg·K) |
| gravity, | m/s² |
Balances and scales
| Relation | Formula | Holds when |
|---|---|---|
| geostrophic wind | large scale, away from the equator and the ground | |
| Rossby number | : rotation dominates | |
| hydrostatic scale height | , – km | isothermal layer |
| hypsometric thickness | always (hydrostatic) | |
| beta effect | drives Rossby waves |
The hydrostatic approximation filters sound waves traveling vertically and is accurate while horizontal scales far exceed vertical ones. Below roughly 10 km grid spacing, and certainly at convection-permitting 1–4 km, models solve the full non-hydrostatic equations (ICON, UM, FV3, WRF). IFS at 9 km still runs hydrostatic.
Vertical coordinates
| Coordinate | Definition | Good | Bad |
|---|---|---|---|
| height | geometric | intuitive; used for output | surfaces cut through mountains |
| pressure | isobaric surfaces | simple equations; charts at 850, 500, 250 hPa | surfaces intersect the ground |
| sigma | , at top, at surface | follows terrain | pressure-gradient errors over steep slopes |
| hybrid sigma-pressure | terrain-following low down, pure pressure aloft | coefficients need tuning | |
| terrain-following height | squeezed over orography (Gal-Chen, SLEVE) | natural for non-hydrostatic cores | same slope errors as sigma |
| isentropic | constant potential temperature | adiabatic flow stays on a surface | surfaces fold and hit the ground; used in hybrids |
IFS uses 137 hybrid sigma-pressure levels from the surface to 0.01 hPa (about 80 km); GFS uses 127. Levels are packed near the surface to resolve the boundary layer.
Grids and discretisation
| Method | Idea | Strengths | Used by |
|---|---|---|---|
| finite difference | replace derivatives with differences on a structured grid | simple, local, fast | WRF-ARW (HRRR) |
| finite volume | integrate over cells; update with fluxes across faces | conserves mass exactly; any mesh shape | FV3 (GFS, RRFS), MPAS |
| spectral transform | expand fields in spherical harmonics; physics on a grid, derivatives in spectral space | exact derivatives; semi-implicit solve is trivial | IFS |
| finite and spectral element | local polynomial basis on each element | high order, scales on many cores | LFRic (mixed finite element) |
Centered second-order differences, with error :
Horizontal grids
| Grid | Shape | Pole problem | Used by |
|---|---|---|---|
| regular latitude-longitude | rectangles; meridians converge | yes: tiny near poles limits time step | UM (ENDGame) |
| reduced (octahedral) Gaussian | fewer points per latitude toward the poles | avoided | IFS TCo1279 (about 6.6 million points per level) |
| cubed sphere | cube projected onto the sphere, 6 panels | none; slight panel-edge seams | GFS FV3 (C768), LFRic |
| icosahedral triangles | refined icosahedron | none; near-uniform | ICON |
| Voronoi hexagons | dual of the icosahedral mesh | none; supports smooth refinement | MPAS |
| limited-area projection | Lambert conformal, rotated lat-lon, polar stereographic | none on the domain | HRRR, ICON-D2, UKV |
Arakawa staggering
Where variables sit on the grid changes how well gravity waves and geostrophic adjustment are represented. is a mass or pressure point.
| Grid | , placement | Behavior | Used by |
|---|---|---|---|
| A | both at points | simple; decoupled checkerboard modes, poor adjustment | spectral grid space, some ML grids |
| B | both at cell corners | good at coarse resolution | older models |
| C | on east/west faces, on north/south faces | best gravity-wave dispersion at resolved scales | WRF, UM, ICON, MPAS |
| D | tangential winds on faces (swapped from C) | good vorticity; paired with C for fluxes | FV3 |
| E | B grid rotated 45° | like B | NCEP NMM (retired) |
Arakawa C: one cell
+------ v ------+
| |
u h u
| |
+------ v ------+Time stepping and the CFL condition
The Courant–Friedrichs–Lewy condition: an explicit scheme is unstable if information crosses more than a fixed fraction of a cell per step.
is 1 for first-order upwind in 1D and smaller in 2D and 3D. is the fastest signal the scheme treats explicitly: wind (up to about 100 m/s in jets), gravity waves (, about 300 m/s for the external mode) or sound (about 340 m/s).
| Scheme | How | Time step limited by | Used by |
|---|---|---|---|
| explicit (leapfrog, RK3) | new state from old tendencies only | fastest wave: sound or gravity | building block |
| split-explicit | small sub-steps for acoustic terms, large steps for the rest | advection on the large step | WRF (RK3), FV3 |
| semi-implicit | fast gravity and acoustic terms implicit: solve a Helmholtz equation each step | advection | UM, IFS, LFRic |
| semi-Lagrangian | trace each arrival point back along the wind; interpolate at the departure point | accuracy, not stability ( can exceed 1) | IFS, UM |
| semi-implicit semi-Lagrangian | both combined | accuracy; IFS uses 450 s at 9 km | IFS, UM |
Leapfrog needs a Robert–Asselin filter to damp its computational mode. First-order upwind is stable for but diffusive: sharp features smear out.
Toy: 1D linear advection, upwind
A Gaussian blob carried once around a periodic 1000 km domain at 20 m/s. The scheme is exact in mass but loses 38% of the peak to numerical diffusion.
import numpy as np
from numpy.typing import NDArray
Field = NDArray[np.float64]
def upwind(q: Field, c: float) -> Field:
# first-order upwind for u > 0, periodic domain
return q - c * (q - np.roll(q, 1))
L, nx, u = 1000e3, 100, 20.0 # m, cells, m/s
dx = L / nx # 10 km
dt = 400.0 # s
c = u * dt / dx # Courant number
assert 0 < c <= 1, f"CFL violated: C = {c:.2f}"
x = np.arange(nx) * dx
q = np.exp(-(((x - 250e3) / 50e3) ** 2)) # blob
m0 = q.sum()
steps = round(L / (u * dt)) # one full lap
for _ in range(steps):
q = upwind(q, c)
print(f"dx={dx / 1e3:.0f} km dt={dt:.0f} s C={c:.2f}")
print(f"steps={steps} peak 1.000 -> {q.max():.3f}")
print(f"mass ratio={q.sum() / m0:.6f}")uv run --with numpy python advect.pydx=10 km dt=400 s C=0.80
steps=125 peak 1.000 -> 0.620
mass ratio=1.000000With dt = 600.0 the check fails with AssertionError: CFL violated: C = 1.20; remove the
assert and the solution blows up within a few laps.
Resolution and cost
Halving quadruples the horizontal points and, through CFL, halves :
| Grid spacing | Regime | What it resolves |
|---|---|---|
| 25–50 km | older global, ensembles, ML models (0.25°) | synoptic highs, lows, fronts |
| 9–13 km | current global deterministic | mesoscale systems, major terrain |
| 4–10 km | convective "gray zone" | storms half-resolved: parameterise with care |
| 1.5–3 km | convection-permitting regional | individual storms, squall lines; no deep-convection scheme |
| 100 m and below | large-eddy simulation (LES) | boundary-layer turbulence |
Effective resolution is 4–8 : features smaller than that are damped by the numerics. Data volume grows as per level per output step.
Parameterisations
Processes smaller than the grid, or too costly to simulate, are represented by schemes that feed tendencies of , , and condensate back into the dynamics.
| Process | Why it needs a scheme | Example schemes |
|---|---|---|
| deep convection | updrafts are 1–10 km wide; unresolved at over 4 km | mass-flux: Tiedtke–Bechtold (IFS), scale-aware SAS (GFS), Kain–Fritsch |
| shallow convection | trade cumulus, boundary-layer clouds | mass-flux or eddy-diffusivity mass-flux (EDMF) |
| cloud microphysics | droplets and ice form and fall on micron scales | bulk single or double moment: Thompson (HRRR), GFDL (GFS) |
| radiation | line-by-line absorption is far too costly | correlated-k: RRTMG, ecRad (IFS); called every hour or so, not every step |
| boundary layer, turbulence | eddies of meters to a kilometer | K-profile, TKE closures, MYNN-EDMF, sa-TKE-EDMF |
| surface layer | fluxes between ground and first level | Monin–Obukhov similarity |
| land surface | soil moisture and temperature, snow, vegetation | Noah, Noah-MP, RUC LSM, ECLand |
| orographic gravity wave drag | sub-grid mountains exert drag aloft | Lott–Miller type with blocking |
| non-orographic gravity waves | fronts and convection launch waves into the stratosphere | spectral schemes |
| ocean, sea ice, waves | coupled components, not parameterisations, in newer systems | NEMO (IFS), MOM6 and CICE6 (next GFS) |
Stochastic physics (for example SPPT, stochastically perturbed parameterisation tendencies) represents model uncertainty inside ensembles.
Data assimilation
Find the analysis that best fits both the background (a short forecast) and the observations , weighted by their error covariances.
| Symbol | Meaning |
|---|---|
| model state vector (– numbers) | |
| , | background (first guess), analysis |
| observations (millions per cycle) | |
| observation operator: maps state to observation space (for example a radiative transfer model for satellite radiances) | |
| , | background and observation error covariance matrices |
| forecast model from the start of the window to time | |
| gain matrix |
3D-Var minimizes one cost function at a single analysis time:
4D-Var fits all observations in a window (6–12 h) with the model as a constraint, adjusting the initial state :
For linear the minimum is the Kalman (best linear unbiased) update:
| Method | Background errors | Needs | Used by |
|---|---|---|---|
| optimal interpolation | static, local | little | historical, surface analyses |
| 3D-Var | static (climatological) | minimizer | many regional systems |
| 4D-Var (incremental) | static, evolved implicitly over the window | tangent-linear and adjoint models | IFS, UM (both hybrid) |
| EnKF, LETKF | from an ensemble of forecasts, flow-dependent | 20–100 members, localization, inflation | ICON ensemble, GFS ensemble |
| hybrid EnVar, 4DEnVar | blend | ensemble; no adjoint for 4DEnVar | GFS (4DEnVar), ICON (3DEnVar), HRRR |
is the ensemble covariance from perturbations ; localizes it (Schur product ) to kill spurious long-range correlations from a small ensemble.
| Observation type | Measures |
|---|---|
| satellite microwave and infrared radiances | temperature and humidity profiles (by far the largest volume) |
| GNSS radio occultation | bending angle, hence temperature aloft |
| atmospheric motion vectors, scatterometer | winds from cloud tracking, ocean-surface winds |
| radiosondes, aircraft (AMDAR) | profiles of , , wind |
| surface stations, ships, buoys | pressure, , humidity, wind |
| weather radar | reflectivity and radial wind (regional) |
Ensembles and chaos
Small initial errors grow until forecasts are no better than climatology. Lorenz (1963) showed it with three equations (, , ):
Synoptic-scale errors double in about 1–2 days; small-scale (convective) errors in hours. The practical limit for day-to-day weather is around two weeks.
An ensemble runs the model many times from perturbed initial states (singular vectors, ensemble data assimilation members) with perturbed physics (stochastic schemes), and samples the forecast probability distribution.
| Product | Shows |
|---|---|
| ensemble mean | best single estimate; smoother than any member |
| spread (standard deviation) | uncertainty; flow-dependent |
| probability of exceedance | fraction of members above a threshold (rain over 10 mm) |
| percentiles, plumes, meteograms | range at one location over time |
| spaghetti plots | one contour (for example 5520 m at 500 hPa) from every member |
| clusters | groups of similar scenarios |
| Extreme Forecast Index (ECMWF) | how unusual the forecast distribution is against model climate |
A well-calibrated ensemble has spread about equal to the RMSE of its mean, and a flat rank histogram. Too little spread (common) means overconfidence.
Global and regional models
| Aspect | Global | Regional (limited area) |
|---|---|---|
| domain | whole sphere | a country or continent |
| grid spacing | 9–25 km | 1–4 km |
| lateral boundaries | none | from a global model, relaxed in a boundary zone |
| deep convection | parameterised | explicit (convection-permitting) |
| forecast range | 10–16 days | 18 h to about 5 days |
| update frequency | every 6 h | often hourly with radar assimilation |
| strengths | large-scale patterns, medium range | storms, fog, terrain and coastal effects |
| examples | IFS, GFS, ICON, UM global | HRRR, RRFS, ICON-D2, UKV |
Boundary data enter one way from the parent model, so regional forecasts inherit the global model's large-scale errors after a day or two. Nesting steps down in stages (for example ICON 13 km → 6.5 km Europe nest). A new run needs spin-up time for clouds and precipitation.
Operational models
Status on 25 September 2026.
| Model | Center | Type | Grid and core | Levels | Data assimilation | Notes | |
|---|---|---|---|---|---|---|---|
| IFS (Cycle 50r1) | ECMWF | global physics | spectral, TCo1279 octahedral, hydrostatic SISL | 9 km | 137 | hybrid 4D-Var with ensemble DA | 50r1 live since 12 May 2026; 15-day control (formerly HRES) plus 50 members, all at 9 km; coupled ocean and sea ice |
| GFS v16 | NOAA NCEP | global physics | FV3 finite volume, cubed sphere C768 | 13 km | 127 | hybrid 4DEnVar (GDAS) | 4 runs a day to 16 days; v17 (C1152, about 9 km, coupled ocean, ice, waves) proposed for October 2026 |
| ICON | DWD | global physics | icosahedral triangles, non-hydrostatic | 13 km (6.5 km Europe nest) | 120 | hybrid 3DEnVar + LETKF | ICON-D2 regional at 2.2 km over Germany |
| Unified Model | Met Office | global physics | lat-lon, ENDGame SISL, non-hydrostatic | about 10 km | 70 | hybrid 4D-Var | successor LFRic (cubed sphere, GungHo core) in transition |
| HRRR v4 | NOAA | regional physics | WRF-ARW, CONUS | 3 km | 50 | hybrid 3DEnVar + radar | hourly to 18 h, to 48 h every 6 h |
| RRFS v1 | NOAA | regional physics | FV3 limited area, North America | 3 km | hybrid EnVar + radar | scheduled for 14 October 2026; replaces NAM, HREF, SREF, HiresW; HRRR stays until RRFS v2 | |
| AIFS Single v2 | ECMWF | ML, deterministic | graph encoder/decoder, sliding-window transformer, N320 | 31 km | pressure levels | starts from IFS analysis | operational since Feb 2025, v2 since 12 May 2026; 6-hourly steps, 15 days, open weights |
| AIFS ENS | ECMWF | ML ensemble | as AIFS, trained on a probabilistic score | 31 km | pressure levels | IFS analysis and perturbations | 51 members, operational since 1 July 2025 |
| GraphCast | Google DeepMind | ML, deterministic | graph neural network on a multi-mesh | 0.25° | 37 pressure levels | ERA5 or IFS analysis | 2023; "WeatherNext 1 Graph" |
| GenCast | Google DeepMind | ML ensemble | diffusion model | 0.25° | 13 pressure levels | IFS analysis | 2024; "WeatherNext 1 Gen"; succeeded by WeatherNext 2 (FGN, 2025) and WeatherNext 3 (August 2026) |
Machine-learning models are trained on reanalysis (ERA5) and fine-tuned on operational analyses. They run in minutes on GPUs, but still depend on a physics-based data assimilation system for their starting state and tend to smooth extremes at longer lead times.
Verification
Compare forecasts with observations or analyses , pairs, climatology .
| Metric | Formula | Perfect | Notes |
|---|---|---|---|
| bias (mean error) | 0 | systematic error | |
| MAE | 0 | robust to outliers | |
| RMSE | 0 | penalises large errors; rewards smooth forecasts | |
| anomaly correlation (ACC) | 1 | pattern skill; 0.6 is the usual limit of useful 500 hPa skill | |
| skill score | ; for MSE: | 1 | reference: climatology or persistence |
| Brier score | , | 0 | probability of a yes/no event |
| CRPS | 0 | CDF vs step at ; equals MAE for a single forecast | |
| ensemble CRPS | 0 | , independent members |
| Contingency score | Formula (hits , false alarms , misses ) | Perfect |
|---|---|---|
| probability of detection | 1 | |
| false alarm ratio | 0 | |
| critical success index | 1 |
High-resolution precipitation suffers the double penalty (a storm slightly displaced counts as a miss and a false alarm), so use neighborhood scores such as the fractions skill score. Probability forecasts also need reliability diagrams and ROC curves. WeatherBench 2 standardizes these scores for comparing ML and physics models.
Worked examples
Coriolis parameter at a latitude
with rad/s. At N:
| Latitude | |||||
|---|---|---|---|---|---|
| ( s⁻¹) | 0.25 | 0.73 | 1.03 | 1.26 | 1.46 |
at the equator, which is why geostrophic balance fails there.
Geostrophic wind from a pressure gradient
Isobars 4 hPa apart every 300 km at N, kg/m³:
On a 500 hPa chart, height contours 60 m apart over 500 km: m/s, blowing parallel to the contours with low pressure on the left (Northern Hemisphere).
CFL time step for a 9 km grid
Jet-stream wind 100 m/s, km, :
Explicit treatment of sound waves would force 20 s steps. Semi-implicit treatment removes the fast waves and semi-Lagrangian advection removes the wind limit, so IFS runs at 450 s: an advective Courant number of .
Cost of higher resolution
Going from 9 km to 4.5 km: more columns 2 more steps the cost ( with twice the levels). From 9 km to 1.4 km: .
Columns at 9 km: ; with 137 levels about grid points, each carrying about ten prognostic variables.
Height of the 500 hPa surface
Isothermal layer at 250 K: km. From a 1013 hPa surface:
so the 500 hPa surface sits near 5.5 km, higher in warm air and lower in cold air.
RMSE, bias and a skill score
Four 2 m temperature forecasts °C against observations °C, errors :
If persistence (tomorrow = today) has K², the skill score is : half the persistence error variance removed.
References
- ECMWF: IFS documentation (opens in a new tab): dynamics, physics and data assimilation of the IFS, cycle by cycle
- ECMWF: IFS Cycle 50r1 and AIFS v2 go live (opens in a new tab): the May 2026 upgrade
- ECMWF: Implementation of IFS Cycle 49r1 (opens in a new tab): TCo1279, 137 levels and the HRES/ENS control unification
- ECMWF: ensemble AI forecasts become operational (opens in a new tab): AIFS ENS
- ECMWF: AIFS Single 2.0 model card (opens in a new tab): architecture, resolution and training data of the ML model
- ECMWF: Learning (opens in a new tab): training courses and e-learning on NWP, data assimilation and ensembles
- UCAR COMET MetEd (opens in a new tab): free modules on NWP, model physics and ensembles
- NOAA EMC: Global Forecast System (opens in a new tab): GFS configuration and version history
- NWS Public Information Statement 26-29 (opens in a new tab): the proposed GFS v17 upgrade
- NWS Service Change Notice 26-48 (opens in a new tab): RRFS and REFS implementation
- NOAA GSL: HRRR (opens in a new tab): the High-Resolution Rapid Refresh
- DWD: ICON model (opens in a new tab): icosahedral grid and model design
- Met Office: Unified Model (opens in a new tab): UM configurations
- Met Office: LFRic (opens in a new tab): the cubed-sphere successor to the UM
- Google: WeatherNext models (opens in a new tab): GraphCast, GenCast and WeatherNext lineage
- WeatherBench 2 (opens in a new tab): benchmark scores for ML and physics models
- Lorenz (1963): Deterministic nonperiodic flow (opens in a new tab): the paper behind chaos in weather
- Kalnay: Atmospheric Modeling, Data Assimilation and Predictability (opens in a new tab): the standard NWP and data assimilation text
- Warner: Numerical Weather and Climate Prediction (opens in a new tab): practical guide to using models, verification and ensembles
- Durran: Numerical Methods for Fluid Dynamics (opens in a new tab): finite difference, spectral and semi-Lagrangian methods in depth