ryujin 2.5.0 revision 3a6c8d57210175dea14d8116e1fe878f349f8c1c
Loading...
Searching...
No Matches
Classes | Enumerations
Mesh, offline data, and time integration
Collaboration diagram for Mesh, offline data, and time integration:

Classes

class  ryujin::Discretization< dim >
 
class  ryujin::MeshAdaptor< dim, Number >
 
class  ryujin::OfflineData< dim, Number >
 
class  ryujin::AssemblyScratchData< dim >
 
class  ryujin::AssemblyCopyData< dim, Number >
 
class  ryujin::TimeIntegrator< dim, Number >
 
class  ryujin::TransfiniteInterpolationManifold< dim, spacedim >
 

Enumerations

enum class  ryujin::MeshType { ryujin::MeshType::serial , ryujin::MeshType::parallel_shared , ryujin::MeshType::parallel_distributed , ryujin::MeshType::parallel_fullydistributed }
 
enum class  ryujin::AdaptationStrategy { ryujin::AdaptationStrategy::global_refinement , ryujin::AdaptationStrategy::random_adaptation , ryujin::AdaptationStrategy::smoothness_indicators }
 
enum class  ryujin::MarkingStrategy { ryujin::MarkingStrategy::fixed_threshold }
 
enum class  ryujin::TimePointSelectionStrategy { ryujin::TimePointSelectionStrategy::fixed_time_points , ryujin::TimePointSelectionStrategy::simulation_cycle }
 
enum class  ryujin::CFLRecoveryStrategy { ryujin::CFLRecoveryStrategy::none , ryujin::CFLRecoveryStrategy::bang_bang_control , ryujin::CFLRecoveryStrategy::cruise_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

The Discretization class holding the triangulation and finite element, the OfflineData class holding the precomputed matrices and sparsity patterns, the MeshAdaptor, and the TimeIntegrator (include/ryujin/discretization).

Enumeration Type Documentation

◆ MeshType

enum class ryujin::MeshType
strong

An enum class for setting the type of Triangulation that should be constructed.

Enumerator
serial 

Use serial dealii::Triangulation<dim>

parallel_shared 

Use parallel dealii::parallel::shared::Triangulation<dim>

parallel_distributed 

Use parallel dealii::parallel::distributed::Triangulation<dim>

parallel_fullydistributed 

Use parallel dealii::parallel::fullydistributed::Triangulation<dim>

Definition at line 31 of file discretization.h.

◆ AdaptationStrategy

enum class ryujin::AdaptationStrategy
strong

Controls the spatial mesh adaptation strategy.

Enumerator
global_refinement 

Perform a uniform global refinement.

random_adaptation 

Perform random refinement and coarsening with a deterministic Mersenne Twister and a chosen seed. This refinement strategy is only useful for debugging and testing.

smoothness_indicators 

Perform local refinement and coarsening based on smoothness indicators.

Definition at line 26 of file mesh_adaptor.h.

◆ MarkingStrategy

enum class ryujin::MarkingStrategy
strong

Controls the marking strategy used for mesh adaptation. This configuration option is ignored for the uniform global refinement strategy.

Enumerator
fixed_threshold 

Refine and coarsen according to a fixed tolerance normalized according to the difference between the maximal and minimal attained values for the chosen refinement indicators.

Definition at line 52 of file mesh_adaptor.h.

◆ TimePointSelectionStrategy

Controls the time point selection strategy.

Enumerator
fixed_time_points 

Perform a mesh adaptation cycle at preselected fixed time points.

simulation_cycle 

Perform a mesh adaptation cycle at every nth simulation cycle.

Definition at line 66 of file mesh_adaptor.h.

◆ 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 or "CFL condition" violation is detected, the time step is repeated with "cfl min". If this is unsuccessful as well, a warning is emitted.

cruise_control 

Adaptive strategy that similarly to "bang bang control" first steps with the chosen "cfl max" value, and, in case of an invariant domain violation or a "CFL condition" violation restarts the time step using a tau_max hint coming from the sub step where we encountered a problem. This is the default strategy.

Definition at line 28 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 

A second order implicit-explicit method. It uses the explicit midpoint rule with Butcher tableau

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

to solve the hyperbolic subproblem, and a two-stage Crank-Nicolson type diagonally implicit Runge-Kutta scheme with Butcher tableau

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

to solve the parabolic subproblem. Each of the two stages consists of one explicit hyperbolic step and one implicit parabolic step with step size \(\tau / 2\).

imex_33 

The third order implicit-explicit method IMEX(3, 3; 1), see [7], Section 4.3. It uses Heun's third order explicit Runge-Kutta scheme with Butcher tableau

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

to solve the hyperbolic subproblem, and a three-stage diagonally implicit Runge-Kutta scheme with Butcher tableau

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

with \(\gamma = \tfrac{1}{2} + \tfrac{1}{2\sqrt{3}}\) to solve the parabolic subproblem. Each of the three stages consists of one explicit hyperbolic step and one implicit parabolic step with step size \(\tau / 3\).

Definition at line 59 of file time_integrator.h.