Implementation for several advanced discretisation methods and timestepping methods for the incompressible Euler equations.
The goal of this work is to implement higher order hybridisable DG discretisations in space and time for the incompressible Euler equations similar to what has been done in Ueckermann and Lermusiaux (2016) for the incompressible Navier Stokes equations. This is achieved by extending the methods in Guzmán, Shu, Sequeira (2017).
The incompressible Euler equations that are to be solved here are given by
The code implements a range of numerical schemes:
- The fully implicit method based on a conforming
$\text{RT}_0\times \text{DG}_0$ discretisation described in Guzmán, Shu, Sequeira (2017), see conforming_implicit.py. - The fully implicit method based on a
$[\text{DG}_{k+1}]^2\times \text{DG}_k$ DG discretisation also described in Guzmán, Shu, Sequeira (2017), see dg_implicit.py - A fully implicit hybridisable DG variant of the fully implicit DG discretisation, see hdg_implicit.py
- A hybridisable DG variant of the DG discretisation which uses Chorin's projection method to split the implicit update into the computation of a tentative velocity followed by a pressure correction that enforces the divergence-free constraint on the velocity, see hdg_implicit.py.
- A generalisation of the hybridisable DG variant to IMEX timesteppers. The computation of the update at each stage can be done either fully implicitly or with a Richardson iteration that is preconditioned with a projection method, hdg_imex.py.
A stationary exact solution of the incompressible Euler equations in the domain
where
From this a divergence free time-dependent solution can be constructed as
and
For further details on the used discretisation and timestepping methods see here.
To install this package run
python -m pip install .
as usual after installing the dependencies (see below).
If you want to edit the code, you might prefer to install in editable mode with
python -m pip install --editable .
The main script is driver.py
in the src
directory. Run
python driver.py --help
to see a list of command line options.
See here for Firedrake installation instructions.