OGS
BHECommonCoaxial.h
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#pragma once
5
6#include <Eigen/Core>
7#include <optional>
8
9#include "BHECommon.h"
10#include "BaseLib/Error.h"
13
14namespace ProcessLib
15{
16namespace HeatTransportBHE
17{
18namespace BHE
19{
21{
22public:
23 BHECommonCoaxial(BoreholeGeometry const& borehole,
27 PipeConfigurationCoaxial const& pipes,
28 bool const use_python_bcs);
29
30 static constexpr int number_of_unknowns = 3;
31 static constexpr int number_of_grout_zones = 1;
32
33 double updateFlowRateAndTemperature(double T_out, double current_time);
34
35 std::vector<double> calcThermalResistances(
36 double const Nu_inner_pipe,
37 double const Nu_annulus_pipe,
38 int const section_index = 0) const;
39
40 std::array<double, number_of_unknowns> pipeHeatCapacities() const;
41
42 static constexpr std::pair<int, int> inflow_outflow_bc_component_ids[] = {
43 {0, 1}};
44
45 static std::array<std::pair<std::size_t /*node_id*/, int /*component*/>, 2>
47 std::size_t const top_node_id,
48 std::size_t const /*bottom_node_id*/,
49 int const in_component_id);
50
51 static std::optional<
52 std::array<std::pair<std::size_t /*node_id*/, int /*component*/>, 2>>
53 getBHEBottomDirichletBCNodesAndComponents(std::size_t const bottom_node_id,
54 int const in_component_id,
55 int const out_component_id);
56
57 std::array<double, number_of_unknowns> pipeHeatConductions(
58 int const section_index = 0) const;
59
60 std::array<Eigen::Vector3d, number_of_unknowns> pipeAdvectionVectors(
61 Eigen::Vector3d const& /*elem_direction*/,
62 int const section_index = 0) const;
63
64 void updateHeatTransferCoefficients(double const flow_rate);
65
66protected:
68
70
75 std::array<double, 2> velocities() const
76 {
77 return {_flow_velocities[0], _flow_velocities[1]};
78 }
79
80 virtual std::vector<double> getThermalResistances(
81 double const& R_gs, double const& R_ff, double const& R_fg) const = 0;
82
83private:
86 virtual void assignVelocities(double inner_vel, double annulus_vel) = 0;
87};
88} // namespace BHE
89} // namespace HeatTransportBHE
90} // end of namespace ProcessLib
std::vector< double > calcThermalResistances(double const Nu_inner_pipe, double const Nu_annulus_pipe, int const section_index=0) const
double updateFlowRateAndTemperature(double T_out, double current_time)
BHECommonCoaxial(BoreholeGeometry const &borehole, RefrigerantProperties const &refrigerant, GroutParameters const &grout, FlowAndTemperatureControl const &flowAndTemperatureControl, PipeConfigurationCoaxial const &pipes, bool const use_python_bcs)
std::array< double, number_of_unknowns > pipeHeatCapacities() const
std::array< Eigen::Vector3d, number_of_unknowns > pipeAdvectionVectors(Eigen::Vector3d const &, int const section_index=0) const
virtual void assignVelocities(double inner_vel, double annulus_vel)=0
std::array< double, number_of_unknowns > pipeHeatConductions(int const section_index=0) const
static std::optional< std::array< std::pair< std::size_t, int >, 2 > > getBHEBottomDirichletBCNodesAndComponents(std::size_t const bottom_node_id, int const in_component_id, int const out_component_id)
static constexpr std::pair< int, int > inflow_outflow_bc_component_ids[]
static std::array< std::pair< std::size_t, int >, 2 > getBHEInflowDirichletBCNodesAndComponents(std::size_t const top_node_id, std::size_t const, int const in_component_id)
virtual std::vector< double > getThermalResistances(double const &R_gs, double const &R_ff, double const &R_fg) const =0
RefrigerantProperties const refrigerant
Definition BHECommon.h:72
BHECommon(BoreholeGeometry const &borehole_geometry_, RefrigerantProperties const &refrigerant_, GroutParameters const &grout_, FlowAndTemperatureControl const &flowAndTemperatureControl_, bool const use_python_bcs_)
Definition BHECommon.h:58
FlowAndTemperatureControl const flowAndTemperatureControl
Definition BHECommon.h:74
std::variant< InflowTemperature, Power, BuildingPower, BuildingPowerHotWaterActiveCooling, BuildingPowerHotWaterPassiveCooling, BuildingPowerHotWater, BuildingPowerActiveCooling, BuildingPowerPassiveCooling, ActiveCooling > FlowAndTemperatureControl