ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
Loading...
Searching...
No Matches
Public Member Functions | List of all members
ryujin::Interface::Simulation< dim, Number > Class Template Reference

#include <include/ryujin/interface/simulation.h>

Inheritance diagram for ryujin::Interface::Simulation< dim, Number >:
Inheritance graph
[legend]
Collaboration diagram for ryujin::Interface::Simulation< dim, Number >:
Collaboration graph
[legend]

Public Member Functions

virtual ~Simulation ()=default
 
- Public Member Functions inherited from ryujin::Interface::Task< Number >
virtual ~Task ()=default
 
virtual void initialize (TaskContext< Number > &)
 
virtual void start (TaskContext< Number > &)
 
virtual void prepare (TaskContext< Number > &)
 
virtual void execute (TaskContext< Number > &context)=0
 
virtual void finalize (TaskContext< Number > &)
 
virtual void save (boost::archive::binary_oarchive &) const
 
virtual void load (boost::archive::binary_iarchive &)
 

Functions

std::unique_ptr< MPIEnsemble > mpi_ensemble_
 
std::unique_ptr< Discretization< dim > > discretization_
 
std::unique_ptr< OfflineData< dim, Number > > offline_data_
 
const HyperbolicSystem * hyperbolic_system_ = nullptr
 
const ParabolicSystem * parabolic_system_ = nullptr
 
const InitialValues< dim, Number > * initial_values_ = nullptr
 
std::unique_ptr< HyperbolicModule< dim, Number > > hyperbolic_module_
 
std::unique_ptr< ParabolicModule< dim, Number > > parabolic_module_
 
std::unique_ptr< TimeIntegrator< dim, Number > > time_integrator_
 
std::unique_ptr< Postprocessor< dim, Number > > postprocessor_
 
std::unique_ptr< SolutionTransfer< dim, Number > > solution_transfer_
 
StateVector< Number > state_vector_
 
void interpolate_analytic_solution (StateVector< Number > &analytic, Number t) const
 
 Simulation ()
 

Additional Inherited Members

- Protected Member Functions inherited from ryujin::Interface::Task< Number >
 Task (const std::string &name, TaskPhase phase)
 

Detailed Description

template<int dim, typename Number = double>
class ryujin::Interface::Simulation< dim, Number >

The description-free interface of a Simulation: it stores the core objects of a simulation, the discretization, the modules, the time integrator, and the state vector, and has an accessor for each. Tasks work with the Simulation through this interface.

The Simulation is the primary task "time integration" of the Scheduler that performs the time step in the step phase.

The objects are constructed by a derived class, see the typed Simulation, which is the only class that sees the hyperbolic and the parabolic description.

Definition at line 47 of file simulation.h.

Constructor & Destructor Documentation

◆ ~Simulation()

template<int dim, typename Number = double>
virtual ryujin::Interface::Simulation< dim, Number >::~Simulation ( )
virtualdefault

Destructor.

Reimplemented in ryujin::Simulation< HD, PD, dim, Number >.

◆ Simulation()

template<int dim, typename Number = double>
ryujin::Interface::Simulation< dim, Number >::Simulation ( )
inlineprotected

Constructor.

Definition at line 120 of file simulation.h.

Member Function Documentation

◆ interpolate_analytic_solution()

template<int dim, typename Number = double>
void ryujin::Interface::Simulation< dim, Number >::interpolate_analytic_solution ( StateVector< Number > &  analytic,
Number  t 
) const
inline

Interpolate the analytic solution at time t into the state vector analytic and populate precomputed values. In contrast to TimeIntegrator::prepare_state_vector() no boundary conditions are applied.

Definition at line 100 of file simulation.h.

References ryujin::Interface::Simulation< dim, Number >::hyperbolic_module_, ryujin::Interface::Simulation< dim, Number >::initial_values_, and ryujin::Interface::Simulation< dim, Number >::parabolic_module_.

Member Data Documentation

◆ mpi_ensemble_

template<int dim, typename Number = double>
std::unique_ptr<MPIEnsemble> ryujin::Interface::Simulation< dim, Number >::mpi_ensemble_
protected

◆ discretization_

template<int dim, typename Number = double>
std::unique_ptr<Discretization<dim> > ryujin::Interface::Simulation< dim, Number >::discretization_
protected

◆ offline_data_

template<int dim, typename Number = double>
std::unique_ptr<OfflineData<dim, Number> > ryujin::Interface::Simulation< dim, Number >::offline_data_
protected

◆ hyperbolic_system_

template<int dim, typename Number = double>
const HyperbolicSystem* ryujin::Interface::Simulation< dim, Number >::hyperbolic_system_ = nullptr
protected

The systems and the initial values exist once per MPI ensemble. A derived class owns them in MPIEnsembleContainer objects; the pointers refer to the instance of the current ensemble.

Definition at line 134 of file simulation.h.

Referenced by ryujin::Simulation< HD, PD, dim, Number >::Simulation(), and ryujin::Simulation< HD, PD, dim, Number >::~Simulation().

◆ parabolic_system_

template<int dim, typename Number = double>
const ParabolicSystem* ryujin::Interface::Simulation< dim, Number >::parabolic_system_ = nullptr
protected

◆ initial_values_

template<int dim, typename Number = double>
const InitialValues<dim, Number>* ryujin::Interface::Simulation< dim, Number >::initial_values_ = nullptr
protected

◆ hyperbolic_module_

template<int dim, typename Number = double>
std::unique_ptr<HyperbolicModule<dim, Number> > ryujin::Interface::Simulation< dim, Number >::hyperbolic_module_
protected

◆ parabolic_module_

template<int dim, typename Number = double>
std::unique_ptr<ParabolicModule<dim, Number> > ryujin::Interface::Simulation< dim, Number >::parabolic_module_
protected

◆ time_integrator_

template<int dim, typename Number = double>
std::unique_ptr<TimeIntegrator<dim, Number> > ryujin::Interface::Simulation< dim, Number >::time_integrator_
protected

◆ postprocessor_

template<int dim, typename Number = double>
std::unique_ptr<Postprocessor<dim, Number> > ryujin::Interface::Simulation< dim, Number >::postprocessor_
protected

◆ solution_transfer_

template<int dim, typename Number = double>
std::unique_ptr<SolutionTransfer<dim, Number> > ryujin::Interface::Simulation< dim, Number >::solution_transfer_
protected

◆ state_vector_

template<int dim, typename Number = double>
StateVector<Number> ryujin::Interface::Simulation< dim, Number >::state_vector_
protected

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