|
Peano
|
The ADER-DG (Discontinuous Galerkin with Arbitrary high-order derivative time stepping) method is the main numerical approach used in ExaHyPE. It is a high-order method both in space and time, and requires lower communication compared to the DG method. Here, we provide an overview of the method; for more details, see https://www.mdpi.com/2075-1680/7/3/63.
Each timestep of the ADER-DG algorithm consists of two key steps:
For simplicity, we consider the problem \( \frac{\partial Q}{\partial t} + \nabla \cdot F(Q) = 0. \) The spatial domain \( \Omega \) is discretized on a tree-structured Cartesian grid of cells \( T_i \). At each timestep \( t^n \), the numerical solution \( Q_h \) is then represented within each cell \( T_i \) by piecewise polynomials of maximum degree \( N \geq 0 \):
\[ Q_h(x, t^n) = \sum_{l}\hat{Q}_l^n \phi_l(x) \]
with the degrees of freedom \( \hat{Q}_l^n \)
The job of the predictor is to provide an estimate for each element of the space-time solution until the next timestep. Following the usual Galerkin approach, but for a space-time element \( T_i \times [t^n, t^{n+1}]\), we multiply our problem with space-time test function \( \theta_k(x,t) \) and integrate in space and time to obtain
\[ \int_{\Delta_t} \int_{T_i} \theta_k \frac{\partial q_h}{\partial t} dxdt + \int_{\Delta_t} \int_{T_i} \theta_k \nabla \cdot F(q_h) dxdt = 0 \]
We introduce the discrete space-time solution \( q_h \) and flux \( F_h \):
\[ q_h(x,t) = \sum_l \hat{q_l}\theta_l(x,t) \text{ and } F_h(x,t) = \sum_l \hat{F_l}\theta_l(x,t) \]
By integration by parts, and substitution of the discrete space-time solution and fluxes, we yield
\[ \left( \int_{T_i} \theta_k(x, t^{n+1}) \theta_l(x, t^{n+1}) dxdt - \int_{\Delta_t }\int_{T_i} \frac{\partial \theta_k}{\partial t} \theta_l dxdt \right) \hat{q}_l + \left( \int_{\Delta_t }\int_{T_i} \theta_k \nabla \theta_l dxdt \right) F(\hat{q}_l) = \left( \int_{T_i} \theta_k(x, t^n)\phi_l dx \right) \hat{Q}_l^n \]
Note that the Einstein's summation convention is used here. In ExaHyPE this is solved in general via Picard iterations. And for linear PDEs, we use the Cauchy-Kowalevskaya method to lower computational cost.
The corrector builds on the cell-local space-time solutions \( q_h(x,t)\) to compute a high-order-accurate solution at timestep \( t^{n+1} \). We first discretize our PDE in space, following the Galerkin approach, and in addition, integrate over \( \Delta_t = [t^n, t^{n+1}] \):
\[ \int_{\Delta_t} \int_{T_i} \theta_k(x) \frac{\partial Q_h}{\partial t} dxdt + \int_{\Delta_t} \int_{T_i} \theta_k \nabla \cdot F(Q_h) dxdt = 0 \]
By integration by parts of the second term, we get
\[ \int_{\Delta_t} \int_{T_i} \theta_k(x) \frac{\partial Q_h}{\partial t} dxdt + \int_{\Delta_t} \int_{\partial T_i} \theta_k F(Q_h) \cdot n dSdt - \int_{\Delta_t} \int_{T_i} \nabla \theta_k \cdot F(Q_h) dxdt= 0 \]
where \( n \) is the outward pointing unit normal vector on the surface \( \partial T_i \). For the first term, we integrate over \( \frac{\partial Q_h}{\partial t}\); for the second term, we require a numerical flux function \( G \) as in DG schemes. We thus obtain
\[ \left(\int_{T_i} \phi_k \phi_l dx \right)(\hat{Q}_l^{n+1} - \hat{Q}_l^n) + \int_{\Delta_t }\int_{T_i} \phi_k G(q_h^-, q_h^+)\cdot n dSdt - \int_{\Delta_t }\int_{T_i} \nabla \phi_k \cdot F(q_h)dxdt = 0 \]