![]() |
ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
|
#include <include/ryujin/driver/simulation.h>


Public Types | |
Typedefs | |
| using | HyperbolicSystem = typename HD::HyperbolicSystem |
| using | ParabolicSystem = typename PD::ParabolicSystem |
| using | HyperbolicModule = typename HD::template HyperbolicModule< dim, Number > |
| using | ParabolicModule = typename PD::template ParabolicModule< HD, dim, Number > |
Public Member Functions | |
Constructor and destructor | |
| Simulation (const MPI_Comm &mpi_comm) | |
| ~Simulation () override | |
Task | |
| void | prepare (TaskContext< Number > &context) override |
| void | execute (TaskContext< Number > &context) override |
Public Member Functions inherited from ryujin::Interface::Simulation< dim, Number > | |
| void | interpolate_analytic_solution (StateVector< Number > &analytic, Number t) const |
Public Member Functions inherited from ryujin::Interface::Task< Number > | |
| virtual | ~Task ()=default |
| virtual void | initialize (TaskContext< Number > &) |
| virtual void | start (TaskContext< Number > &) |
| virtual void | finalize (TaskContext< Number > &) |
| virtual void | save (boost::archive::binary_oarchive &) const |
| virtual void | load (boost::archive::binary_iarchive &) |
Additional Inherited Members | |
Protected Member Functions inherited from ryujin::Interface::Simulation< dim, Number > | |
| Simulation () | |
Protected Member Functions inherited from ryujin::Interface::Task< Number > | |
| Task (const std::string &name, TaskPhase phase) | |
Protected Attributes inherited from ryujin::Interface::Simulation< dim, Number > | |
| 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_ |
The Simulation constructs the core objects of a simulation for a given pairing of a hyperbolic and a parabolic description.
In addition to the objects stored in Interface::Simulation it owns the per-ensemble containers of the hyperbolic system, the parabolic system, and the initial values.
The Simulation implements the primary task "time integration" of the Scheduler: prepare() sets up the discretization and the state vector, and execute() performs the time step.
Definition at line 43 of file simulation.h.
| using ryujin::Simulation< HD, PD, dim, Number >::HyperbolicSystem = typename HD::HyperbolicSystem |
Definition at line 51 of file simulation.h.
| using ryujin::Simulation< HD, PD, dim, Number >::ParabolicSystem = typename PD::ParabolicSystem |
Definition at line 52 of file simulation.h.
| using ryujin::Simulation< HD, PD, dim, Number >::HyperbolicModule = typename HD::template HyperbolicModule<dim, Number> |
Definition at line 53 of file simulation.h.
| using ryujin::Simulation< HD, PD, dim, Number >::ParabolicModule = typename PD::template ParabolicModule<HD, dim, Number> |
Definition at line 55 of file simulation.h.
|
inline |
Constructor.
Definition at line 67 of file simulation.h.
References ryujin::Interface::Simulation< dim, Number >::discretization_, ryujin::Interface::Simulation< dim, Number >::hyperbolic_module_, ryujin::Interface::Simulation< dim, Number >::hyperbolic_system_, ryujin::Interface::Simulation< dim, Number >::initial_values_, ryujin::Interface::Simulation< dim, Number >::mpi_ensemble_, ryujin::Interface::Simulation< dim, Number >::offline_data_, ryujin::Interface::Simulation< dim, Number >::parabolic_module_, ryujin::Interface::Simulation< dim, Number >::parabolic_system_, ryujin::Interface::Simulation< dim, Number >::postprocessor_, ryujin::DeviceTimer::reinit(), ryujin::Interface::Simulation< dim, Number >::solution_transfer_, and ryujin::Interface::Simulation< dim, Number >::time_integrator_.
|
inlineoverridevirtual |
Destructor. Destroys all objects in the reverse order of construction because the objects observe each other.
Reimplemented from ryujin::Interface::Simulation< dim, Number >.
Definition at line 158 of file simulation.h.
References ryujin::Interface::Simulation< dim, Number >::discretization_, ryujin::Interface::Simulation< dim, Number >::hyperbolic_module_, ryujin::Interface::Simulation< dim, Number >::hyperbolic_system_, ryujin::Interface::Simulation< dim, Number >::initial_values_, ryujin::Interface::Simulation< dim, Number >::mpi_ensemble_, ryujin::Interface::Simulation< dim, Number >::offline_data_, ryujin::Interface::Simulation< dim, Number >::parabolic_module_, ryujin::Interface::Simulation< dim, Number >::parabolic_system_, ryujin::Interface::Simulation< dim, Number >::postprocessor_, ryujin::Interface::Simulation< dim, Number >::solution_transfer_, ryujin::Interface::Simulation< dim, Number >::state_vector_, and ryujin::Interface::Simulation< dim, Number >::time_integrator_.
|
inlineoverridevirtual |
Prepare the discretization and the state vector for the current mesh.
If no triangulation has been created (or loaded from a checkpoint) yet, create the mesh. If a state vector is attached to the triangulation (after a mesh adaptation or a resume), project it onto the new mesh; otherwise interpolate the initial values.
Reimplemented from ryujin::Interface::Task< Number >.
Definition at line 192 of file simulation.h.
References ryujin::TaskContext< Number >::base_name, ryujin::debug_poison_invalid_values(), ryujin::Interface::Simulation< dim, Number >::discretization_, ryujin::Interface::Simulation< dim, Number >::hyperbolic_module_, ryujin::TaskContext< Number >::info, ryujin::Interface::Simulation< dim, Number >::initial_values_, ryujin::Interface::Simulation< dim, Number >::mpi_ensemble_, ryujin::Interface::Simulation< dim, Number >::offline_data_, ryujin::Interface::Simulation< dim, Number >::parabolic_module_, ryujin::Interface::Simulation< dim, Number >::solution_transfer_, ryujin::Interface::Simulation< dim, Number >::state_vector_, ryujin::TaskContext< Number >::t, and ryujin::Interface::Simulation< dim, Number >::time_integrator_.
|
inlineoverridevirtual |
Perform a time step from t to t + tau with the TimeIntegrator and prepare the state vector at time t + tau.
Implements ryujin::Interface::Task< Number >.
Definition at line 242 of file simulation.h.
References ryujin::Interface::Simulation< dim, Number >::state_vector_, ryujin::TaskContext< Number >::t, ryujin::TaskContext< Number >::t_max, ryujin::TaskContext< Number >::tau, and ryujin::Interface::Simulation< dim, Number >::time_integrator_.