../

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
StageWhat happensTypical scale
observationsmillions per cycle, mostly satellite radiancescut-off 1–3 h after nominal time
data assimilationblend a short forecast with observations, weighted by their error statisticsthe costliest step after the model
integrationstep the discretised equations; parameterise what the grid cannot resolveminutes to hours
post-processingregrid, derive fields (CAPE, visibility), model output statistics (MOS), ensemble calibrationminutes
productsGRIB2 or NetCDF data, charts, meteograms, warningscontinuous

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 DDt=∂∂t+v⃗⋅∇\dfrac{D}{Dt} = \dfrac{\partial}{\partial t} + \vec v \cdot \nabla:

Dv⃗hDt=−1ρ∇hp−f k^×v⃗h+F⃗horizontal momentum∂p∂z=−ρghydrostatic balance∂ρ∂t+∇⋅(ρv⃗)=0continuity (mass)cpDTDt−1ρDpDt=Qthermodynamic energyDqDt=Sqmoisturep=ρRdTvequation of state\begin{aligned} \frac{D\vec v_h}{Dt} &= -\frac{1}{\rho}\nabla_h p - f\,\hat k \times \vec v_h + \vec F && \text{horizontal momentum} \\ \frac{\partial p}{\partial z} &= -\rho g && \text{hydrostatic balance} \\ \frac{\partial \rho}{\partial t} + \nabla \cdot (\rho \vec v) &= 0 && \text{continuity (mass)} \\ c_p\frac{DT}{Dt} - \frac{1}{\rho}\frac{Dp}{Dt} &= Q && \text{thermodynamic energy} \\ \frac{Dq}{Dt} &= S_q && \text{moisture} \\ p &= \rho R_d T_v && \text{equation of state} \end{aligned}

In pressure coordinates the same set is tidier, because density disappears and continuity becomes diagnostic (ω=Dp/Dt\omega = Dp/Dt is the vertical velocity in Pa/s):

Dv⃗hDt=−∇pΦ−f k^×v⃗h+F⃗,∂Φ∂p=−RdTvp,∇p⋅v⃗h+∂ω∂p=0,DTDt−RdTcp p ω=Qcp.\begin{aligned} \frac{D\vec v_h}{Dt} &= -\nabla_p \Phi - f\,\hat k \times \vec v_h + \vec F, & \frac{\partial \Phi}{\partial p} &= -\frac{R_d T_v}{p}, \\ \nabla_p \cdot \vec v_h + \frac{\partial \omega}{\partial p} &= 0, & \frac{DT}{Dt} - \frac{R_d T}{c_p\,p}\,\omega &= \frac{Q}{c_p}. \end{aligned}
SymbolMeaningSI unit
v⃗h=(u,v)\vec v_h = (u, v)horizontal wind (east, north)m/s
ww, ω\omegavertical velocity in height, in pressurem/s, Pa/s
pp, ρ\rho, TTpressure, density, temperaturePa, kg/m³, K
Tv≈T(1+0.61q)T_v \approx T(1 + 0.61q)virtual temperature (moist air as if dry)K
θ=T(p0/p)Rd/cp\theta = T(p_0/p)^{R_d/c_p}potential temperature, p0=1000p_0 = 1000 hPaK
Φ=gz\Phi = gzgeopotentialm²/s²
f=2Ωsin⁡φf = 2\Omega\sin\varphiCoriolis parameter at latitude φ\varphi1/s
Ω\OmegaEarth's rotation rate, 7.292×10−57.292 \times 10^{-5}rad/s
qqspecific humiditykg/kg
SqS_qmoisture sources and sinks (evaporation minus condensation)kg/(kg·s)
QQdiabatic heating rate per unit mass (radiation, latent heat)W/kg
F⃗\vec Ffriction and sub-grid momentum tendenciesm/s²
RdR_d, cpc_pdry-air gas constant 287287, specific heat 10041004J/(kg·K)
gggravity, 9.819.81m/s²

Balances and scales

RelationFormulaHolds when
geostrophic windv⃗g=1ρfk^×∇hp=1fk^×∇pΦ\vec v_g = \dfrac{1}{\rho f}\hat k \times \nabla_h p = \dfrac{1}{f}\hat k \times \nabla_p \Philarge scale, away from the equator and the ground
Rossby numberRo=UfLRo = \dfrac{U}{fL}Ro≪1Ro \ll 1: rotation dominates
hydrostatic scale heightp=p0e−z/Hp = p_0 e^{-z/H},  H=RdTg≈7\ H = \dfrac{R_d T}{g} \approx 7–88 kmisothermal layer
hypsometric thicknessΔz=RdTˉvgln⁡p1p2\Delta z = \dfrac{R_d \bar T_v}{g}\ln\dfrac{p_1}{p_2}always (hydrostatic)
beta effectβ=∂f∂y=2Ωcos⁡φa\beta = \dfrac{\partial f}{\partial y} = \dfrac{2\Omega\cos\varphi}{a}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

CoordinateDefinitionGoodBad
height zzgeometricintuitive; used for outputsurfaces cut through mountains
pressure ppisobaric surfacessimple equations; charts at 850, 500, 250 hPasurfaces intersect the ground
sigma σ\sigmaσ=p/ps\sigma = p/p_s, 00 at top, 11 at surfacefollows terrainpressure-gradient errors over steep slopes
hybrid sigma-pressurepk=Ak+Bk psp_k = A_k + B_k\,p_sterrain-following low down, pure pressure aloftcoefficients need tuning
terrain-following heightzz squeezed over orography (Gal-Chen, SLEVE)natural for non-hydrostatic coressame slope errors as sigma
isentropic θ\thetaconstant potential temperatureadiabatic flow stays on a surfacesurfaces 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

MethodIdeaStrengthsUsed by
finite differencereplace derivatives with differences on a structured gridsimple, local, fastWRF-ARW (HRRR)
finite volumeintegrate over cells; update with fluxes across facesconserves mass exactly; any mesh shapeFV3 (GFS, RRFS), MPAS
spectral transformexpand fields in spherical harmonics; physics on a grid, derivatives in spectral spaceexact derivatives; semi-implicit solve is trivialIFS
finite and spectral elementlocal polynomial basis on each elementhigh order, scales on many coresLFRic (mixed finite element)

Centered second-order differences, with error O(Δx2)O(\Delta x^2):

∂q∂x∣i≈qi+1−qi−12Δx,∂2q∂x2∣i≈qi+1−2qi+qi−1Δx2\frac{\partial q}{\partial x}\bigg|_i \approx \frac{q_{i+1} - q_{i-1}}{2\Delta x}, \qquad \frac{\partial^2 q}{\partial x^2}\bigg|_i \approx \frac{q_{i+1} - 2q_i + q_{i-1}}{\Delta x^2}

Horizontal grids

GridShapePole problemUsed by
regular latitude-longituderectangles; meridians convergeyes: tiny Δx\Delta x near poles limits time stepUM (ENDGame)
reduced (octahedral) Gaussianfewer points per latitude toward the polesavoidedIFS TCo1279 (about 6.6 million points per level)
cubed spherecube projected onto the sphere, 6 panelsnone; slight panel-edge seamsGFS FV3 (C768), LFRic
icosahedral trianglesrefined icosahedronnone; near-uniformICON
Voronoi hexagonsdual of the icosahedral meshnone; supports smooth refinementMPAS
limited-area projectionLambert conformal, rotated lat-lon, polar stereographicnone on the domainHRRR, ICON-D2, UKV

Arakawa staggering

Where variables sit on the grid changes how well gravity waves and geostrophic adjustment are represented. hh is a mass or pressure point.

Griduu, vv placementBehaviorUsed by
Aboth at hh pointssimple; decoupled checkerboard modes, poor adjustmentspectral grid space, some ML grids
Bboth at cell cornersgood at coarse resolutionolder models
Cuu on east/west faces, vv on north/south facesbest gravity-wave dispersion at resolved scalesWRF, UM, ICON, MPAS
Dtangential winds on faces (swapped from C)good vorticity; paired with C for fluxesFV3
EB grid rotated 45°like BNCEP 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.

C=cmax ΔtΔx≤Cmax⟹Δt≤CmaxΔxcmaxC = \frac{c_\text{max}\,\Delta t}{\Delta x} \le C_\text{max} \quad\Longrightarrow\quad \Delta t \le C_\text{max}\frac{\Delta x}{c_\text{max}}

CmaxC_\text{max} is 1 for first-order upwind in 1D and smaller in 2D and 3D. cmaxc_\text{max} is the fastest signal the scheme treats explicitly: wind (up to about 100 m/s in jets), gravity waves (gH\sqrt{gH}, about 300 m/s for the external mode) or sound (about 340 m/s).

SchemeHowTime step limited byUsed by
explicit (leapfrog, RK3)new state from old tendencies onlyfastest wave: sound or gravitybuilding block
split-explicitsmall sub-steps for acoustic terms, large steps for the restadvection on the large stepWRF (RK3), FV3
semi-implicitfast gravity and acoustic terms implicit: solve a Helmholtz equation each stepadvectionUM, IFS, LFRic
semi-Lagrangiantrace each arrival point back along the wind; interpolate at the departure pointaccuracy, not stability (CC can exceed 1)IFS, UM
semi-implicit semi-Lagrangianboth combinedaccuracy; IFS uses 450 s at 9 kmIFS, UM

Leapfrog needs a Robert–Asselin filter to damp its computational mode. First-order upwind is stable for 0<C≤10 \lt C \le 1 but diffusive: sharp features smear out.

qin+1=qin−C(qin−qi−1n)(u>0)q_i^{n+1} = q_i^n - C\left(q_i^n - q_{i-1}^n\right) \qquad (u \gt 0)

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.

advect.py
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.py
dx=10 km  dt=400 s  C=0.80
steps=125  peak 1.000 -> 0.620
mass ratio=1.000000

With 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 Δx\Delta x quadruples the horizontal points and, through CFL, halves Δt\Delta t:

cost∝(1Δx)2⋅1Δt∝Δx−3(Δx−4 if vertical levels also double)\text{cost} \propto \left(\frac{1}{\Delta x}\right)^{2} \cdot \frac{1}{\Delta t} \propto \Delta x^{-3} \qquad (\Delta x^{-4} \text{ if vertical levels also double})
Grid spacingRegimeWhat it resolves
25–50 kmolder global, ensembles, ML models (0.25°)synoptic highs, lows, fronts
9–13 kmcurrent global deterministicmesoscale systems, major terrain
4–10 kmconvective "gray zone"storms half-resolved: parameterise with care
1.5–3 kmconvection-permitting regionalindividual storms, squall lines; no deep-convection scheme
100 m and belowlarge-eddy simulation (LES)boundary-layer turbulence

Effective resolution is 4–8 Δx\Delta x: features smaller than that are damped by the numerics. Data volume grows as Δx−2\Delta x^{-2} per level per output step.

Parameterisations

Processes smaller than the grid, or too costly to simulate, are represented by schemes that feed tendencies of TT, qq, v⃗\vec v and condensate back into the dynamics.

ProcessWhy it needs a schemeExample schemes
deep convectionupdrafts are 1–10 km wide; unresolved at over 4 kmmass-flux: Tiedtke–Bechtold (IFS), scale-aware SAS (GFS), Kain–Fritsch
shallow convectiontrade cumulus, boundary-layer cloudsmass-flux or eddy-diffusivity mass-flux (EDMF)
cloud microphysicsdroplets and ice form and fall on micron scalesbulk single or double moment: Thompson (HRRR), GFDL (GFS)
radiationline-by-line absorption is far too costlycorrelated-k: RRTMG, ecRad (IFS); called every hour or so, not every step
boundary layer, turbulenceeddies of meters to a kilometerK-profile, TKE closures, MYNN-EDMF, sa-TKE-EDMF
surface layerfluxes between ground and first levelMonin–Obukhov similarity
land surfacesoil moisture and temperature, snow, vegetationNoah, Noah-MP, RUC LSM, ECLand
orographic gravity wave dragsub-grid mountains exert drag aloftLott–Miller type with blocking
non-orographic gravity wavesfronts and convection launch waves into the stratospherespectral schemes
ocean, sea ice, wavescoupled components, not parameterisations, in newer systemsNEMO (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 xa\mathbf{x}_a that best fits both the background xb\mathbf{x}_b (a short forecast) and the observations y\mathbf{y}, weighted by their error covariances.

SymbolMeaning
x\mathbf{x}model state vector (10810^8–10910^9 numbers)
xb\mathbf{x}_b, xa\mathbf{x}_abackground (first guess), analysis
y\mathbf{y}observations (millions per cycle)
HHobservation operator: maps state to observation space (for example a radiative transfer model for satellite radiances)
B\mathbf{B}, R\mathbf{R}background and observation error covariance matrices
M0→iM_{0 \to i}forecast model from the start of the window to time ii
K\mathbf{K}gain matrix

3D-Var minimizes one cost function at a single analysis time:

J(x)=12(x−xb)TB−1(x−xb)+12(y−H(x))TR−1(y−H(x))J(\mathbf{x}) = \tfrac12(\mathbf{x} - \mathbf{x}_b)^\mathsf{T}\mathbf{B}^{-1}(\mathbf{x} - \mathbf{x}_b) + \tfrac12\big(\mathbf{y} - H(\mathbf{x})\big)^\mathsf{T}\mathbf{R}^{-1}\big(\mathbf{y} - H(\mathbf{x})\big)

4D-Var fits all observations in a window (6–12 h) with the model as a constraint, adjusting the initial state x0\mathbf{x}_0:

J(x0)=12(x0−xb)TB−1(x0−xb)+12∑i=0n(yi−Hi(M0→i(x0)))TRi−1(yi−Hi(M0→i(x0)))J(\mathbf{x}_0) = \tfrac12(\mathbf{x}_0 - \mathbf{x}_b)^\mathsf{T}\mathbf{B}^{-1}(\mathbf{x}_0 - \mathbf{x}_b) + \tfrac12\sum_{i=0}^{n}\big(\mathbf{y}_i - H_i(M_{0\to i}(\mathbf{x}_0))\big)^\mathsf{T}\mathbf{R}_i^{-1}\big(\mathbf{y}_i - H_i(M_{0\to i}(\mathbf{x}_0))\big)

For linear HH the minimum is the Kalman (best linear unbiased) update:

xa=xb+K(y−Hxb),K=BHT(HBHT+R)−1\mathbf{x}_a = \mathbf{x}_b + \mathbf{K}\big(\mathbf{y} - H\mathbf{x}_b\big), \qquad \mathbf{K} = \mathbf{B}H^\mathsf{T}\big(H\mathbf{B}H^\mathsf{T} + \mathbf{R}\big)^{-1}
MethodBackground errors B\mathbf{B}NeedsUsed by
optimal interpolationstatic, locallittlehistorical, surface analyses
3D-Varstatic (climatological)minimizermany regional systems
4D-Var (incremental)static, evolved implicitly over the windowtangent-linear and adjoint modelsIFS, UM (both hybrid)
EnKF, LETKFfrom an ensemble of forecasts, flow-dependent20–100 members, localization, inflationICON ensemble, GFS ensemble
hybrid EnVar, 4DEnVarblend βc2Bclim+βe2(Pe∘L)\beta_c^2\mathbf{B}_\text{clim} + \beta_e^2(\mathbf{P}_e \circ \mathbf{L})ensemble; no adjoint for 4DEnVarGFS (4DEnVar), ICON (3DEnVar), HRRR

Pe=1N−1X′X′T\mathbf{P}_e = \dfrac{1}{N-1}\mathbf{X}'\mathbf{X}'^\mathsf{T} is the ensemble covariance from perturbations X′\mathbf{X}'; L\mathbf{L} localizes it (Schur product ∘\circ) to kill spurious long-range correlations from a small ensemble.

Observation typeMeasures
satellite microwave and infrared radiancestemperature and humidity profiles (by far the largest volume)
GNSS radio occultationbending angle, hence temperature aloft
atmospheric motion vectors, scatterometerwinds from cloud tracking, ocean-surface winds
radiosondes, aircraft (AMDAR)profiles of TT, qq, wind
surface stations, ships, buoyspressure, TT, humidity, wind
weather radarreflectivity 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 (σ=10\sigma = 10, ρ=28\rho = 28, β=8/3\beta = 8/3):

x˙=σ(y−x),y˙=x(ρ−z)−y,z˙=xy−βz\dot x = \sigma(y - x), \qquad \dot y = x(\rho - z) - y, \qquad \dot z = xy - \beta z

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.

ProductShows
ensemble meanbest single estimate; smoother than any member
spread (standard deviation)uncertainty; flow-dependent
probability of exceedancefraction of members above a threshold (rain over 10 mm)
percentiles, plumes, meteogramsrange at one location over time
spaghetti plotsone contour (for example 5520 m at 500 hPa) from every member
clustersgroups 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

AspectGlobalRegional (limited area)
domainwhole spherea country or continent
grid spacing9–25 km1–4 km
lateral boundariesnonefrom a global model, relaxed in a boundary zone
deep convectionparameterisedexplicit (convection-permitting)
forecast range10–16 days18 h to about 5 days
update frequencyevery 6 hoften hourly with radar assimilation
strengthslarge-scale patterns, medium rangestorms, fog, terrain and coastal effects
examplesIFS, GFS, ICON, UM globalHRRR, 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.

ModelCenterTypeGrid and coreΔx\Delta xLevelsData assimilationNotes
IFS (Cycle 50r1)ECMWFglobal physicsspectral, TCo1279 octahedral, hydrostatic SISL9 km137hybrid 4D-Var with ensemble DA50r1 live since 12 May 2026; 15-day control (formerly HRES) plus 50 members, all at 9 km; coupled ocean and sea ice
GFS v16NOAA NCEPglobal physicsFV3 finite volume, cubed sphere C76813 km127hybrid 4DEnVar (GDAS)4 runs a day to 16 days; v17 (C1152, about 9 km, coupled ocean, ice, waves) proposed for October 2026
ICONDWDglobal physicsicosahedral triangles, non-hydrostatic13 km (6.5 km Europe nest)120hybrid 3DEnVar + LETKFICON-D2 regional at 2.2 km over Germany
Unified ModelMet Officeglobal physicslat-lon, ENDGame SISL, non-hydrostaticabout 10 km70hybrid 4D-Varsuccessor LFRic (cubed sphere, GungHo core) in transition
HRRR v4NOAAregional physicsWRF-ARW, CONUS3 km50hybrid 3DEnVar + radarhourly to 18 h, to 48 h every 6 h
RRFS v1NOAAregional physicsFV3 limited area, North America3 kmhybrid EnVar + radarscheduled for 14 October 2026; replaces NAM, HREF, SREF, HiresW; HRRR stays until RRFS v2
AIFS Single v2ECMWFML, deterministicgraph encoder/decoder, sliding-window transformer, N32031 kmpressure levelsstarts from IFS analysisoperational since Feb 2025, v2 since 12 May 2026; 6-hourly steps, 15 days, open weights
AIFS ENSECMWFML ensembleas AIFS, trained on a probabilistic score31 kmpressure levelsIFS analysis and perturbations51 members, operational since 1 July 2025
GraphCastGoogle DeepMindML, deterministicgraph neural network on a multi-mesh0.25°37 pressure levelsERA5 or IFS analysis2023; "WeatherNext 1 Graph"
GenCastGoogle DeepMindML ensemblediffusion model0.25°13 pressure levelsIFS analysis2024; "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 fif_i with observations or analyses oio_i, NN pairs, climatology cic_i.

MetricFormulaPerfectNotes
bias (mean error)1N∑(fi−oi)\dfrac1N\sum(f_i - o_i)0systematic error
MAE1N∑∣fi−oi∣\dfrac1N\sum\lvert f_i - o_i \rvert0robust to outliers
RMSE1N∑(fi−oi)2\sqrt{\dfrac1N\sum(f_i - o_i)^2}0penalises large errors; rewards smooth forecasts
anomaly correlation (ACC)∑(fi−ci)(oi−ci)∑(fi−ci)2∑(oi−ci)2\dfrac{\sum(f_i - c_i)(o_i - c_i)}{\sqrt{\sum(f_i - c_i)^2\sum(o_i - c_i)^2}}1pattern skill; 0.6 is the usual limit of useful 500 hPa skill
skill scoreSS=S−SrefSperfect−SrefSS = \dfrac{S - S_\text{ref}}{S_\text{perfect} - S_\text{ref}}; for MSE: 1−MSEMSEref1 - \dfrac{MSE}{MSE_\text{ref}}1reference: climatology or persistence
Brier score1N∑(pi−oi)2\dfrac1N\sum(p_i - o_i)^2, oi∈{0,1}o_i \in \lbrace 0, 1 \rbrace0probability of a yes/no event
CRPS∫(F(x)−Θ(x−o))2dx\int\big(F(x) - \Theta(x - o)\big)^2dx0CDF FF vs step Θ\Theta at oo; equals MAE for a single forecast
ensemble CRPSE∣X−o∣−12E∣X−X′∣\mathbb{E}\lvert X - o \rvert - \tfrac12\mathbb{E}\lvert X - X' \rvert0XX, X′X' independent members
Contingency scoreFormula (hits aa, false alarms bb, misses cc)Perfect
probability of detectiona/(a+c)a/(a + c)1
false alarm ratiob/(a+b)b/(a + b)0
critical success indexa/(a+b+c)a/(a + b + c)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

f=2Ωsin⁡φf = 2\Omega\sin\varphi with Ω=7.292×10−5\Omega = 7.292 \times 10^{-5} rad/s. At 45∘45^\circN:

f=2(7.292×10−5)sin⁡45∘=1.031×10−4 s−1f = 2(7.292 \times 10^{-5})\sin 45^\circ = 1.031 \times 10^{-4}\ \text{s}^{-1}
Latitude10∘10^\circ30∘30^\circ45∘45^\circ60∘60^\circ90∘90^\circ
ff (10−410^{-4} s⁻¹)0.250.731.031.261.46

f=0f = 0 at the equator, which is why geostrophic balance fails there.

Geostrophic wind from a pressure gradient

Isobars 4 hPa apart every 300 km at 45∘45^\circN, ρ=1.2\rho = 1.2 kg/m³:

Vg=1ρfΔpΔn=1(1.2)(1.031×10−4)⋅400 Pa3.0×105 m=10.8 m/sV_g = \frac{1}{\rho f}\frac{\Delta p}{\Delta n} = \frac{1}{(1.2)(1.031 \times 10^{-4})}\cdot\frac{400\ \text{Pa}}{3.0 \times 10^5\ \text{m}} = 10.8\ \text{m/s}

On a 500 hPa chart, height contours 60 m apart over 500 km: Vg=gfΔzΔn=9.81×60(1.031×10−4)(5×105)=11.4V_g = \dfrac{g}{f}\dfrac{\Delta z}{\Delta n} = \dfrac{9.81 \times 60}{(1.031 \times 10^{-4})(5 \times 10^5)} = 11.4 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, Δx=9\Delta x = 9 km, Cmax=1C_\text{max} = 1:

Δtadv≤9000100=90 s,Δtsound≤9000100+340≈20 s\Delta t_\text{adv} \le \frac{9000}{100} = 90\ \text{s}, \qquad \Delta t_\text{sound} \le \frac{9000}{100 + 340} \approx 20\ \text{s}

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 100×450/9000=5100 \times 450 / 9000 = 5.

Cost of higher resolution

Going from 9 km to 4.5 km: 222^2 more columns ×\times 2 more steps =8×= 8\times the cost (16×16\times with twice the levels). From 9 km to 1.4 km: (9/1.4)3≈266×(9/1.4)^3 \approx 266\times.

Columns at 9 km: 4π(6.371×106)2(9000)2≈6.3×106\dfrac{4\pi(6.371 \times 10^6)^2}{(9000)^2} \approx 6.3 \times 10^6; with 137 levels about 8.6×1088.6 \times 10^8 grid points, each carrying about ten prognostic variables.

Height of the 500 hPa surface

Isothermal layer at 250 K: H=RdT/g=287×250/9.81=7.3H = R_dT/g = 287 \times 250 / 9.81 = 7.3 km. From a 1013 hPa surface:

p(5.5 km)=1013 e−5.5/7.3≈478 hPap(5.5\ \text{km}) = 1013\,e^{-5.5/7.3} \approx 478\ \text{hPa}

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 f=(12,15,9,20)f = (12, 15, 9, 20) °C against observations o=(10,16,9,17)o = (10, 16, 9, 17) °C, errors (2,−1,0,3)(2, -1, 0, 3):

bias=44=+1.0 K,RMSE=4+1+0+94=3.5=1.87 K\text{bias} = \frac{4}{4} = +1.0\ \text{K}, \qquad RMSE = \sqrt{\frac{4 + 1 + 0 + 9}{4}} = \sqrt{3.5} = 1.87\ \text{K}

If persistence (tomorrow = today) has MSEref=7.0MSE_\text{ref} = 7.0 K², the skill score is 1−3.5/7.0=0.501 - 3.5/7.0 = 0.50: half the persistence error variance removed.

References