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 <cmath>
8#include <optional>
9
10#include "BHECommon.h"
11#include "BaseLib/Error.h"
14
15namespace ParameterLib
16{
17class SpatialPosition;
18}
19
20namespace ProcessLib
21{
22namespace HeatTransportBHE
23{
24namespace BHE
25{
27{
28public:
29 BHECommonCoaxial(BoreholeGeometry const& borehole,
33 PipeConfigurationCoaxial const& pipes,
34 bool const use_python_bcs);
35
36 static constexpr int number_of_unknowns = 3;
37 static constexpr int number_of_grout_zones = 1;
38 static constexpr int number_of_flow_legs = 2;
39
45 std::array<double, number_of_flow_legs> flowLegs() const
46 {
47 return {+std::abs(velocity_inner), -std::abs(velocity_annulus)};
48 }
49
50 double updateFlowRateAndTemperature(double T_out, double current_time);
51
52 std::vector<double> calcThermalResistances(
53 double const Nu_inner_pipe,
54 double const Nu_annulus_pipe,
55 ParameterLib::SpatialPosition const& pos) const;
56
61 std::vector<double> thermalResistances(
62 ParameterLib::SpatialPosition const& pos) const;
63
64 std::array<double, number_of_unknowns> pipeHeatCapacities() const;
65
66 static constexpr std::pair<int, int> inflow_outflow_bc_component_ids[] = {
67 {0, 1}};
68
69 static std::array<std::pair<std::size_t /*node_id*/, int /*component*/>, 2>
71 std::size_t const top_node_id,
72 std::size_t const /*bottom_node_id*/,
73 int const in_component_id);
74
75 static std::optional<
76 std::array<std::pair<std::size_t /*node_id*/, int /*component*/>, 2>>
77 getBHEBottomDirichletBCNodesAndComponents(std::size_t const bottom_node_id,
78 int const in_component_id,
79 int const out_component_id);
80
81 std::array<double, number_of_unknowns> pipeHeatConductions() const;
82
83 std::array<Eigen::Vector3d, number_of_unknowns> pipeAdvectionVectors(
84 Eigen::Vector3d const& elem_direction) const;
85
86 void updateHeatTransferCoefficients(double const flow_rate);
87
88protected:
90
92
100 double velocity_inner = 0.0;
101 double velocity_annulus = 0.0;
102 double cached_nu_inner = 0.0;
103 double cached_nu_annulus = 0.0;
104
105 virtual std::vector<double> getThermalResistances(
106 double const& R_gs, double const& R_ff, double const& R_fg) const = 0;
107
108private:
111 virtual void assignVelocities(double inner_vel, double annulus_vel) = 0;
112};
113} // namespace BHE
114} // namespace HeatTransportBHE
115} // end of namespace ProcessLib
std::array< double, number_of_flow_legs > flowLegs() 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::vector< double > calcThermalResistances(double const Nu_inner_pipe, double const Nu_annulus_pipe, ParameterLib::SpatialPosition const &pos) const
std::array< double, number_of_unknowns > pipeHeatConductions() const
std::array< double, number_of_unknowns > pipeHeatCapacities() const
virtual void assignVelocities(double inner_vel, double annulus_vel)=0
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
std::array< Eigen::Vector3d, number_of_unknowns > pipeAdvectionVectors(Eigen::Vector3d const &elem_direction) const
std::vector< double > thermalResistances(ParameterLib::SpatialPosition const &pos) const
RefrigerantProperties const refrigerant
Definition BHECommon.h:51
BHECommon(BoreholeGeometry const &borehole_geometry_, RefrigerantProperties const &refrigerant_, GroutParameters const &grout_, FlowAndTemperatureControl const &flowAndTemperatureControl_, bool const use_python_bcs_)
Definition BHECommon.h:37
FlowAndTemperatureControl const flowAndTemperatureControl
Definition BHECommon.h:53
std::variant< InflowTemperature, Power, BuildingPower, BuildingPowerHotWaterActiveCooling, BuildingPowerHotWaterPassiveCooling, BuildingPowerHotWater, BuildingPowerActiveCooling, BuildingPowerPassiveCooling, ActiveCooling > FlowAndTemperatureControl