Skip to content
Snippets Groups Projects
Commit 9c4c1876 authored by Chaofan Chen's avatar Chaofan Chen Committed by Dmitri Naumov
Browse files

[PL] extract calculation of coaxial thermal resistances to new h file.

parent 3eccd34f
No related branches found
No related tags found
No related merge requests found
......@@ -82,7 +82,7 @@ BHECommonCoaxial::pipeAdvectionVectors() const
}
std::array<double, BHECommonCoaxial::number_of_unknowns>
BHECommonCoaxial::CrossSectionAreas() const
BHECommonCoaxial::crossSectionAreas() const
{
auto S = cross_section_areas_coaxial();
return {S[0], S[1], S[2]};
......
......@@ -14,6 +14,7 @@
#include "FlowAndTemperatureControl.h"
#include "Physics.h"
#include "PipeConfigurationCoaxial.h"
#include "ThermalResistancesCoaxial.h"
#include "ThermoMechanicalFlowProperties.h"
namespace ProcessLib
......@@ -60,7 +61,7 @@ public:
double cross_section_area_inner_pipe, cross_section_area_annulus,
cross_section_area_grout;
std::array<double, number_of_unknowns> CrossSectionAreas() const;
std::array<double, number_of_unknowns> crossSectionAreas() const;
virtual std::array<double, number_of_unknowns> cross_section_areas_coaxial()
const = 0;
......
......@@ -140,7 +140,7 @@ private:
PipeConfiguration1U const _pipes;
public:
std::array<double, number_of_unknowns> CrossSectionAreas() const
std::array<double, number_of_unknowns> crossSectionAreas() const
{
return {{_pipes.inlet.area(), _pipes.outlet.area(),
borehole_geometry.area() / 2 - _pipes.inlet.area(),
......
/**
* \file
*
* \copyright
* Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#pragma once
#include "GroutParameters.h"
#include "Physics.h"
#include "Pipe.h"
#include "RefrigerantProperties.h"
namespace ProcessLib
{
namespace HeatTransportBHE
{
namespace BHE
{
struct AdvectiveThermalResistanceCoaxial
{
double inner_pipe_coaxial;
double a_annulus;
double b_annulus;
};
struct PipeWallThermalResistanceCoaxial
{
double const inner_pipe_coaxial;
double const annulus;
};
struct GroutAndGroutSoilExchangeThermalResistanceCoaxial
{
double const conductive_b;
double const grout_soil;
};
inline AdvectiveThermalResistanceCoaxial calculateAdvectiveThermalResistance(
Pipe const& inner_pipe, Pipe const& outer_pipe,
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_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};
}
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};
}
inline GroutAndGroutSoilExchangeThermalResistanceCoaxial
calculateGroutAndGroutSoilExchangeThermalResistance(
Pipe const& outer_pipe, GroutParameters const& grout_parameters,
double const borehole_diameter)
{
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 chi =
std::log(std::sqrt(borehole_diameter * borehole_diameter +
outer_pipe_outside_diameter *
outer_pipe_outside_diameter) /
std::sqrt(2) / outer_pipe_outside_diameter) /
std::log(borehole_diameter / outer_pipe_outside_diameter);
double const R_g =
std::log(borehole_diameter / outer_pipe_outside_diameter) / 2 /
(pi * grout_parameters.lambda_g);
double const conductive_b = chi * R_g;
double const grout_soil = (1 - chi) * R_g;
return {conductive_b, grout_soil};
}
} // namespace BHE
} // namespace HeatTransportBHE
} // namespace ProcessLib
......@@ -11,7 +11,6 @@
#pragma once
#include "GroutParameters.h"
#include "Physics.h"
#include "Pipe.h"
#include "RefrigerantProperties.h"
......@@ -28,25 +27,6 @@ struct ThermoMechanicalFlowProperties
double nusselt_number;
};
struct AdvectiveThermalResistanceCoaxial
{
double inner_pipe_coaxial;
double a_annulus;
double b_annulus;
};
struct PipeWallThermalResistanceCoaxial
{
double const inner_pipe_coaxial;
double const annulus;
};
struct GroutAndGroutSoilExchangeThermalResistanceCoaxial
{
double const conductive_b;
double const grout_soil;
};
inline ThermoMechanicalFlowProperties
calculateThermoMechanicalFlowPropertiesPipe(Pipe const& pipe,
double const length,
......@@ -92,70 +72,6 @@ calculateThermoMechanicalFlowPropertiesAnnulus(
nusseltNumberAnnulus(Re, Pr, diameter_ratio, pipe_aspect_ratio);
return {velocity, nusselt_number};
}
inline AdvectiveThermalResistanceCoaxial calculateAdvectiveThermalResistance(
Pipe const& inner_pipe, Pipe const& outer_pipe,
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_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};
}
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};
}
inline GroutAndGroutSoilExchangeThermalResistanceCoaxial
calculateGroutAndGroutSoilExchangeThermalResistance(
Pipe const& outer_pipe, GroutParameters const& grout_parameters,
double const borehole_diameter)
{
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 chi =
std::log(std::sqrt(borehole_diameter * borehole_diameter +
outer_pipe_outside_diameter *
outer_pipe_outside_diameter) /
std::sqrt(2) / outer_pipe_outside_diameter) /
std::log(borehole_diameter / outer_pipe_outside_diameter);
double const R_g =
std::log(borehole_diameter / outer_pipe_outside_diameter) / 2 /
(pi * grout_parameters.lambda_g);
double const conductive_b = chi * R_g;
double const grout_soil = (1 - chi) * R_g;
return {conductive_b, grout_soil};
}
} // namespace BHE
} // namespace HeatTransportBHE
} // namespace ProcessLib
......@@ -119,7 +119,7 @@ void HeatTransportBHELocalAssemblerBHE<ShapeFunction, IntegrationMethod,
auto const& pipe_heat_capacities = _bhe.pipeHeatCapacities();
auto const& pipe_heat_conductions = _bhe.pipeHeatConductions();
auto const& pipe_advection_vectors = _bhe.pipeAdvectionVectors();
auto const& cross_section_areas = _bhe.CrossSectionAreas();
auto const& cross_section_areas = _bhe.crossSectionAreas();
// the mass and conductance matrix terms
for (unsigned ip = 0; ip < n_integration_points; ip++)
......
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