ryujin 2.1.1 revision 0348cbb53a3e4b1da2a4c037e81f88f2d21ce219
Classes | Enumerations
Time Integration and Postprocessing

Classes

class  ryujin::EquationDispatch
 
class  ryujin::Restart
 
class  ryujin::Postprocessor< Description, dim, Number >
 
class  ryujin::Quantities< Description, dim, Number >
 
class  ryujin::TimeIntegrator< Description, dim, Number >
 
class  ryujin::TimeLoop< Description, dim, Number >
 
class  ryujin::VTUOutput< Description, dim, Number >
 

Enumerations

enum class  ryujin::CFLRecoveryStrategy { ryujin::CFLRecoveryStrategy::none , ryujin::CFLRecoveryStrategy::bang_bang_control }
 
enum class  ryujin::TimeSteppingScheme {
  ryujin::TimeSteppingScheme::ssprk_22 , ryujin::TimeSteppingScheme::ssprk_33 , ryujin::TimeSteppingScheme::erk_11 , ryujin::TimeSteppingScheme::erk_22 ,
  ryujin::TimeSteppingScheme::erk_33 , ryujin::TimeSteppingScheme::erk_43 , ryujin::TimeSteppingScheme::erk_54 , ryujin::TimeSteppingScheme::strang_ssprk_33_cn ,
  ryujin::TimeSteppingScheme::strang_erk_33_cn , ryujin::TimeSteppingScheme::strang_erk_43_cn , ryujin::TimeSteppingScheme::imex_11 , ryujin::TimeSteppingScheme::imex_22 ,
  ryujin::TimeSteppingScheme::imex_33
}
 

Detailed Description

This module contains classes and functions used for timestepping and running the program.

Enumeration Type Documentation

◆ CFLRecoveryStrategy

enum class ryujin::CFLRecoveryStrategy
strong

Controls the chosen invariant domain / CFL recovery strategy.

Enumerator
none 

Step with the chosen "cfl max" value and do nothing in case an invariant domain and or CFL condition violation is detected.

bang_bang_control 

Step with the chosen "cfl max" value and, in case an invariant domain and or CFL condition violation is detected, the time step is repeated with "cfl min". If this is unsuccessful as well, a warning is emitted.

Definition at line 26 of file time_integrator.h.

◆ TimeSteppingScheme

enum class ryujin::TimeSteppingScheme
strong

Controls the chosen time-stepping scheme.

Enumerator
ssprk_22 

The strong stability preserving Runge Kutta method of order 2, SSPRK(2,2;1/2), with the following butcher tableau

\begin{align*} \begin{array}{c|ccc} 0 & 0 \\ \tfrac{1}{2} & \tfrac{1}{2} & 0 \\ \hline 1 & 1 & 0 \end{array} \end{align*}

ssprk_33 

The strong stability preserving Runge Kutta method of order 3, SSPRK(3,3;1/3), with the following butcher tableau

\begin{align*} \begin{array}{c|ccc} 0 & 0 \\ 1 & 1 & 0 \\ \tfrac{1}{2} & \tfrac{1}{4} & \tfrac{1}{4} & 0\\ \hline 1 & \tfrac{1}{6} & \tfrac{1}{6} & \tfrac{2}{3} \end{array} \end{align*}

erk_11 

The explicit Runge-Kutta method RK(1,1;1), aka a simple, forward Euler step.

erk_22 

The explicit Runge-Kutta method RK(2,2;1) with the butcher tableau

\begin{align*} \begin{array}{c|ccc} 0 & 0 \\ \tfrac{1}{2} & \tfrac{1}{2} & 0 \\ \hline 1 & 0 & 1 \end{array} \end{align*}

erk_33 

The explicit Runge-Kutta method RK(3,3;1) with the butcher tableau

\begin{align*} \begin{array}{c|ccc} 0 & 0 \\ \tfrac{1}{3} & \tfrac{1}{3} & 0 \\ \tfrac{2}{3} & 0 & \tfrac{2}{3} & 0 \\ \hline 1 & \tfrac{1}{4} & 0 & \tfrac{3}{4} \end{array} \end{align*}

erk_43 

The explicit Runge-Kutta method RK(4,3;1) with the butcher tableau

\begin{align*} \begin{array}{c|ccc} 0 & 0 \\ \tfrac{1}{4} & \tfrac{1}{4} & 0 \\ \tfrac{1}{2} & 0 & \tfrac{1}{2} & 0 \\ \tfrac{3}{4} & 0 & \tfrac{1}{4} & \tfrac{1}{2} & 0 \\ \hline 1 & 0 & \tfrac{2}{3} & -\tfrac{1}{3} & \tfrac{2}{3} \end{array} \end{align*}

erk_54 

The explicit Runge-Kutta method RK(5,4;1) with the butcher tableau TODO

strang_ssprk_33_cn 

A Strang split using ssprk 33 for the hyperbolic subproblem and Crank-Nicolson for the parabolic subproblem

strang_erk_33_cn 

A Strang split using erk 33 for the hyperbolic subproblem and Crank-Nicolson for the parabolic subproblem

strang_erk_43_cn 

A Strang split using erk 43 for the hyperbolic subproblem and Crank-Nicolson for the parabolic subproblem

imex_11 

A Euler IMEX splitting. This is the low order IMEX method: it performs a forward Euler time step for the hyperbolic subproblem and then a backward Euler time step for the parabolic subproblem.

imex_22 

An implicit-explicit method that utilizes the Heun's second order explicit Runge-Kutta scheme with Butcher tableau

\begin{align*} \begin{array}{c|ccc} 0 & 0 \\ 1 & 0.5 & 0 \\ 0.5 & 0 & 2 \\ \end{array} \end{align*}

to solve the explicit subproblem and the two-stage Crank-Nicolson scheme diagonally implicit Runge-Kutta scheme with Butcher tableau

\begin{align*} \begin{array}{c|ccc} 0 & 0 \\ 0.5 & 0 & \tfrac{1}{2} \\ 1 & 0 & 1 \\ \end{array} \end{align*}

to solve the parabolic subproblem.

imex_33 

An implicit-explicit method that utilizes the Heun's second order explicit Runge-Kutta scheme with Butcher tableau

\begin{align*} \begin{array}{c|cccc} 0 & 0 \\ \tfrace{1}{3} & \tfrace{1}{3} & 0 \\ \tfrace{2}{3} & 0 & \tfrace{2}{3} & 0 \\ 1 & \tfrace{1}{4} & 0 & \tfrace{3}{4} \end{array} \end{align*}

to solve the explicit subproblem and the two-stage Crank-Nicolson scheme diagonally implicit Runge-Kutta scheme with Butcher tableau

\begin{align*} \begin{array}{c|cccc} 0 & 0 \\ \tfrace{1}{3} & \tfrace{1}{3} - \gamma & \gamma \\ \tfrace{2}{3} & \gamma & \tfrace{2}{3} - 2 \gamma & \gamma \\ 1 & \tfrace{1}{4} & 0 & \tfrace{3}{4} \end{array} \end{align*}

with \gamma = \tfrace{1}{2} + \tfrace{1}{2\sqrt(3)}

to solve the parabolic subproblem.

Definition at line 48 of file time_integrator.h.