OGS
CreateBHECoaxial.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 "CreateBHECoaxial.h"
5
6#include "BHE_CXA.h"
7#include "BHE_CXC.h"
10namespace ProcessLib
11{
12namespace HeatTransportBHE
13{
14namespace BHE
15{
16static std::tuple<BoreholeGeometry,
21 bool>
23 BaseLib::ConfigTree const& config,
24 std::map<std::string,
25 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
26 curves)
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}
69
70template <typename T_BHE>
72 BaseLib::ConfigTree const& config,
73 std::map<std::string,
74 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
75 curves)
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}
81
83 BaseLib::ConfigTree const& config,
84 std::map<std::string,
85 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
86 curves);
87
89 BaseLib::ConfigTree const& config,
90 std::map<std::string,
91 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
92 curves);
93} // namespace BHE
94} // namespace HeatTransportBHE
95} // 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)
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
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 BHE_CXC createBHECoaxial< BHE_CXC >(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)
template BHE_CXA createBHECoaxial< BHE_CXA >(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)
BoreholeGeometry createBoreholeGeometry(BaseLib::ConfigTree const &config)
T_BHE createBHECoaxial(BaseLib::ConfigTree const &config, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves)