ryujin 2.5.0 revision 3a6c8d57210175dea14d8116e1fe878f349f8c1c
Loading...
Searching...
No Matches
parabolic_module.h
Go to the documentation of this file.
1//
2// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3// Copyright (C) 2025 - 2026 by the ryujin authors
4//
5
6#pragma once
7
8#include <ryujin/base/compile_time_options.h>
14
15#include <deal.II/base/parameter_acceptor.h>
16
17namespace ryujin
18{
24 template <typename HyperbolicDescription, int dim, typename Number>
26 : public Interface::ParabolicModule<dim, Number>
27 {
28 public:
33
35 typename Interface::ParabolicModule<dim, Number>::StageVectors;
36
38 typename Interface::ParabolicModule<dim, Number>::StageWeights;
39
40 using HyperbolicSystem = typename HyperbolicDescription::HyperbolicSystem;
42
43 using View = typename HyperbolicSystem::template View<dim, Number>;
44
46
50
55 const MPIEnsemble & /*mpi_ensemble*/,
56 const Interface::OfflineData<dim, Number> & /*offline_data*/,
57 const HyperbolicSystem & /*hyperbolic_system*/,
58 const ParabolicSystem & /*parabolic_system*/,
60 & /*initial_values*/,
61 const std::string &subsection = "StubParabolicModule")
62 : Interface::ParabolicModule<dim, Number>(subsection)
63 {
64 }
65
71 void prepare() override
72 {
73 // do nothing
74 }
75
77
81
89 void
90 reinit_state_vector(StateVector<Number> & /*state_vector*/) const override
91 {
92 // do nothing
93 }
94
103 Number /*t*/) const override
104 {
105 Assert(false,
106 dealii::ExcMessage("The parabolic system is the identity. This "
107 "function should have never been called."));
108 }
109
115 void backward_euler_step(const StateVector<Number> &old_state_vector,
116 const Number /*old_t*/,
117 StageVectors /*stage_state_vectors*/,
118 StageWeights /*stage_weights*/,
119 StateVector<Number> &new_state_vector,
120 Number /*tau*/) const override
121 {
122 Assert(false,
123 dealii::ExcMessage("The parabolic system is the identity. This "
124 "function should have never been called."));
125
126 new_state_vector = old_state_vector;
127 }
128
137 void crank_nicolson_step(const StateVector<Number> &old_state_vector,
138 const Number /*old_t*/,
139 StateVector<Number> &new_state_vector,
140 Number /*tau*/) const override
141 {
142 Assert(false,
143 dealii::ExcMessage("The parabolic system is the identity. This "
144 "function should have never been called."));
145
146 new_state_vector = old_state_vector;
147 }
148
150
154
160 void print_solver_statistics(std::ostream & /*output*/) const override
161 {
162 // do nothing
163 }
164
166 };
167
168
178
179 template <typename HyperbolicDescription, int dim, typename Number = double>
182 };
183} // namespace ryujin
StubParabolicModule(const MPIEnsemble &, const Interface::OfflineData< dim, Number > &, const HyperbolicSystem &, const ParabolicSystem &, const InitialValues< HyperbolicDescription, dim, Number > &, const std::string &subsection="StubParabolicModule")
void reinit_state_vector(StateVector< Number > &) const override
typename HyperbolicDescription::HyperbolicSystem HyperbolicSystem
void crank_nicolson_step(const StateVector< Number > &old_state_vector, const Number, StateVector< Number > &new_state_vector, Number) const override
typename Interface::ParabolicModule< dim, Number >::StageWeights StageWeights
void prepare_state_vector(StateVector< Number > &, Number) const override
void print_solver_statistics(std::ostream &) const override
void backward_euler_step(const StateVector< Number > &old_state_vector, const Number, StageVectors, StageWeights, StateVector< Number > &new_state_vector, Number) const override
typename HyperbolicSystem::template View< dim, Number > View
typename Interface::ParabolicModule< dim, Number >::StageVectors StageVectors