
November 2026 · Politecnico di Milano
Atmosphere and Ocean Dynamics — Lecture 9
Prof. Dr. Pedro da Silva Peixoto
Applied Mathematics
Instituto de Matemática e Estatística
Universidade de São Paulo
Visiting Professor at MOX Lab
Politecnico di Milano
Previous knowledge
How the models of today assemble the methods of this course, and how they got there
(Williamson 2007; Staniforth and Thuburn 2012; Randall et al. 2019)

The ENIAC at Aberdeen. U.S. Army photo, public domain

24-h change of 500 hPa height, 30 Jan. 1949: observed (solid), computed (dashed). CC BY 4.0
\[\frac{\partial\zeta}{\partial t} + J(\psi, \zeta + f) = 0, \qquad \nabla^2\psi = \zeta\]
\(\zeta\): vorticity; \(\psi\): streamfunction; \(J(\psi, q)\): advection of \(q\); \(f\): Coriolis parameter
But: one level of one variable. How do we get the whole atmosphere?
The first forecast by numbers that worked: one equation, one layer, a Poisson problem at every step
(Charney et al. 1950; Lynch 2008) · Photo: commons.wikimedia.org: ENIAC · Map: doi:10.3402/tellusa.v2i4.8607, Fig. 3c
In twenty years, from one equation for one layer to general circulation models
(Phillips 1956; SMAGORINSKY 1963; KASAHARA and WASHINGTON 1967; Shuman and Hovermale 1968; Randall et al. 2019)
But: each member is a full model. On which grid?
A single forecast is not enough: predict the uncertainty too
(Lorenz 1963; Kalnay 2003)
But: how small is “tiny”?
On a latitude–longitude grid, the cells at the poles set the time step of the whole model
(Staniforth and Thuburn 2012; Williamson 2007)
Exercise 1 — The pole problem. A latitude–longitude grid with a spacing of \(0.25^\circ\) (\(1440\times720\) points). Compute the east–west spacing \(\Delta x = a\cos\varphi\,\Delta\lambda\) at the equator, at \(60^\circ\)N and in the last row, \(89.875^\circ\)N, and the largest stable explicit time step \(\Delta t = \Delta x/c\) for gravity waves with \(c = 300\) m/s.
| equator | \(60^\circ\)N | \(89.875^\circ\)N | |
|---|---|---|---|
| \(\Delta x\) | |||
| \(\Delta t = \Delta x / c\) |
\(a = 6371\) km, \(\;\Delta\lambda = 0.25^\circ = 4.36\times10^{-3}\) rad.
To hand in. A quasi-uniform grid with the same number of columns: its mean spacing \(\sqrt{4\pi a^2/N}\) and its time step. How many columns does a global grid of 1 km need?
In notebook 09a (❗ 6.1): open in Colab · download
(Staniforth and Thuburn 2012)
The last row near the pole sets the time step of the whole latitude–longitude model
(Staniforth and Thuburn 2012; Williamson 2007)
\(x_j\): grid point \(j\); \(\Delta x\): grid spacing; \(U\): wind speed; \(\Delta t\): time step
CFL still holds: the trajectory puts the true domain of dependence inside the stencil
(Durran 2010, Sect. 7.1; Staniforth 1997)
Spectral transforms removed the pole problem and made semi-implicit steps easy
(Orszag 1970; Eliasen et al. 1970; Bourke 1974; HOSKINS and SIMMONS 1975; Simmons et al. 1989; Ritchie et al. 1995)
| Model (centre) | Resolution | Levels | Time step |
|---|---|---|---|
| IFS (ECMWF, Europe) | about 9 km (TCo1279) | 137 | SISL |
| YHGSM (NUDT, China) | about 15 km (TL1279) | 137 | SISL |
| HGFM / BFS (IITM, India) | about 6.5 km (TCo1534) | 64 | SISL |
| BAM (CPTEC/INPE, Brazil) | about 20 km | 96 | semi-implicit, Eulerian or SL |
| GSM (JMA, Japan) | about 13 km (TQ959) | 128 | SISL |
| ARPEGE (Météo-France), stretched | about 7 km over France (T1198) | 105 | SISL |
| GFS (NOAA, USA), 1980–2019 | about 13 km (TL1534) | 64 | SISL |
| AROME (Météo-France), limited area | 1.3 km (bi-Fourier) | 90 | SISL |
| EC-Earth3 (Europe), climate | about 80 km (TL255) | 91 | SISL |
“The state of the art of the millennium”: pseudo-spectral, semi-implicit, semi-Lagrangian
(Krishna et al. 2025; Figueroa et al. 2016; Japan Meteorological Agency 2024; Météo-France 2016; Döscher et al. 2022; Staniforth and Thuburn 2012)
Spectral models do not scale on today’s computers: the reason for a new generation of models
(Williamson 2007; Wedi et al. 2013; Bauer et al. 2021)
The kilometre scale costs about a thousand times today’s forecast: methods must scale
(Wedi et al. 2020; Bauer et al. 2021; Adams et al. 2019)
1. Spectral transforms
Spherical harmonics have no pole problem: ECMWF’s IFS. The Legendre transforms grow costly at high resolution
2. Long time steps
Semi-implicit (fast waves implicit) and semi-Lagrangian (follow the flow back): steps much longer than an explicit Eulerian scheme allows (IFS, the Met Office’s ENDGame)
3. Quasi-uniform grids
Cells of nearly the same size everywhere: cubed sphere, icosahedral triangles, Voronoi hexagons
Change the basis, the time step, or the grid
(Staniforth and Thuburn 2012; Williamson 2007)
Quasi-uniform grids and local operators: models built to scale
(SADOURNY et al. 1968; WILLIAMSON 1968; Staniforth and Thuburn 2012)
Notebook 09a (open in Colab · download): build a grid like MONAN’s in a few lines of Python.
A Voronoi grid refined over the Alps
Predict, run, explain: how much smaller do the cells get for a density 256 times larger?
Build a grid like MONAN’s in a few lines of Python
(Ringler et al. 2011; Staniforth and Thuburn 2012)
Quasi-uniform grids remove the pole problem; refinement puts the small cells where we want them
(Ringler et al. 2011)
\(u\), \(w\): horizontal and vertical velocity; \(p\): pressure; \(\theta\): potential temperature; \(b\): buoyancy; \(\psi\): streamfunction; \(\xi\): vorticity of the slice
The vertical has its own staggering choices, as the horizontal did
(Holdaway et al. 2013; Melvin et al. 2019)
\(u\), \(v\): horizontal velocity; \(w\): vertical velocity; \(\theta\): potential temperature
Staggering matters in the vertical too: Charney–Phillips for waves, Lorenz for conservation
(Holdaway et al. 2013)
\[\Delta t \le \frac{\Delta z}{c_s} = \frac{20\ \mathrm{m}}{340\ \mathrm{m/s}} \approx 0.06\ \mathrm{s}\]
\(\Delta t\): time step; \(\Delta z\): thickness of a layer near the ground; \(c_s\): speed of sound
Somewhere there is always an elliptic or implicit solve: the price of fast waves
(Durran 2010; Klemp et al. 2007)
A rigid lid reflects the waves back down: a wrong, standing pattern (error 81% after 12 h). A sponge layer in the top 12 km, Rayleigh damping \(-\gamma(z)\,\xi\) and \(-\gamma(z)\,b'\), absorbs them (4%), if deep and gentle enough
\(\gamma(z)\): damping rate, zero below the sponge; \(\xi\): vorticity of the slice; \(b'\): buoyancy perturbation; \(w\): vertical velocity. A linear slice model: wind 10 m/s over a 100 m ridge (drawn 5 times higher)
A finite domain must let the waves leave: the sponge, a piece of numerics with no physics in it
(Klemp and Lilly 1978; Klemp et al. 2008)
| height \(z\) | terrain-following \(\sigma\) | isentropic / isopycnal | hybrid | |
|---|---|---|---|---|
| + | simple, exact pressure gradient | smooth over mountains | follows the flow: little false mixing | follows the ground low down, flat aloft |
| − | steps at the ground | error over steep slopes | surfaces meet the ground | more complex |
\(z\): height; \(\sigma\): a terrain-following coordinate, constant on the ground; \(\theta\): potential temperature
No vertical coordinate is best everywhere: models mix them
(Gal-Chen and Somerville 1975; Schär et al. 2002; Griffies et al. 2000)
Along a sloping \(\sigma\) surface the model sees a difference of two large terms:
\[\nabla_z p = {\color{#1f5ccc}\nabla_\sigma p} - {\color{#c62828}\frac{\partial p}{\partial z}\,\nabla_\sigma z}\]
\(p\): pressure; \(z\): height; \(\nabla_z\), \(\nabla_\sigma\): horizontal gradients at constant \(z\) and at constant \(\sigma\)
Following the terrain is convenient, but a small difference of large numbers is dangerous
(Haney 1991; Schär et al. 2002)
\(h_0 = 250\) m: peak height; \(a = 5\) km: envelope half-width; \(\lambda = 4\) km: ripple wavelength; \(w\): vertical velocity. Steady linear solution, wind 10 m/s
Mountains are still a research question for dynamical cores, here in Milan too
(Schär et al. 2002; Shaw and Weller 2016; Orlando et al. 2024)
Shaded: Gusto runs of the compressible Euler equations; \(\theta'\): potential-temperature perturbation; \(w\): vertical velocity; lines: linear theory
Bubbles, density currents, gravity waves, mountains: the standard tests, here run with Gusto
(Bryan and Fritsch 2002; Straka et al. 1993; Skamarock and Klemp 1994; Schär et al. 2002)
With the right equations and a converged reference, a model can be checked to the per cent
(Straka et al. 1993; Melvin et al. 2019; Natale et al. 2016)
| Model (centre) | Grid | Horizontal | Staggering | Vertical | Time |
|---|---|---|---|---|---|
| ACME-A (Sandia, Colorado) | cubed sphere | spectral elements | A | Lorenz, floating mass | KGU53 Runge–Kutta |
| CSU (Colorado State) | geodesic | finite volumes | Z | Lorenz, height | Adams–Bashforth 3 |
| DYNAMICO (IPSL) | geodesic | finite volumes | C | Lorenz, floating mass | ARK(2,3,2) IMEX |
| FV3 (GFDL) | cubed sphere | finite volumes | D | co-located, floating mass | forward–backward, semi-implicit |
| FVM (ECMWF) | octahedral | finite volumes | A | co-located, height | semi-implicit |
| GEM (ECCC) | Yin–Yang | finite differences | C | Charney–Phillips, log pressure | semi-implicit |
| ICON (MPI-M, DWD) | icosahedral triangles | finite volumes | C | Lorenz, height | predictor–corrector |
| MPAS (NCAR) | Voronoi | finite volumes | C | Lorenz, height | split-explicit |
| NICAM (Japan) | geodesic | finite volumes | A | Lorenz, height | split-explicit |
| OLAM (Duke, Miami) | geodesic | finite volumes | C | Lorenz, height, cut cells | Adams–Bashforth 2 |
| Tempest (UC Davis) | cubed sphere | spectral elements | A | Lorenz, height | ARS(2,3,2) IMEX |
NCAR, June 2016: a two-week summer school. Tests: a moist baroclinic wave, a tropical cyclone, a splitting supercell on a small planet
Staggering: Arakawa’s A, C, D grids; Z: vorticity, divergence and mass at the same points. Floating mass: Lagrangian vertical layers. IMEX: implicit–explicit Runge–Kutta (ARK, ARS)
Very different formulations, judged on the same tests
(Ullrich et al. 2017; Jablonowski and Williamson 2006)
| MPAS, MONAN | FV3 | ICON | LFRic | |
|---|---|---|---|---|
| Centre | NCAR; INPE (Brazil) | GFDL; NOAA’s GFS since 2019 | DWD, MPI-M | Met Office |
| Equations | compressible, non-hydrostatic | compressible, non-hydrostatic | compressible, non-hydrostatic | compressible, non-hydrostatic |
| Grid | Voronoi hexagons | cubed sphere | icosahedral triangles | cubed sphere |
| Space | finite volumes, C grid (TRiSK) | finite volumes, D grid | finite volumes, C grid | mixed finite elements |
| Time | split-explicit | forward–backward, implicit vertical | predictor–corrector | iterated semi-implicit semi-Lagrangian |
| Vertical | height, Lorenz | floating Lagrangian layers | height, Lorenz | height, Charney–Phillips |
TRiSK: the C-grid scheme of Thuburn, Ringler, Skamarock and Klemp; floating Lagrangian layers: levels that move with the flow and are remapped
The same equations, four discretizations: every method of this course is in a model of today
(Skamarock et al. 2012; Harris and Lin 2013; Zängl et al. 2014; Melvin et al. 2019; Adams et al. 2019; Ullrich et al. 2017)
| Country | Model (centre) | Grid | Method |
|---|---|---|---|
| Brazil | MONAN (INPE), MPAS-based | Voronoi | finite volumes (TRiSK) |
| Brazil | BAM (CPTEC/INPE) | Gaussian | spectral, semi-implicit, Eulerian or SL |
| Russia | SL-AV (Hydrometcentre) | reduced lat–lon | finite differences, SISL |
| India | HGFM / BFS (IITM) | cubic octahedral | spectral, SISL |
| India | NCUM (NCMRWF; the Met Office’s UM) | lat–lon, C grid | finite differences, SISL |
| China | GRAPES / CMA-GFS (CMA) | lat–lon | finite differences, SISL |
| China | YHGSM (NUDT) | Gaussian | spectral, SISL |
| South Africa | UM (SAWS; Met Office) | lat–lon, C grid | finite differences, SISL |
SISL: semi-implicit semi-Lagrangian; SL: semi-Lagrangian; lat–lon: latitude–longitude
Semi-implicit semi-Lagrangian steps (SISL) on many grids: the workhorse of operational centres
(Figueroa et al. 2016; Krishna et al. 2025; Tolstykh et al. 2017; Brown et al. 2012; Jiang et al. 2021; Skamarock et al. 2012); GRAPES/CMA-GFS: Pedro’s BRICS 2026 talk
Windy.com shows the IFS, GFS, ICON and AIFS side by side: four grids, four methods, forecasts that differ by degrees
The forecast you read on your phone is one model among several, each with its own numerics
Data: open-meteo.com, forecasts available on 23 Oct. 2026 · App: windy.com
\[\frac{D\mathbf u}{Dt} + f\,\mathbf k\times\mathbf u = -\frac{1}{\rho_0}\nabla\,\delta p + \mathbf F,\qquad \frac{\partial\,\delta p}{\partial z} = \rho_0 b,\qquad \nabla\cdot\mathbf u + \frac{\partial w}{\partial z} = 0\] \[\frac{DT}{Dt} = Q_T,\qquad \frac{DS}{Dt} = Q_S,\qquad b = b(T, S, z),\qquad {\color{#1f5ccc}w|_{z=0} = 0}\ \text{(rigid lid)}\]
\(\mathbf u = (u, v)\), \(w\): horizontal and vertical velocity; \(f\): Coriolis parameter; \(\rho_0\): reference density; \(\delta p\): pressure departure; \(b\): buoyancy; \(T\), \(S\): temperature, salinity; \(Q_T\), \(Q_S\), \(\mathbf F\): eddy mixing
1969: primitive equations on z-levels, a rigid lid, and an elliptic solve each step
(Bryan 1969; Manabe and Bryan 1969; Griffies et al. 2000)
Thirty years of debate on one choice: how the layers of the model follow the ocean
(Griffies et al. 2000; Blumberg and Mellor 1987; Shchepetkin and McWilliams 2005; Bleck 2002)
Ocean grids moved their poles onto land, and their small cells to where the coasts are
(Murray 1996; Madec et al. 2026; Adcroft et al. 2019; Danilov et al. 2017; Ringler et al. 2013; Korn 2017; Hurlburt and Hogan 2000)
\(c_1\): speed of the first baroclinic mode; \(f\): Coriolis parameter; \(\Delta x\): grid spacing
The ocean’s weather is ten times smaller: ocean models need ten times finer grids
(Vallis 2017; Cushman-Roisin and Beckers 2011)
Notebook 09a (open in Colab · download): exercise 1 comes back there.
Today’s models assemble the methods of this course, each in its own way
Reading: (Williamson 2007; Staniforth and Thuburn 2012; Ullrich et al. 2017; Griffies et al. 2000; Randall et al. 2019)
Slides kept for reference, not shown in class.
Thank you! The problem is old; the tools are yours now
(Bauer et al. 2021; Vallis 2017; Cushman-Roisin and Beckers 2011)