ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
Loading...
Searching...
No Matches
time_integrator.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 <limits>
15#include <string>
16
17namespace ryujin
18{
19 namespace Interface
20 {
30 template <int dim, typename Number = double>
31 class TimeIntegrator : public dealii::ParameterAcceptor
32 {
33 public:
38
43 virtual void prepare() = 0;
44
46
50
56 virtual void prepare_state_vector(StateVector<Number> &state_vector,
57 Number t) const = 0;
58
72 virtual Number
74 Number t,
75 Number tau,
76 Number tau_max = std::numeric_limits<Number>::max()) = 0;
77
79
83
89 ACCESSOR_READ_ONLY(time_stepping_scheme_name)
90
91
99 ACCESSOR_READ_ONLY(efficiency)
100
101 //@}
102
103 protected:
107 explicit TimeIntegrator(const std::string &subsection)
108 : ParameterAcceptor(subsection)
109 , efficiency_(Number(1.))
110 {
111 }
112
115 };
116 } // namespace Interface
117} // namespace ryujin
TimeIntegrator(const std::string &subsection)
virtual void prepare_state_vector(StateVector< Number > &state_vector, Number t) const =0
virtual Number step(StateVector< Number > &state_vector, Number t, Number tau, Number tau_max=std::numeric_limits< Number >::max())=0
#define ACCESSOR_READ_ONLY(member)