58 int const section_index = 0)
const;
61 Eigen::Vector3d
const& elem_direction,
62 int const section_index = 0)
const;
64 template <
int NPoints,
65 typename SingleUnknownMatrixType,
67 typename RPiSMatrixType,
68 typename RSMatrixType>
70 int const idx_bhe_unknowns,
71 Eigen::MatrixBase<SingleUnknownMatrixType>
const& matBHE_loc_R,
72 Eigen::MatrixBase<RMatrixType>& R_matrix,
73 Eigen::MatrixBase<RPiSMatrixType>& R_pi_s_matrix,
74 Eigen::MatrixBase<RSMatrixType>& R_s_matrix)
79 switch (idx_bhe_unknowns)
82 R_matrix.block(0, NPoints, NPoints, NPoints) +=
84 R_matrix.block(NPoints, 0, NPoints, NPoints) +=
87 R_matrix.block(0, 0, NPoints, NPoints) +=
89 R_matrix.block(NPoints, NPoints, NPoints, NPoints) +=
93 R_s_matrix += matBHE_loc_R;
95 R_pi_s_matrix.block(NPoints, 0, NPoints, NPoints) +=
98 R_matrix.block(NPoints, NPoints, NPoints, NPoints) +=
103 "BHE_1P::assembleRMatrices: unknown index {:d} "
115 static std::array<std::pair<std::size_t ,
int >, 2>
117 std::size_t
const bottom_node_id,
118 int const in_component_id);
120 static std::optional<
121 std::array<std::pair<std::size_t ,
int >, 2>>
129 int const section_index = 0)
const;
138 double const Nu,
int const section_index = 0)
const;
bool const use_python_bcs
RefrigerantProperties const refrigerant
GroutParameters const grout
BHECommon(BoreholeGeometry const &borehole_geometry_, RefrigerantProperties const &refrigerant_, GroutParameters const &grout_, FlowAndTemperatureControl const &flowAndTemperatureControl_, bool const use_python_bcs_)
FlowAndTemperatureControl const flowAndTemperatureControl
void updateHeatTransferCoefficients(double const flow_rate)
std::vector< double > calcThermalResistances(double const Nu, int const section_index=0) const
std::array< double, number_of_unknowns > crossSectionAreas(int const section_index=0) const
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, int const, int const)
PipeConfiguration1PType const _pipe
static constexpr std::pair< int, int > inflow_outflow_bc_component_ids[]
static constexpr int number_of_unknowns
static constexpr int number_of_grout_zones
std::array< double, number_of_unknowns > pipeHeatCapacities() const
BHE_1P(BoreholeGeometry const &borehole, RefrigerantProperties const &refrigerant, GroutParameters const &grout, FlowAndTemperatureControl const &flowAndTemperatureControl, PipeConfiguration1PType const &pipes, bool const use_python_bcs)
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)
double updateFlowRateAndTemperature(double T_out, double current_time)
Return the inflow temperature for the boundary condition.
BHE_1P withGeometry(BoreholeGeometry const &g) const
std::array< Eigen::Vector3d, number_of_unknowns > pipeAdvectionVectors(Eigen::Vector3d const &elem_direction, int const section_index=0) const
static std::array< std::pair< std::size_t, int >, 2 > getBHEInflowDirichletBCNodesAndComponents(std::size_t const top_node_id, std::size_t const bottom_node_id, int const in_component_id)
std::variant< InflowTemperature, Power, BuildingPower, BuildingPowerHotWaterActiveCooling, BuildingPowerHotWaterPassiveCooling, BuildingPowerHotWater, BuildingPowerActiveCooling, BuildingPowerPassiveCooling, ActiveCooling > FlowAndTemperatureControl