OGS
FixedTimeStepping.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 <memory>
7#include <vector>
8
9#include "TimeStepAlgorithm.h"
10
11namespace NumLib
12{
13using RepeatDtPair = std::tuple<std::size_t, double>;
14
26{
27public:
45 FixedTimeStepping(double t0, double t_end, double dt);
46
63 FixedTimeStepping(double t0, double tn,
64 std::vector<RepeatDtPair> const& repeat_dt_pairs,
65 std::vector<double> const& fixed_times_for_output);
66
67 double next(double solution_error, int number_iterations,
68 NumLib::TimeStep& ts_previous,
69 NumLib::TimeStep& ts_current) override;
70
71 static bool areRepeatDtPairsValid(
72 std::vector<RepeatDtPair> const& repeat_dt_pairs);
73
74private:
76 std::vector<double> dt_vector_;
77
84 double last_prescribed_dt_ = 0.0;
85
90};
91
92std::size_t findDeltatInterval(Time const& t_initial,
93 std::vector<double> const& delta_ts,
94 Time const& fixed_output_time);
95} // namespace NumLib
static bool areRepeatDtPairsValid(std::vector< RepeatDtPair > const &repeat_dt_pairs)
std::vector< double > dt_vector_
a vector of time step sizes
FixedTimeStepping(double t0, double t_end, double dt)
double next(double solution_error, int number_iterations, NumLib::TimeStep &ts_previous, NumLib::TimeStep &ts_current) override
TimeStepAlgorithm(const double t0, const double t_end)
Time step object.
Definition TimeStep.h:24
std::tuple< std::size_t, double > RepeatDtPair
std::size_t findDeltatInterval(Time const &t_initial, std::vector< double > const &delta_ts, Time const &fixed_output_time)