M4E 2026 · Politecnico di Milano · 9–11 November

Polytopal Discontinuous Galerkin Methods for Geophysical Fluid Dynamics

The rotating shallow water equations on polygonal grids

Pedro S. Peixoto

with Felipe A. V. B. Alves, Ivan Fumagalli and Paola F. Antonietti

Instituto de Matemática e Estatística, Universidade de São Paulo

Visiting professor at MOX, Politecnico di Milano

The global atmosphere

Six days of an operational forecast, wind at 10 m: cyclones, jets and trade winds, a thin layer of air on a rotating sphere

ECMWF open data (CC BY 4.0), IFS forecast of 29 Oct 2026, 00 UTC

Global Models Grids

\(\newcommand{\jump}[1]{[\![\,#1\,]\!]}\newcommand{\avg}[1]{\{\!\!\{\,#1\,\}\!\!\}}\)

  • Lat–lon: tiny polar cells limit explicit time steps
  • Semi-implicit, semi-Lagrangian: long steps, but global solves (e.g. ECMWF IFS model, UKMetOffice)
  • Quasi-uniform cells: explicit and local, scales on many cores
  • Icosahedral/Voronoi: MPAS, ICON, NICAM, DYNAMICO, GRIST, MONAN

Explicit: local, but the step is set by the smallest cell · Implicit: long steps, global communication

Williamson, J. Meteor. Soc. Japan (2007); Staniforth & Thuburn, Q. J. R. Meteorol. Soc. (2012)

MPAS and MONAN

C-grid finite volumes (TRSK) on Voronoi cells

Model for Ocean-laNd-Atmosphere predictioN

MONAN, Brazil’s community model built on MPAS, operational at INPE since 3 September 2026: global ≈ 10 km, 11-day forecasts twice a day; next, 5 km over South America

Skamarock et al., Mon. Wea. Rev. (2012); Ringler et al., J. Comput. Phys. (2010); monanadmin.github.io (Sep. 2026)

The catch: low order on irregular cells

Divergence of a solid-body rotation (exactly zero), icosahedral grid, 40 962 cells (≈ 120 km)

TRSK (MPAS) truncation error, momentum equation: no convergence on irregular grids

  • Errors follow the grid, not the flow: grid imprinting
  • Higher-order finite volumes need wide stencils: less locality

Inconsistency, but with enough accuracy to allow MONAN to be operational!?!

Peixoto & Barros, J. Comput. Phys. (2013); Peixoto, J. Comput. Phys. (2016); Weller, Thuburn & Cotter, Mon. Wea. Rev. (2012)

Goal: high order, local in space

High-order discretizations on polygonal grids, robust to cell irregularity,
that keep the data locality of finite volumes

Polytopal discontinuous Galerkin (PolyDG)

  • DG on arbitrary polygons and polyhedra
  • \(hp\)-theory on general meshes, faces of any size
  • Exact, quadrature-free integration on polytopes
  • Seismic waves, brain, poroelasticity, …
  • Not yet for geophysical flows: rotation, balance, vortices

This work: PolyDG for the rotating shallow water equations

open-source C++ PolyDG library

Cangiani, Georgoulis & Houston (2014); Antonietti et al. (2016, 2018, 2021, 2022). Meshes: Corti, Bonizzoni & Antonietti, J. Sci. Comput. (2024)

Rotating shallow water equations

Vector-invariant form:

\[ \begin{alignedat}{2} \partial_t \eta + \nabla\cdot(\eta\mathbf{u}) &= 0 &&\qquad {\small\color{gray}\text{(continuity)}}\\ \partial_t \mathbf{u} + (\zeta+f)\,\mathbf{u}^{\perp} + \nabla B &= 0 &&\qquad {\small\color{gray}\text{(momentum)}} \end{alignedat} \]

\(\zeta = \partial_x v - \partial_y u\), \(\quad B = g(\eta+b) + \tfrac12|\mathbf{u}|^2\)

  • Mass, energy, potential vorticity \(q = (\zeta+f)/\eta\)
  • Linear regime:
    • steady geostrophic mode, \(f\mathbf{u}^{\perp} = -g\nabla\eta\)
    • inertia–gravity waves, \(\omega^2 = f^2 + gH|\mathbf{k}|^2\)
  • \(f\)-plane, bi-periodic, Earth-sized: no sphere yet

The standard first step for the dynamical cores of global weather and climate models

Williamson et al., J. Comput. Phys. (1992); Vallis, Atmospheric and Oceanic Fluid Dynamics, Cambridge (2017); Zeitlin, Geophysical Fluid Dynamics, Oxford (2018)

Discrete space on polygons

Basis function \(L_2(x)\,L_1(y)\) of the bounding box \(\mathcal{B}_\kappa\)

Example of a smooth field (stationary vortex), cell by cell

  • \(V_h^p\): degree \(p\) per polygon, discontinuous
  • Modal: Legendre polynomials of the bounding box
  • Exact integration: quadrature-free or sub-triangles
  • Block-diagonal mass matrix, explicit RK4

The weak form

On each polygon \(\kappa\), test with \(\phi\in\mathbb{P}^p(\kappa)\) and integrate by parts:

\[ \begin{aligned} (\partial_t\eta_h,\phi)_\kappa - (\eta_h\mathbf{u}_h,\nabla\phi)_\kappa + \color{#2e7d32}{\langle\,\widehat{\eta\mathbf{u}}\cdot\mathbf{n}_\kappa},\,\phi\,\rangle_{\partial\kappa} &= 0\\[6pt] (\partial_t\mathbf{u}_h,\phi)_\kappa + \big((\zeta_h+f)\,\mathbf{u}_h^{\perp},\phi\big)_\kappa - (B_h,\nabla\phi)_\kappa + \color{#2e7d32}{\langle\,\widehat{B}\,\mathbf{n}_\kappa},\,\phi\,\rangle_{\partial\kappa} &= 0 \end{aligned} \]

  • Volume terms: local to \(\kappa\)
  • Momentum: only \(\nabla B\) is integrated by parts
  • On a face, two traces: \(\avg{a} = \tfrac12(a^-+a^+)\), \(\ \jump{a} = a^- - a^+\)
  • Numerical fluxes: one value per face, the only coupling

Fluxes: energy-conjugate, normal penalty

\[ \begin{aligned} \widehat{\eta\mathbf{u}}\cdot\mathbf{n} &= \avg{\mathbf{F}_h}\cdot\mathbf{n} + \frac{\alpha}{g}\,\jump{B_h}\\[6pt] \widehat{B} &= \avg{B_h} + \frac{\alpha}{\bar\eta_F}\,{\color{#2e7d32}\jump{\mathbf{F}_h\cdot\mathbf{n}}} \end{aligned} \]

  • \(\mathbf{F}_h = \eta_h\mathbf{u}_h\) and \(B_h\): energy-conjugate pair
    \(\delta E/\delta\eta = B\), \(\ \delta E/\delta\mathbf{u} = \eta\mathbf{u}\)
  • Each flux penalized by the jump of the other variable
  • Only the normal mass-flux jump is penalized
  • Penalty strength \(\alpha \ge 0\): a local wave speed (HLL)

\(\bar\eta_F\): mean depth on the face

\(\alpha = \beta\,\dfrac{|s_L s_R|}{s_R - s_L}\)

Harten–Lax–van Leer (HLL): \(s_L\), \(s_R\) the slowest and the fastest of \(\bar{\mathbf{u}}\cdot\mathbf{n} \mp \sqrt{g\bar\eta}\) on the two sides

Inspired by Ricardo, Lee & Duru, J. Comput. Phys. (2024): collocated vector-invariant DG on the cubed sphere

Vorticity: upwind weak curl

  • The tangential jump is not penalized: it carries geostrophic balance
  • It enters only through the vorticity \(\zeta_h\), a weak curl: \(\zeta = \partial_x v - \partial_y u\) integrated by parts, with one tangential velocity per face, taken upwind

\[ (\zeta_h,\phi)_\kappa = -(\mathbf{u}_h,\nabla^{\perp}\phi)_\kappa + \langle \phi,\, \mathbf{u}_h^{\uparrow}\cdot\mathbf{t}\rangle_{\partial\kappa} \]

  • \(\mathbf{u}_h^{\uparrow} = \mathbf{u}_h^-\) or \(\mathbf{u}_h^+\): the upwind side, by the sign of the mean \(\avg{\mathbf{u}_h}\cdot\mathbf{n}\) on the face

  • \((\zeta_h+f)\,\mathbf{u}_h^{\perp}\): volume term only

Weak curl with average trace: Ricardo, Lee & Duru, J. Comput. Phys. (2024); upwind trace (\(\gamma = 1\) in the paper): this work

What we prove, on any polygonal mesh and any \(p\)

✓ Mass locally and globally conserved, every \(\beta\)
✓ Absolute vorticity \(\int_\Omega(\zeta_h+f) = f\,\lvert\Omega\rvert\) exactly (weak curl)
✓ Linear energy \(\dfrac{dE_h}{dt} = -\sum_F \alpha_F\left(g\,\lVert\jump{\eta_h'}\rVert^2 + H\,\lVert\jump{\mathbf{u}_h\cdot\mathbf{n}}\rVert^2\right) \le 0\)
✓ Linear balance \(\eta_h' = \tfrac{f}{g}\psi_h\), \(\ \mathbf{u}_h = \nabla^{\perp}\psi_h\), \(\ \psi_h \in C^0\): steady, every \(\beta\)
✓ Nonlinear energy penalties dissipate, up to a projection defect
✓ Lake at rest preserved, with the bottom in \(V_h^p\)

No mesh regularity or convexity needed: stability for every \(\beta \ge 0\) in the linear regime

Test bed: Voronoi meshes on the plane

  • Earth-sized torus, \(H = 10\) km, \(f\)-plane
  • \(p = 1,\dots,4\), RK4, \(\beta = 0.5\), up to 65 536 cells
  • Same meshes: TRSK (MPAS) and Peixoto (2016)
  • Balanced zonal flow, vortex, unstable jet

Convergence: order \(p+1\) on every mesh

Unknowns per cell: TRSK 4 (1 depth, 3 normal velocities) · PolyDG 9, 18, 30, 45 for \(p = 1\)–4 Finest quasi-uniform mesh (65 536 cells): 43 slightly obtuse dual (Delaunay) triangles

PolyDG keeps order \(p+1\) on every mesh; TRSK drops to first order on the quasi-uniform one

Robust to cell distortion

  • 11 600 cells, random displacement of the generators, \(d = 0 \to 0.3\)
  • PolyDG error dominated by the projection: insensitive to the cell shape

PolyDG \(p = 1\) depth error, \(d = 0\) and \(d = 0.3\)

Same resolution, distorted cells: PolyDG error bands follow the flow, not the cells

Local refinement without imprinting

  • Zonal balance, 16 384 cells, core 2× finer, day 1
  • PolyDG \(p = 1\): error 5× smaller in the refined core
  • TRSK: as large in the core as outside, largest on the transition
  • Peixoto (2016): dipoles along the transition

Barotropically unstable jet

Penalty: needed, but not tuned

\(\beta = 0\): blow-up or noise. Any \(\beta \ge 0.1\): clean, results barely depend on \(\beta\)

High order pays off

  • Day 10, same window, comparable DOF: all unknowns \((\eta, u, v)\)
  • \(p = 3\) on 4096 cells forms the vortices that \(p = 1\) smears on 16 384
  • \(p = 2\) on 16 384 cells beats \(p = 1\) on 65 536 with half the DOF

At equal cost, high order wins

Local refinement in the jet

  • 4096 cells, day 14
  • North jet crosses the refined core: thinner filaments
  • South jet, its mirror image: background cells visible at \(p = 2\)
  • No feature marks the transition band

Parallel efficiency

  • One ghost layer, one exchange per RK stage
  • Block-diagonal mass matrix: no global solve
  • ≈ 90 % efficiency on a 48-core node, \(p = 2\)–4
  • Beyond a node (TCP): less loss at high \(p\)

Take-home messages

  • PolyDG for the rotating shallow water equations on any polygonal grid
  • Energy-conjugate, normal penalty + upwind weak curl: proven conservation, linear stability and balance
  • Order \(p+1\) on irregular, distorted and refined Voronoi meshes: no grid imprinting
  • High order pays off, and stays local in space

Next: curved polygons on spherical Voronoi grids, towards MPAS and MONAN

P. S. Peixoto, F. A. V. B. Alves, I. Fumagalli, P. F. Antonietti, Polytopal discontinuous Galerkin methods for the rotating shallow water equations on polygonal grids (2026)

Thanks!

github.com/vulpeslib/vulpes · ppeixoto [at] usp.br · www.ime.usp.br/~pedrosp

Funded by the European Union (ERC Synergy Grant NEMESIS, 101115663). Views and opinions expressed are however those of the authors only and do not necessarily reflect those of the European Union or the European Research Council Executive Agency. Neither the European Union nor the granting authority can be held responsible for them.

Backup: mass

Proposition (mass). For every \(p \ge 0\), every polygonal mesh and every \(\beta \ge 0\), the scheme is locally conservative and \(\dfrac{d}{dt}\displaystyle\int_\Omega \eta_h = 0\).

Proof. Take \(\phi = 1\) on \(\kappa\) in the continuity equation. The volume term \((\eta_h\mathbf{u}_h, \nabla 1)_\kappa\) vanishes, so \[ \frac{d}{dt}\int_\kappa \eta_h = -\int_{\partial\kappa} \widehat{\eta\mathbf{u}}\cdot\mathbf{n}_\kappa . \] The flux is single-valued and \(\mathbf{n}_\kappa\) changes sign across a face, so the face terms cancel in the sum over the cells of the bi-periodic domain. \(\square\)

  • Each cell changes only through the fluxes it shares with its neighbours
  • \(\int_\Omega \eta_h\) is linear in the state: it holds for RK4 as well
  • Needs single-valued fluxes only: no mesh regularity, any \(\beta\)

Backup: total absolute vorticity

Proposition (total absolute vorticity). With the weak curl, \(\int_\Omega \zeta_h = 0\) at all times, so \(\int_\Omega (\zeta_h + f) = f\,|\Omega|\) is conserved exactly.

Proof. Take \(\phi = 1\) in the weak curl. Since \(\nabla^\perp 1 = 0\), \[ (\zeta_h, 1)_\kappa = \langle 1,\, \mathbf{u}_h^{\uparrow}\cdot\mathbf{t} \rangle_{\partial\kappa} . \] The trace \(\mathbf{u}_h^{\uparrow}\) is single-valued on each face, and the two neighbours run through the face with opposite tangents \(\mathbf{t}\), so the face terms cancel in the sum over the cells. \(\square\)

  • The element-wise curl \(\partial_x v_h - \partial_y u_h\) gives \(\int_\Omega \zeta_h = \sum_F \int_F \jump{\mathbf{u}_h\cdot\mathbf{t}} \ne 0\)
  • Holds for the average trace and the upwind trace alike
  • Potential enstrophy and the other Casimirs are not conserved

Backup: energy, linear regime

Proposition (energy identity). Linearized about rest, with \(E_h = \tfrac12 \int_\Omega \big( g\,(\eta_h')^2 + H\,|\mathbf{u}_h|^2 \big)\), for every \(p\), every polygonal mesh and every \(\beta \ge 0\), \[ \frac{dE_h}{dt} = -\sum_F \alpha_F \Big( g\,\lVert \jump{\eta_h'} \rVert^2_{L^2(F)} + H\,\lVert \jump{\mathbf{u}_h\cdot\mathbf{n}} \rVert^2_{L^2(F)} \Big) \le 0 . \]

Proof. Test the continuity equation with \(g\,\eta_h'\) and the momentum equation with \(H\,\mathbf{u}_h\), both in \(V_h^p\). The Coriolis term gives \(Hf\,\mathbf{u}_h^\perp\cdot\mathbf{u}_h = 0\) pointwise. The volume terms combine into the boundary term \(gH\int_{\partial\kappa} \eta_h'\,\mathbf{u}_h\cdot\mathbf{n}\). On each face, by \(a^-b^- - a^+b^+ = \avg{a}\jump{b} + \jump{a}\avg{b}\), it cancels the central parts of the fluxes, and the penalty parts are left. \(\square\)

  • Stable for every \(\beta \ge 0\), and \(\beta = 0\) conserves the energy exactly
  • So \(\beta\) is a matter of accuracy and grid-scale noise, not of stability

Backup: energy, linear regime, in the runs

    1. Plane wave, \(p = 2\): \(\beta = 0\) conserves the energy (RK4 error only), \(\beta > 0\) decreases it monotonically
    1. Geostrophic balance: the full Cartesian penalty dissipates 1.5–1.9 times more than the normal one

Backup: geostrophic balance, linear regime

Proposition (discrete balance). Let \(\psi_h \in V_h^p\) be continuous, \(\eta_h' = \tfrac{f}{g}\,\psi_h\) and \(\mathbf{u}_h = \nabla^\perp \psi_h\). With the normal penalty, this state is exactly steady for the linear scheme, for every \(\beta \ge 0\).

Proof. In each cell, \(\nabla\cdot\nabla^\perp\psi_h = 0\), and \(f\,\mathbf{u}_h^\perp = -f\,\nabla\psi_h\) cancels \(g\,\nabla\eta_h' = f\,\nabla\psi_h\). On each face the residuals combine \[ \jump{\eta_h'} = \tfrac{f}{g}\,\jump{\psi_h} = 0 \quad\text{and}\quad \jump{\mathbf{u}_h\cdot\mathbf{n}} = -\jump{\partial_{\mathbf{t}}\psi_h} = 0, \] since \(\psi_h\) is continuous and so is its derivative along the face. \(\square\)

  • A full velocity penalty adds \(\alpha\jump{\mathbf{u}_h\cdot\mathbf{t}} = \alpha\jump{\partial_{\mathbf{n}}\psi_h} \ne 0\): the balance is lost
  • Continuous \(\psi_h\) beyond the constants exist from \(p = 4\) on these meshes
  • A smooth \(\psi\) is balanced up to face jumps that vanish under refinement

Backup: energy, nonlinear regime

Proposition (energy budget). With the projection errors \(e_B = (I - \Pi_h) B_h\), \(\mathbf{e}_F = (I - \Pi_h) \mathbf{F}_h\), for every \(p\), mesh and \(\alpha \ge 0\) (no Froude condition): \[ \begin{aligned} \frac{dE_h}{dt} &= -\sum_\kappa \mathcal{R}_\kappa - \sum_F \mathcal{A}_F - \sum_F \mathcal{P}_F,\\ -\mathcal{P}_F &\le \mathcal{D}_F = \int_F \frac{\alpha}{4} \Big( \frac{1}{g}\jump{e_B}^2 + \frac{1}{\bar\eta_F}\jump{\mathbf{e}_F\cdot\mathbf{n}}^2 \Big). \end{aligned} \]

Proof. Test with \(\Pi_h B_h\) and \(\Pi_h \mathbf{F}_h\), the projections of \(\delta E/\delta\eta\) and \(\delta E/\delta\mathbf{u}\). Since \(\jump{\Pi_h B_h} = \jump{B_h} - \jump{e_B}\), completing the square gives \(\jump{B_h}\jump{\Pi_h B_h} = \big(\jump{B_h} - \tfrac12\jump{e_B}\big)^2 - \tfrac14 \jump{e_B}^2\), and the same for \(\mathbf{F}_h\cdot\mathbf{n}\). \(\square\)

  • Energy-conjugate pairing: a sum of squares up to \(\mathcal{D}_F\); same-variable penalties are indefinite when \(\avg{\mathbf{u}\cdot\mathbf{t}} \ne 0\)
  • \(\mathcal{R}_\kappa\) (rotation) and \(\mathcal{A}_F\) involve projection errors: a full estimate is open

Backup: lake at rest

Remark (lake at rest). With the bottom \(b\) in \(V_h^p\), the state \(\mathbf{u}_h = 0\), \(\eta_h + b = H\) is steady, for every \(\beta \ge 0\).

Proof. At rest \(B_h = g(\eta_h + b) = gH\) is constant and \(\mathbf{F}_h = \eta_h\mathbf{u}_h = 0\). The Bernoulli volume term cancels its central face term (integration by parts of a constant), the mass-flux terms vanish with \(\mathbf{F}_h\), and the penalties vanish since \(\jump{B_h} = 0\) and \(\jump{\mathbf{F}_h} = 0\). \(\square\)

  • The energy-conjugate pairing does it: a depth penalty \(\alpha\jump{\eta_h} = -\alpha\jump{b}\) would not
  • Positivity of \(\eta_h\) is not guaranteed (deep water here)
  • A property of the formulation: topography is not implemented in the solver

Backup: convergence, both steady states

Backup: quadrature-free integration

Euler’s identity + divergence theorem, monomial \(m = x^a y^b\): \[ \int_\kappa m \,d\mathbf{x} = \frac{1}{2+a+b}\sum_{F\subset\partial\kappa} (\mathbf{x}_F\cdot\mathbf{n}_\kappa) \int_F m\, ds \]

  • Recursively down to the face endpoints: exact, no sub-triangles
  • Bilinear forms (mass matrices): once, at set-up
  • Nonlinear residual: sub-triangulation (cheaper for products of fields)

Antonietti, Houston & Pennesi, J. Sci. Comput. (2018); Radley, Houston & Hubbard, Math. Eng. (2024)