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