OGS
TimeDiscretization.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <vector>
7
10#include "Types.h"
11
12namespace NumLib
13{
16
86{
87public:
88 TimeDiscretization() = default;
89
91 virtual void setInitialState(const double t0) = 0;
92
99 virtual void nextTimestep(const double t, const double delta_t) = 0;
100
103 virtual double getCurrentTime() const = 0;
104
107 virtual double getCurrentTimeIncrement() const = 0;
108
110 virtual double getPreviousTimeIncrement() const = 0;
111
113 virtual void getWeightedOldX(
114 GlobalVector& y, GlobalVector const& x_old) const = 0; // = x_old
115
116 virtual ~TimeDiscretization() = default;
117};
118
121{
122public:
123 void setInitialState(const double t0) override { _t = t0; }
124 void nextTimestep(const double t, const double delta_t) override
125 {
127 _t = t;
128 _delta_t = delta_t;
129 }
130
131 double getCurrentTime() const override { return _t; }
132 double getCurrentTimeIncrement() const override { return _delta_t; }
133 double getPreviousTimeIncrement() const override { return _delta_t_prev; }
135 GlobalVector const& x_old) const override;
136
137private:
138 double _t = std::numeric_limits<double>::quiet_NaN();
139 double _delta_t =
140 std::numeric_limits<double>::quiet_NaN();
141
143 double _delta_t_prev = std::numeric_limits<double>::quiet_NaN();
144};
145
147} // namespace NumLib
MathLib::EigenVector GlobalVector
Backward Euler scheme.
double getCurrentTime() const override
void setInitialState(const double t0) override
Sets the initial condition.
double getPreviousTimeIncrement() const override
Returns the value of from the previous time step.
void getWeightedOldX(GlobalVector &y, GlobalVector const &x_old) const override
Returns .
void nextTimestep(const double t, const double delta_t) override
double _delta_t
the timestep size
double _delta_t_prev
The timestep size of the previous timestep.
double getCurrentTimeIncrement() const override
virtual void setInitialState(const double t0)=0
Sets the initial condition.
virtual double getCurrentTimeIncrement() const =0
virtual void nextTimestep(const double t, const double delta_t)=0
virtual double getCurrentTime() const =0
virtual ~TimeDiscretization()=default
virtual double getPreviousTimeIncrement() const =0
Returns the value of from the previous time step.
virtual void getWeightedOldX(GlobalVector &y, GlobalVector const &x_old) const =0
Returns .