ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
Loading...
Searching...
No Matches
module.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>
11
12#include <deal.II/base/parameter_acceptor.h>
13
14#include <cstdint>
15#include <functional>
16#include <initializer_list>
17#include <ostream>
18#include <string>
19
20namespace ryujin
21{
42 enum class IDViolationStrategy : std::uint8_t {
47 warn,
48
55 };
56
57
75 class Restart final
76 {
77 public:
79 };
80
81
92 class Correction final
93 {
94 };
95
96
97 namespace Interface
98 {
111 template <int dim, typename Number = double>
112 class Module : public dealii::ParameterAcceptor
113 {
114 public:
119
123 using StageVectors = std::initializer_list<
124 std::reference_wrapper<const StateVector<Number>>>;
125
129 using StageWeights = std::initializer_list<Number>;
130
132
136
144 virtual void prepare() = 0;
145
156 virtual void
157 reinit_state_vector(StateVector<Number> &state_vector) const = 0;
158
165 virtual void prepare_state_vector(StateVector<Number> &state_vector,
166 Number t) const = 0;
167
171 void set_id_violation_strategy(const IDViolationStrategy &strategy) const
172 {
173 id_violation_strategy_ = strategy;
174 }
175
177
181
187 virtual void print_solver_statistics(std::ostream &output) const = 0;
188
194 ACCESSOR_READ_ONLY(n_restarts)
195
196
199 ACCESSOR_READ_ONLY(n_corrections)
200
201
206 ACCESSOR_READ_ONLY(n_warnings)
207
208 //@}
209
210 protected:
214 explicit Module(const std::string &subsection)
215 : ParameterAcceptor(subsection)
216 , id_violation_strategy_(IDViolationStrategy::warn)
217 , n_restarts_(0)
218 , n_corrections_(0)
219 , n_warnings_(0)
220 {
221 }
222
223 mutable IDViolationStrategy id_violation_strategy_;
224
225 mutable unsigned int n_restarts_;
226 mutable unsigned int n_corrections_;
227 mutable unsigned int n_warnings_;
228 };
229 } // namespace Interface
230} // namespace ryujin
double suggested_tau_max
Definition module.h:78
IDViolationStrategy
Definition module.h:42
#define ACCESSOR_READ_ONLY(member)