OGS
CreateEvolutionaryPIDcontroller.cpp
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
#include "
CreateEvolutionaryPIDcontroller.h
"
5
6
#include "
BaseLib/Algorithm.h
"
7
#include "
BaseLib/ConfigTree.h
"
8
#include "
EvolutionaryPIDcontroller.h
"
9
#include "
NumLib/TimeStepping/Time.h
"
10
#include "
TimeStepAlgorithm.h
"
11
12
namespace
NumLib
13
{
14
class
TimeStepAlgorithm
;
15
16
EvolutionaryPIDcontrollerParameters
parseEvolutionaryPIDcontroller
(
17
BaseLib::ConfigTree
const
& config)
18
{
20
config.
checkConfigParameter
(
"type"
,
"EvolutionaryPIDcontroller"
);
21
23
auto
const
t0 = config.
getConfigParameter
<
double
>(
"t_initial"
);
25
auto
const
t_end = config.
getConfigParameter
<
double
>(
"t_end"
);
26
28
auto
const
h0 = config.
getConfigParameter
<
double
>(
"dt_guess"
);
29
31
auto
const
h_min = config.
getConfigParameter
<
double
>(
"dt_min"
);
33
auto
const
h_max = config.
getConfigParameter
<
double
>(
"dt_max"
);
35
auto
const
rel_h_min = config.
getConfigParameter
<
double
>(
"rel_dt_min"
);
37
auto
const
rel_h_max = config.
getConfigParameter
<
double
>(
"rel_dt_max"
);
38
40
auto
const
tol = config.
getConfigParameter
<
double
>(
"tol"
);
41
42
return
{t0, t_end, h0, h_min, h_max, rel_h_min, rel_h_max, tol};
43
}
44
45
std::unique_ptr<TimeStepAlgorithm>
createEvolutionaryPIDcontroller
(
46
EvolutionaryPIDcontrollerParameters
const
& config,
47
std::vector<double>
const
& fixed_times_for_output)
48
{
49
if
(
Time
(config.
t_end
) <=
Time
(config.
t0
))
50
{
51
OGS_FATAL
(
52
"Evolutionary PID controller timestepping: end time ({}) must be "
53
"larger than initial time ({})"
,
54
config.
t_end
,
55
config.
t0
);
56
}
57
58
return
std::make_unique<EvolutionaryPIDcontroller>(config.
t0
,
59
config.
t_end
,
60
config.
h0
,
61
config.
h_min
,
62
config.
h_max
,
63
config.
rel_h_min
,
64
config.
rel_h_max
,
65
config.
tol
,
66
fixed_times_for_output);
67
}
68
}
// end of namespace NumLib
Algorithm.h
ConfigTree.h
CreateEvolutionaryPIDcontroller.h
OGS_FATAL
#define OGS_FATAL(...)
Definition
Error.h:10
EvolutionaryPIDcontroller.h
TimeStepAlgorithm.h
Time.h
BaseLib::ConfigTree
Definition
ConfigTree.h:101
BaseLib::ConfigTree::getConfigParameter
T getConfigParameter(std::string const ¶m) const
Definition
ConfigTree-impl.h:113
BaseLib::ConfigTree::checkConfigParameter
void checkConfigParameter(std::string const ¶m, std::string_view const value) const
Definition
ConfigTree.cpp:167
NumLib::TimeStepAlgorithm
Interface of time stepping algorithms.
Definition
TimeStepAlgorithm.h:21
NumLib
Definition
ProjectData.h:31
NumLib::createEvolutionaryPIDcontroller
std::unique_ptr< TimeStepAlgorithm > createEvolutionaryPIDcontroller(EvolutionaryPIDcontrollerParameters const &config, std::vector< double > const &fixed_times_for_output)
Definition
CreateEvolutionaryPIDcontroller.cpp:45
NumLib::parseEvolutionaryPIDcontroller
EvolutionaryPIDcontrollerParameters parseEvolutionaryPIDcontroller(BaseLib::ConfigTree const &config)
Definition
CreateEvolutionaryPIDcontroller.cpp:16
NumLib::EvolutionaryPIDcontrollerParameters
Definition
CreateEvolutionaryPIDcontroller.h:19
NumLib::EvolutionaryPIDcontrollerParameters::rel_h_min
double rel_h_min
Definition
CreateEvolutionaryPIDcontroller.h:25
NumLib::EvolutionaryPIDcontrollerParameters::h_min
double h_min
Definition
CreateEvolutionaryPIDcontroller.h:23
NumLib::EvolutionaryPIDcontrollerParameters::rel_h_max
double rel_h_max
Definition
CreateEvolutionaryPIDcontroller.h:26
NumLib::EvolutionaryPIDcontrollerParameters::tol
double tol
Definition
CreateEvolutionaryPIDcontroller.h:27
NumLib::EvolutionaryPIDcontrollerParameters::t_end
double t_end
Definition
CreateEvolutionaryPIDcontroller.h:21
NumLib::EvolutionaryPIDcontrollerParameters::t0
double t0
Definition
CreateEvolutionaryPIDcontroller.h:20
NumLib::EvolutionaryPIDcontrollerParameters::h_max
double h_max
Definition
CreateEvolutionaryPIDcontroller.h:24
NumLib::EvolutionaryPIDcontrollerParameters::h0
double h0
Definition
CreateEvolutionaryPIDcontroller.h:22
NumLib::Time
Definition
Time.h:27
NumLib
TimeStepping
Algorithms
CreateEvolutionaryPIDcontroller.cpp
Generated by
1.14.0