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
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
\(\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\)
\(\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)
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\)
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
Plane wave, \(p = 2\): \(\beta = 0\) conserves the energy (RK4 error only), \(\beta > 0\) decreases it monotonically
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