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) 2026 by the ryujin authors
4//
5
6#pragma once
7
8#include <ryujin/base/compile_time_options.h>
11
12#include <string>
13
14namespace ryujin
15{
16 namespace Interface
17 {
26 template <int dim, typename Number = double>
27 class ParabolicModule : public Module<dim, Number>
28 {
29 public:
34
35 using typename Module<dim, Number>::StageVectors;
36
37 using typename Module<dim, Number>::StageWeights;
38
40
44
56 virtual void
58 const Number old_t,
59 StageVectors stage_state_vectors,
60 StageWeights stage_weights,
61 StateVector<Number> &new_state_vector,
62 Number tau) const = 0;
63
74 virtual void
76 const Number old_t,
77 StateVector<Number> &new_state_vector,
78 Number tau) const = 0;
79
81
82 protected:
83 using Module<dim, Number>::Module;
84 };
85 } // namespace Interface
86} // namespace ryujin
virtual void crank_nicolson_step(const StateVector< Number > &old_state_vector, const Number old_t, StateVector< Number > &new_state_vector, Number tau) const =0
virtual void backward_euler_step(const StateVector< Number > &old_state_vector, const Number old_t, StageVectors stage_state_vectors, StageWeights stage_weights, StateVector< Number > &new_state_vector, Number tau) const =0