Skip to content
Snippets Groups Projects
Commit 23c4b3c4 authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

[PL] Extract common calculation of pipe and thermal resistance parameters.

parent 263d5bf9
No related branches found
No related tags found
No related merge requests found
......@@ -99,12 +99,6 @@ inline double nusseltNumberAnnulus(double const reynolds_number,
(1.0 + diameter_ratio));
}
inline double PipeOutsideDiameter(double const pipe_diameter,
double const pipe_wall_thickness)
{
return pipe_diameter + 2. * pipe_wall_thickness;
}
struct CrossSectionAreasCoaxial
{
double const inner;
......
......@@ -30,23 +30,39 @@ struct Pipe
double const wall_thermal_conductivity;
/// Area of the pipe's inside without the wall.
double area() const
double area() const { return circleArea(diameter); }
/// Area of the pipe's outside including the wall thickness.
double outsideArea() const { return circleArea(outsideDiameter()); }
double outsideDiameter() const { return diameter + 2 * wall_thickness; }
double wallThermalResistance() const
{
constexpr double pi = boost::math::constants::pi<double>();
return pi * diameter * diameter / 4;
double const outside_diameter = outsideDiameter();
return std::log(outside_diameter / diameter) /
(2.0 * pi * wall_thermal_conductivity);
}
/// Area of the pipe's outside including the wall thickness.
double outsideArea() const
private:
double circleArea(double const diameter) const
{
constexpr double pi = boost::math::constants::pi<double>();
double const d = diameter + 2 * wall_thickness;
return pi * d * d / 4;
return pi * diameter * diameter / 4;
}
};
Pipe createPipe(BaseLib::ConfigTree const& config);
inline double coaxialPipesAnnulusDiameter(Pipe const& inner_pipe,
Pipe const& outer_pipe)
{
return outer_pipe.diameter - inner_pipe.diameter -
2 * inner_pipe.wall_thickness;
}
Pipe createPipe(BaseLib::ConfigTree const& config);
} // namespace BHE
} // namespace HeatTransportBHE
} // namespace ProcessLib
......@@ -46,40 +46,25 @@ inline AdvectiveThermalResistanceCoaxial calculateAdvectiveThermalResistance(
RefrigerantProperties const& fluid, double const Nu_inner_pipe,
double const Nu_annulus)
{
static constexpr double pi = boost::math::constants::pi<double>();
double const hydraulic_diameter =
coaxialPipesAnnulusDiameter(inner_pipe, outer_pipe);
double const hydraulic_diameter_annulus = outer_pipe.diameter -
inner_pipe.diameter -
2 * inner_pipe.wall_thickness;
double const inner_pipe_outside_diameter =
PipeOutsideDiameter(inner_pipe.diameter, inner_pipe.wall_thickness);
double const inner_pipe_coaxial =
1.0 / (Nu_inner_pipe * fluid.thermal_conductivity * pi);
double const a_annulus =
1.0 / (Nu_annulus * fluid.thermal_conductivity * pi) *
(hydraulic_diameter_annulus / inner_pipe_outside_diameter);
double const b_annulus = 1.0 /
(Nu_annulus * fluid.thermal_conductivity * pi) *
(hydraulic_diameter_annulus / outer_pipe.diameter);
return {inner_pipe_coaxial, a_annulus, b_annulus};
auto advective_thermal_resistance = [&](double Nu, double diameter_ratio) {
static constexpr double pi = boost::math::constants::pi<double>();
return 1.0 / (Nu * fluid.thermal_conductivity * pi) * diameter_ratio;
};
return {advective_thermal_resistance(Nu_inner_pipe, 1.),
advective_thermal_resistance(
Nu_annulus, hydraulic_diameter / inner_pipe.outsideDiameter()),
advective_thermal_resistance(
Nu_annulus, hydraulic_diameter / outer_pipe.diameter)};
}
inline PipeWallThermalResistanceCoaxial calculatePipeWallThermalResistance(
Pipe const& inner_pipe, Pipe const& outer_pipe)
{
static constexpr double pi = boost::math::constants::pi<double>();
double const inner_pipe_outside_diameter =
PipeOutsideDiameter(inner_pipe.diameter, inner_pipe.wall_thickness);
double const outer_pipe_outside_diameter =
PipeOutsideDiameter(outer_pipe.diameter, outer_pipe.wall_thickness);
double const inner_pipe_coaxial =
std::log(inner_pipe_outside_diameter / inner_pipe.diameter) /
(2.0 * pi * inner_pipe.wall_thermal_conductivity);
double const Annulus =
std::log(outer_pipe_outside_diameter / outer_pipe.diameter) /
(2.0 * pi * outer_pipe.wall_thermal_conductivity);
return {inner_pipe_coaxial, Annulus};
return {inner_pipe.wallThermalResistance(),
outer_pipe.wallThermalResistance()};
}
inline GroutAndGroutSoilExchangeThermalResistanceCoaxial
......@@ -89,8 +74,7 @@ calculateGroutAndGroutSoilExchangeThermalResistance(
{
static constexpr double pi = boost::math::constants::pi<double>();
double const outer_pipe_outside_diameter =
PipeOutsideDiameter(outer_pipe.diameter, outer_pipe.wall_thickness);
double const outer_pipe_outside_diameter = outer_pipe.outsideDiameter();
double const chi =
std::log(std::sqrt(borehole_diameter * borehole_diameter +
outer_pipe_outside_diameter *
......
......@@ -53,8 +53,7 @@ calculateThermoMechanicalFlowPropertiesAnnulus(
prandtlNumber(fluid.dynamic_viscosity, fluid.specific_heat_capacity,
fluid.thermal_conductivity);
double const inner_pipe_outside_diameter =
PipeOutsideDiameter(inner_pipe.diameter, inner_pipe.wall_thickness);
double const inner_pipe_outside_diameter = inner_pipe.outsideDiameter();
// Velocity between the outer pipe and inner pipe.
double const velocity =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment