OGS
CreateBHE1PType.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 "BHE_1P.h"
7
8namespace ProcessLib
9{
10namespace HeatTransportBHE
11{
12namespace BHE
13{
17 BaseLib::ConfigTree const& config,
18 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters,
19 std::map<std::string,
20 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
21 curves,
22 std::vector<MeshLib::Node*> const& bhe_nodes)
23{
24 // if the BHE is using python boundary condition
25 auto const bhe_if_use_python_bc_conf =
27 config.getConfigParameter<bool>("use_bhe_pipe_network", false);
28
29 if (bhe_if_use_python_bc_conf)
30 {
31 DBUG("BHE 1P using python boundary conditions.");
32 }
33
34 auto const borehole_geometry =
36 createBoreholeGeometry(config.getConfigSubtree("borehole"), parameters,
37 bhe_nodes);
38
40 auto const& pipes_config = config.getConfigSubtree("pipes");
42 Pipe const inlet_pipe = createPipe(pipes_config.getConfigSubtree("inlet"));
43
44 const auto pipe_longitudinal_dispersion_length =
46 pipes_config.getConfigParameter<double>(
47 "longitudinal_dispersion_length");
48 PipeConfiguration1PType const pipes{inlet_pipe,
49 pipe_longitudinal_dispersion_length};
50
52 auto const grout = createGroutParameters(config.getConfigSubtree("grout"));
53
54 auto const refrigerant =
56 createRefrigerantProperties(config.getConfigSubtree("refrigerant"));
57
58 auto const flowAndTemperatureControl = createFlowAndTemperatureControl(
60 config.getConfigSubtree("flow_and_temperature_control"),
61 parameters,
62 curves,
63 refrigerant);
64
65 return {borehole_geometry, refrigerant, grout,
66 flowAndTemperatureControl, pipes, bhe_if_use_python_bc_conf};
67}
68
69template <typename T_BHE>
71 BaseLib::ConfigTree const& config,
72 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters,
73 std::map<std::string,
74 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
75 curves,
76 std::vector<MeshLib::Node*> const& bhe_nodes)
77{
78 auto SinglePipeType =
79 parseBHE1PTypeConfig(config, parameters, curves, bhe_nodes);
80 return {std::get<0>(SinglePipeType), std::get<1>(SinglePipeType),
81 std::get<2>(SinglePipeType), std::get<3>(SinglePipeType),
82 std::get<4>(SinglePipeType), std::get<5>(SinglePipeType)};
83}
84
86 BaseLib::ConfigTree const& config,
87 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters,
88 std::map<std::string,
89 std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
90 curves,
91 std::vector<MeshLib::Node*> const& bhe_nodes);
92} // namespace BHE
93} // namespace HeatTransportBHE
94} // 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)
BoreholeGeometry createBoreholeGeometry(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters, std::vector< MeshLib::Node * > const &bhe_nodes)
Pipe createPipe(BaseLib::ConfigTree const &config)
Definition Pipe.cpp:15
FlowAndTemperatureControl createFlowAndTemperatureControl(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, RefrigerantProperties const &refrigerant)
T_BHE createBHE1PType(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, std::vector< MeshLib::Node * > const &bhe_nodes)
static std::tuple< BoreholeGeometry, RefrigerantProperties, GroutParameters, FlowAndTemperatureControl, PipeConfiguration1PType, bool > parseBHE1PTypeConfig(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, std::vector< MeshLib::Node * > const &bhe_nodes)
template BHE_1P createBHE1PType< BHE_1P >(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters, std::map< std::string, std::unique_ptr< MathLib::PiecewiseLinearInterpolation > > const &curves, std::vector< MeshLib::Node * > const &bhe_nodes)
std::variant< InflowTemperature, Power, BuildingPower, BuildingPowerHotWaterActiveCooling, BuildingPowerHotWaterPassiveCooling, BuildingPowerHotWater, BuildingPowerActiveCooling, BuildingPowerPassiveCooling, ActiveCooling > FlowAndTemperatureControl
GroutParameters createGroutParameters(BaseLib::ConfigTree const &config)