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