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"
12
13namespace ProcessLib
14{
15namespace HeatTransportBHE
16{
17namespace BHE
18{
20{
21public:
22 BHECommonCoaxial(BoreholeGeometry const& borehole,
26 PipeConfigurationCoaxial const& pipes,
27 bool const use_python_bcs);
28
29 static constexpr int number_of_unknowns = 3;
30 static constexpr int number_of_grout_zones = 1;
31
32 double thermalResistance(int const unknown_index) const
33 {
34 return _thermal_resistances[unknown_index];
35 }
36
37 double updateFlowRateAndTemperature(double T_out, double current_time);
38
39 std::array<double, number_of_unknowns> calcThermalResistances(
40 double const Nu_inner_pipe, double const Nu_annulus_pipe) const;
41
42 std::array<double, number_of_unknowns> pipeHeatCapacities() const;
43
44 static constexpr std::pair<int, int> inflow_outflow_bc_component_ids[] = {
45 {0, 1}};
46
47 static std::array<std::pair<std::size_t /*node_id*/, int /*component*/>, 2>
49 std::size_t const top_node_id,
50 std::size_t const /*bottom_node_id*/,
51 int const in_component_id);
52
53 static std::optional<
54 std::array<std::pair<std::size_t /*node_id*/, int /*component*/>, 2>>
55 getBHEBottomDirichletBCNodesAndComponents(std::size_t const bottom_node_id,
56 int const in_component_id,
57 int const out_component_id);
58
59 std::array<double, number_of_unknowns> pipeHeatConductions() const;
60
61 std::array<Eigen::Vector3d, number_of_unknowns> pipeAdvectionVectors(
62 Eigen::Vector3d const& /*elem_direction*/) const;
63
66
67 void updateHeatTransferCoefficients(double const flow_rate);
68
69protected:
71
72 virtual std::array<double, 2> velocities() const = 0;
73
74 virtual std::array<double, number_of_unknowns> getThermalResistances(
75 double const& R_gs, double const& R_ff, double const& R_fg) const = 0;
76
82 std::array<double, number_of_unknowns> _thermal_resistances;
83
85 double _flow_velocity_inner = std::numeric_limits<double>::quiet_NaN(),
86 _flow_velocity_annulus = std::numeric_limits<double>::quiet_NaN();
87};
88} // namespace BHE
89} // namespace HeatTransportBHE
90} // end of namespace ProcessLib
virtual std::array< double, number_of_unknowns > getThermalResistances(double const &R_gs, double const &R_ff, double const &R_fg) const =0
virtual std::array< double, 2 > velocities() const =0
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 > pipeHeatConductions() const
std::array< double, number_of_unknowns > pipeHeatCapacities() const
std::array< double, number_of_unknowns > calcThermalResistances(double const Nu_inner_pipe, double const Nu_annulus_pipe) 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)
double _flow_velocity_inner
Flow velocity inside the pipes and annulus. Depends on the flow_rate.
static constexpr std::pair< int, int > inflow_outflow_bc_component_ids[]
std::array< Eigen::Vector3d, number_of_unknowns > pipeAdvectionVectors(Eigen::Vector3d const &) const
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)
double thermalResistance(int const unknown_index) const
std::array< double, number_of_unknowns > _thermal_resistances
std::variant< TemperatureCurveConstantFlow, TemperatureCurveFlowCurve, FixedPowerConstantFlow, FixedPowerFlowCurve, PowerCurveConstantFlow, PowerCurveFlowCurve, BuildingPowerCurveConstantFlow, BuildingPowerCurveHotWaterCurveActiveCoolingCurveFlowCurve, BuildingPowerCurveHotWaterCurvePassiveCoolingCurveFlowCurve, BuildingPowerCurveHotWaterCurveFlowCurve, BuildingPowerCurveActiveCoolingCurveFlowCurve, BuildingPowerCurvePassiveCoolingCurveFlowCurve, BuildingPowerCurveFlowCurve, ActiveCoolingCurveFlowCurve > FlowAndTemperatureControl
RefrigerantProperties const refrigerant
Definition BHECommon.h:36
FlowAndTemperatureControl const flowAndTemperatureControl
Definition BHECommon.h:38