Finite elements: from Galerkin to discontinuous Galerkin

Atmosphere and Ocean Dynamics, Lecture 8: notes

Author

Pedro S. Peixoto

Published

December 2, 2026

Abstract

Finite elements: local basis functions on any mesh. These notes discuss the weak form and Galerkin’s method with hat functions; continuous and discontinuous Galerkin (DG) methods for advection, with numerical fluxes, a block-diagonal mass matrix, convergence of order \(p + 1\) and the time-step limit; DG in two dimensions with Firedrake; compatible finite elements, the C grid on any mesh, which conserve energy and keep geostrophic balance; and the dynamical cores built on them, Gusto and the Met Office’s LFRic.

1 Why local?

Spectral methods expand the fields in global functions, Fourier waves or spherical harmonics: every coefficient depends on every grid point, and each transform needs a global exchange of data on a parallel computer. Finite-element methods also expand the fields in basis functions, but each basis function is non-zero on a few elements only (its support). The equations for the coefficients then couple only neighbouring elements; the mesh can be unstructured and refined where needed; and inside each element the polynomial degree can be raised for accuracy (Figure 1). The price is a systematic way of deriving equations for the coefficients: the weak form (Durran 2010, sec. 6.5; Marras et al. 2016).

Figure 1: Left: three Fourier waves on the unit interval, the global basis functions of spectral methods, non-zero almost everywhere. Right: hat functions on a non-uniform mesh, the local basis functions of linear finite elements; each one is non-zero on two elements only (shaded for one of them), and the mesh can be refined where needed.

2 Weak form (1/4): multiply and integrate

The model problem is the one-dimensional Poisson problem, the one-dimensional version of the Poisson problem that the 1950 forecast solved at every step: \[ -u'' = f \quad\text{on } (0, 1), \qquad u(0) = u(1) = 0 , \] with \(u\) the unknown, \(f\) a given source and a prime the derivative \(d/dx\). Multiply by a test function \(v\) with \(v(0) = v(1) = 0\) and integrate: \(\int_0^1 (-u'' - f)\,v\,dx = 0\). If this holds for every \(v\), the equation holds: take \(v\) concentrated near any point (Figure 2).

Figure 2: A solution \(u\) and one test function \(v\), zero at both ends: the residual \(-u'' - f\) is weighted by \(v\) and integrated.

3 Weak form (2/4): integrate by parts

Integration by parts moves one derivative from \(u\) to \(v\): \(-\int_0^1 u''v\,dx = \int_0^1 u'v'\,dx - [u'v]_0^1\), and the boundary term vanishes because \(v = 0\) at the ends. The weak form is: find \(u\) with \(u(0) = u(1) = 0\) such that \[ \int_0^1 u'\,v'\,dx = \int_0^1 f\,v\,dx \qquad \text{for every } v \text{ with } v(0) = v(1) = 0 . \] Only first derivatives appear: a function with kinks, piecewise linear for example, has no second derivative at the kinks, but its first derivative is piecewise constant and the integral makes sense (Figure 3). “For every \(v\)”, however, is infinitely many equations.

Mathematical aside. The natural space is \(H^1_0(0,1)\), the functions with a square-integrable derivative that vanish at the ends. With \(a(u, v) = \int u'v'\,dx\), bounded and coercive on \(H^1_0\) (Poincaré’s inequality), the Lax–Milgram theorem gives a unique weak solution for every \(f\) in \(L^2\).

Figure 3: After integration by parts only first derivatives remain: a hat function, with kinks, has a piecewise constant derivative, and the weak form makes sense for it.

4 Galerkin (3/4): a finite set of hats

Cut \([0, 1]\) into elements by nodes \(0 = x_0 < x_1 < \dots < x_n = 1\), and let \(\ell_j\) be the hat function of node \(j\), the linear Lagrange function: 1 at \(x_j\), 0 at the other nodes, linear on each element. Look for \(u_h = \sum_{j=1}^{n-1}U_j\ell_j\), with the nodal values \(U_j\) as unknowns, and test with each \(v = \ell_i\): the Galerkin method, with trial and test functions from the same finite space, \[ \sum_j \Big(\int_0^1\ell_i'\ell_j'\,dx\Big)U_j = \int_0^1 f\,\ell_i\,dx, \qquad\text{i.e.}\qquad SU = F , \] with the stiffness matrix \(S\). There is one equation per unknown, and \(S_{ij} \ne 0\) only if \(\ell_i\) and \(\ell_j\) overlap: the matrix is sparse (Figure 4).

Mathematical aside. Galerkin’s method is optimal in the energy norm: \(a(u - u_h, v_h) = 0\) for every \(v_h\) in the finite space (Galerkin orthogonality), and Céa’s lemma gives \(\|u - u_h\|_{H^1} \le C\min_{v_h}\|u - v_h\|_{H^1}\), an error of order \(h\) for hats; with a duality argument, order \(h^2\) in \(L^2\). For this one-dimensional problem with exact load integrals, \(u_h\) is even exact at the nodes.

Figure 4: The Galerkin solution of \(-u'' = f\) with eight linear elements: \(u_h = \sum_j U_j\ell_j\) (red), each term \(U_j\ell_j\) (thin blue hats), and the exact solution \(u = \sin\pi x + \sin 3\pi x\) (gray). In one dimension \(u_h\) equals \(u\) at the nodes.

5 Galerkin (4/4): the matrices

On a uniform mesh of size \(h\), \(\ell_j' = 1/h\) on \([x_{j-1}, x_j]\) and \(-1/h\) on \([x_j, x_{j+1}]\), and only neighbours overlap: \[ S = \frac1h\,\mathrm{tridiag}(-1, 2, -1), \qquad M = \frac h6\,\mathrm{tridiag}(1, 4, 1) , \] with the mass matrix \(M_{ij} = \int\ell_i\ell_j\,dx\), which appears with the time derivative in time-dependent problems, \(\int\partial_t u_h\,\ell_i\,dx = (M\dot U)_i\) (Figure 5). With \(F_j \approx h f(x_j)\), row \(j\) of \(SU = F\) is \((-U_{j-1} + 2U_j - U_{j+1})/h^2 = f(x_j)\): the centred second difference. The difference from finite differences is not this row but what comes with it: any mesh, any degree, and a proof of convergence.

Figure 5: The overlap of two neighbouring hats (top) and of their derivatives (bottom), the only non-zero entries of the stiffness and mass matrices on a uniform mesh.

6 Continuous Galerkin for advection

For \(u_t + c\,u_x = 0\) on a periodic interval, the same procedure gives \(M\dot U = -c\,\big[\int\ell_i\,\ell_j'\,dx\big]\,U\), where \(\int\ell_i\,\ell_j'\,dx\) is \((-\tfrac12, 0, \tfrac12)\) on a uniform mesh: \[ \frac{\dot U_{j-1} + 4\dot U_j + \dot U_{j+1}}{6} = -c\,\frac{U_{j+1} - U_{j-1}}{2h} . \] For a wave \(e^{i(kx-\omega t)}\) this gives the numerical frequency \(\omega h/c = 3\sin kh/(2 + \cos kh)\), accurate to fourth order in the phase, better than the centred difference, \(\omega h/c = \sin kh\) (Durran 2010, sec. 3.3.1). But the inverse of the tridiagonal mass matrix couples all unknowns, so each explicit time step needs a linear solve, a sparse global solve in two or three dimensions; and the scheme is centred, with no damping of grid-scale noise (Durran 2010, sec. 6.5.1). Letting the solution jump between elements removes both (Figure 6).

Figure 6: The same function, \(e^{\sin 2\pi x} - 1.2\) (gray), on four elements: continuous piecewise linear (left, one value per node) and discontinuous piecewise linear (right, the \(L^2\) projection on each element, two values at every face).

7 DG (1/4): a polynomial in each element

On each element \(K_j = [x_{j-1/2}, x_{j+1/2}]\) the solution is a polynomial of degree \(p\), with no continuity between elements: the broken space \(V_h = \{v : v|_{K_j}\in\mathbb P_p \text{ for every } K_j\}\), with \(\mathbb P_p\) the polynomials of degree at most \(p\) (Durran and Hesthaven & Warburton write \(N\) for the degree, Cockburn \(k\)). Each element has \(p + 1\) unknowns, and at each face \(u_h\) has two values, \(u^-\) from the left element and \(u^+\) from the right one (Figure 7). Reed and Hill introduced the method in 1973 for neutron transport; Cockburn and Shu developed it for conservation laws (Cockburn 2003; Hesthaven and Warburton 2008).

Figure 7: A DG solution: a polynomial of degree \(p\) in each element, free to jump at the faces.

8 DG (2/4): integrate by parts in one element

Take a test function \(v\) that lives on \(K_j\) only, multiply, integrate over \(K_j\) and move the derivative to \(v\): \[ \int_{K_j}\partial_t u_h\,v\,dx - \int_{K_j}c\,u_h\,\partial_x v\,dx + \hat F_{j+1/2}\,v(x_{j+1/2}^-) - \hat F_{j-1/2}\,v(x_{j-1/2}^+) = 0 , \] where \(\hat F\) is the numerical flux at a face. The boundary terms are the fluxes through the two faces, and the equations of one element meet those of its neighbours only there: they are local (Figure 8). As in a finite volume, this is the integral form over the element, but with a polynomial instead of a constant, and for every test function of the element (Durran 2010, sec. 6.6; Hesthaven and Warburton 2008).

Figure 8: A test function that lives on one element; integration by parts leaves the fluxes through its two faces.

9 DG (3/4): the numerical flux

At a face \(c\,u\) has two possible values: we choose one flux \(\hat F(u^-, u^+)\), the same for the two elements that share the face, so that what leaves one element enters the other (conservation), and consistent, \(\hat F(u, u) = c\,u\). For \(c > 0\) the upwind flux takes the value from upstream, \(\hat F = c\,u^-\) (Figure 9), the choice of the upwind finite-volume scheme. Other choices are the central flux \(c\,(u^- + u^+)/2\), the Lax–Friedrichs flux and, for systems, approximate Riemann solvers (Cockburn 2003; LeVeque 2002).

Figure 9: At a face between \(K_j\) and \(K_{j+1}\) the discontinuous solution has two values, \(u^-\) (from the left, upstream when \(c > 0\)) and \(u^+\); the upwind flux takes \(\hat F = c\,u^-\).

10 DG (4/4): local mass matrices

Write \(u_h|_{K_j} = \sum_l U_{j,l}\,P_l\) and take \(v = P_i\), \(i = 0, \dots, p\), with \(P_l\) polynomials of degree at most \(p\), for instance Legendre polynomials. Then \[ M_K\,\frac{dU_j}{dt} = R(U_j, U_{j-1}) , \] with the coefficients \(U_j\) of element \(j\), its mass matrix \(M_K\) and the volume and face terms \(R\). The mass matrix is block diagonal, one small \((p+1)\times(p+1)\) block per element (diagonal with Legendre polynomials), inverted once and for all (Figure 10). Explicit Runge–Kutta methods advance each element with data from its neighbours only: one layer of data exchange on a parallel computer.

Figure 10: Left: the mass matrix of continuous linear elements (periodic), which couples neighbours. Right: DG with \(p = 1\), one \(2\times2\) block per element.

11 p = 0: a finite-volume scheme

With \(p = 0\), \(u_h = U_j\) on \(K_j\), \(v = 1\) and \(\partial_x v = 0\): \[ h\,\frac{dU_j}{dt} = -\big(c\,U_j - c\,U_{j-1}\big) , \] with \(U_j\) the mean of \(u\) on \(K_j\) and \(h\) the element size: the upwind (donor-cell) finite-volume scheme (Figure 11). Every DG scheme contains this finite-volume balance, since the test function \(v = 1\) on \(K_j\) gives the conservation of the element average (Cockburn 2003; LeVeque 2002).

Figure 11: DG with \(p = 0\): one constant per element; the upwind flux carries the value from upstream through each face.

12 Higher order: a Legendre basis

On the reference element \(\xi \in [-1, 1]\), \(x = x_j + h\xi/2\), the Legendre polynomials \(P_l(\xi)\) are orthogonal, \(\int_{K_j}P_iP_l\,dx = \frac{h}{2i+1}\delta_{il}\), so the mass matrix is diagonal. The volume term is \(c\sum_l D_{il}U_{j,l}\) with the derivative matrix \(D_{il} = \int_{-1}^1 P_l P_i'\,d\xi\) (the factors \(h/2\) and \(2/h\) cancel), and at the faces \(P_i(1) = 1\), \(P_i(-1) = (-1)^i\). With the upwind flux the scheme is \[ \frac{dU_{j,i}}{dt} = \frac{2i+1}{h}\Big[c\sum_l D_{il}U_{j,l} - c\,u_j(1) + (-1)^i\,c\,u_{j-1}(1)\Big], \qquad u_j(1) = \sum_l U_{j,l} \] (Hesthaven and Warburton 2008; Durran 2010, sec. 6.6.1). With orthogonal polynomials each element is a tiny spectral method (Figure 12). This is a modal basis; nodal bases, Lagrange polynomials at Gauss–Lobatto points, are also common, and spectral elements are their continuous version.

Figure 12: Left: the first Legendre polynomials on the reference element, orthogonal, hence a diagonal mass matrix. Right: projections of a field on \(p = 0, 1, 2\) in four elements.

13 Order p + 1, and the time step

For smooth solutions the DG error with the upwind flux falls like \(h^{p+1}\): slopes 1, 2, 3 and 4 for \(p = 0, \dots, 3\) (Figure 13) (Cockburn 2003). The DG operator is integrated in time with the third-order strong-stability-preserving Runge–Kutta method (SSP-RK3) of Shu and Osher (1988) (the name is due to Gottlieb et al. (2001)). Its largest stable Courant number \(c\Delta t/h\), computed from the eigenvalues of the scheme (next section), is about 1.26 for \(p = 0\), 0.41 for \(p = 1\), 0.21 for \(p = 2\) and 0.13 for \(p = 3\). Cockburn’s von Neumann analysis gives \(c\Delta t/h \le 1/(2p+1)\) for a Runge–Kutta method of order \(p+1\) (Cockburn 2003, sec. 3.3), close to these numbers; for large \(p\) the limit falls like \(p^{-2}\) (Hesthaven and Warburton 2008, sec. 4.8). An element of degree \(p\) holds \(p + 1\) unknowns: it behaves like a grid \(p + 1\) times finer.

Figure 13: \(L^2\) error of DG with the upwind flux after one revolution of \(u = \sin 2\pi x\) on a periodic interval, against the number of elements, for \(p = 0\) to 3 (SSP-RK3 with small steps); dotted: slopes \(p + 1\).

14 Dispersion and dissipation

Bloch analysis. For the wave \(e^{ikx}\) the coefficients of neighbouring elements differ by a phase, \(U_{j-1} = e^{-ikh}U_j\), and the semi-discrete scheme becomes \(\dot U_j = A(kh)\,U_j\) with a \((p+1)\times(p+1)\) matrix. One of its eigenvalues, \(\lambda(k)\), approximates the exact \(-ick\): \(-\mathrm{Im}\,\lambda\) is the numerical frequency \(\omega\), with phase speed \(c^* = \omega/k\), and \(-\mathrm{Re}\,\lambda\) the damping. Per unknown, DG with \(p \ge 1\) moves resolved waves at almost the right speed and damps only the poorly resolved ones; the centred difference and continuous elements damp nothing; DG with \(p = 0\) has the phase speed of the centred difference plus the strong damping of the upwind scheme (Figure 14) (Hesthaven and Warburton 2008; Durran 2010, sec. 6.6).

Figure 14: Bloch analysis of semi-discrete schemes for \(u_t + c\,u_x = 0\), per unknown (\(\Delta x = h/(p+1)\)). Left: phase speed over \(c\) for the centred difference (equal to DG with \(p = 0\)), continuous linear elements (CG) and DG with \(p = 0, 1, 2\). Right: damping rate of DG; the centred difference and CG do not damp.

15 DG for advection in 1D, computed

The scheme of the previous sections fits in a few lines of code. With the same number of unknowns, 96, DG with \(p = 0\) (96 elements), \(p = 1\) (48) and \(p = 2\) (32) is run for one revolution on a narrow Gaussian hump and on a square wave (Figure 15), with the upwind flux and SSP-RK3. One step of DG with \(p = 0\) and forward Euler agrees with the donor-cell update to round-off.

Figure 15: A narrow hump (left) and a square wave (right) after one revolution with 96 unknowns: DG with \(p = 0\) (96 elements), \(p = 1\) (48) and \(p = 2\) (32), upwind flux and SSP-RK3; exact solution in gray.

16 What the computation showed

DG with \(p = 0\) smears everything: its numerical diffusion is large. \(p = 1\) and \(p = 2\) keep the hump almost exactly; the convergence slopes are 1, 2, 3 and 4 (Figure 13). Near the jumps of the square wave all higher-order schemes overshoot: by Godunov’s theorem a linear scheme that never creates new extrema is at most of first order. DG keeps the overshoots within a narrow band, since its errors stay local; limiters remove them, as in finite volumes, and hp-adaptivity uses a high degree where the solution is smooth and a low one near fronts. With the central flux instead of the upwind one, nothing damps the grid-scale noise (Cockburn 2003; Hesthaven and Warburton 2008).

17 From 1D to 2D: faces and normals

For a tracer \(q\) carried by a velocity \(\mathbf b\), \(\partial_t q + \nabla\cdot(\mathbf b\,q) = 0\), on a mesh of triangles or quadrilaterals, the same steps on each element \(K\) give \[ \int_K\partial_t q\,v\,dx - \int_K q\,\mathbf b\cdot\nabla v\,dx + \oint_{\partial K}\hat F\,v\,ds = 0, \qquad \hat F = (\mathbf b\cdot\mathbf n)\,q^{\text{up}}, \] with \(\mathbf n\) the outward unit normal of \(K\) and \(q^{\text{up}}\) the value on the side the flow comes from: from \(K\) where \(\mathbf b\cdot\mathbf n > 0\) (outflow), from the neighbour, or the boundary value, where \(\mathbf b\cdot\mathbf n < 0\) (Figure 16). Points become faces, and the formula is the same on triangles, squares or polygons (Hesthaven and Warburton 2008; Cockburn 2003).

Figure 16: DG in 2D on a mesh of triangles: on each element the flux through each face uses \(q\) from the upwind side, chosen by the sign of \(\mathbf b\cdot\mathbf n\).

18 Firedrake: the code is the weak form

Firedrake (Rathgeber et al. 2016) lets one write this weak form almost as it reads. In its language, UFL (also used by FEniCS), dx is an integral over the elements, dS over the interior faces, with the two sides '+' and '-', and ds over the boundary faces. With un = 0.5*(dot(u, n) + abs(dot(u, n))) \(= \max(\mathbf u\cdot\mathbf n, 0)\) on each side, the upwind flux summed over the two elements of an interior face is (phi('+') - phi('-'))*(un('+')*q('+') - un('-')*q('-'))*dS, with phi the test function. The volume term \(\int q\,\mathbf u\cdot\nabla\phi\,dx\) is q*dot(u, grad(phi))*dx (the integration by parts used \(\nabla\cdot\mathbf u = 0\), true for a solid-body rotation), and the boundary term takes the inflow value q_in where \(\mathbf u\cdot\mathbf n < 0\): phi*dot(u, n)*conditional(dot(u, n) < 0, q_in, q)*ds. Firedrake generates and compiles the element code and calls PETSc for the linear algebra; it runs in Google Colab through FEM on Colab.

19 DG advection in 2D, computed

The solid-body rotation test of LeVeque (1996), after the Firedrake demo “DG advection equation with upwinding”: a cosine bell, a cone and a slotted cylinder rotate once about the centre of the unit square, with DG of degree 1 on \(40\times40\) squares and SSP-RK3 (Figure 17). After one rotation the relative \(L^2\) error is 0.089; the bell is kept, the tip of the cone and the edges of the cylinder are smoothed, with small over- and undershoots at the jumps. The total amount of \(q\) changes only through the boundary: in the interior DG conserves exactly, element by element.

Figure 17: DG of degree 1 on \(40\times40\) squares, solid-body rotation of a cosine bell, a cone and a slotted cylinder: left the initial state, right after one rotation.

20 Compatible elements (1/2): the C-grid, generalized

The shallow water equations need a space \(V^1\) for the velocity \(\mathbf u\) and a space \(V^2\) for the height \(\eta\) (the names of the de Rham complex below, as in Cotter and Thuburn (2014); Cotter and Shipton (2012) call them \(S\) and \(V\)). Compatible spaces satisfy \[ \nabla\cdot V^1 = V^2 : \] the divergence maps the velocity space onto the height space (Cotter and Shipton 2012). Examples are the Raviart–Thomas and Brezzi–Douglas–Marini spaces for \(V^1\) (vector fields whose normal component is continuous across edges, the \(H(\mathrm{div})\) spaces) with discontinuous polynomials for \(V^2\). The lowest pair on squares, lowest-order Raviart–Thomas (RT0) × DG0, has one normal velocity per edge and one height per cell: exactly the unknowns of the Arakawa C-grid (Figure 18); BDM1 × DG0 is the simplest pair on triangles. Firedrake calls RT0 “RT” (“RTCF” on squares) of degree 1, counting the degree of the full polynomial space.

Figure 18: Left: the unknowns of the lowest-order compatible pair RT0 × DG0 on squares, a normal velocity on every edge (arrows) and a height in every cell (dots). Right: the Arakawa C-grid, with \(u\) and \(v\) on the faces and \(h\) at the centres: the same unknowns at the same places.

21 Compatible elements (2/2): energy and balance

Multiply the linear rotating shallow water equations, \(\partial_t\mathbf u + f\,\mathbf u^\perp + g\nabla\eta = 0\) and \(\partial_t\eta + H\nabla\cdot\mathbf u = 0\), with \(\mathbf u^\perp = \mathbf k\times\mathbf u\) and the mean depth \(H\), by test functions \(\mathbf w \in V^1\) and \(\phi \in V^2\), and integrate the pressure term by parts (periodic domain): \[ \int\mathbf w\cdot\partial_t\mathbf u + f\,\mathbf w\cdot\mathbf u^\perp - g\,(\nabla\cdot\mathbf w)\,\eta\,dx = 0, \qquad \int\phi\,\partial_t\eta + H\,\phi\,\nabla\cdot\mathbf u\,dx = 0 . \] Compatible spaces keep the good properties of the C grid:

  • Energy. Taking \(\mathbf w = H\mathbf u\) and \(\phi = g\eta\), allowed since they lie in \(V^1\) and \(V^2\), and adding gives \(\frac{d}{dt}\frac12\int H|\mathbf u|^2 + g\eta^2\,dx = -fH\int\mathbf u\cdot\mathbf u^\perp dx = 0\): the discrete energy is conserved exactly, and with the implicit midpoint rule in time also by the fully discrete scheme.
  • Geostrophic balance. On triangles the spaces CG2 → BDM1 → DG0 form a discrete de Rham complex: for \(\psi\) in CG2, \(\nabla^\perp\psi\) lies in BDM1 and is divergence-free, and the divergence of BDM1 is DG0. Take \(\mathbf u = \nabla^\perp\psi\) and \(\eta = P_{V^2}(f\psi/g)\). Since \(\mathbf u^\perp = -\nabla\psi\), for every \(\mathbf w\), \(\int f\mathbf w\cdot\mathbf u^\perp - g(\nabla\cdot\mathbf w)\eta\,dx = \int(\nabla\cdot\mathbf w)(f\psi - g\eta)\,dx = 0\), because \(\nabla\cdot\mathbf w \in V^2\): every such balanced state is an exact steady state of the discrete equations (Cotter and Shipton 2012).
  • No spurious pressure modes (heights with a zero discrete gradient), unlike equal-order pairs. The ratio of the numbers of unknowns also matters: two velocity unknowns per height unknown, as on the square C-grid, avoids spurious wave branches (RT\(_{k+1}\) × DQ\(_k\) on quadrilaterals, BDFM1 × DG1 on triangles); BDM1 × DG0 has three, like the hexagonal C-grid, and supports spurious Rossby-wave branches (Cotter and Shipton 2012).
Figure 19: Geostrophic adjustment with BDM1 × DG0: height after 2 days from a 1 m Gaussian bump of radius 150 km in a 2000 km periodic square, \(H = 10\) m, \(f = 10^{-4}\) s\(^{-1}\), \(L_d = 99\) km. With rotation (left) a balanced anticyclone remains; without rotation (right) the bump has left as gravity waves.

22 Shallow water with Firedrake, computed

The linear rotating shallow water equations with BDM1 × DG0 on a doubly periodic square of 2000 km (48 × 48 × 2 triangles) and the implicit midpoint rule, \(H = 10\) m and \(f = 10^{-4}\) s\(^{-1}\), so \(\sqrt{gH} \approx 9.9\) m/s and \(L_d = \sqrt{gH}/f \approx 99\) km. A Gaussian bump of water 1 m high and 150 km in radius, released from rest, adjusts: without rotation it collapses completely and leaves as gravity waves; with rotation part of it stays as a balanced anticyclone (Figure 19). A balanced state built from a streamfunction, as in the previous section, stays steady.

23 What the Firedrake computations showed

The DG advection run conserves \(q\) in the interior exactly, with an error of 0.089 after one rotation and small overshoots at jumps. The shallow water run conserves the energy to \(2\times10^{-15}\) in two days, and the balanced state changes by \(10^{-14}\): round-off. What stays after the adjustment depends on the size of the bump against the deformation radius: about 8% of the potential energy for a radius \(L_d/2\), 81% for \(3L_d\) (Figure 20); a 50 km bump is also poorly resolved, with cells of about 40 km (Cotter and Shipton 2012; Vallis 2017, sec. 3.9).

Figure 20: Fraction of the potential energy left near the centre two days after the release of a bump, against the radius of the bump over \(L_d\): small bumps radiate, large ones stay balanced.

24 Gusto: a dynamical core from these pieces

Gusto is a Python library, built on Firedrake, for compatible finite element dynamical cores, developed at Imperial College London and the Met Office with the University of Exeter, a test bed for the compatible methods that underpin LFRic, the Met Office’s next model (Bendall et al. 2020; Shipton et al. 2018). It solves the shallow water, Boussinesq, compressible and moist Euler equations and runs the standard test cases. A run needs a mesh of the sphere, a family of compatible spaces, the equations in weak form, a time stepper and diagnostics (Figure 21). Which spaces, and why those, is the subject of the next section.

Figure 21: The pieces of a dynamical core as Gusto assembles them: a mesh of the sphere, compatible spaces, the equations in weak form, a time stepper, diagnostics.

25 Compatible spaces: the de Rham complex

On a surface such as the sphere the compatible spaces form a discrete de Rham complex, \(H^1 \xrightarrow{\nabla^\perp} H(\mathrm{div}) \xrightarrow{\nabla\cdot} L^2\), with \(\nabla\cdot\nabla^\perp = 0\); the discrete spaces are \(V^0 \subset H^1\), \(V^1 \subset H(\mathrm{div})\) and \(V^2 \subset L^2\) (Cotter and Thuburn 2014; Cotter and Shipton 2012; Natale et al. 2016) (Figure 22). The streamfunction and the vorticity live in the continuous space \(H^1\), the velocity in \(H(\mathrm{div})\) (only its normal component is continuous across the edges), the depth in the discontinuous space \(L^2\). The discrete spaces keep the two identities of the continuous ones: the divergence maps the velocity space onto the depth space, and the rotated gradient of a discrete streamfunction has exactly zero divergence. At the lowest order on triangles (CG1, RT0, DG0) the unknowns are those of a C-grid on triangles; the Gusto runs below use degree 1 (CG3, BDM2, DG1). The vorticity is diagnosed in \(H^1\) from \(\int\gamma\,\zeta\,dA = -\int\nabla^\perp\gamma\cdot\mathbf u\,dA\) for every test function \(\gamma\).

Figure 22: The 2D de Rham complex on a triangle, \(H^1 \to H(\mathrm{div}) \to L^2\): the degrees of freedom of the continuous space (values), of the \(H(\mathrm{div})\) space (normal components on the edges, and interior ones at higher order) and of the discontinuous space. Top: the lowest order, CG1, RT0, DG0. Bottom: degree 1, CG3, BDM2, DG1.

26 Weak form in Gusto (1/2): the fast waves

Gusto writes the shallow water equations in the vector-invariant form \[ \partial_t\mathbf u + (\zeta + f)\,\mathbf u^\perp + \nabla\!\left(g(D + b) + \tfrac12|\mathbf u|^2\right) = 0, \qquad \partial_t D + \nabla\cdot(D\mathbf u) = 0 , \] with the relative vorticity \(\zeta\), the fluid depth \(D\) and the height of the orography \(b\). The fast terms, which carry the gravity waves and the rotation, linearized about rest, \(D = H + \eta\), are those of the linear system of compatible elements, now on the sphere, where integrating the pressure term by parts leaves no boundary term: \(\int\mathbf w\cdot\partial_t\mathbf u + f\,\mathbf w\cdot\mathbf u^\perp - g(\nabla\cdot\mathbf w)\eta\,dA = 0\) and \(\int\phi\,\partial_t\eta + H\phi\nabla\cdot\mathbf u\,dA = 0\). Only the divergence of the velocity appears: the velocity needs to be in \(H(\mathrm{div})\) only, and the depth needs no derivative at all (Cotter and Shipton 2012; Shipton et al. 2018). The full nonlinear terms enter the residual; this linear part is what the implicit solver inverts.

27 Weak form in Gusto (2/2): DG transport

The slow terms, transport by the wind, are discretized as DG: on each triangle \(K\), \(\int_K\phi\,\partial_t D - \int_K\nabla\phi\cdot\mathbf u\,D + \oint_{\partial K}\phi\,(\mathbf u\cdot\mathbf n)\,\tilde D = 0\) with the upwind value \(\tilde D\) on each edge, which conserves the mass exactly. In Gusto’s current shallow-water set-up the vorticity and kinetic-energy terms of the velocity equation are integrated by parts and upwinded at the edges in the same spirit; Shipton et al. (2018), who introduced these spaces on the sphere, instead transported a potential vorticity held in the continuous space with a stabilized (Taylor–Galerkin) scheme and derived the vorticity term from it. Transport of the depth is explicit, SSP-RK3 with two substeps per step (the velocity’s transport terms use the trapezium rule), and so is limited only by the wind: about 40 m/s against gravity waves of 240 m/s, a transport Courant number six times smaller (Shipton et al. 2018; Bendall et al. 2020). LFRic has since replaced its transport by a conservative flux-form semi-Lagrangian scheme, stable at large Courant numbers (Bendall and Kent 2025).

28 One time step: semi-implicit quasi-Newton

The fast terms are implicit, with the trapezoidal rule, which gives a nonlinear system; Gusto solves it with two quasi-Newton iterations, each one a linear solve for the corrections with the equations linearized about a fixed state at rest (depth \(H\), rotation \(f\)): the same matrix every step, a Helmholtz problem on the mesh, which can be hybridized: Lagrange multipliers on the edges leave a smaller, sparse problem for the multipliers alone, with the spectral properties of a Helmholtz operator (Shipton et al. 2018, sec. 2.3.1). Transport and the iterations are repeated twice, an outer loop with the updated winds (Figure 23) (Shipton et al. 2018, sec. 2.3; Bendall et al. 2020, sec. 3.2; Melvin et al. 2019). The gravity waves no longer limit the time step: Gusto runs case 2 of the next sections stably with steps of 4 hours, a gravity-wave Courant number of 5.5, and LFRic runs at up to 10 (20 km, 10 min). This semi-implicit structure is that of most global models: the Met Office’s ENDGame and the IFS have it with semi-Lagrangian transport (Wood et al. 2014).

Figure 23: One semi-implicit quasi-Newton time step: explicit transport, then quasi-Newton iterations for the fast terms, each a linear mixed solve; the outer loop transports again with the updated winds.

29 LFRic: GungHo in operation

The Met Office’s new atmosphere model, named after Lewis Fry Richardson, replaces the Unified Model. Its GungHo dynamical core keeps the structure of its predecessor ENDGame and changes its discretization: the latitude–longitude grid becomes an equiangular cubed sphere (no pole); finite differences on a C-grid become lowest-order compatible finite elements, the finite element equivalent of the C-grid, and of the Charney–Phillips staggering in the vertical; the equations stay the non-hydrostatic, deep-atmosphere compressible Euler equations, the time step stays semi-implicit, and semi-Lagrangian transport becomes a conservative flux-form semi-Lagrangian scheme (Melvin et al. 2019, 2024; Bendall and Kent 2025). The GungHo project began in 2011; compatible finite elements were chosen in 2013 and the cubed sphere in 2015; the model ran with full physics in 2022, and its first parallel suite is planned for 2027, to become the operational model in 2028 (T. Bendall, PDEs on the Sphere, São Paulo, 2025). The reasons: no pole and better scalability, local conservation, portability to new computers through code generation (PSyclone, as in Firedrake), and modern data assimilation.

30 Shallow water on the sphere with Gusto, computed

Two of the standard tests of Williamson et al. (1992) on Gusto’s icosahedral mesh with 8 cells per edge (1280 curved triangles; velocity in BDM2, depth in DG1: 9600 velocity and 3840 depth unknowns) and time steps of one hour. Case 2 is a zonal flow in exact geostrophic balance: it must stay steady. Case 5 puts a conical mountain 2000 m high, centred at 30°N, 90°W, in a zonal flow of 20 m/s; the animation shows five days of it (Figure 24). What happens follows from the conservation of the shallow-water potential vorticity \(Q = (\zeta + f)/D\) by each fluid column. Over the mountain the column is squashed, \(D\) falls, and so does \(\zeta + f\): the relative vorticity becomes negative there, an anticyclonic turning (in the run, \(-1.5\times10^{-6}\) s\(^{-1}\) on average over the mountain after five days). Downstream, a column pushed north finds a larger \(f\), its \(\zeta\) decreases and it turns back south, and the other way round: the increase of \(f\) with latitude, \(\beta = 2\Omega\cos\varphi/a\), is the restoring force of a Rossby wave. The wave that stands still in the flow has \(U = \beta/K^2\), a wavelength \(2\pi\sqrt{U/\beta}\), about 5900 km (some 60° of longitude) at 30°N with \(U \approx 17\) m/s; its energy can only travel east, so the wave train grows downstream (Vallis 2017, sec. 6.4 and §16.7). The notebook also writes the weak form as Gusto builds it, with the vorticity term integrated by parts and upwinded on the edges (Gusto’s current set-up, simpler than the potential-vorticity scheme of Shipton et al. (2018)), and the depth transported by upwind DG.

Figure 24: Williamson case 5 after five days (the last frame of the animation): change since day 0 of the free surface \(D + b\) (top, m) and of the relative vorticity (bottom, \(10^{-5}\) s\(^{-1}\), computed weakly in the continuous space CG3), against longitude and latitude. The black triangle marks the mountain; the Rossby wave train extends downstream, in both hemispheres.

31 What the Gusto computation showed

After two days the depth of case 2 differs from the exact solution by a relative \(6.7\times10^{-5}\), at a gravity-wave Courant number of 1.4, where an explicit scheme would be unstable. The error is of second order in space: with steps of 15 minutes it is \(2.4\times10^{-4}\), \(6.4\times10^{-5}\) and \(1.6\times10^{-5}\) for 4, 8 and 16 cells per edge, four times smaller each time the triangles are halved. With steps of one hour, however, the error at 16 cells per edge stays at \(6.5\times10^{-5}\): the time error has become larger than the space error, and refining the mesh alone no longer helps (Figure 25): space and time must be refined together (Williamson et al. 1992; Shipton et al. 2018). In case 5 the conservation of \(Q\) gives the stationary Rossby wave train; without rotation (\(f = 0\), no \(\beta\)) there is none, and the surface changes by a few tens of metres only. The pair of spaces matters: the triangular C-grid (velocity in RT0, depth in DG0; Firedrake’s RT1) has about 60 times the error of BDM2 × DG1 in case 2, and its ratio of 3 velocity to 2 depth unknowns gives the linear waves a spurious branch of inertia–gravity modes, which shows as checkerboard patterns in the divergence when the deformation radius is small (Cotter and Shipton 2012; Cotter and Thuburn 2014). Here \(L_d = \sqrt{gH}/f \approx 2400\) km (with \(f = 10^{-4}\) s\(^{-1}\)), many cells wide, and the 5-day run shows no checkerboard. A 2:1 pair (velocity in BDFM1, depth in DG1; Firedrake’s BDFM2) has no spurious branch, and here the accuracy of BDM2 × DG1.

Figure 25: Williamson case 2: relative error of the depth after two days against the resolution (cells per icosahedron edge), with steps of 15 minutes (second order, slope \(-2\)) and of one hour (at 16 cells per edge the time error takes over).

32 Finite elements in weather and climate models

  • LFRic (Met Office, UK): the GungHo core, lowest-order compatible finite elements for the dynamics and finite volumes for transport, on a cubed-sphere mesh; the operational model from 2028 (Adams et al. 2019; Melvin et al. 2019). LFRic does not use Firedrake: it is written in Fortran 2003 with a separation of concerns between the science code and the parallel code (the PSyKAl layers: algorithm, parallel system, kernels), and the code generator PSyclone (STFC Hartree Centre) writes the parallel layer from metadata in the kernels (Adams et al. 2019). Gusto, in Python on Firedrake, is a test bed for its compatible methods.
  • Spectral elements: continuous Galerkin with high-order polynomials on quadrilaterals, with the nodes at the Gauss–Lobatto–Legendre points so that the mass matrix is diagonal. They are used in KIM, the Korean Integrated Model of KIAPS for global weather forecasting, on the cubed sphere (Choi and Hong 2016; Hong et al. 2018); in CAM-SE/HOMME (NCAR, and the US Department of Energy’s E3SM) on the cubed sphere (Dennis et al. 2012; Taylor and Fournier 2010); in NUMA, the core of NEPTUNE, the US Navy’s model (closed code), on any quadrilateral mesh (Kelly and Giraldo 2012); and in the horizontal of the CliMA atmosphere model (ClimaAtmos), on the cubed sphere, with finite differences in the vertical (Yatunin et al. 2025).

These models use the cubed-sphere mesh of Figure 26: six patches of quadrilaterals, with no pole problem. Element methods scale because each element talks only to its neighbours.

Figure 26: The cubed sphere: the six faces of a cube projected onto the sphere; red, the nodes of one spectral element of degree 3.

33 Finite elements and DG in ocean models

In the ocean, finite elements are rare. Global ocean and climate models are finite-difference or finite-volume codes on structured grids: of the eleven models of the Ocean Model Intercomparison Project (OMIP-2), ten use structured B or C grids (NEMO, MOM, POP, HYCOM, MPIOM and others), and the exception, FESOM 1.4, was the only one on an unstructured mesh (Tsujino et al. 2020; Fox-Kemper et al. 2019). Finite elements live on the coast, where an unstructured mesh draws the coast, the islands and the estuaries as they are, with small cells only where they are needed (Figure 27).

  • Continuous Galerkin or hybrid finite element and finite volume models: ADCIRC, for storm surge and tides on meshes from the ocean basin to the channels of a delta (Westerink et al. 2008), runs NOAA’s operational global tide and surge forecasts (STOFS-2D-Global); SCHISM (and its predecessor SELFE), from creeks to the open ocean (Zhang et al. 2016), runs NOAA’s operational Atlantic forecasts (STOFS-3D-Atlantic; NWS notice SCN26-51, 2026); SHYFEM (CNR-ISMAR) forecasts tides and surge in the Adriatic and the Venice lagoon (Umgiesser et al. 2004; Ferrarin et al. 2013; Cirano et al. 2025); FESOM 1.4, the first global ocean general circulation model on unstructured meshes developed for climate research, AWI’s ocean in CMIP6 (Wang et al. 2014). Continuous elements suit elliptic problems, but advection needs stabilization and the coupled global system is less efficient in parallel than finite volumes (Kärnä et al. 2018). FESOM2 replaced its finite elements with finite volumes and became at least three times faster while keeping the fidelity of its simulations (Danilov et al. 2017).
  • Adaptive finite elements: Fluidity (the Imperial College Ocean Model) changes its unstructured tetrahedral mesh in time to follow the evolving solution, with long thin elements aligned with boundary layers (Piggott et al. 2008).
  • Discontinuous Galerkin: local and fully conservative like finite volumes, well suited for advection, and of higher order, but so far in research codes. SLIM (Second-generation Louvain-la-Neuve Ice-ocean Model) uses DG on unstructured prismatic meshes (Blaise et al. 2010; Delandmeter et al. 2018); Thetis, a DG coastal ocean model for the three-dimensional hydrostatic equations, is written on Firedrake (Kärnä et al. 2018).
Figure 27: Schematic: a triangular mesh of the Adriatic, refined towards the coast (spacing from 5 km at the coast to 27 km in the middle of the basin), drawn on the Natural Earth coastline; an illustration, not the mesh of a model.

34 Research: DG on Voronoi meshes

Polytopal DG (PolyDG, with MOX) for the rotating shallow water equations on Voronoi meshes, as in MPAS, aims at high order with the locality of finite volumes on the meshes of operational models (Figure 28). It converges with order \(p + 1\) on every mesh, also on irregular and locally refined ones, where the finite volumes of MPAS (the TRSK scheme) lose accuracy (Figure 29), and local refinement leaves no visible imprint on an unstable jet (Figure 30) (Marras et al. 2016).

Figure 28: Why DG is local. Left: a high-order finite-volume reconstruction reaches several rings of cells. Middle: DG keeps a polynomial of degree \(p\) in each cell and couples cells only through face fluxes. Right: on a parallel computer each rank needs one layer of ghost cells, whatever the order. From Peixoto, Alves, Fumagalli and Antonietti (M4E 2026, in preparation).
Figure 29: Convergence of polytopal DG against the TRSK finite volumes of MPAS on regular, quasi-uniform and locally refined Voronoi meshes. Same source.
Figure 30: An unstable jet in the rotating shallow water equations on a bi-periodic plane: relative vorticity (red positive, blue negative) at day 14, DG of degree \(p = 4\) on a locally refined Voronoi mesh of 4096 cells, in the region of the coarse cells (grey: the cell edges). Crop of the graphical abstract of the paper in preparation by the same authors.

35 A vertical slice with Gusto

An extra, not done in class. The same compatible spaces on an extruded mesh of a vertical slice (150 columns of 2 km, 10 layers of 1 km) solve the compressible Euler equations, sound waves included. In each cell the horizontal velocity sits on the sides, the vertical velocity on the top and bottom, the density inside: the C-grid in the \(x\)–\(z\) plane; the potential temperature shares the points of the vertical velocity, the Charney–Phillips staggering (Bendall et al. 2020). The test of Skamarock and Klemp (1994) puts a warm bump of 0.01 K, 5 km wide, in a stratified channel (\(N = 0.01\) s\(^{-1}\)) with a wind of 20 m/s: the bump, carried by the wind, splits into internal gravity waves, the long ones ahead, with \(\omega = N\cos\alpha\) (Figure 31). After 3000 s the maximum of \(\theta'\) is 2.80 mK against 2.73 mK from linear Boussinesq theory, and the semi-implicit step is stable at a sound-wave Courant number of 4 (steps of 12 s on layers of 1 km).

Figure 31: The Skamarock–Klemp test after 3000 s (the last frame of the animation): \(\theta'\) (mK; the colours saturate at \(\pm3\) mK, the bump starts at 10 mK) in the 300 km × 10 km channel; grey, the centre carried by the wind.

36 Key points

  1. Weak form: multiply by a test function, integrate, by parts: fewer derivatives on the unknown.
  2. Galerkin: trial and test functions from the same space; stiffness and mass matrices (hats: the finite-difference Laplacian).
  3. DG = a polynomial in each element + numerical fluxes at the faces; upwind; block-diagonal mass matrix.
  4. Order \(p + 1\); time step \(\sim 1/(2p+1)\); DG with \(p = 0\) = upwind finite volumes.
  5. Compatible elements (\(\nabla\cdot V^1 = V^2\)): the C-grid on any mesh; energy and geostrophic balance kept; Gusto and LFRic build dynamical cores from them.
  6. Firedrake: the weak form as code.

Finite elements: local, high order, on any mesh, and still conservative.

Further reading

Durran (2010), §6.5–6.6 (finite elements and DG for geophysical problems); Hesthaven and Warburton (2008), a practical book on nodal DG with codes; Cockburn (2003), a short introduction to DG; Cotter and Shipton (2012) for compatible finite elements in weather prediction; Marras et al. (2016) for a review of element-based methods in numerical weather prediction.

References

Adams, S. V., R. W. Ford, M. Hambley, et al. 2019. “LFRic: Meeting the Challenges of Scalability and Performance Portability in Weather and Climate Models.” Journal of Parallel and Distributed Computing 132: 383–96. https://doi.org/10.1016/j.jpdc.2019.02.007.
Bendall, Thomas M., Thomas H. Gibson, Jemma Shipton, Colin J. Cotter, and Ben Shipway. 2020. “A Compatible Finite-Element Discretisation for the Moist Compressible Euler Equations.” Quarterly Journal of the Royal Meteorological Society 146: 3187–205. https://doi.org/10.1002/qj.3841.
Bendall, Thomas M., and James Kent. 2025. “SWIFT: A Monotonic, Flux-Form Semi-Lagrangian Tracer Transport Scheme for Flow with Large Courant Numbers.” Monthly Weather Review 153: 565–87. https://doi.org/10.1175/MWR-D-24-0110.1.
Blaise, S., R. Comblen, V. Legat, J.-F. Remacle, E. Deleersnijder, and J. Lambrechts. 2010. “A Discontinuous Finite Element Baroclinic Marine Model on Unstructured Prismatic Meshes. Part I: Space Discretization.” Ocean Dynamics 60: 1371–93. https://doi.org/10.1007/s10236-010-0358-3.
Choi, S.-J., and S.-Y. Hong. 2016. “A Global Non-Hydrostatic Dynamical Core Using the Spectral Element Method on a Cubed-Sphere Grid.” Asia-Pacific Journal of Atmospheric Sciences 52: 291–307. https://doi.org/10.1007/s13143-016-0005-0.
Cirano, M., E. Alvarez-Fanjul, A. Capet, S. Ciliberti, E. Clementi, et al. 2025. “A Description of Existing Operational Ocean Forecasting Services Around the Globe.” State of the Planet 5-opsr: 1–33. https://doi.org/10.5194/sp-5-opsr-5-2025.
Cockburn, Bernardo. 2003. “Discontinuous Galerkin Methods.” ZAMM – Journal of Applied Mathematics and Mechanics 83 (11): 731–54. https://doi.org/10.1002/zamm.200310088.
Cotter, Colin J., and Jemma Shipton. 2012. “Mixed Finite Elements for Numerical Weather Prediction.” Journal of Computational Physics 231 (21): 7076–91. https://doi.org/10.1016/j.jcp.2012.05.020.
Cotter, Colin J., and John Thuburn. 2014. “A Finite Element Exterior Calculus Framework for the Rotating Shallow-Water Equations.” Journal of Computational Physics 257: 1506–26. https://doi.org/10.1016/j.jcp.2013.10.008.
Danilov, Sergey, Dmitry Sidorenko, Qiang Wang, and Thomas Jung. 2017. “The Finite-volumE Sea Ice–Ocean Model (FESOM2).” Geoscientific Model Development 10 (2): 765–89. https://doi.org/10.5194/gmd-10-765-2017.
Delandmeter, P., J. Lambrechts, V. Legat, et al. 2018. “A Fully Consistent and Conservative Vertically Adaptive Coordinate System for SLIM 3D V0.4 with an Application to the Thermocline Oscillations of Lake Tanganyika.” Geoscientific Model Development 11: 1161–79. https://doi.org/10.5194/gmd-11-1161-2018.
Dennis, John M., Jim Edwards, Katherine J. Evans, et al. 2012. “CAM-SE: A Scalable Spectral Element Dynamical Core for the Community Atmosphere Model.” The International Journal of High Performance Computing Applications 26 (1): 74–89. https://doi.org/10.1177/1094342011428142.
Durran, Dale R. 2010. Numerical Methods for Fluid Dynamics: With Applications to Geophysics. 2nd ed. Vol. 32. Texts in Applied Mathematics. Springer.
Ferrarin, C., A. Roland, M. Bajo, G. Umgiesser, A. Cucco, et al. 2013. “Tide-Surge-Wave Modelling and Forecasting in the Mediterranean Sea with Focus on the Italian Coast.” Ocean Modelling 61: 38–48. https://doi.org/10.1016/j.ocemod.2012.10.003.
Fox-Kemper, B., A. Adcroft, C. W. Böning, E. P. Chassignet, E. Curchitser, et al. 2019. “Challenges and Prospects in Ocean Circulation Models.” Frontiers in Marine Science 6: 65. https://doi.org/10.3389/fmars.2019.00065.
Gottlieb, Sigal, Chi-Wang Shu, and Eitan Tadmor. 2001. “Strong Stability-Preserving High-Order Time Discretization Methods.” SIAM Review 43 (1): 89–112. https://doi.org/10.1137/S003614450036757X.
Hesthaven, Jan S., and Tim Warburton. 2008. Nodal Discontinuous Galerkin Methods: Algorithms, Analysis, and Applications. Vol. 54. Texts in Applied Mathematics. Springer. https://doi.org/10.1007/978-0-387-72067-8.
Hong, S.-Y., Y. C. Kwon, T.-H. Kim, J.-E. E. Kim, et al. 2018. “The Korean Integrated Model (KIM) System for Global Weather Forecasting.” Asia-Pacific Journal of Atmospheric Sciences 54: 267–92. https://doi.org/10.1007/s13143-018-0028-9.
Kärnä, T., S. C. Kramer, L. Mitchell, D. A. Ham, M. D. Piggott, and A. M. Baptista. 2018. “Thetis Coastal Ocean Model: Discontinuous Galerkin Discretization for the Three-Dimensional Hydrostatic Equations.” Geoscientific Model Development 11: 4359–82. https://doi.org/10.5194/gmd-11-4359-2018.
Kelly, James F., and Francis X. Giraldo. 2012. “Continuous and Discontinuous Galerkin Methods for a Scalable Three-Dimensional Nonhydrostatic Atmospheric Model: Limited-Area Mode.” Journal of Computational Physics 231 (24): 7988–8008. https://doi.org/10.1016/j.jcp.2012.04.042.
LeVeque, Randall J. 1996. “High-Resolution Conservative Algorithms for Advection in Incompressible Flow.” SIAM Journal on Numerical Analysis 33 (2): 627–65. https://doi.org/10.1137/0733033.
LeVeque, Randall J. 2002. Finite Volume Methods for Hyperbolic Problems. Cambridge University Press. https://doi.org/10.1017/CBO9780511791253.
Marras, Simone, James F. Kelly, Margarida Moragues, et al. 2016. “A Review of Element-Based Galerkin Methods for Numerical Weather Prediction: Finite Elements, Spectral Elements, and Discontinuous Galerkin.” Archives of Computational Methods in Engineering 23 (4): 673–722. https://doi.org/10.1007/s11831-015-9152-1.
Melvin, Thomas, Tommaso Benacchio, Ben Shipway, Nigel Wood, John Thuburn, and Colin Cotter. 2019. “A Mixed Finite-Element, Finite-Volume, Semi-Implicit Discretization for Atmospheric Dynamics: Cartesian Geometry.” Quarterly Journal of the Royal Meteorological Society 145 (724): 2835–53. https://doi.org/10.1002/qj.3501.
Melvin, Thomas, Ben Shipway, Nigel Wood, et al. 2024. “A Mixed Finite-Element, Finite-Volume, Semi-Implicit Discretisation for Atmospheric Dynamics: Spherical Geometry.” Quarterly Journal of the Royal Meteorological Society 150: 4252–69. https://doi.org/10.1002/qj.4814.
Natale, Andrea, Jemma Shipton, and Colin J. Cotter. 2016. “Compatible Finite Element Spaces for Geophysical Fluid Dynamics.” Dynamics and Statistics of the Climate System 1: dzw005. https://doi.org/10.1093/climsys/dzw005.
Piggott, M. D., G. J. Gorman, C. C. Pain, P. A. Allison, A. S. Candy, et al. 2008. “A New Computational Framework for Multi-Scale Ocean Modelling Based on Adapting Unstructured Meshes.” International Journal for Numerical Methods in Fluids 56: 1003–15. https://doi.org/10.1002/fld.1663.
Rathgeber, Florian, David A. Ham, Lawrence Mitchell, et al. 2016. “Firedrake: Automating the Finite Element Method by Composing Abstractions.” ACM Transactions on Mathematical Software 43 (3): 24:1–27. https://doi.org/10.1145/2998441.
Shipton, Jemma, Thomas H. Gibson, and Colin J. Cotter. 2018. “Higher-Order Compatible Finite Element Schemes for the Nonlinear Rotating Shallow Water Equations on the Sphere.” Journal of Computational Physics 375: 1121–37. https://doi.org/10.1016/j.jcp.2018.08.027.
Shu, Chi-Wang, and Stanley Osher. 1988. “Efficient Implementation of Essentially Non-Oscillatory Shock-Capturing Schemes.” Journal of Computational Physics 77 (2): 439–71. https://doi.org/10.1016/0021-9991(88)90177-5.
Skamarock, William C., and Joseph B. Klemp. 1994. “Efficiency and Accuracy of the Klemp–Wilhelmson Time-Splitting Technique.” Monthly Weather Review 122 (11): 2623–30. https://doi.org/10.1175/1520-0493(1994)122<2623:EAAOTK>2.0.CO;2.
Taylor, Mark A., and Aimé Fournier. 2010. “A Compatible and Conservative Spectral Element Method on Unstructured Grids.” Journal of Computational Physics 229 (17): 5879–95. https://doi.org/10.1016/j.jcp.2010.04.008.
Tsujino, H., L. S. Urakawa, S. M. Griffies, G. Danabasoglu, A. J. Adcroft, et al. 2020. “Evaluation of Global Ocean–Sea-Ice Model Simulations Based on the Experimental Protocols of the Ocean Model Intercomparison Project Phase 2 (OMIP-2).” Geoscientific Model Development 13: 3643–708. https://doi.org/10.5194/gmd-13-3643-2020.
Umgiesser, G., D. Melaku Canu, A. Cucco, and C. Solidoro. 2004. “A Finite Element Model for the Venice Lagoon. Development, Set up, Calibration and Validation.” Journal of Marine Systems 51: 123–45. https://doi.org/10.1016/j.jmarsys.2004.05.009.
Vallis, Geoffrey K. 2017. Atmospheric and Oceanic Fluid Dynamics: Fundamentals and Large-Scale Circulation. 2nd ed. Cambridge University Press. https://doi.org/10.1017/9781107588417.
Wang, Q., S. Danilov, D. Sidorenko, R. Timmermann, C. Wekerle, et al. 2014. “The Finite Element Sea Ice-Ocean Model (FESOM) v.1.4: Formulation of an Ocean General Circulation Model.” Geoscientific Model Development 7: 663–93. https://doi.org/10.5194/gmd-7-663-2014.
Westerink, J. J., R. A. Luettich, J. C. Feyen, J. H. Atkinson, C. Dawson, et al. 2008. “A Basin- to Channel-Scale Unstructured Grid Hurricane Storm Surge Model Applied to Southern Louisiana.” Monthly Weather Review 136: 833–64. https://doi.org/10.1175/2007MWR1946.1.
Williamson, David L., John B. Drake, James J. Hack, Rüdiger Jakob, and Paul N. Swarztrauber. 1992. “A Standard Test Set for Numerical Approximations to the Shallow Water Equations in Spherical Geometry.” Journal of Computational Physics 102 (1): 211–24. https://doi.org/10.1016/S0021-9991(05)80016-6.
Wood, Nigel, Andrew Staniforth, Andy White, et al. 2014. “An Inherently Mass-Conserving Semi-Implicit Semi-Lagrangian Discretization of the Deep-Atmosphere Global Non-Hydrostatic Equations.” Quarterly Journal of the Royal Meteorological Society 140: 1505–20. https://doi.org/10.1002/qj.2235.
Yatunin, D., S. Byrne, C. Kawczynski, S. Kandala, others, and T. Schneider. 2025. The Climate Modeling Alliance Atmosphere Dynamical Core: Concepts, Numerics, and Scaling. ESS Open Archive preprint. https://doi.org/10.22541/essoar.173940262.23304403/v1.
Zhang, Y. J., F. Ye, E. V. Stanev, and S. Grashorn. 2016. “Seamless Cross-Scale Modeling with SCHISM.” Ocean Modelling 102: 64–81. https://doi.org/10.1016/j.ocemod.2016.05.002.