This directory contains a hierarchy of modules which can be combined to solve an increasingly complex (and accurate) range of equations describing the motion of layers of incompressible fluids (illustrated below): from the hydrostatic Saint-Venant/shallow-water equations to the variable-density, incompressible Navier–Stokes equations with interfaces, Coriolis acceleration etc.

The theoretical basis and main algorithms for this solver are described in Popinet, 2020.

The modules are, in order of increasing complexity:

• The hydrostatic solver approximates \displaystyle \begin{aligned} \partial_t h_k + \mathbf{{\nabla}} \cdot \left( h \mathbf{u} \right)_k & = 0,\\ \partial_t \left( h \mathbf{u} \right)_k + \mathbf{{\nabla}} \cdot \left( h \mathbf{u} \mathbf{u} \right)_k & = - gh_k \mathbf{{\nabla}} (\eta) \end{aligned}
• The implicit free-surface extension adds time-implicit integration of the free-surface evolution.
• The Coriolis extension adds the (horizontal) Coriolis acceleration.
• The Boussinesq and isopycnal extensions add the buoyancy term due to small density variations i.e. the terms and equations in blue \displaystyle \begin{aligned} \partial_t \left( h \mathbf{u} \right)_k + \mathbf{{\nabla}} \cdot \left( h \mathbf{u} \mathbf{u} \right)_k & = - gh_k \mathbf{{\nabla}} (\eta) {\color{blue} - \mathbf{{\nabla}} (h q)_k + \left[ q \mathbf{{\nabla}} z \right]_k}\\ ...\\ {\color{blue}\partial_t \left( h T \right)_k + \mathbf{{\nabla}} \cdot \left( h \mathbf{u} T \right)_k} & {\color{blue} = 0,}\\ {\color{blue}q(z)} & {\color{blue} = \int_0^z g \Delta \rho(T) dz} \end{aligned}
• The non-hydrostatic extension adds vertical momentum and the non-hydrostatic pressure i.e. \displaystyle \begin{aligned} \partial_t h_k + \mathbf{{\nabla}} \cdot \left( h \mathbf{u} \right)_k & = 0,\\ \partial_t \left( h \mathbf{u} \right)_k + \mathbf{{\nabla}} \cdot \left( h \mathbf{u} \mathbf{u} \right)_k & = - gh_k \mathbf{{\nabla}} (\eta) {\color{blue} - \mathbf{{\nabla}} (h \phi)_k + \left[ \phi \mathbf{{\nabla}} z \right]_k},\\ {\color{blue} \partial_t (hw)_k + \mathbf{{\nabla}} \cdot \left( hw \mathbf{u} \right)_k} & {\color{blue} = - [\phi]_k,}\\ {\color{blue} \mathbf{{\nabla}} \cdot \left( h \mathbf{u} \right)_k + \left[ w - \mathbf{u} \cdot \mathbf{{\nabla}} z \right]_k} & {\color{blue} = 0}, \end{aligned}