ryujin 2.5.0 revision 3a6c8d57210175dea14d8116e1fe878f349f8c1c
Loading...
Searching...
No Matches
simulation.h
Go to the documentation of this file.
1//
2// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3// Copyright (C) 2026 by the ryujin authors
4//
5
6#pragma once
7
8#include <ryujin/base/compile_time_options.h>
24
25#include <memory>
26
27namespace ryujin
28{
29 namespace Interface
30 {
41 template <int dim, typename Number = double>
43 {
44 public:
48 virtual ~Simulation() = default;
49
54
55 ACCESSOR_READ_ONLY(mpi_ensemble)
56
57 ACCESSOR(discretization)
58
59 ACCESSOR(offline_data)
60
61 ACCESSOR_READ_ONLY(hyperbolic_system)
62
63 ACCESSOR_READ_ONLY(parabolic_system)
64
65 ACCESSOR_READ_ONLY(initial_values)
66
67 ACCESSOR(hyperbolic_module)
68
69 ACCESSOR(parabolic_module)
70
71 ACCESSOR(time_integrator)
72
73 ACCESSOR(mesh_adaptor)
74
75 ACCESSOR(solution_transfer)
76
77 ACCESSOR(vtu_output)
78
79 ACCESSOR(quantities)
80
81 ACCESSOR(error_evaluation)
82
83 //@}
84
85 protected:
89 Simulation() = default;
90
91 std::unique_ptr<MPIEnsemble> mpi_ensemble_;
92 std::unique_ptr<Discretization<dim>> discretization_;
93 std::unique_ptr<OfflineData<dim, Number>> offline_data_;
94
103
104 std::unique_ptr<HyperbolicModule<dim, Number>> hyperbolic_module_;
105 std::unique_ptr<ParabolicModule<dim, Number>> parabolic_module_;
106 std::unique_ptr<TimeIntegrator<dim, Number>> time_integrator_;
107 std::unique_ptr<MeshAdaptor<dim, Number>> mesh_adaptor_;
108 std::unique_ptr<SolutionTransfer<dim, Number>> solution_transfer_;
109 std::unique_ptr<VTUOutput<dim, Number>> vtu_output_;
110 std::unique_ptr<Quantities<dim, Number>> quantities_;
111 std::unique_ptr<ErrorEvaluation<dim, Number>> error_evaluation_;
112 };
113 } // namespace Interface
114} // namespace ryujin
std::unique_ptr< Quantities< dim, Number > > quantities_
Definition simulation.h:110
std::unique_ptr< ParabolicModule< dim, Number > > parabolic_module_
Definition simulation.h:105
std::unique_ptr< MPIEnsemble > mpi_ensemble_
Definition simulation.h:91
std::unique_ptr< Discretization< dim > > discretization_
Definition simulation.h:92
std::unique_ptr< MeshAdaptor< dim, Number > > mesh_adaptor_
Definition simulation.h:107
std::unique_ptr< TimeIntegrator< dim, Number > > time_integrator_
Definition simulation.h:106
const ParabolicSystem * parabolic_system_
Definition simulation.h:101
const InitialValues< dim, Number > * initial_values_
Definition simulation.h:102
std::unique_ptr< VTUOutput< dim, Number > > vtu_output_
Definition simulation.h:109
std::unique_ptr< OfflineData< dim, Number > > offline_data_
Definition simulation.h:93
std::unique_ptr< SolutionTransfer< dim, Number > > solution_transfer_
Definition simulation.h:108
std::unique_ptr< HyperbolicModule< dim, Number > > hyperbolic_module_
Definition simulation.h:104
virtual ~Simulation()=default
std::unique_ptr< ErrorEvaluation< dim, Number > > error_evaluation_
Definition simulation.h:111
const HyperbolicSystem * hyperbolic_system_
Definition simulation.h:100
#define ACCESSOR(member)
#define ACCESSOR_READ_ONLY(member)