OGS
FlowAndTemperatureControl.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <variant>
14#include "BuildingPowerCurves.h"
16
17namespace ProcessLib
18{
19namespace HeatTransportBHE
20{
21namespace BHE
22{
24{
25 double const flow_rate;
26 double const temperature;
27};
28
30{
31 FlowAndTemperature operator()(double const /*T_out*/,
32 double const time) const
33 {
34 return {flow_rate, temperature_curve.getValue(time)};
35 }
36 double flow_rate;
38};
39
51
53{
54 FlowAndTemperature operator()(double const T_out,
55 double const /*time*/) const
56 {
57 return {flow_rate, power / flow_rate / heat_capacity / density + T_out};
58 }
59 double flow_rate;
60 double power; // Value is expected to be in Watt.
62 double density;
63};
64
66{
67 FlowAndTemperature operator()(double const T_out, double const time) const
68 {
69 double const flow_rate = flow_curve.getValue(time);
70 return {flow_rate, power / flow_rate / heat_capacity / density + T_out};
71 }
73
74 double power; // Value is expected to be in Watt.
76 double density;
77};
78
80{
81 FlowAndTemperature operator()(double const T_out, double const time) const
82 {
83 double const power = power_curve.getValue(time);
84 if (power == 0)
85 {
86 return {0.0, T_out};
87 }
88 return {flow_rate, power / flow_rate / heat_capacity / density + T_out};
89 }
91
92 double flow_rate;
94 double density;
95};
96
98{
99 FlowAndTemperature operator()(double const T_out, double const time) const
100 {
101 double const power = power_curve.getValue(time);
102 double const flow_rate = flow_curve.getValue(time);
103 if (power == 0)
104 {
105 return {0.0, T_out};
106 }
107 return {flow_rate, power / flow_rate / heat_capacity / density + T_out};
108 }
111
113 double density;
114};
115
117{
118 FlowAndTemperature operator()(double const T_out, double const time) const
119 {
120 double const power = building_power_curves.power_curve.getValue(time);
121 double const cop =
123
124 if (power == 0)
125 {
126 return {0.0, T_out};
127 }
128 return {flow_rate,
129 power * (cop - 1) / cop / flow_rate / heat_capacity / density +
130 T_out};
131 }
133
134 double flow_rate;
136 double density;
137};
138
146} // namespace BHE
147} // namespace HeatTransportBHE
148} // namespace ProcessLib
Definition of the PiecewiseLinearInterpolation class.
double getValue(double pnt_to_interpolate) const
Calculates the interpolation value.
std::variant< TemperatureCurveConstantFlow, TemperatureCurveFlowCurve, FixedPowerConstantFlow, FixedPowerFlowCurve, PowerCurveConstantFlow, PowerCurveFlowCurve, BuildingPowerCurveConstantFlow > FlowAndTemperatureControl
FlowAndTemperature operator()(double const T_out, double const time) const
MathLib::PiecewiseLinearInterpolation const & cop_heating_curve
MathLib::PiecewiseLinearInterpolation const & power_curve
FlowAndTemperature operator()(double const T_out, double const) const
MathLib::PiecewiseLinearInterpolation const & flow_curve
FlowAndTemperature operator()(double const T_out, double const time) const
FlowAndTemperature operator()(double const T_out, double const time) const
MathLib::PiecewiseLinearInterpolation const & power_curve
MathLib::PiecewiseLinearInterpolation const & power_curve
FlowAndTemperature operator()(double const T_out, double const time) const
MathLib::PiecewiseLinearInterpolation const & flow_curve
FlowAndTemperature operator()(double const, double const time) const
MathLib::PiecewiseLinearInterpolation const & flow_rate_curve
MathLib::PiecewiseLinearInterpolation const & temperature_curve
FlowAndTemperature operator()(double const, double const time) const