OGS
CreateFlowAndTemperatureControl.cpp
Go to the documentation of this file.
1
12
13#include "BaseLib/Algorithm.h"
14#include "BaseLib/ConfigTree.h"
15#include "BuildingPowerCurves.h"
18
19namespace ProcessLib
20{
21namespace HeatTransportBHE
22{
23namespace BHE
24{
26 BaseLib::ConfigTree const& config,
27 std::map<std::string,
28 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
29 curves,
30 RefrigerantProperties const& refrigerant)
31{
33 auto const type = config.getConfigParameter<std::string>("type");
34 if (type == "TemperatureCurveConstantFlow")
35 {
37 auto const flow_rate = config.getConfigParameter<double>("flow_rate");
38
39 auto const& temperature_curve = *BaseLib::getOrError(
40 curves,
42 config.getConfigParameter<std::string>("temperature_curve"),
43 "Required temperature curve not found.");
44
45 return TemperatureCurveConstantFlow{flow_rate, temperature_curve};
46 }
47 if (type == "TemperatureCurveFlowCurve")
48 {
49 auto const& flow_rate_curve = *BaseLib::getOrError(
50 curves,
52 config.getConfigParameter<std::string>("flow_rate_curve"),
53 "Required flow curve not found.");
54
55 auto const& temperature_curve = *BaseLib::getOrError(
56 curves,
58 config.getConfigParameter<std::string>("temperature_curve"),
59 "Required temperature curve not found.");
60
61 return TemperatureCurveFlowCurve{flow_rate_curve, temperature_curve};
62 }
63 if (type == "FixedPowerConstantFlow")
64 {
66 auto const power = config.getConfigParameter<double>("power");
67
69 auto const flow_rate = config.getConfigParameter<double>("flow_rate");
70 return FixedPowerConstantFlow{flow_rate, power,
71 refrigerant.specific_heat_capacity,
72 refrigerant.density};
73 }
74
75 if (type == "FixedPowerFlowCurve")
76 {
77 auto const& flow_rate_curve = *BaseLib::getOrError(
78 curves,
80 config.getConfigParameter<std::string>("flow_rate_curve"),
81 "Required flow rate curve not found.");
82
84 auto const power = config.getConfigParameter<double>("power");
85
86 return FixedPowerFlowCurve{flow_rate_curve, power,
87 refrigerant.specific_heat_capacity,
88 refrigerant.density};
89 }
90
91 if (type == "PowerCurveConstantFlow")
92 {
93 auto const& power_curve = *BaseLib::getOrError(
94 curves,
96 config.getConfigParameter<std::string>("power_curve"),
97 "Required power curve not found.");
98
100 auto const flow_rate = config.getConfigParameter<double>("flow_rate");
101
102 return PowerCurveConstantFlow{power_curve, flow_rate,
103 refrigerant.specific_heat_capacity,
104 refrigerant.density};
105 }
106
107 if (type == "PowerCurveFlowCurve")
108 {
109 auto const& power_curve = *BaseLib::getOrError(
110 curves,
112 config.getConfigParameter<std::string>("power_curve"),
113 "Required power curve not found.");
114
115 auto const& flow_rate_curve = *BaseLib::getOrError(
116 curves,
118 config.getConfigParameter<std::string>("flow_rate_curve"),
119 "Required flow rate curve not found.");
120
121 return PowerCurveFlowCurve{power_curve, flow_rate_curve,
122 refrigerant.specific_heat_capacity,
123 refrigerant.density};
124 }
125
126 if (type == "BuildingPowerCurveConstantFlow")
127 {
128 auto const& power_curve = *BaseLib::getOrError(
129 curves,
131 config.getConfigParameter<std::string>("power_curve"),
132 "Required power curve not found.");
133
134 auto const& cop_heating_curve = *BaseLib::getOrError(
135 curves,
137 config.getConfigParameter<std::string>("cop_heating_curve"),
138 "Required power curve not found.");
139
140 BuildingPowerCurves const building_power_curves{power_curve,
141 cop_heating_curve};
142
144 auto const flow_rate = config.getConfigParameter<double>("flow_rate");
145
147 building_power_curves, flow_rate,
148 refrigerant.specific_heat_capacity, refrigerant.density};
149 }
150 OGS_FATAL("FlowAndTemperatureControl type '{:s}' is not implemented.",
151 type);
152}
153} // namespace BHE
154} // namespace HeatTransportBHE
155} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:26
Definition of the PiecewiseLinearInterpolation class.
T getConfigParameter(std::string const &param) const
Map::mapped_type & getOrError(Map &map, Key const &key, std::string const &error_message)
Definition Algorithm.h:113
std::variant< TemperatureCurveConstantFlow, TemperatureCurveFlowCurve, FixedPowerConstantFlow, FixedPowerFlowCurve, PowerCurveConstantFlow, PowerCurveFlowCurve, BuildingPowerCurveConstantFlow > FlowAndTemperatureControl
FlowAndTemperatureControl createFlowAndTemperatureControl(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, RefrigerantProperties const &refrigerant)