OGS
CreateFixedTimeStepping.cpp
Go to the documentation of this file.
1
13
14#include "BaseLib/ConfigTree.h"
15#include "BaseLib/Error.h"
16#include "FixedTimeStepping.h"
17#include "TimeStepAlgorithm.h"
18
19namespace NumLib
20{
21std::unique_ptr<TimeStepAlgorithm> createFixedTimeStepping(
22 BaseLib::ConfigTree const& config,
23 std::vector<double> const& fixed_times_for_output)
24{
26 config.checkConfigParameter("type", "FixedTimeStepping");
27
29 auto const t_initial = config.getConfigParameter<double>("t_initial");
31 auto const t_end = config.getConfigParameter<double>("t_end");
33 auto const delta_ts_config = config.getConfigSubtree("timesteps");
34
35 // TODO: consider adding call "listNonEmpty" to config tree
37 auto const range = delta_ts_config.getConfigSubtreeList("pair");
38 if (range.begin() == range.end())
39 {
40 OGS_FATAL("no timesteps have been given");
41 }
42
43 std::vector<std::pair<std::size_t, double>> repeat_dt_pairs;
44 for (auto const pair : range)
45 {
46 repeat_dt_pairs.emplace_back(
48 pair.getConfigParameter<std::size_t>("repeat"),
50 pair.getConfigParameter<double>("delta_t"));
51 }
52
53 return std::make_unique<FixedTimeStepping>(
54 t_initial, t_end, repeat_dt_pairs, fixed_times_for_output);
55}
56} // end of namespace NumLib
#define OGS_FATAL(...)
Definition Error.h:26
T getConfigParameter(std::string const &param) const
Range< SubtreeIterator > getConfigSubtreeList(std::string const &root) const
ConfigTree getConfigSubtree(std::string const &root) const
void checkConfigParameter(std::string const &param, std::string_view const value) const
std::unique_ptr< TimeStepAlgorithm > createFixedTimeStepping(BaseLib::ConfigTree const &config, std::vector< double > const &fixed_times_for_output)