From 9c4c1876323f701e6d08e3d8e20a7d395d50b4ce Mon Sep 17 00:00:00 2001 From: ChaofanChen <chaofan.chen@ufz.de> Date: Fri, 8 Feb 2019 17:38:55 +0100 Subject: [PATCH] [PL] extract calculation of coaxial thermal resistances to new h file. --- .../HeatTransportBHE/BHE/BHECommonCoaxial.cpp | 2 +- .../HeatTransportBHE/BHE/BHECommonCoaxial.h | 3 +- ProcessLib/HeatTransportBHE/BHE/BHE_1U.h | 2 +- .../BHE/ThermalResistancesCoaxial.h | 109 ++++++++++++++++++ .../BHE/ThermoMechanicalFlowProperties.h | 84 -------------- .../HeatTransportBHELocalAssemblerBHE-impl.h | 2 +- 6 files changed, 114 insertions(+), 88 deletions(-) create mode 100644 ProcessLib/HeatTransportBHE/BHE/ThermalResistancesCoaxial.h diff --git a/ProcessLib/HeatTransportBHE/BHE/BHECommonCoaxial.cpp b/ProcessLib/HeatTransportBHE/BHE/BHECommonCoaxial.cpp index 553b14174b1..9bf8da18738 100644 --- a/ProcessLib/HeatTransportBHE/BHE/BHECommonCoaxial.cpp +++ b/ProcessLib/HeatTransportBHE/BHE/BHECommonCoaxial.cpp @@ -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]}; diff --git a/ProcessLib/HeatTransportBHE/BHE/BHECommonCoaxial.h b/ProcessLib/HeatTransportBHE/BHE/BHECommonCoaxial.h index 25be41e8046..b5371c09358 100644 --- a/ProcessLib/HeatTransportBHE/BHE/BHECommonCoaxial.h +++ b/ProcessLib/HeatTransportBHE/BHE/BHECommonCoaxial.h @@ -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; diff --git a/ProcessLib/HeatTransportBHE/BHE/BHE_1U.h b/ProcessLib/HeatTransportBHE/BHE/BHE_1U.h index 24b873f5190..969bb322f1e 100644 --- a/ProcessLib/HeatTransportBHE/BHE/BHE_1U.h +++ b/ProcessLib/HeatTransportBHE/BHE/BHE_1U.h @@ -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(), diff --git a/ProcessLib/HeatTransportBHE/BHE/ThermalResistancesCoaxial.h b/ProcessLib/HeatTransportBHE/BHE/ThermalResistancesCoaxial.h new file mode 100644 index 00000000000..2dd126f70b3 --- /dev/null +++ b/ProcessLib/HeatTransportBHE/BHE/ThermalResistancesCoaxial.h @@ -0,0 +1,109 @@ +/** + * \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 diff --git a/ProcessLib/HeatTransportBHE/BHE/ThermoMechanicalFlowProperties.h b/ProcessLib/HeatTransportBHE/BHE/ThermoMechanicalFlowProperties.h index 1fec22c71ee..3c549016027 100644 --- a/ProcessLib/HeatTransportBHE/BHE/ThermoMechanicalFlowProperties.h +++ b/ProcessLib/HeatTransportBHE/BHE/ThermoMechanicalFlowProperties.h @@ -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 diff --git a/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE-impl.h b/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE-impl.h index 26955a42d9e..9715ed8edad 100644 --- a/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE-impl.h +++ b/ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE-impl.h @@ -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++) -- GitLab