OGS
CreateBHEUType.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 "CreateBHEUType.h"
5
6#include "BHE_1P.h"
7#include "BHE_1U.h"
8#include "BHE_2U.h"
11namespace ProcessLib
12{
13namespace HeatTransportBHE
14{
15namespace BHE
16{
17static std::tuple<BoreholeGeometry,
22 bool>
24 BaseLib::ConfigTree const& config,
25 std::map<std::string,
26 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
27 curves)
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}
73
74template <typename T_BHE>
76 BaseLib::ConfigTree const& config,
77 std::map<std::string,
78 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
79 curves)
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}
85
87 BaseLib::ConfigTree const& config,
88 std::map<std::string,
89 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
90 curves);
91
93 BaseLib::ConfigTree const& config,
94 std::map<std::string,
95 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
96 curves);
97} // namespace BHE
98} // namespace HeatTransportBHE
99} // namespace ProcessLib
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22
T getConfigParameter(std::string const &param) const
ConfigTree getConfigSubtree(std::string const &root) const
RefrigerantProperties createRefrigerantProperties(BaseLib::ConfigTree const &config)
template BHE_1U createBHEUType< BHE_1U >(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
std::variant< TemperatureCurveConstantFlow, TemperatureCurveFlowCurve, FixedPowerConstantFlow, FixedPowerFlowCurve, PowerCurveConstantFlow, PowerCurveFlowCurve, BuildingPowerCurveConstantFlow, BuildingPowerCurveHotWaterCurveActiveCoolingCurveFlowCurve, BuildingPowerCurveHotWaterCurvePassiveCoolingCurveFlowCurve, BuildingPowerCurveHotWaterCurveFlowCurve, BuildingPowerCurveActiveCoolingCurveFlowCurve, BuildingPowerCurvePassiveCoolingCurveFlowCurve, BuildingPowerCurveFlowCurve, ActiveCoolingCurveFlowCurve > FlowAndTemperatureControl
Pipe createPipe(BaseLib::ConfigTree const &config)
Definition Pipe.cpp:14
template BHE_2U createBHEUType< BHE_2U >(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
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)
T_BHE createBHEUType(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)