26 if (n_steps.has_value())
28 if (t_end <= t_initial)
31 "Creating linearly spaced time steps vector using "
32 "FixedTimeStepping algorithm failed! "
33 "User provided start value (t_initial) "
34 "{} is not smaller then end value (t_end) {}.",
41 "Requested number of time steps in time steps vector "
42 "(n_steps) must be greater then 0. "
43 "{} time steps were requested",
48 (t_end - t_initial) /
static_cast<double>(*n_steps);
49 std::vector
const repeat_pairs = {
50 RepeatDtPair{
static_cast<std::size_t
>(*n_steps), t_step}};
51 return {t_initial, t_end, repeat_pairs};
60 if (range.begin() == range.end())
62 OGS_FATAL(
"no timesteps have been given");
65 std::vector<RepeatDtPair> repeat_dt_pairs;
66 for (
auto const pair : range)
68 repeat_dt_pairs.emplace_back(
70 pair.getConfigParameter<std::size_t>(
"repeat"),
72 pair.getConfigParameter<
double>(
"delta_t"));
75 return {t_initial, t_end, repeat_dt_pairs};
80 std::vector<double>
const& fixed_times_for_output)
85 "fixed timestepping: end time ({}) is smaller than initial time "
94 "CreateFixedTimeStepping: invalid specification of (repeat, "
98 return std::make_unique<FixedTimeStepping>(parameters.
t_initial,
101 fixed_times_for_output);
std::optional< T > getConfigParameterOptional(std::string const ¶m) const
T getConfigParameter(std::string const ¶m) const
Range< SubtreeIterator > getConfigSubtreeList(std::string const &root) const
ConfigTree getConfigSubtree(std::string const &root) const
void checkConfigParameter(std::string const ¶m, std::string_view const value) const
static bool areRepeatDtPairsValid(std::vector< RepeatDtPair > const &repeat_dt_pairs)
FixedTimeSteppingParameters parseFixedTimeStepping(BaseLib::ConfigTree const &config)
std::tuple< std::size_t, double > RepeatDtPair
std::unique_ptr< TimeStepAlgorithm > createFixedTimeStepping(FixedTimeSteppingParameters const ¶meters, std::vector< double > const &fixed_times_for_output)
std::vector< RepeatDtPair > repeat_dt_pairs