27 if (n_steps.has_value())
29 if (t_end <= t_initial)
32 "Creating linearly spaced time steps vector using "
33 "FixedTimeStepping algorithm failed! "
34 "User provided start value (t_initial) "
35 "{} is not smaller then end value (t_end) {}.",
42 "Requested number of time steps in time steps vector "
43 "(n_steps) must be greater then 0. "
44 "{} time steps were requested",
49 (t_end - t_initial) /
static_cast<double>(*n_steps);
50 std::vector
const repeat_pairs = {
51 RepeatDtPair{
static_cast<std::size_t
>(*n_steps), t_step}};
52 return {t_initial, t_end, repeat_pairs};
61 if (range.begin() == range.end())
63 OGS_FATAL(
"no timesteps have been given");
66 std::vector<RepeatDtPair> repeat_dt_pairs;
67 for (
auto const pair : range)
69 repeat_dt_pairs.emplace_back(
71 pair.getConfigParameter<std::size_t>(
"repeat"),
73 pair.getConfigParameter<
double>(
"delta_t"));
76 return {t_initial, t_end, repeat_dt_pairs};
81 std::vector<double>
const& fixed_times_for_output)
88 "fixed timestepping: end time ({}) must be larger than initial "
97 "CreateFixedTimeStepping: invalid specification of (repeat, "
101 return std::make_unique<FixedTimeStepping>(parameters.
t_initial,
104 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