ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
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 <limits>
13#include <string>
14
15namespace ryujin
16{
17 namespace Interface
18 {
27 template <int dim, typename Number = double>
28 class ParabolicModule : public Module<dim, Number>
29 {
30 public:
35
36 using typename Module<dim, Number>::StageVectors;
37
38 using typename Module<dim, Number>::StageWeights;
39
41
45
61 virtual Number backward_euler_step(
62 const StateVector<Number> &old_state_vector,
63 StageVectors stage_state_vectors,
64 StageWeights stage_weights,
65 StateVector<Number> &new_state_vector,
66 Number t,
67 Number tau,
68 Number tau_max = std::numeric_limits<Number>::max()) const = 0;
69
84 virtual Number crank_nicolson_step(
85 const StateVector<Number> &old_state_vector,
86 StateVector<Number> &new_state_vector,
87 Number t,
88 Number tau,
89 Number tau_max = std::numeric_limits<Number>::max()) const = 0;
90
92
93 protected:
94 using Module<dim, Number>::Module;
95 };
96 } // namespace Interface
97} // namespace ryujin
virtual Number crank_nicolson_step(const StateVector< Number > &old_state_vector, StateVector< Number > &new_state_vector, Number t, Number tau, Number tau_max=std::numeric_limits< Number >::max()) const =0
virtual Number backward_euler_step(const StateVector< Number > &old_state_vector, StageVectors stage_state_vectors, StageWeights stage_weights, StateVector< Number > &new_state_vector, Number t, Number tau, Number tau_max=std::numeric_limits< Number >::max()) const =0