OGS
Pipe.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 "Pipe.h"
5
8#include "BaseLib/Error.h"
10
11namespace ProcessLib
12{
13namespace HeatTransportBHE
14{
15namespace BHE
16{
18 BaseLib::ConfigTree const& config,
19 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>& parameters)
20{
21 const auto diameter =
23 config.getConfigParameter<double>("diameter");
24 const auto wall_thickness =
26 config.getConfigParameter<double>("wall_thickness");
27
28 auto const wall_thermal_conductivity_str =
30 config.getConfigParameter<std::string>("wall_thermal_conductivity");
31 auto const& wall_thermal_conductivity_param =
33 wall_thermal_conductivity_str, parameters,
34 "pipe_wall_thermal_conductivity", "pipe_wall_thermal_conductivity");
35
36 if (diameter <= 0)
37 {
38 OGS_FATAL("Pipe diameter must be positive, got {:g}.", diameter);
39 }
40 if (wall_thickness < 0)
41 {
42 OGS_FATAL("Pipe wall_thickness must be non-negative, got {:g}.",
43 wall_thickness);
44 }
45
46 // Borehole pipe wall conductivity is physically time-invariant (fixed at
47 // drilling / installation). Reject time-varying / mesh-node / non-scalar
48 // parameter types; warn for FunctionParameter (may be spatial-only).
49 validateScalarTimeInvariantBHEParameter(wall_thermal_conductivity_param,
50 "wall_thermal_conductivity");
51
52 return {diameter, wall_thickness, wall_thermal_conductivity_param};
53}
54} // namespace BHE
55} // namespace HeatTransportBHE
56} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:10
T getConfigParameter(std::string const &param) const
Parameter< double > & getNamedOrCreateInlineParameter(std::string const &parameter_or_value, std::vector< std::unique_ptr< ParameterBase > > &parameters, std::string const &property_name, std::string const &inline_suffix)
void validateScalarTimeInvariantBHEParameter(ParameterLib::Parameter< double > const &param, std::string_view const role)
Pipe createPipe(BaseLib::ConfigTree const &config, std::vector< std::unique_ptr< ParameterLib::ParameterBase > > &parameters)
Definition Pipe.cpp:17