![]() |
ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
|

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).
| enum ryujin::Boundary : dealii::types::boundary_id |
An enum of type dealii::types::boundary_id that provides an mnemonic for prescribing different boundary conditions on faces.
| Enumerator | |
|---|---|
| do_nothing | The "do nothing" outflow boundary condition: no special treatment of the boundary degree of freedom. For stability reasons it is important to ensure that this boundary id is only prescribed on degrees of freedom with a velocity vector pointing outward of the computational domain and coming from the interior of the domain. |
| periodic | Prescribe periodic boundary conditions by identifying opposing degrees of freedom. This currently requires a mesh with "standard orientation". |
| slip | On (free) slip boundary degrees of freedom we enforce a vanishing normal component of the momentum in the Euler module. This is done by explicitly removing the normal component of the momentum for the degree of freedom at the end of TimeStep::euler_step(). In the dissipation module \(v\cdot n\) is enforced strongly which leads to a natural boundary condition on the symmetric stress tensor: \(\tau\cdot\mathbb{S}(v)\cdot\vec n\). |
| no_slip | On no-slip boundary degrees of freedom we enforce a vanishing normal component of the momentum in the Euler module. This is done by explicitly removing the normal component of the momentum for the degree of freedom at the end of TimeStep::euler_step(). In the dissipation module a vanishing velocity \(v=0\) is enforced strongly. |
| dirichlet | On degrees of freedom marked as Dirichlet boundary we reset the state of the degree of freedom to the value of InitialData::initial_state(). Such Dirichlet conditions can only be meaningfully enforced as inflow conditions, i.e., the velocity vector associated with a Dirichlet boundary degree of freedom has to point into the computational domain, and no "backward traveling" shock front or other flow feature must reach a Dirichlet boundary degree of freedom during the computation. |
| dynamic | On degrees of freedom marked as a "dynamic" boundary we distinguish four cases (for the compressible Euler equations or related PDEs):
|
| dirichlet_momentum | For the Euler and shallow Water equations: On degrees of freedom marked as "dirichlet momentum" boundary, we reset only the momentum of the degree of freedom to the value of InitialData::initial_state(). Where appropriate, we keep water height h, density rho, and internal energy e of the boundary state. Such conditions are used, for example, in many steady state problems for the shallow water equations with inflow conditions. |
| dirichlet_velocity | For the Euler and shallow Water equations: On degrees of freedom marked as "dirichlet velocity" boundary, we reset only the velocity of the degree of freedom to the value of InitialData::initial_state(). Where appropriate, we keep water height h, density rho, and internal energy e of the boundary state. |
Definition at line 59 of file discretization.h.
|
strong |
An enum class for setting the finite element ansatz.
Definition at line 153 of file discretization.h.
|
strong |
An enum class for setting the type of Triangulation that should be constructed.
Definition at line 203 of file discretization.h.
|
strong |
Controls the spatial mesh adaptation strategy.
Definition at line 29 of file mesh_adaptor.h.
|
strong |
Controls the marking strategy used for mesh adaptation. This configuration option is ignored for the uniform global refinement strategy.
Definition at line 55 of file mesh_adaptor.h.
|
strong |
Controls the chosen invariant domain / CFL recovery strategy.
Definition at line 34 of file time_integrator.h.
|
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 65 of file time_integrator.h.