OGS
ProcessLib::HeatTransportBHE::BHE Namespace Reference

Classes

struct  ActiveCoolingCurveFlowCurve
struct  AdvectiveThermalResistanceCoaxial
class  BHE_1P
class  BHE_1U
class  BHE_2U
class  BHE_CXA
class  BHE_CXC
struct  BHECommon
class  BHECommonCoaxial
class  BHECommonUType
struct  BoreholeGeometry
struct  BuildingPowerCurveActiveCoolingCurveFlowCurve
struct  BuildingPowerCurveConstantFlow
struct  BuildingPowerCurveFlowCurve
struct  BuildingPowerCurveHotWaterCurveActiveCoolingCurveFlowCurve
struct  BuildingPowerCurveHotWaterCurveFlowCurve
struct  BuildingPowerCurveHotWaterCurvePassiveCoolingCurveFlowCurve
struct  BuildingPowerCurvePassiveCoolingCurveFlowCurve
struct  BuildingPowerCurves
struct  FixedPowerConstantFlow
struct  FixedPowerFlowCurve
struct  FlowAndTemperature
struct  GroutAndGroutSoilExchangeThermalResistanceCoaxial
struct  GroutParameters
struct  Pipe
struct  PipeConfiguration1PType
struct  PipeConfigurationCoaxial
struct  PipeConfigurationUType
struct  PipeWallThermalResistanceCoaxial
struct  PowerCurveConstantFlow
struct  PowerCurveFlowCurve
struct  RefrigerantProperties
struct  TemperatureCurveConstantFlow
struct  TemperatureCurveFlowCurve
struct  ThermoMechanicalFlowProperties

Typedefs

using BHETypes = std::variant<BHE_1U, BHE_CXA, BHE_CXC, BHE_2U, BHE_1P>
using CoolingVariant
using FactoryAdvancedBuildingCurvesFlowCurve
using FlowAndTemperatureControl

Functions

double compute_R_gs (double const chi, double const R_g)
double compute_R_gg (double const chi, double const R_gs, double const R_ar, double const R_g)
std::array< double, 3 > thermalResistancesGroutSoil (double const chi, double const R_ar, double const R_g)
double compute_R_gs_2U (double const chi, double const R_g)
double compute_R_gg_2U (double const chi, double const R_gs, double const R_ar, double const R_g)
std::array< double, 4 > thermalResistancesGroutSoil2U (double const chi, double const R_ar_1, double const R_ar_2, double const R_g)
BoreholeGeometry createBoreholeGeometry (BaseLib::ConfigTree const &config)
static std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfiguration1PType, bool > parseBHE1PTypeConfig (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
template<typename T_BHE>
T_BHE createBHE1PType (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
template BHE_1P createBHE1PType< BHE_1P > (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
static std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfigurationCoaxial, bool > parseBHECoaxialConfig (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
template<typename T_BHE>
T_BHE createBHECoaxial (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
template BHE_CXA createBHECoaxial< BHE_CXA > (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
template BHE_CXC createBHECoaxial< BHE_CXC > (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
static std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfigurationUType, bool > parseBHEUTypeConfig (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
template<typename T_BHE>
T_BHE createBHEUType (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
template BHE_1U createBHEUType< BHE_1U > (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
template BHE_2U createBHEUType< BHE_2U > (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
BuildingPowerCurves createBuildingPowerCurvesStruct (std::optional< BaseLib::ConfigTree > const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
CoolingVariant createCoolingVariant (std::optional< BaseLib::ConfigTree > const &cooling_config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
FlowAndTemperatureControl createHeatingHotWaterCooling (std::optional< BuildingPowerCurves > const &heating, std::optional< BuildingPowerCurves > const &hot_water, std::optional< CoolingVariant > const &cooling, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)
FlowAndTemperatureControl createHeatingCooling (std::optional< BuildingPowerCurves > const &heating, std::optional< BuildingPowerCurves > const &, std::optional< CoolingVariant > const &cooling, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)
FlowAndTemperatureControl createHotWaterCooling (std::optional< BuildingPowerCurves > const &, std::optional< BuildingPowerCurves > const &hot_water, std::optional< CoolingVariant > const &cooling, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)
FlowAndTemperatureControl createCooling (std::optional< BuildingPowerCurves > const &, std::optional< BuildingPowerCurves > const &, std::optional< CoolingVariant > const &cooling, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)
FlowAndTemperatureControl createAdvancedBuildingPowerCurvesFlowCurve (std::optional< BaseLib::ConfigTree > const &heating_config, std::optional< BaseLib::ConfigTree > const &hot_water_config, std::optional< BaseLib::ConfigTree > const &cooling_config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)
FlowAndTemperatureControl createFlowAndTemperatureControl (BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, RefrigerantProperties const &refrigerant)
FlowAndTemperature check_power_and_flow_rate (double flow_rate, double power, double heat_capacity, double density, double T_out, double flow_rate_min, double power_min)
GroutParameters createGroutParameters (BaseLib::ConfigTree const &config)
double prandtlNumber (double const &viscosity, double const &heat_capacity, double const &heat_conductivity)
double reynoldsNumber (double const velocity_norm, double const pipe_diameter, double const viscosity, double const density)
double nusseltNumber (double const reynolds_number, double const prandtl_number, double const pipe_diameter, double const pipe_length)
double nusseltNumberAnnulus (double const reynolds_number, double const prandtl_number, double const diameter_ratio, double const pipe_aspect_ratio)
Pipe createPipe (BaseLib::ConfigTree const &config)
double coaxialPipesAnnulusDiameter (Pipe const &inner_pipe, Pipe const &outer_pipe)
RefrigerantProperties createRefrigerantProperties (BaseLib::ConfigTree const &config)
AdvectiveThermalResistanceCoaxial calculateAdvectiveThermalResistance (Pipe const &inner_pipe, Pipe const &outer_pipe, RefrigerantProperties const &fluid, double const Nu_inner_pipe, double const Nu_annulus)
PipeWallThermalResistanceCoaxial calculatePipeWallThermalResistance (Pipe const &inner_pipe, Pipe const &outer_pipe)
GroutAndGroutSoilExchangeThermalResistanceCoaxial calculateGroutAndGroutSoilExchangeThermalResistance (Pipe const &outer_pipe, GroutParameters const &grout_parameters, double const borehole_diameter)
ThermoMechanicalFlowProperties calculateThermoMechanicalFlowPropertiesPipe (Pipe const &pipe, double const length, RefrigerantProperties const &fluid, double const flow_rate)
ThermoMechanicalFlowProperties calculateThermoMechanicalFlowPropertiesAnnulus (Pipe const &inner_pipe, Pipe const &outer_pipe, double const length, RefrigerantProperties const &fluid, double const flow_rate)

Variables

const std::map< std::tuple< bool, bool, bool >, FactoryAdvancedBuildingCurvesFlowCurveadvancedBuildingPowerCurvesFlowCurve

Typedef Documentation

◆ BHETypes

Definition at line 19 of file BHETypes.h.

◆ CoolingVariant

Initial value:
std::variant<BuildingPowerCurves,
std::reference_wrapper<MathLib::PiecewiseLinearInterpolation>>

Definition at line 22 of file BuildingPowerCurves.h.

◆ FactoryAdvancedBuildingCurvesFlowCurve

Initial value:
std::optional<BuildingPowerCurves>,
std::optional<BuildingPowerCurves>,
std::optional<CoolingVariant>,
double const,
double const)>
std::variant< TemperatureCurveConstantFlow, TemperatureCurveFlowCurve, FixedPowerConstantFlow, FixedPowerFlowCurve, PowerCurveConstantFlow, PowerCurveFlowCurve, BuildingPowerCurveConstantFlow, BuildingPowerCurveHotWaterCurveActiveCoolingCurveFlowCurve, BuildingPowerCurveHotWaterCurvePassiveCoolingCurveFlowCurve, BuildingPowerCurveHotWaterCurveFlowCurve, BuildingPowerCurveActiveCoolingCurveFlowCurve, BuildingPowerCurvePassiveCoolingCurveFlowCurve, BuildingPowerCurveFlowCurve, ActiveCoolingCurveFlowCurve > FlowAndTemperatureControl

Definition at line 217 of file CreateFlowAndTemperatureControl.cpp.

◆ FlowAndTemperatureControl

Initial value:

Definition at line 461 of file FlowAndTemperatureControl.h.

Function Documentation

◆ calculateAdvectiveThermalResistance()

AdvectiveThermalResistanceCoaxial ProcessLib::HeatTransportBHE::BHE::calculateAdvectiveThermalResistance ( Pipe const & inner_pipe,
Pipe const & outer_pipe,
RefrigerantProperties const & fluid,
double const Nu_inner_pipe,
double const Nu_annulus )
inline

Definition at line 37 of file ThermalResistancesCoaxial.h.

41{
42 double const hydraulic_diameter =
43 coaxialPipesAnnulusDiameter(inner_pipe, outer_pipe);
44
45 auto advective_thermal_resistance = [&](double Nu, double diameter_ratio)
46 {
47 return 1.0 / (Nu * fluid.thermal_conductivity * std::numbers::pi) *
48 diameter_ratio;
49 };
50 return {advective_thermal_resistance(Nu_inner_pipe, 1.),
51 advective_thermal_resistance(
52 Nu_annulus, hydraulic_diameter / inner_pipe.outsideDiameter()),
53 advective_thermal_resistance(
54 Nu_annulus, hydraulic_diameter / outer_pipe.diameter)};
55}
double coaxialPipesAnnulusDiameter(Pipe const &inner_pipe, Pipe const &outer_pipe)
Definition Pipe.h:48

References coaxialPipesAnnulusDiameter(), ProcessLib::HeatTransportBHE::BHE::Pipe::diameter, ProcessLib::HeatTransportBHE::BHE::Pipe::outsideDiameter(), and ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::thermal_conductivity.

Referenced by ProcessLib::HeatTransportBHE::BHE::BHECommonCoaxial::calcThermalResistances().

◆ calculateGroutAndGroutSoilExchangeThermalResistance()

GroutAndGroutSoilExchangeThermalResistanceCoaxial ProcessLib::HeatTransportBHE::BHE::calculateGroutAndGroutSoilExchangeThermalResistance ( Pipe const & outer_pipe,
GroutParameters const & grout_parameters,
double const borehole_diameter )
inline

Definition at line 65 of file ThermalResistancesCoaxial.h.

68{
69 double const outer_pipe_outside_diameter = outer_pipe.outsideDiameter();
70 double const chi =
71 std::log(std::sqrt(borehole_diameter * borehole_diameter +
72 outer_pipe_outside_diameter *
73 outer_pipe_outside_diameter) /
74 std::sqrt(2) / outer_pipe_outside_diameter) /
75 std::log(borehole_diameter / outer_pipe_outside_diameter);
76 double const R_g =
77 std::log(borehole_diameter / outer_pipe_outside_diameter) / 2 /
78 (std::numbers::pi * grout_parameters.lambda_g);
79 double const conductive_b = chi * R_g;
80 double const grout_soil = (1 - chi) * R_g;
81 return {conductive_b, grout_soil};
82}

References ProcessLib::HeatTransportBHE::BHE::GroutParameters::lambda_g, and ProcessLib::HeatTransportBHE::BHE::Pipe::outsideDiameter().

Referenced by ProcessLib::HeatTransportBHE::BHE::BHECommonCoaxial::calcThermalResistances().

◆ calculatePipeWallThermalResistance()

PipeWallThermalResistanceCoaxial ProcessLib::HeatTransportBHE::BHE::calculatePipeWallThermalResistance ( Pipe const & inner_pipe,
Pipe const & outer_pipe )
inline

Definition at line 57 of file ThermalResistancesCoaxial.h.

59{
60 return {inner_pipe.wallThermalResistance(),
61 outer_pipe.wallThermalResistance()};
62}

References ProcessLib::HeatTransportBHE::BHE::Pipe::wallThermalResistance().

Referenced by ProcessLib::HeatTransportBHE::BHE::BHECommonCoaxial::calcThermalResistances().

◆ calculateThermoMechanicalFlowPropertiesAnnulus()

ThermoMechanicalFlowProperties ProcessLib::HeatTransportBHE::BHE::calculateThermoMechanicalFlowPropertiesAnnulus ( Pipe const & inner_pipe,
Pipe const & outer_pipe,
double const length,
RefrigerantProperties const & fluid,
double const flow_rate )
inline

Definition at line 40 of file ThermoMechanicalFlowProperties.h.

43{
44 double const Pr =
45 prandtlNumber(fluid.dynamic_viscosity, fluid.specific_heat_capacity,
46 fluid.thermal_conductivity);
47
48 double const inner_pipe_outside_diameter = inner_pipe.outsideDiameter();
49
50 // Velocity between the outer pipe and inner pipe.
51 double const velocity =
52 flow_rate / (outer_pipe.area() - inner_pipe.outsideArea());
53
54 double const Re = reynoldsNumber(
55 velocity, outer_pipe.diameter - inner_pipe_outside_diameter,
56 fluid.dynamic_viscosity, fluid.density);
57
58 double const diameter_ratio =
59 inner_pipe_outside_diameter / outer_pipe.diameter;
60 double const pipe_aspect_ratio =
61 (outer_pipe.diameter - inner_pipe_outside_diameter) / length;
62 double const nusselt_number =
63 nusseltNumberAnnulus(Re, Pr, diameter_ratio, pipe_aspect_ratio);
64 return {velocity, nusselt_number};
65}
double reynoldsNumber(double const velocity_norm, double const pipe_diameter, double const viscosity, double const density)
Definition Physics.h:19
double prandtlNumber(double const &viscosity, double const &heat_capacity, double const &heat_conductivity)
Definition Physics.h:12
double nusseltNumberAnnulus(double const reynolds_number, double const prandtl_number, double const diameter_ratio, double const pipe_aspect_ratio)
Definition Physics.h:56

References ProcessLib::HeatTransportBHE::BHE::Pipe::area(), ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::density, ProcessLib::HeatTransportBHE::BHE::Pipe::diameter, ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::dynamic_viscosity, nusseltNumberAnnulus(), ProcessLib::HeatTransportBHE::BHE::Pipe::outsideArea(), ProcessLib::HeatTransportBHE::BHE::Pipe::outsideDiameter(), prandtlNumber(), reynoldsNumber(), ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::specific_heat_capacity, and ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::thermal_conductivity.

Referenced by ProcessLib::HeatTransportBHE::BHE::BHECommonCoaxial::updateHeatTransferCoefficients().

◆ calculateThermoMechanicalFlowPropertiesPipe()

ThermoMechanicalFlowProperties ProcessLib::HeatTransportBHE::BHE::calculateThermoMechanicalFlowPropertiesPipe ( Pipe const & pipe,
double const length,
RefrigerantProperties const & fluid,
double const flow_rate )
inline

Definition at line 23 of file ThermoMechanicalFlowProperties.h.

27{
28 double const Pr =
29 prandtlNumber(fluid.dynamic_viscosity, fluid.specific_heat_capacity,
30 fluid.thermal_conductivity);
31
32 double const velocity = flow_rate / pipe.area();
33 double const Re = reynoldsNumber(velocity, pipe.diameter,
34 fluid.dynamic_viscosity, fluid.density);
35 double const nusselt_number = nusseltNumber(Re, Pr, pipe.diameter, length);
36 return {velocity, nusselt_number};
37}
double nusseltNumber(double const reynolds_number, double const prandtl_number, double const pipe_diameter, double const pipe_length)
Definition Physics.h:27

References ProcessLib::HeatTransportBHE::BHE::Pipe::area(), ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::density, ProcessLib::HeatTransportBHE::BHE::Pipe::diameter, ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::dynamic_viscosity, nusseltNumber(), prandtlNumber(), reynoldsNumber(), ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::specific_heat_capacity, and ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::thermal_conductivity.

Referenced by ProcessLib::HeatTransportBHE::BHE::BHE_1P::updateHeatTransferCoefficients(), ProcessLib::HeatTransportBHE::BHE::BHE_1U::updateHeatTransferCoefficients(), ProcessLib::HeatTransportBHE::BHE::BHE_2U::updateHeatTransferCoefficients(), and ProcessLib::HeatTransportBHE::BHE::BHECommonCoaxial::updateHeatTransferCoefficients().

◆ check_power_and_flow_rate()

FlowAndTemperature ProcessLib::HeatTransportBHE::BHE::check_power_and_flow_rate ( double flow_rate,
double power,
double heat_capacity,
double density,
double T_out,
double flow_rate_min,
double power_min )
inline

Definition at line 24 of file FlowAndTemperatureControl.h.

31{
32 flow_rate = (std::abs(flow_rate) < flow_rate_min) ? 0.0 : flow_rate;
33
34 if (std::abs(power) < power_min)
35 {
36 return {flow_rate, T_out};
37 }
38
39 if (flow_rate == 0)
40 {
42 "BHE power {:0.2f} W with flow rate of 0 m3/s requested, "
43 "calculation not possible!",
44 power);
45 }
46 return {flow_rate, power / flow_rate / heat_capacity / density + T_out};
47};
#define OGS_FATAL(...)
Definition Error.h:19

References OGS_FATAL.

Referenced by ProcessLib::HeatTransportBHE::BHE::ActiveCoolingCurveFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::BuildingPowerCurveActiveCoolingCurveFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::BuildingPowerCurveConstantFlow::operator()(), ProcessLib::HeatTransportBHE::BHE::BuildingPowerCurveFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::BuildingPowerCurveHotWaterCurveActiveCoolingCurveFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::BuildingPowerCurveHotWaterCurveFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::BuildingPowerCurveHotWaterCurvePassiveCoolingCurveFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::BuildingPowerCurvePassiveCoolingCurveFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::FixedPowerConstantFlow::operator()(), ProcessLib::HeatTransportBHE::BHE::FixedPowerFlowCurve::operator()(), ProcessLib::HeatTransportBHE::BHE::PowerCurveConstantFlow::operator()(), and ProcessLib::HeatTransportBHE::BHE::PowerCurveFlowCurve::operator()().

◆ coaxialPipesAnnulusDiameter()

double ProcessLib::HeatTransportBHE::BHE::coaxialPipesAnnulusDiameter ( Pipe const & inner_pipe,
Pipe const & outer_pipe )
inline

Definition at line 48 of file Pipe.h.

50{
51 return outer_pipe.diameter - inner_pipe.diameter -
52 2 * inner_pipe.wall_thickness;
53}

References ProcessLib::HeatTransportBHE::BHE::Pipe::diameter, and ProcessLib::HeatTransportBHE::BHE::Pipe::wall_thickness.

Referenced by calculateAdvectiveThermalResistance().

◆ compute_R_gg()

double ProcessLib::HeatTransportBHE::BHE::compute_R_gg ( double const chi,
double const R_gs,
double const R_ar,
double const R_g )

Definition at line 101 of file BHE_1U.cpp.

103{
104 double const R_gg = 2.0 * R_gs * (R_ar - 2.0 * chi * R_g) /
105 (2.0 * R_gs - R_ar + 2.0 * chi * R_g);
106 if (!std::isfinite(R_gg))
107 {
108 OGS_FATAL(
109 "Error!!! Grout Thermal Resistance is an infinite number! The "
110 "simulation will be stopped!");
111 }
112
113 return R_gg;
114}

References OGS_FATAL.

Referenced by thermalResistancesGroutSoil().

◆ compute_R_gg_2U()

double ProcessLib::HeatTransportBHE::BHE::compute_R_gg_2U ( double const chi,
double const R_gs,
double const R_ar,
double const R_g )

Definition at line 119 of file BHE_2U.cpp.

121{
122 double const R_gg = 2.0 * R_gs * (R_ar - 2.0 * chi * R_g) /
123 (2.0 * R_gs - R_ar + 2.0 * chi * R_g);
124 if (!std::isfinite(R_gg))
125 {
126 OGS_FATAL(
127 "Error!!! Grout Thermal Resistance is an infinite number! The "
128 "simulation will be stopped!");
129 }
130
131 return R_gg;
132}

References OGS_FATAL.

Referenced by thermalResistancesGroutSoil2U().

◆ compute_R_gs()

double ProcessLib::HeatTransportBHE::BHE::compute_R_gs ( double const chi,
double const R_g )

Definition at line 96 of file BHE_1U.cpp.

97{
98 return (1 - chi) * R_g;
99}

Referenced by thermalResistancesGroutSoil().

◆ compute_R_gs_2U()

double ProcessLib::HeatTransportBHE::BHE::compute_R_gs_2U ( double const chi,
double const R_g )

Definition at line 114 of file BHE_2U.cpp.

115{
116 return (1 - chi) * R_g;
117}

Referenced by thermalResistancesGroutSoil2U().

◆ createAdvancedBuildingPowerCurvesFlowCurve()

FlowAndTemperatureControl ProcessLib::HeatTransportBHE::BHE::createAdvancedBuildingPowerCurvesFlowCurve ( std::optional< BaseLib::ConfigTree > const & heating_config,
std::optional< BaseLib::ConfigTree > const & hot_water_config,
std::optional< BaseLib::ConfigTree > const & cooling_config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves,
MathLib::PiecewiseLinearInterpolation const & flow_rate_curve,
RefrigerantProperties const & refrigerant,
double const flow_rate_min,
double const power_min )

Definition at line 285 of file CreateFlowAndTemperatureControl.cpp.

296{
297 std::optional<BuildingPowerCurves> building_heating_curves;
298 std::optional<BuildingPowerCurves> building_hot_water_curves;
299 std::optional<CoolingVariant> building_cooling_curves;
300
301 bool heating = false;
302 bool hot_water = false;
303 bool cooling = false;
304
305 if (heating_config)
306 {
307 building_heating_curves.emplace(
308 createBuildingPowerCurvesStruct(heating_config, curves));
309 heating = true;
310 }
311 if (hot_water_config)
312 {
313 building_hot_water_curves.emplace(
314 createBuildingPowerCurvesStruct(hot_water_config, curves));
315 hot_water = true;
316 }
317 if (cooling_config)
318 {
319 building_cooling_curves.emplace(
320 createCoolingVariant(cooling_config, curves));
321 cooling = true;
322 }
323 auto key = std::make_tuple(heating, hot_water, cooling);
324
325 auto it = advancedBuildingPowerCurvesFlowCurve.find(key);
327 OGS_FATAL(
328 "AdvancedBuildingPowerCurvesFlowCurve combination is not "
329 "implemented.");
330 auto factory = it->second;
331
332 return factory(building_heating_curves,
333 building_hot_water_curves,
334 building_cooling_curves,
335 flow_rate_curve,
336 refrigerant,
337 flow_rate_min,
338 power_min);
339}
const std::map< std::tuple< bool, bool, bool >, FactoryAdvancedBuildingCurvesFlowCurve > advancedBuildingPowerCurvesFlowCurve
BuildingPowerCurves createBuildingPowerCurvesStruct(std::optional< BaseLib::ConfigTree > const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
CoolingVariant createCoolingVariant(std::optional< BaseLib::ConfigTree > const &cooling_config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)

References advancedBuildingPowerCurvesFlowCurve, createBuildingPowerCurvesStruct(), createCoolingVariant(), and OGS_FATAL.

Referenced by createFlowAndTemperatureControl().

◆ createBHE1PType()

template<typename T_BHE>
T_BHE ProcessLib::HeatTransportBHE::BHE::createBHE1PType ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

Definition at line 71 of file CreateBHE1PType.cpp.

76{
77 auto SinglePipeType = parseBHE1PTypeConfig(config, curves);
78 return {std::get<0>(SinglePipeType), std::get<1>(SinglePipeType),
79 std::get<2>(SinglePipeType), std::get<3>(SinglePipeType),
80 std::get<4>(SinglePipeType), std::get<5>(SinglePipeType)};
81}
static std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfiguration1PType, bool > parseBHE1PTypeConfig(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)

References parseBHE1PTypeConfig().

◆ createBHE1PType< BHE_1P >()

template BHE_1P ProcessLib::HeatTransportBHE::BHE::createBHE1PType< BHE_1P > ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

◆ createBHECoaxial()

template<typename T_BHE>
T_BHE ProcessLib::HeatTransportBHE::BHE::createBHECoaxial ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

Definition at line 71 of file CreateBHECoaxial.cpp.

76{
77 auto coaxial = parseBHECoaxialConfig(config, curves);
78 return {std::get<0>(coaxial), std::get<1>(coaxial), std::get<2>(coaxial),
79 std::get<3>(coaxial), std::get<4>(coaxial), std::get<5>(coaxial)};
80}
static std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfigurationCoaxial, bool > parseBHECoaxialConfig(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)

References parseBHECoaxialConfig().

◆ createBHECoaxial< BHE_CXA >()

template BHE_CXA ProcessLib::HeatTransportBHE::BHE::createBHECoaxial< BHE_CXA > ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

◆ createBHECoaxial< BHE_CXC >()

template BHE_CXC ProcessLib::HeatTransportBHE::BHE::createBHECoaxial< BHE_CXC > ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

◆ createBHEUType()

template<typename T_BHE>
T_BHE ProcessLib::HeatTransportBHE::BHE::createBHEUType ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

Definition at line 75 of file CreateBHEUType.cpp.

80{
81 auto UType = parseBHEUTypeConfig(config, curves);
82 return {std::get<0>(UType), std::get<1>(UType), std::get<2>(UType),
83 std::get<3>(UType), std::get<4>(UType), std::get<5>(UType)};
84}
static std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfigurationUType, bool > parseBHEUTypeConfig(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)

References parseBHEUTypeConfig().

◆ createBHEUType< BHE_1U >()

template BHE_1U ProcessLib::HeatTransportBHE::BHE::createBHEUType< BHE_1U > ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

◆ createBHEUType< BHE_2U >()

template BHE_2U ProcessLib::HeatTransportBHE::BHE::createBHEUType< BHE_2U > ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

◆ createBoreholeGeometry()

BoreholeGeometry ProcessLib::HeatTransportBHE::BHE::createBoreholeGeometry ( BaseLib::ConfigTree const & config)
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__borehole__length
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__borehole__diameter

Definition at line 14 of file BoreholeGeometry.cpp.

15{
16 const auto borehole_length =
18 config.getConfigParameter<double>("length");
19 const auto borehole_diameter =
21 config.getConfigParameter<double>("diameter");
22 return {borehole_length, borehole_diameter};
23}

References BaseLib::ConfigTree::getConfigParameter().

Referenced by parseBHE1PTypeConfig(), parseBHECoaxialConfig(), and parseBHEUTypeConfig().

◆ createBuildingPowerCurvesStruct()

BuildingPowerCurves ProcessLib::HeatTransportBHE::BHE::createBuildingPowerCurvesStruct ( std::optional< BaseLib::ConfigTree > const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__hot_water__power_curve
Input File Parameter
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__heating__power_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__cooling__cop_curve
Input File Parameter
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__hot_water__cop_curve
Input File Parameter
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__heating__cop_curve

Definition at line 18 of file CreateFlowAndTemperatureControl.cpp.

23{
24 auto const& power_curve = *BaseLib::getOrError(
25 curves,
28 config->getConfigParameter<std::string>("power_curve"),
29 "Required power curve not found.");
30
31 auto const& cop_curve = *BaseLib::getOrError(
32 curves,
36 config->getConfigParameter<std::string>("cop_curve"),
37 "Required cop curve not found.");
38
39 return BuildingPowerCurves{power_curve, cop_curve};
40};
OGS_NO_DANGLING Map::mapped_type & getOrError(Map &map, Key const &key, std::string const &error_message)
Definition Algorithm.h:111

References BaseLib::getOrError().

Referenced by createAdvancedBuildingPowerCurvesFlowCurve(), and createCoolingVariant().

◆ createCooling()

FlowAndTemperatureControl ProcessLib::HeatTransportBHE::BHE::createCooling ( std::optional< BuildingPowerCurves > const & ,
std::optional< BuildingPowerCurves > const & ,
std::optional< CoolingVariant > const & cooling,
MathLib::PiecewiseLinearInterpolation const & flow_rate_curve,
RefrigerantProperties const & refrigerant,
double const flow_rate_min,
double const power_min )

Definition at line 181 of file CreateFlowAndTemperatureControl.cpp.

189{
190 if (std::holds_alternative<BuildingPowerCurves>(*cooling))
191 {
193 std::in_place_type<ActiveCoolingCurveFlowCurve>,
194 std::get<BuildingPowerCurves>(*cooling),
195 flow_rate_curve,
196 refrigerant.specific_heat_capacity,
197 refrigerant.density,
198 flow_rate_min,
199 power_min};
200 }
201 else
202 {
204 std::in_place_type<PowerCurveFlowCurve>,
205 std::get<
206 std::reference_wrapper<MathLib::PiecewiseLinearInterpolation>>(
207 *cooling)
208 .get(),
209 flow_rate_curve,
210 refrigerant.specific_heat_capacity,
211 refrigerant.density,
212 flow_rate_min,
213 power_min};
214 }
215};

References ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::density, and ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::specific_heat_capacity.

◆ createCoolingVariant()

CoolingVariant ProcessLib::HeatTransportBHE::BHE::createCoolingVariant ( std::optional< BaseLib::ConfigTree > const & cooling_config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )

◆ createFlowAndTemperatureControl()

FlowAndTemperatureControl ProcessLib::HeatTransportBHE::BHE::createFlowAndTemperatureControl ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves,
RefrigerantProperties const & refrigerant )
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__type
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__flow_rate_min
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__power_min
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__TemperatureCurveConstantFlow__flow_rate
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__TemperatureCurveConstantFlow__temperature_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__TemperatureCurveFlowCurve__flow_rate_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__TemperatureCurveFlowCurve__temperature_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__FixedPowerConstantFlow__power
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__FixedPowerConstantFlow__flow_rate
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__FixedPowerFlowCurve__flow_rate_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__FixedPowerFlowCurve__power
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__PowerCurveConstantFlow__power_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__PowerCurveConstantFlow__flow_rate
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__PowerCurveFlowCurve__power_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__PowerCurveFlowCurve__flow_rate_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__BuildingPowerCurveConstantFlow__power_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__BuildingPowerCurveConstantFlow__cop_heating_curve
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__BuildingPowerCurveConstantFlow__flow_rate
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__heating
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__hot_water
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__cooling
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control__AdvancedBuildingPowerCurvesFlowCurve__flow_rate_curve

Definition at line 340 of file CreateFlowAndTemperatureControl.cpp.

346{
348 auto const type = config.getConfigParameter<std::string>("type");
349
350 auto const flow_rate_min =
352 config.getConfigParameter<double>("flow_rate_min", 1e-6);
354 auto const power_min = config.getConfigParameter<double>("power_min", 1e-3);
355 if (type == "TemperatureCurveConstantFlow")
356 {
358 auto const flow_rate = config.getConfigParameter<double>("flow_rate");
359
360 auto const& temperature_curve = *BaseLib::getOrError(
361 curves,
363 config.getConfigParameter<std::string>("temperature_curve"),
364 "Required temperature curve not found.");
365
366 return TemperatureCurveConstantFlow{flow_rate, temperature_curve,
367 flow_rate_min};
368 }
369 if (type == "TemperatureCurveFlowCurve")
370 {
371 auto const& flow_rate_curve = *BaseLib::getOrError(
372 curves,
374 config.getConfigParameter<std::string>("flow_rate_curve"),
375 "Required flow curve not found.");
376
377 auto const& temperature_curve = *BaseLib::getOrError(
378 curves,
380 config.getConfigParameter<std::string>("temperature_curve"),
381 "Required temperature curve not found.");
382
383 return TemperatureCurveFlowCurve{flow_rate_curve, temperature_curve,
384 flow_rate_min};
385 }
386 if (type == "FixedPowerConstantFlow")
387 {
389 auto const power = config.getConfigParameter<double>("power");
390
392 auto const flow_rate = config.getConfigParameter<double>("flow_rate");
393
394 return FixedPowerConstantFlow{flow_rate,
395 power,
396 refrigerant.specific_heat_capacity,
397 refrigerant.density,
398 flow_rate_min,
399 power_min};
400 }
401
402 if (type == "FixedPowerFlowCurve")
403 {
404 auto const& flow_rate_curve = *BaseLib::getOrError(
405 curves,
407 config.getConfigParameter<std::string>("flow_rate_curve"),
408 "Required flow rate curve not found.");
409
411 auto const power = config.getConfigParameter<double>("power");
412
413 return FixedPowerFlowCurve{flow_rate_curve,
414 power,
415 refrigerant.specific_heat_capacity,
416 refrigerant.density,
417 flow_rate_min,
418 power_min};
419 }
420
421 if (type == "PowerCurveConstantFlow")
422 {
423 auto const& power_curve = *BaseLib::getOrError(
424 curves,
426 config.getConfigParameter<std::string>("power_curve"),
427 "Required power curve not found.");
428
430 auto const flow_rate = config.getConfigParameter<double>("flow_rate");
431
432 return PowerCurveConstantFlow{power_curve,
433 flow_rate,
434 refrigerant.specific_heat_capacity,
435 refrigerant.density,
436 flow_rate_min,
437 power_min};
438 }
439
440 if (type == "PowerCurveFlowCurve")
441 {
442 auto const& power_curve = *BaseLib::getOrError(
443 curves,
445 config.getConfigParameter<std::string>("power_curve"),
446 "Required power curve not found.");
447
448 auto const& flow_rate_curve = *BaseLib::getOrError(
449 curves,
451 config.getConfigParameter<std::string>("flow_rate_curve"),
452 "Required flow rate curve not found.");
453
454 return PowerCurveFlowCurve{power_curve,
455 flow_rate_curve,
456 refrigerant.specific_heat_capacity,
457 refrigerant.density,
458 flow_rate_min,
459 power_min};
460 }
461
462 if (type == "BuildingPowerCurveConstantFlow")
463 {
464 auto const& power_curve = *BaseLib::getOrError(
465 curves,
467 config.getConfigParameter<std::string>("power_curve"),
468 "Required power curve not found.");
469
470 auto const& cop_heating_curve = *BaseLib::getOrError(
471 curves,
473 config.getConfigParameter<std::string>("cop_heating_curve"),
474 "Required power curve not found.");
475
476 BuildingPowerCurves const building_power_curves{power_curve,
477 cop_heating_curve};
478
480 auto const flow_rate = config.getConfigParameter<double>("flow_rate");
481
483 building_power_curves,
484 flow_rate,
485 refrigerant.specific_heat_capacity,
486 refrigerant.density,
487 flow_rate_min,
488 power_min};
489 }
490
491 if (type == "AdvancedBuildingPowerCurvesFlowCurve")
492 {
493 // add a heating, hot water and cooling config as optional to handle
494 // different combinations later
495 auto const& heating_config =
497 config.getConfigSubtreeOptional(
498 "heating"); // Optional, take care if it is not present
499
500 // add a heating config to differ between different types
501 auto const& hot_water_config =
503 config.getConfigSubtreeOptional(
504 "hot_water"); // Optional, take care if it is not present
505
506 // add a heating config to differ between different types
507 auto const& cooling_config =
509 config.getConfigSubtreeOptional(
510 "cooling"); // Optional, take care if it is not present
511
512 auto const& flow_rate_curve = *BaseLib::getOrError(
513 curves,
515 config.getConfigParameter<std::string>("flow_rate_curve"),
516 "Required flow rate curve not found.");
517
518 return createAdvancedBuildingPowerCurvesFlowCurve(heating_config,
519 hot_water_config,
520 cooling_config,
521 curves,
522 flow_rate_curve,
523 refrigerant,
524 flow_rate_min,
525 power_min);
526 }
527 OGS_FATAL("FlowAndTemperatureControl type '{:s}' is not implemented.",
528 type);
529}
FlowAndTemperatureControl createAdvancedBuildingPowerCurvesFlowCurve(std::optional< BaseLib::ConfigTree > const &heating_config, std::optional< BaseLib::ConfigTree > const &hot_water_config, std::optional< BaseLib::ConfigTree > const &cooling_config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)

References createAdvancedBuildingPowerCurvesFlowCurve(), ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::density, BaseLib::ConfigTree::getConfigParameter(), BaseLib::ConfigTree::getConfigSubtreeOptional(), BaseLib::getOrError(), OGS_FATAL, and ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::specific_heat_capacity.

Referenced by parseBHE1PTypeConfig(), parseBHECoaxialConfig(), and parseBHEUTypeConfig().

◆ createGroutParameters()

GroutParameters ProcessLib::HeatTransportBHE::BHE::createGroutParameters ( BaseLib::ConfigTree const & config)
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__grout__density
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__grout__porosity
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__grout__specific_heat_capacity
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__grout__thermal_conductivity

Definition at line 14 of file GroutParameters.cpp.

15{
16 const auto grout_density =
18 config.getConfigParameter<double>("density");
19 const auto grout_porosity =
21 config.getConfigParameter<double>("porosity");
22 const auto grout_heat_capacity =
24 config.getConfigParameter<double>("specific_heat_capacity");
25 const auto grout_thermal_conductivity =
27 config.getConfigParameter<double>("thermal_conductivity");
28 return {grout_density, grout_porosity, grout_heat_capacity,
29 grout_thermal_conductivity};
30}

References BaseLib::ConfigTree::getConfigParameter().

Referenced by parseBHE1PTypeConfig(), parseBHECoaxialConfig(), and parseBHEUTypeConfig().

◆ createHeatingCooling()

FlowAndTemperatureControl ProcessLib::HeatTransportBHE::BHE::createHeatingCooling ( std::optional< BuildingPowerCurves > const & heating,
std::optional< BuildingPowerCurves > const & ,
std::optional< CoolingVariant > const & cooling,
MathLib::PiecewiseLinearInterpolation const & flow_rate_curve,
RefrigerantProperties const & refrigerant,
double const flow_rate_min,
double const power_min )

Definition at line 105 of file CreateFlowAndTemperatureControl.cpp.

113{
114 if (std::holds_alternative<BuildingPowerCurves>(*cooling))
115 {
117 std::in_place_type<BuildingPowerCurveActiveCoolingCurveFlowCurve>,
118 *heating,
119 std::get<BuildingPowerCurves>(*cooling),
120 flow_rate_curve,
121 refrigerant.specific_heat_capacity,
122 refrigerant.density,
123 flow_rate_min,
124 power_min};
125 }
126 else
127 {
129 std::in_place_type<BuildingPowerCurvePassiveCoolingCurveFlowCurve>,
130 *heating,
131 std::get<
132 std::reference_wrapper<MathLib::PiecewiseLinearInterpolation>>(
133 *cooling)
134 .get(),
135 flow_rate_curve,
136 refrigerant.specific_heat_capacity,
137 refrigerant.density,
138 flow_rate_min,
139 power_min};
140 }
141};

References ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::density, and ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::specific_heat_capacity.

◆ createHeatingHotWaterCooling()

FlowAndTemperatureControl ProcessLib::HeatTransportBHE::BHE::createHeatingHotWaterCooling ( std::optional< BuildingPowerCurves > const & heating,
std::optional< BuildingPowerCurves > const & hot_water,
std::optional< CoolingVariant > const & cooling,
MathLib::PiecewiseLinearInterpolation const & flow_rate_curve,
RefrigerantProperties const & refrigerant,
double const flow_rate_min,
double const power_min )

Definition at line 63 of file CreateFlowAndTemperatureControl.cpp.

71{
72 if (std::holds_alternative<BuildingPowerCurves>(*cooling))
73 {
75 std::in_place_type<
77 *heating,
78 *hot_water,
79 std::get<BuildingPowerCurves>(*cooling),
80 flow_rate_curve,
81 refrigerant.specific_heat_capacity,
82 refrigerant.density,
83 flow_rate_min,
84 power_min};
85 }
86 else
87 {
89 std::in_place_type<
90 BuildingPowerCurveHotWaterCurvePassiveCoolingCurveFlowCurve>,
91 *heating,
92 *hot_water,
93 std::get<
94 std::reference_wrapper<MathLib::PiecewiseLinearInterpolation>>(
95 *cooling)
96 .get(),
97 flow_rate_curve,
98 refrigerant.specific_heat_capacity,
99 refrigerant.density,
100 flow_rate_min,
101 power_min};
102 }
103};

References ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::density, and ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::specific_heat_capacity.

◆ createHotWaterCooling()

FlowAndTemperatureControl ProcessLib::HeatTransportBHE::BHE::createHotWaterCooling ( std::optional< BuildingPowerCurves > const & ,
std::optional< BuildingPowerCurves > const & hot_water,
std::optional< CoolingVariant > const & cooling,
MathLib::PiecewiseLinearInterpolation const & flow_rate_curve,
RefrigerantProperties const & refrigerant,
double const flow_rate_min,
double const power_min )

Definition at line 143 of file CreateFlowAndTemperatureControl.cpp.

151{
152 if (std::holds_alternative<BuildingPowerCurves>(*cooling))
153 {
155 std::in_place_type<BuildingPowerCurveActiveCoolingCurveFlowCurve>,
156 *hot_water,
157 std::get<BuildingPowerCurves>(*cooling),
158 flow_rate_curve,
159 refrigerant.specific_heat_capacity,
160 refrigerant.density,
161 flow_rate_min,
162 power_min};
163 }
164 else
165 {
167 std::in_place_type<BuildingPowerCurvePassiveCoolingCurveFlowCurve>,
168 *hot_water,
169 std::get<
170 std::reference_wrapper<MathLib::PiecewiseLinearInterpolation>>(
171 *cooling)
172 .get(),
173 flow_rate_curve,
174 refrigerant.specific_heat_capacity,
175 refrigerant.density,
176 flow_rate_min,
177 power_min};
178 }
179};

References ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::density, and ProcessLib::HeatTransportBHE::BHE::RefrigerantProperties::specific_heat_capacity.

◆ createPipe()

Pipe ProcessLib::HeatTransportBHE::BHE::createPipe ( BaseLib::ConfigTree const & config)
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__inlet__diameter
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__inlet__wall_thickness
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__inlet__wall_thermal_conductivity

Definition at line 14 of file Pipe.cpp.

15{
17 const auto diameter = config.getConfigParameter<double>("diameter");
18 const auto wall_thickness =
20 config.getConfigParameter<double>("wall_thickness");
21 const auto wall_thermal_conductivity =
23 config.getConfigParameter<double>("wall_thermal_conductivity");
24 return {diameter, wall_thickness, wall_thermal_conductivity};
25}

References BaseLib::ConfigTree::getConfigParameter().

Referenced by parseBHE1PTypeConfig(), parseBHECoaxialConfig(), and parseBHEUTypeConfig().

◆ createRefrigerantProperties()

RefrigerantProperties ProcessLib::HeatTransportBHE::BHE::createRefrigerantProperties ( BaseLib::ConfigTree const & config)
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__refrigerant__density
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__refrigerant__viscosity
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__refrigerant__specific_heat_capacity
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__refrigerant__thermal_conductivity
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__refrigerant__reference_temperature

Definition at line 14 of file RefrigerantProperties.cpp.

16{
17 auto const refrigerant_density =
19 config.getConfigParameter<double>("density");
20 auto const refrigerant_viscosity =
22 config.getConfigParameter<double>("viscosity");
23 auto const refrigerant_heat_capacity =
25 config.getConfigParameter<double>("specific_heat_capacity");
26 auto const refrigerant_thermal_conductivity =
28 config.getConfigParameter<double>("thermal_conductivity");
29 auto const refrigerant_reference_temperature =
31 config.getConfigParameter<double>("reference_temperature");
32 return {refrigerant_viscosity, refrigerant_density,
33 refrigerant_thermal_conductivity, refrigerant_heat_capacity,
34 refrigerant_reference_temperature};
35}

References BaseLib::ConfigTree::getConfigParameter().

Referenced by parseBHE1PTypeConfig(), parseBHECoaxialConfig(), and parseBHEUTypeConfig().

◆ nusseltNumber()

double ProcessLib::HeatTransportBHE::BHE::nusseltNumber ( double const reynolds_number,
double const prandtl_number,
double const pipe_diameter,
double const pipe_length )
inline

Definition at line 27 of file Physics.h.

31{
32 if (reynolds_number < 2300.0)
33 {
34 return 4.364;
35 }
36 if (reynolds_number < 10000.0)
37 {
38 double const gamma = (reynolds_number - 2300) / (10000 - 2300);
39
40 return (1.0 - gamma) * 4.364 +
41 gamma *
42 ((0.0308 / 8.0 * 1.0e4 * prandtl_number) /
43 (1.0 + 12.7 * std::sqrt(0.0308 / 8.0) *
44 (std::pow(prandtl_number, 2.0 / 3.0) - 1.0)) *
45 (1.0 + std::pow(pipe_diameter / pipe_length, 2.0 / 3.0)));
46 }
47
48 double const xi = std::pow(1.8 * std::log10(reynolds_number) - 1.5, -2.0);
49 return (xi / 8.0 * reynolds_number * prandtl_number) /
50 (1.0 + 12.7 * std::sqrt(xi / 8.0) *
51 (std::pow(prandtl_number, 2.0 / 3.0) - 1.0)) *
52 (1.0 + std::pow(pipe_diameter / pipe_length, 2.0 / 3.0));
53}

Referenced by calculateThermoMechanicalFlowPropertiesPipe().

◆ nusseltNumberAnnulus()

double ProcessLib::HeatTransportBHE::BHE::nusseltNumberAnnulus ( double const reynolds_number,
double const prandtl_number,
double const diameter_ratio,
double const pipe_aspect_ratio )
inline

Definition at line 56 of file Physics.h.

60{
61 if (reynolds_number < 2300.0)
62 {
63 return 3.66 + (4.0 - 0.102 / (diameter_ratio + 0.02)) *
64 std::pow(diameter_ratio, 0.04);
65 }
66 if (reynolds_number < 10000.0)
67 {
68 double const gamma = (reynolds_number - 2300) / (10000 - 2300);
69
70 return (1.0 - gamma) *
71 (3.66 + (4.0 - 0.102 / (diameter_ratio + 0.02))) *
72 std::pow(diameter_ratio, 0.04) +
73 gamma *
74 ((0.0308 / 8.0 * 1.0e4 * prandtl_number) /
75 (1.0 + 12.7 * std::sqrt(0.0308 / 8.0) *
76 (std::pow(prandtl_number, 2.0 / 3.0) - 1.0)) *
77 (1.0 + std::pow(pipe_aspect_ratio, 2.0 / 3.0)) *
78 ((0.86 * std::pow(diameter_ratio, 0.84) + 1.0 -
79 0.14 * std::pow(diameter_ratio, 0.6)) /
80 (1.0 + diameter_ratio)));
81 }
82 double const xi = std::pow(1.8 * std::log10(reynolds_number) - 1.5, -2.0);
83 return (xi / 8.0 * reynolds_number * prandtl_number) /
84 (1.0 + 12.7 * std::sqrt(xi / 8.0) *
85 (std::pow(prandtl_number, 2.0 / 3.0) - 1.0)) *
86 (1.0 + std::pow(pipe_aspect_ratio, 2.0 / 3.0)) *
87 ((0.86 * std::pow(diameter_ratio, 0.84) + 1.0 -
88 0.14 * std::pow(diameter_ratio, 0.6)) /
89 (1.0 + diameter_ratio));
90}

Referenced by calculateThermoMechanicalFlowPropertiesAnnulus().

◆ parseBHE1PTypeConfig()

std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfiguration1PType, bool > ProcessLib::HeatTransportBHE::BHE::parseBHE1PTypeConfig ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )
static
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__use_bhe_pipe_network
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__borehole
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__inlet
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__longitudinal_dispersion_length
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__grout
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__refrigerant
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control

Definition at line 21 of file CreateBHE1PType.cpp.

26{
27 // if the BHE is using python boundary condition
28 auto const bhe_if_use_python_bc_conf =
30 config.getConfigParameter<bool>("use_bhe_pipe_network", false);
31
32 if (bhe_if_use_python_bc_conf)
33 {
34 DBUG("BHE 1P using python boundary conditions.");
35 }
36
37 auto const borehole_geometry =
39 createBoreholeGeometry(config.getConfigSubtree("borehole"));
40
42 auto const& pipes_config = config.getConfigSubtree("pipes");
44 Pipe const inlet_pipe = createPipe(pipes_config.getConfigSubtree("inlet"));
45
46 const auto pipe_longitudinal_dispersion_length =
48 pipes_config.getConfigParameter<double>(
49 "longitudinal_dispersion_length");
50 PipeConfiguration1PType const pipes{inlet_pipe,
51 pipe_longitudinal_dispersion_length};
52
54 auto const grout = createGroutParameters(config.getConfigSubtree("grout"));
55
56 auto const refrigerant =
58 createRefrigerantProperties(config.getConfigSubtree("refrigerant"));
59
60 auto const flowAndTemperatureControl = createFlowAndTemperatureControl(
62 config.getConfigSubtree("flow_and_temperature_control"),
63 curves,
64 refrigerant);
65
66 return {borehole_geometry, refrigerant, grout,
67 flowAndTemperatureControl, pipes, bhe_if_use_python_bc_conf};
68}
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22
RefrigerantProperties createRefrigerantProperties(BaseLib::ConfigTree const &config)
Pipe createPipe(BaseLib::ConfigTree const &config)
Definition Pipe.cpp:14
FlowAndTemperatureControl createFlowAndTemperatureControl(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, RefrigerantProperties const &refrigerant)
GroutParameters createGroutParameters(BaseLib::ConfigTree const &config)
BoreholeGeometry createBoreholeGeometry(BaseLib::ConfigTree const &config)

References createBoreholeGeometry(), createFlowAndTemperatureControl(), createGroutParameters(), createPipe(), createRefrigerantProperties(), DBUG(), BaseLib::ConfigTree::getConfigParameter(), and BaseLib::ConfigTree::getConfigSubtree().

Referenced by createBHE1PType().

◆ parseBHECoaxialConfig()

std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfigurationCoaxial, bool > ProcessLib::HeatTransportBHE::BHE::parseBHECoaxialConfig ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )
static
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__use_bhe_pipe_network
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__borehole
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__outer
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__inner
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__longitudinal_dispersion_length
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__grout
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__refrigerant
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control

Definition at line 22 of file CreateBHECoaxial.cpp.

27{
28 // if the BHE is using python boundary condition
29 auto const bhe_if_use_python_bc_conf =
31 config.getConfigParameter<bool>("use_bhe_pipe_network", false);
32 DBUG("If using python boundary condition : {:s}",
33 (bhe_if_use_python_bc_conf) ? "true" : "false");
34
35 auto const borehole_geometry =
37 createBoreholeGeometry(config.getConfigSubtree("borehole"));
38
40 auto const& pipes_config = config.getConfigSubtree("pipes");
42 Pipe const outer_pipe = createPipe(pipes_config.getConfigSubtree("outer"));
43 Pipe const inner_pipe =
45 createPipe(pipes_config.getConfigSubtree("inner"));
46 const auto pipe_longitudinal_dispersion_length =
48 pipes_config.getConfigParameter<double>(
49 "longitudinal_dispersion_length");
50 PipeConfigurationCoaxial const pipes{inner_pipe, outer_pipe,
51 pipe_longitudinal_dispersion_length};
52
54 auto const grout = createGroutParameters(config.getConfigSubtree("grout"));
55
56 auto const refrigerant =
58 createRefrigerantProperties(config.getConfigSubtree("refrigerant"));
59
60 auto const flowAndTemperatureControl = createFlowAndTemperatureControl(
62 config.getConfigSubtree("flow_and_temperature_control"),
63 curves,
64 refrigerant);
65
66 return {borehole_geometry, refrigerant, grout,
67 flowAndTemperatureControl, pipes, bhe_if_use_python_bc_conf};
68}

References createBoreholeGeometry(), createFlowAndTemperatureControl(), createGroutParameters(), createPipe(), createRefrigerantProperties(), DBUG(), BaseLib::ConfigTree::getConfigParameter(), and BaseLib::ConfigTree::getConfigSubtree().

Referenced by createBHECoaxial().

◆ parseBHEUTypeConfig()

std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfigurationUType, bool > ProcessLib::HeatTransportBHE::BHE::parseBHEUTypeConfig ( BaseLib::ConfigTree const & config,
std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const & curves )
static
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__use_bhe_pipe_network
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__borehole
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__inlet
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__outlet
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__distance_between_pipes
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__pipes__longitudinal_dispersion_length
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__grout
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__refrigerant
Input File Parameter
prj__processes__process__HEAT_TRANSPORT_BHE__borehole_heat_exchangers__borehole_heat_exchanger__flow_and_temperature_control

Definition at line 23 of file CreateBHEUType.cpp.

28{
29 // if the BHE is using python boundary condition
30 auto const bhe_if_use_python_bc_conf =
32 config.getConfigParameter<bool>("use_bhe_pipe_network", false);
33 DBUG("If using python boundary condition : {:s}",
34 (bhe_if_use_python_bc_conf) ? "true" : "false");
35
36 auto const borehole_geometry =
38 createBoreholeGeometry(config.getConfigSubtree("borehole"));
39
41 auto const& pipes_config = config.getConfigSubtree("pipes");
43 Pipe const inlet_pipe = createPipe(pipes_config.getConfigSubtree("inlet"));
44 Pipe const outlet_pipe =
46 createPipe(pipes_config.getConfigSubtree("outlet"));
47 const auto pipe_distance =
49 pipes_config.getConfigParameter<double>("distance_between_pipes");
50 const auto pipe_longitudinal_dispersion_length =
52 pipes_config.getConfigParameter<double>(
53 "longitudinal_dispersion_length");
54 PipeConfigurationUType const pipes{inlet_pipe, outlet_pipe, pipe_distance,
55 pipe_longitudinal_dispersion_length};
56
58 auto const grout = createGroutParameters(config.getConfigSubtree("grout"));
59
60 auto const refrigerant =
62 createRefrigerantProperties(config.getConfigSubtree("refrigerant"));
63
64 auto const flowAndTemperatureControl = createFlowAndTemperatureControl(
66 config.getConfigSubtree("flow_and_temperature_control"),
67 curves,
68 refrigerant);
69
70 return {borehole_geometry, refrigerant, grout,
71 flowAndTemperatureControl, pipes, bhe_if_use_python_bc_conf};
72}

References createBoreholeGeometry(), createFlowAndTemperatureControl(), createGroutParameters(), createPipe(), createRefrigerantProperties(), DBUG(), BaseLib::ConfigTree::getConfigParameter(), and BaseLib::ConfigTree::getConfigSubtree().

Referenced by createBHEUType().

◆ prandtlNumber()

double ProcessLib::HeatTransportBHE::BHE::prandtlNumber ( double const & viscosity,
double const & heat_capacity,
double const & heat_conductivity )
inline

Definition at line 12 of file Physics.h.

15{
16 return viscosity * heat_capacity / heat_conductivity;
17}

Referenced by calculateThermoMechanicalFlowPropertiesAnnulus(), and calculateThermoMechanicalFlowPropertiesPipe().

◆ reynoldsNumber()

double ProcessLib::HeatTransportBHE::BHE::reynoldsNumber ( double const velocity_norm,
double const pipe_diameter,
double const viscosity,
double const density )
inline

Definition at line 19 of file Physics.h.

23{
24 return velocity_norm * pipe_diameter / (viscosity / density);
25}

Referenced by calculateThermoMechanicalFlowPropertiesAnnulus(), and calculateThermoMechanicalFlowPropertiesPipe().

◆ thermalResistancesGroutSoil()

std::array< double, 3 > ProcessLib::HeatTransportBHE::BHE::thermalResistancesGroutSoil ( double const chi,
double const R_ar,
double const R_g )

Thermal resistances due to grout-soil exchange.

Check if constraints regarding negative thermal resistances are violated apply correction procedure. Section (1.5.5) in FEFLOW White Papers Vol V.

Definition at line 121 of file BHE_1U.cpp.

124{
125 double R_gs = compute_R_gs(chi, R_g);
126 double R_gg =
127 compute_R_gg(chi, R_gs, R_ar, R_g); // Resulting thermal resistances.
128 double new_chi = chi;
129
130 auto constraint = [&]()
131 { return 1.0 / ((1.0 / R_gg) + (1.0 / (2.0 * R_gs))); };
132
133 std::array<double, 3> const multiplier{chi * 2.0 / 3.0, chi * 1.0 / 3.0,
134 0.0};
135 for (double m_chi : multiplier)
136 {
137 if (constraint() >= 0)
138 {
139 break;
140 }
141 DBUG(
142 "Warning! Correction procedure was applied due to negative thermal "
143 "resistance! Chi = {:f}.\n",
144 m_chi);
145
146 R_gs = compute_R_gs(m_chi, R_g);
147 R_gg = compute_R_gg(m_chi, R_gs, R_ar, R_g);
148 new_chi = m_chi;
149 }
150
151 return {new_chi, R_gg, R_gs};
152}
double compute_R_gg(double const chi, double const R_gs, double const R_ar, double const R_g)
Definition BHE_1U.cpp:101
double compute_R_gs(double const chi, double const R_g)
Definition BHE_1U.cpp:96

References compute_R_gg(), compute_R_gs(), and DBUG().

Referenced by ProcessLib::HeatTransportBHE::BHE::BHE_1U::calcThermalResistances().

◆ thermalResistancesGroutSoil2U()

std::array< double, 4 > ProcessLib::HeatTransportBHE::BHE::thermalResistancesGroutSoil2U ( double const chi,
double const R_ar_1,
double const R_ar_2,
double const R_g )

Thermal resistances due to grout-soil exchange.

Check if constraints regarding negative thermal resistances are violated apply correction procedure. Section (1.5.5) in FEFLOW White Papers Vol V.

Definition at line 139 of file BHE_2U.cpp.

143{
144 double R_gs = compute_R_gs_2U(chi, R_g);
145 double R_gg_1 = compute_R_gg_2U(chi, R_gs, R_ar_1, R_g);
146 double R_gg_2 = compute_R_gg_2U(chi, R_gs, R_ar_2,
147 R_g); // Resulting thermal resistances.
148 double chi_new = chi;
149
150 auto constraint = [&]()
151 { return 1.0 / ((1.0 / R_gg_1) + (1.0 / (2.0 * R_gs))); };
152
153 std::array<double, 3> const multiplier{chi * 2.0 / 3.0, chi * 1.0 / 3.0,
154 0.0};
155 for (double m_chi : multiplier)
156 {
157 if (constraint() >= 0)
158 {
159 break;
160 }
161 DBUG(
162 "Warning! Correction procedure was applied due to negative thermal "
163 "resistance! Chi = {:f}.\n",
164 m_chi);
165 R_gs = compute_R_gs_2U(m_chi, R_g);
166 R_gg_1 = compute_R_gg_2U(m_chi, R_gs, R_ar_1, R_g);
167 R_gg_2 = compute_R_gg_2U(m_chi, R_gs, R_ar_2, R_g);
168 chi_new = m_chi;
169 }
170
171 return {chi_new, R_gg_1, R_gg_2, R_gs};
172}
double compute_R_gg_2U(double const chi, double const R_gs, double const R_ar, double const R_g)
Definition BHE_2U.cpp:119
double compute_R_gs_2U(double const chi, double const R_g)
Definition BHE_2U.cpp:114

References compute_R_gg_2U(), compute_R_gs_2U(), and DBUG().

Referenced by ProcessLib::HeatTransportBHE::BHE::BHE_2U::calcThermalResistances().

Variable Documentation

◆ advancedBuildingPowerCurvesFlowCurve

const std::map<std::tuple<bool, bool, bool>, FactoryAdvancedBuildingCurvesFlowCurve> ProcessLib::HeatTransportBHE::BHE::advancedBuildingPowerCurvesFlowCurve

Definition at line 230 of file CreateFlowAndTemperatureControl.cpp.

230 {
231 {{true, true, true}, &createHeatingHotWaterCooling},
232 {{true, true, false},
233 [](std::optional<BuildingPowerCurves> const& heating,
234 std::optional<BuildingPowerCurves> const& hot_water,
235 std::optional<CoolingVariant> const& /*cooling*/,
236 auto const& flow_rate_curve, auto const& refrigerant,
237 auto const flow_rate_min, auto const power_min)
238 {
240 std::in_place_type<BuildingPowerCurveHotWaterCurveFlowCurve>,
241 *heating,
242 *hot_water,
243 flow_rate_curve,
244 refrigerant.specific_heat_capacity,
245 refrigerant.density,
246 flow_rate_min,
247 power_min};
248 }},
249 {{true, false, true}, &createHeatingCooling},
250 {{false, true, true}, &createHotWaterCooling},
251 {{true, false, false},
252 [](std::optional<BuildingPowerCurves> const& heating,
253 std::optional<BuildingPowerCurves> const& /*hot_water*/,
254 std::optional<CoolingVariant> const& /*cooling*/,
255 auto const& flow_rate_curve, auto const& refrigerant,
256 auto const flow_rate_min, auto const power_min)
257 {
259 std::in_place_type<BuildingPowerCurveFlowCurve>,
260 *heating,
261 flow_rate_curve,
262 refrigerant.specific_heat_capacity,
263 refrigerant.density,
264 flow_rate_min,
265 power_min};
266 }},
267 {{false, true, false},
268 [](std::optional<BuildingPowerCurves> const& /*heating*/,
269 std::optional<BuildingPowerCurves> const& hot_water,
270 std::optional<CoolingVariant> const& /*cooling*/,
271 auto const& flow_rate_curve, auto const& refrigerant,
272 auto const flow_rate_min, auto const power_min)
273 {
275 std::in_place_type<BuildingPowerCurveFlowCurve>,
276 *hot_water,
277 flow_rate_curve,
278 refrigerant.specific_heat_capacity,
279 refrigerant.density,
280 flow_rate_min,
281 power_min};
282 }},
283 {{false, false, true}, &createCooling}};
FlowAndTemperatureControl createHotWaterCooling(std::optional< BuildingPowerCurves > const &, std::optional< BuildingPowerCurves > const &hot_water, std::optional< CoolingVariant > const &cooling, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)
FlowAndTemperatureControl createCooling(std::optional< BuildingPowerCurves > const &, std::optional< BuildingPowerCurves > const &, std::optional< CoolingVariant > const &cooling, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)
FlowAndTemperatureControl createHeatingHotWaterCooling(std::optional< BuildingPowerCurves > const &heating, std::optional< BuildingPowerCurves > const &hot_water, std::optional< CoolingVariant > const &cooling, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)
FlowAndTemperatureControl createHeatingCooling(std::optional< BuildingPowerCurves > const &heating, std::optional< BuildingPowerCurves > const &, std::optional< CoolingVariant > const &cooling, MathLib::PiecewiseLinearInterpolation const &flow_rate_curve, RefrigerantProperties const &refrigerant, double const flow_rate_min, double const power_min)

Referenced by createAdvancedBuildingPowerCurvesFlowCurve().