Abstract interface for one-step multi-stage method parameters in Shu/Osher form. More...
#include <dumux/timestepping/multistagemethods.hh>
Abstract interface for one-step multi-stage method parameters in Shu/Osher form.
forward declaration
This implementation is based on the Shu/Osher form from: Chi W. Shu and Stanley Osher. Efficient implementation of essentially non- oscillatory shock-capturing schemes. J. Comput. Phys., 77:439–471, 1988. https://doi.org/10.1016/0021-9991(88)90177-5. To this end Eq. (2.12) is extended for implicit schemes.
We consider the general PDE form
\begin{equation} \frac{\partial M(x)}{\partial t} - R(x, t) = 0, \end{equation}
where M(x) is the temporal operator/residual in terms of the solution x , and R(x) is the discrete spatial operator/residual. M(x) usually corresponds to the conserved quantity (e.g. mass), and R(x) contains the rest of the residual. We can then construct m -stage time discretization methods. Integrating from time t^n to t^{n+1} with time step size \Delta t^n, we solve:
\begin{aligned} x^{(0)} &= u^n\\ \sum_{k=0}^i \left[ \alpha_{ik} M\left(x^{(k)}, t^n + d_k\Delta t^n\right) + \beta_{ik}\Delta t^n R \left(x^{(k)}, t^n+d_k\Delta t^n \right)\right] &= 0 & \forall i \in \{1,\ldots,m\} \\ x^{n+1} &= x^{(m)} \end{aligned}
where x^{(k)} denotes the intermediate solution at stage k . Dependent on the number of stages m , and the coefficients \alpha, \beta, d, schemes with different properties and order of accuracy can be constructed.
Public Member Functions | |
virtual bool | implicit () const =0 |
virtual std::size_t | numStages () const =0 |
virtual Scalar | temporalWeight (std::size_t i, std::size_t k) const =0 |
weights of the temporal operator residual ( \alpha_{ik} ) More... | |
virtual Scalar | spatialWeight (std::size_t i, std::size_t k) const =0 |
weights of the spatial operator residual ( \beta_{ik} ) More... | |
virtual Scalar | timeStepWeight (std::size_t k) const =0 |
time step weights for each stage ( d_k ) More... | |
virtual std::string | name () const =0 |
virtual | ~MultiStageMethod ()=default |
|
virtualdefault |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
weights of the spatial operator residual ( \beta_{ik} )
Implemented in Dumux::Experimental::MultiStage::RungeKuttaExplicitFourthOrder< Scalar >, and Dumux::Experimental::MultiStage::Theta< Scalar >.
|
pure virtual |
weights of the temporal operator residual ( \alpha_{ik} )
Implemented in Dumux::Experimental::MultiStage::RungeKuttaExplicitFourthOrder< Scalar >, and Dumux::Experimental::MultiStage::Theta< Scalar >.
|
pure virtual |
time step weights for each stage ( d_k )
Implemented in Dumux::Experimental::MultiStage::Theta< Scalar >, and Dumux::Experimental::MultiStage::RungeKuttaExplicitFourthOrder< Scalar >.