z-logo
open-access-imgOpen Access
A Fast Monotone Discretization of the Rotating Shallow Water Equations
Author(s) -
Roullet Guillaume,
Gaillard Tugdual
Publication year - 2022
Publication title -
journal of advances in modeling earth systems
Language(s) - English
Resource type - Journals
SCImago Journal Rank - 3.03
H-Index - 58
ISSN - 1942-2466
DOI - 10.1029/2021ms002663
Subject(s) - discretization , shallow water equations , dissipation , eikonal equation , euler equations , nonlinear system , grid , finite difference , inviscid flow , mathematics , computer science , mathematical analysis , geometry , classical mechanics , physics , thermodynamics , quantum mechanics
This paper presents a new discretization of the rotating shallow water equations and a set of decisions, ranging from a simplification of the continuous equations down to the implementation level, yielding a code that is fast and accurate. Accuracy is reached by using WENO reconstructions on the mass flux and on the nonlinear Coriolis term. The results show that the implicit mixing and dissipation, provided by the discretization, allow a very good material conservation of potential vorticity and a minimal energy dissipation. Numerical experiments are presented to assess the accuracy, which include a resolution convergence, a sensitivity on the free‐slip versus no‐slip boundary conditions, a study on the separation of waves from vortical motions. Speed is achieved by a series of choices rather than a single recipe. The main choice is to discretize the covariant form written in index coordinates. This form, rooted in the discrete differential geometry, removes most of the grid scale terms from the equations, and keeps them only where they should be. The model objects appearing in resulting continuous equations have a natural correspondence with the grid cell features. The other choices are guided by the maximization of the arithmetic intensity. Finally this paper also proves that a pure Python implementation can be very fast, thanks to the possibility of having compiled Python. As a result, the code performs 2 TFlops per second using thousand cores.

The content you want is available to Zendy users.

Already have an account? Click here to sign in.
Having issues? You can contact us here