OGS
BHE_CXA.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
8#include "BHECommonCoaxial.h"
9#include "BaseLib/Error.h"
10
11namespace ProcessLib
12{
13namespace HeatTransportBHE
14{
15namespace BHE
16{
30class BHE_CXA final : public BHECommonCoaxial
31{
32public:
33 BHE_CXA(BoreholeGeometry const& borehole,
37 PipeConfigurationCoaxial const& pipes,
38 bool const use_python_bcs)
39 : BHECommonCoaxial{borehole, refrigerant,
41 pipes, use_python_bcs}
42 {
43 // Initialize thermal resistances.
44 auto values = visit(
45 [&](auto const& control) {
46 return control(refrigerant.reference_temperature,
47 0. /* initial time */);
48 },
50 updateHeatTransferCoefficients(values.flow_rate);
51 }
52
53 template <int NPoints, typename SingleUnknownMatrixType,
54 typename RMatrixType, typename RPiSMatrixType,
55 typename RSMatrixType>
56 static void assembleRMatrices(
57 int const idx_bhe_unknowns,
58 Eigen::MatrixBase<SingleUnknownMatrixType> const& matBHE_loc_R,
59 Eigen::MatrixBase<RMatrixType>& R_matrix,
60 Eigen::MatrixBase<RPiSMatrixType>& R_pi_s_matrix,
61 Eigen::MatrixBase<RSMatrixType>& R_s_matrix)
62 {
63 switch (idx_bhe_unknowns)
64 {
65 case 0: // PHI_fig
66 R_matrix.block(0, 2 * NPoints, NPoints, NPoints) +=
67 -1.0 * matBHE_loc_R;
68 R_matrix.block(2 * NPoints, 0, NPoints, NPoints) +=
69 -1.0 * matBHE_loc_R;
70
71 R_matrix.block(0, 0, NPoints, NPoints) +=
72 1.0 * matBHE_loc_R; // K_i
73 R_matrix.block(2 * NPoints,
74 2 * NPoints,
75 NPoints,
76 NPoints) += 1.0 * matBHE_loc_R; // K_ig
77 return;
78 case 1: // PHI_ff
79 R_matrix.block(0, NPoints, NPoints, NPoints) +=
80 -1.0 * matBHE_loc_R;
81 R_matrix.block(NPoints, 0, NPoints, NPoints) +=
82 -1.0 * matBHE_loc_R;
83
84 R_matrix.block(0, 0, NPoints,
85 NPoints) += 1.0 * matBHE_loc_R; // K_i1
86 R_matrix.block(NPoints, NPoints, NPoints, NPoints) +=
87 1.0 * matBHE_loc_R; // K_o
88 return;
89 case 2: // PHI_gs
90 R_s_matrix += matBHE_loc_R;
91
92 R_pi_s_matrix.block(2 * NPoints, 0, NPoints, NPoints) +=
93 -1.0 * matBHE_loc_R;
94
95 R_matrix.block(2 * NPoints, 2 * NPoints, NPoints,
96 NPoints) += matBHE_loc_R; // K_ig
97 return;
98 default:
100 "Error!!! In the function BHE_CXA::assembleRMatrices, "
101 "the index of bhe unknowns is out of range! ");
102 }
103 }
104
105 std::array<double, number_of_unknowns> crossSectionAreas() const
106 {
109 }
110
111private:
112 std::array<double, 2> velocities() const override
113 {
115 }
116
117 std::array<double, number_of_unknowns> getThermalResistances(
118 double const& R_gs, double const& R_ff,
119 double const& R_fg) const override
120 {
121 return {R_fg, R_ff, R_gs};
122 }
123};
124} // namespace BHE
125} // namespace HeatTransportBHE
126} // namespace ProcessLib
#define OGS_FATAL(...)
Definition Error.h:19
BHECommonCoaxial(BoreholeGeometry const &borehole, RefrigerantProperties const &refrigerant, GroutParameters const &grout, FlowAndTemperatureControl const &flowAndTemperatureControl, PipeConfigurationCoaxial const &pipes, bool const use_python_bcs)
double _flow_velocity_inner
Flow velocity inside the pipes and annulus. Depends on the flow_rate.
BHE_CXA(BoreholeGeometry const &borehole, RefrigerantProperties const &refrigerant, GroutParameters const &grout, FlowAndTemperatureControl const &flowAndTemperatureControl, PipeConfigurationCoaxial const &pipes, bool const use_python_bcs)
Definition BHE_CXA.h:33
std::array< double, 2 > velocities() const override
Definition BHE_CXA.h:112
std::array< double, number_of_unknowns > crossSectionAreas() const
Definition BHE_CXA.h:105
static void assembleRMatrices(int const idx_bhe_unknowns, Eigen::MatrixBase< SingleUnknownMatrixType > const &matBHE_loc_R, Eigen::MatrixBase< RMatrixType > &R_matrix, Eigen::MatrixBase< RPiSMatrixType > &R_pi_s_matrix, Eigen::MatrixBase< RSMatrixType > &R_s_matrix)
Definition BHE_CXA.h:56
std::array< double, number_of_unknowns > getThermalResistances(double const &R_gs, double const &R_ff, double const &R_fg) const override
Definition BHE_CXA.h:117
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