ryujin 2.1.1 revision ee5cbcbf2346c1299c942d0e1f13b46449973c18
Loading...
Searching...
No Matches
List of all members
ryujin::EulerPoisson::ParabolicModule< Description, dim, Number > Class Template Referencefinal

#include <source/euler_poisson/parabolic_module.h>

Inheritance diagram for ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >:
Inheritance graph
[legend]
Collaboration diagram for ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >:
Collaboration graph
[legend]

Public Member Functions

Constructor and setup
 ParabolicModule (const MPIEnsemble &mpi_ensemle, const OfflineData< dim, Number > &offline_data, const HyperbolicSystem &hyperbolic_system, const ParabolicSystem &parabolic_system, const InitialValues< Description, dim, Number > &initial_values, const std::string &subsection="/ParabolicModule")
 
void prepare ()
 
Functions for performing explicit time steps
void reinit_state_vector (StateVector &state_vector) const
 
void prepare_state_vector (StateVector &state_vector, Number t) const
 
template<int stages>
void backward_euler_step (const StateVector &old_state_vector, const Number old_t, std::array< std::reference_wrapper< const StateVector >, stages > stage_state_vectors, const std::array< Number, stages > stage_weights, StateVector &new_state_vector, Number tau) const
 
void crank_nicolson_step (const StateVector &old_state_vector, const Number old_t, StateVector &new_state_vector, Number tau) const
 
void set_id_violation_strategy (const IDViolationStrategy &strategy) const
 
Information and statistics
void print_solver_statistics (std::ostream &output) const
 

Typedefs and constexpr constants

using HyperbolicSystem = typename Description::HyperbolicSystem
 
using View = typename HyperbolicSystem::template View< dim, Number >
 
using ParabolicSystem = typename Description::ParabolicSystem
 
using StateVector = typename View::StateVector
 
using ScalarHostVector = Vectors::ScalarHostVector< Number >
 
using BlockHostVector = Vectors::BlockHostVector< Number >
 
using ScalarNumber = typename View::ScalarNumber
 
using state_type = typename View::state_type
 
static constexpr auto problem_dimension = View::problem_dimension
 

Detailed Description

template<typename Description, int dim, typename Number>
class ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >

Implicit backward-Euler time stepping for the parabolic limiting equation for the Euler-Poisson system

Definition at line 131 of file parabolic_module.h.

Member Typedef Documentation

◆ HyperbolicSystem

template<typename Description , int dim, typename Number >
using ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::HyperbolicSystem = typename Description::HyperbolicSystem

Definition at line 139 of file parabolic_module.h.

◆ View

template<typename Description , int dim, typename Number >
using ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::View = typename HyperbolicSystem::template View<dim, Number>

Definition at line 141 of file parabolic_module.h.

◆ ParabolicSystem

template<typename Description , int dim, typename Number >
using ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::ParabolicSystem = typename Description::ParabolicSystem

Definition at line 143 of file parabolic_module.h.

◆ StateVector

template<typename Description , int dim, typename Number >
using ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::StateVector = typename View::StateVector

Definition at line 145 of file parabolic_module.h.

◆ ScalarHostVector

template<typename Description , int dim, typename Number >
using ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::ScalarHostVector = Vectors::ScalarHostVector<Number>

Definition at line 147 of file parabolic_module.h.

◆ BlockHostVector

template<typename Description , int dim, typename Number >
using ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::BlockHostVector = Vectors::BlockHostVector<Number>

Definition at line 149 of file parabolic_module.h.

◆ ScalarNumber

template<typename Description , int dim, typename Number >
using ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::ScalarNumber = typename View::ScalarNumber

Definition at line 151 of file parabolic_module.h.

◆ state_type

template<typename Description , int dim, typename Number >
using ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::state_type = typename View::state_type

Definition at line 155 of file parabolic_module.h.

Constructor & Destructor Documentation

◆ ParabolicModule()

template<typename Description , int dim, typename Number >
ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::ParabolicModule ( const MPIEnsemble mpi_ensemle,
const OfflineData< dim, Number > &  offline_data,
const HyperbolicSystem hyperbolic_system,
const ParabolicSystem parabolic_system,
const InitialValues< Description, dim, Number > &  initial_values,
const std::string &  subsection = "/ParabolicModule< Description, dim, Number >" 
)

Constructor.

Definition at line 32 of file parabolic_module.template.h.

References ryujin::EulerPoisson::no_restart.

Member Function Documentation

◆ prepare()

template<typename Description , int dim, typename Number >
void ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::prepare ( )

Prepare time stepping. A call to prepare() allocates temporary storage and is necessary before any of the following time-stepping functions can be called.

Definition at line 135 of file parabolic_module.template.h.

References ryujin::cg_q1, and ryujin::dg_q1.

◆ reinit_state_vector()

template<typename Description , int dim, typename Number >
void ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::reinit_state_vector ( StateVector state_vector) const

(Re)initialize the parabolic state vector component of the state vector.

Note
This routine does not modify the hyperbolic state vector or the precomputed vector component.

Definition at line 242 of file parabolic_module.template.h.

◆ prepare_state_vector()

template<typename Description , int dim, typename Number >
void ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::prepare_state_vector ( StateVector state_vector,
Number  t 
) const

This function preprocesses a given state vector U in preparation for a high order IMEX time step. This function exists because some time stepping variants have to precompute quantities before we can perform an IMEX step. In addition, this function is called whenever we perform a mesh transfer or output operation.

Definition at line 261 of file parabolic_module.template.h.

References ryujin::EulerPoisson::correction, ryujin::EulerPoisson::full_restart, and ryujin::EulerPoisson::static_full_restart.

◆ backward_euler_step()

template<typename Description , int dim, typename Number >
template<int stages>
void ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::backward_euler_step ( const StateVector old_state_vector,
const Number  old_t,
std::array< std::reference_wrapper< const StateVector >, stages >  stage_state_vectors,
const std::array< Number, stages >  stage_weights,
StateVector new_state_vector,
Number  tau 
) const

Given a reference to a previous state vector old_U at time old_t and a time-step size tau perform an implicit backward euler step (and store the result in new_U).

The function takes an optional array of states stage_U together with a an array of weights stage_weights to construct a modified high-order right-hand side / flux.

Definition at line 296 of file parabolic_module.template.h.

◆ crank_nicolson_step()

template<typename Description , int dim, typename Number >
void ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::crank_nicolson_step ( const StateVector old_state_vector,
const Number  old_t,
StateVector new_state_vector,
Number  tau 
) const

Given a reference to a previous state vector old_U at time old_t and a time-step size tau perform an implicit Crank-Nicolson step (and store the result in new_U).

This variant is used in the TimeIntegrator class for the Strang split variants.

Definition at line 314 of file parabolic_module.template.h.

◆ set_id_violation_strategy()

template<typename Description , int dim, typename Number >
void ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::set_id_violation_strategy ( const IDViolationStrategy strategy) const
inline

Sets the invariant domain violation strategy.

Definition at line 240 of file parabolic_module.h.

◆ print_solver_statistics()

template<typename Description , int dim, typename Number >
void ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::print_solver_statistics ( std::ostream &  output) const

Print a status line with solver statistics. This function is used for constructing the status message displayed periodically in the TimeLoop.

Definition at line 349 of file parabolic_module.template.h.

Member Data Documentation

◆ problem_dimension

template<typename Description , int dim, typename Number >
constexpr auto ryujin::EulerPoisson::ParabolicModule< Description, dim, Number >::problem_dimension = View::problem_dimension
staticconstexpr

Definition at line 153 of file parabolic_module.h.


The documentation for this class was generated from the following files: