Class VesselHeatTransferCalculator
This class provides natural convection, forced convection, and mixed convection correlations for calculating heat transfer between gas/liquid and vessel walls during dynamic operations. The correlations are based on experimental validation from hydrogen vessel studies and are applicable to various gases.
The implementation follows the approach used in HydDown and validated against experimental data from Woodfield et al. for hydrogen vessel filling and depressurization.
Reference: Andreasen, A. (2021). HydDown: A Python package for calculation of hydrogen (or other gas) pressure vessel filling and discharge. Journal of Open Source Software, 6(66), 3695.
- Author:
- ESOL
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classContainer for complete heat transfer calculation results. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncalculateCompleteHeatTransfer(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Performs a complete internal heat transfer calculation for a vessel.calculateCompleteHeatTransfer(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical, double thermalExpansionCoeff) Performs a complete internal heat transfer calculation for a vessel with real-gas thermal expansion coefficient.static doublecalculateDischargeConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double orificeDiameter, double vesselDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Calculates the mixed convection heat transfer coefficient during vessel discharge.static doublecalculateDischargeConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double orificeDiameter, double vesselDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical, double thermalExpansionCoeff) Calculates the mixed convection heat transfer coefficient during vessel discharge with real-gas thermal expansion coefficient.static doublecalculateGrashofNumber(double characteristicLength, double fluidTemperatureK, double wallTemperatureK, double thermalExpansionCoeff, double kinematicViscosity) Calculates the Grashof number for natural convection.static doublecalculateInternalFilmCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Calculates the internal heat transfer coefficient for natural convection inside a vessel.static doublecalculateInternalFilmCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical, double thermalExpansionCoeff) Calculates the internal heat transfer coefficient for natural convection inside a vessel.static doublecalculateMixedConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double inletDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Deprecated.Use the overload that accepts vesselDiameter explicitly.static doublecalculateMixedConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double inletDiameter, double vesselDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Calculates the mixed convection heat transfer coefficient for vessel filling.static doublecalculateMixedConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double inletDiameter, double vesselDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical, double thermalExpansionCoeff) Calculates the mixed convection heat transfer coefficient for vessel filling with real-gas thermal expansion coefficient.static doublecalculateNucleateBoilingHeatFlux(double wallTemperatureK, double saturationTemperatureK, double latentHeat, double liquidDensity, double vaporDensity, double liquidViscosity, double liquidCp, double surfaceTension, double liquidPrandtl) Calculates the heat transfer coefficient for nucleate boiling (wetted wall with liquid).static doublecalculateNusseltForcedConvection(double reynoldsNumber, double prandtlNumber) Calculates Nusselt number for forced convection in a pipe/vessel entry region.static doublecalculateNusseltHorizontalCylinder(double rayleighNumber, double prandtlNumber) Calculates the Nusselt number for natural convection from a horizontal cylinder.static doublecalculateNusseltImpingingJet(double reynoldsNumber, double prandtlNumber, double hOverD, double rOverD) Calculates the Nusselt number for an axisymmetric impinging jet on a flat surface.static doublecalculateNusseltVerticalSurface(double rayleighNumber, double prandtlNumber) Calculates the Nusselt number for natural convection from a vertical surface.static doublecalculatePrandtlNumber(double heatCapacity, double dynamicViscosity, double thermalConductivity) Calculates the Prandtl number.static doublecalculateRayleighNumber(double grashofNumber, double prandtlNumber) Calculates the Rayleigh number.static doublecalculateReynoldsNumber(double velocity, double characteristicLength, double density, double dynamicViscosity) Calculates the Reynolds number for forced convection.static doublecalculateWettedWallFilmCoefficient(double wallTemperatureK, double fluidTemperatureK, double saturationTemperatureK, double characteristicLength, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Estimates the internal film coefficient for wetted (liquid contact) vessel wall.
-
Field Details
-
GRAVITY
public static final double GRAVITYGravitational acceleration [m/s^2].- See Also:
-
-
Constructor Details
-
VesselHeatTransferCalculator
private VesselHeatTransferCalculator()
-
-
Method Details
-
calculateGrashofNumber
public static double calculateGrashofNumber(double characteristicLength, double fluidTemperatureK, double wallTemperatureK, double thermalExpansionCoeff, double kinematicViscosity) Calculates the Grashof number for natural convection.The Grashof number represents the ratio of buoyancy to viscous forces:
Gr = g * beta * |Twall - Tfluid| * L^3 / nu^2
- Parameters:
characteristicLength- Characteristic length [m] (height for vertical, diameter for horizontal)fluidTemperatureK- Bulk fluid temperature [K]wallTemperatureK- Wall surface temperature [K]thermalExpansionCoeff- Thermal expansion coefficient [1/K], typically 1/T for ideal gaskinematicViscosity- Kinematic viscosity [m^2/s]- Returns:
- Grashof number (dimensionless)
-
calculatePrandtlNumber
public static double calculatePrandtlNumber(double heatCapacity, double dynamicViscosity, double thermalConductivity) Calculates the Prandtl number.The Prandtl number represents the ratio of momentum diffusivity to thermal diffusivity:
Pr = Cp * mu / k = nu / alpha
- Parameters:
heatCapacity- Specific heat capacity at constant pressure [J/(kg*K)]dynamicViscosity- Dynamic viscosity [Pa*s]thermalConductivity- Thermal conductivity [W/(m*K)]- Returns:
- Prandtl number (dimensionless)
-
calculateRayleighNumber
public static double calculateRayleighNumber(double grashofNumber, double prandtlNumber) Calculates the Rayleigh number.The Rayleigh number is the product of Grashof and Prandtl numbers:
Ra = Gr * Pr
- Parameters:
grashofNumber- Grashof number (dimensionless)prandtlNumber- Prandtl number (dimensionless)- Returns:
- Rayleigh number (dimensionless)
-
calculateNusseltVerticalSurface
public static double calculateNusseltVerticalSurface(double rayleighNumber, double prandtlNumber) Calculates the Nusselt number for natural convection from a vertical surface.Uses the Churchill-Chu correlation valid for all Ra:
Nu = {0.825 + 0.387 * Ra^(1/6) / [1 + (0.492/Pr)^(9/16)]^(8/27)}^2This correlation is valid for the full range of Rayleigh numbers and is suitable for vessel walls.- Parameters:
rayleighNumber- Rayleigh number (dimensionless)prandtlNumber- Prandtl number (dimensionless)- Returns:
- Nusselt number (dimensionless)
-
calculateNusseltHorizontalCylinder
public static double calculateNusseltHorizontalCylinder(double rayleighNumber, double prandtlNumber) Calculates the Nusselt number for natural convection from a horizontal cylinder.Uses the Churchill-Chu correlation for horizontal cylinders:
Nu = {0.60 + 0.387 * Ra^(1/6) / [1 + (0.559/Pr)^(9/16)]^(8/27)}^2Valid for Ra < 10^12.- Parameters:
rayleighNumber- Rayleigh number based on diameter (dimensionless)prandtlNumber- Prandtl number (dimensionless)- Returns:
- Nusselt number (dimensionless)
-
calculateInternalFilmCoefficient
public static double calculateInternalFilmCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Calculates the internal heat transfer coefficient for natural convection inside a vessel.This method calculates the film coefficient based on natural convection for gas-phase heat transfer during depressurization. Uses fluid properties at the film temperature (average of wall and bulk temperatures).
- Parameters:
characteristicLength- Characteristic length [m] (height for vertical vessels)wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientation- Returns:
- Internal film heat transfer coefficient [W/(m^2*K)]
-
calculateInternalFilmCoefficient
public static double calculateInternalFilmCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical, double thermalExpansionCoeff) Calculates the internal heat transfer coefficient for natural convection inside a vessel.Overload that accepts an explicit thermal expansion coefficient for real-gas accuracy at high pressures. At low pressures the ideal-gas approximation beta = 1/T is adequate, but at 100-350 bar the real-gas value (from the equation of state) can differ by 30-300 %, leading to a proportional change in the Grashof and Rayleigh numbers and hence the Nusselt number.
- Parameters:
characteristicLength- Characteristic length [m] (height for vertical vessels)wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientationthermalExpansionCoeff- Volumetric thermal expansion coefficient [1/K] (real-gas value: beta = -(1/rho)*(drho/dT)_P)- Returns:
- Internal film heat transfer coefficient [W/(m^2*K)]
-
calculateReynoldsNumber
public static double calculateReynoldsNumber(double velocity, double characteristicLength, double density, double dynamicViscosity) Calculates the Reynolds number for forced convection.Re = rho * v * D / mu = v * D / nu
- Parameters:
velocity- Flow velocity [m/s]characteristicLength- Characteristic length (diameter) [m]density- Fluid density [kg/m^3]dynamicViscosity- Dynamic viscosity [Pa*s]- Returns:
- Reynolds number (dimensionless)
-
calculateNusseltForcedConvection
public static double calculateNusseltForcedConvection(double reynoldsNumber, double prandtlNumber) Calculates Nusselt number for forced convection in a pipe/vessel entry region.Uses the Gnielinski correlation for turbulent flow (Re > 2300):
Nu = (f/8) * (Re - 1000) * Pr / [1 + 12.7 * sqrt(f/8) * (Pr^(2/3) - 1)]
where f is the Darcy friction factor.- Parameters:
reynoldsNumber- Reynolds number (dimensionless)prandtlNumber- Prandtl number (dimensionless)- Returns:
- Nusselt number (dimensionless)
-
calculateNusseltImpingingJet
public static double calculateNusseltImpingingJet(double reynoldsNumber, double prandtlNumber, double hOverD, double rOverD) Calculates the Nusselt number for an axisymmetric impinging jet on a flat surface.Uses the Martin correlation for a single round nozzle (VDI Heat Atlas):
Nu = F(Re) * K(H/D, D/r) * Pr^0.42 F(Re) = 2 * Re^0.5 * (1 + 0.005 * Re^0.55)^0.5 K = (1 - 1.1 * D/r) / (1 + 0.1 * (H/D - 6) * D/r)
Valid for 2000 < Re < 400000, 2 < H/D < 12, 2.5 < r/D < 7.5. Outside these ranges the result is clamped or falls back to Gnielinski.
- Parameters:
reynoldsNumber- Reynolds number based on nozzle diameter and exit velocityprandtlNumber- Prandtl numberhOverD- Nozzle-to-surface distance divided by nozzle diameter (H/D)rOverD- Radial distance from stagnation point divided by nozzle diameter (r/D); use vessel diameter / (2 * nozzle diameter) for area-average- Returns:
- Nusselt number (dimensionless) based on nozzle diameter
-
calculateMixedConvectionCoefficient
public static double calculateMixedConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double inletDiameter, double vesselDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Calculates the mixed convection heat transfer coefficient for vessel filling.During filling operations, both forced convection (from inlet jet) and natural convection contribute to heat transfer. This method combines both effects using an asymptotic approach:
h_mixed = (h_forced ^ n + h_natural ^ n) ^ (1 / n)
where n is typically 3-4 for assisting flows.The forced convection component estimates a bulk circulation velocity from the inlet jet momentum (area-ratio scaling) and uses the vessel diameter as the length scale. A 1.5x filling enhancement factor accounts for the stronger mixing produced by an incoming jet compared to discharge outflow.
- Parameters:
characteristicLength- Characteristic length [m]wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]massFlowRate- Mass flow rate [kg/s]inletDiameter- Inlet/nozzle diameter [m]vesselDiameter- Vessel inner diameter [m]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientation- Returns:
- Mixed convection film coefficient [W/(m^2*K)]
-
calculateMixedConvectionCoefficient
@Deprecated public static double calculateMixedConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double inletDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Deprecated.Use the overload that accepts vesselDiameter explicitly.Backward-compatible overload that assumes vesselDiameter equals characteristicLength.- Parameters:
characteristicLength- Characteristic length [m]wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]massFlowRate- Mass flow rate [kg/s]inletDiameter- Inlet/nozzle diameter [m]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientation- Returns:
- Mixed convection film coefficient [W/(m^2*K)]
-
calculateMixedConvectionCoefficient
public static double calculateMixedConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double inletDiameter, double vesselDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical, double thermalExpansionCoeff) Calculates the mixed convection heat transfer coefficient for vessel filling with real-gas thermal expansion coefficient.Same as
calculateMixedConvectionCoefficient(double, double, double, double, double, double, double, double, double, double, boolean)but uses the provided thermal expansion coefficient instead of the ideal-gas approximation beta = 1/T.- Parameters:
characteristicLength- Characteristic length [m]wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]massFlowRate- Mass flow rate [kg/s]inletDiameter- Inlet/nozzle diameter [m]vesselDiameter- Vessel inner diameter [m]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientationthermalExpansionCoeff- Volumetric thermal expansion coefficient [1/K]- Returns:
- Mixed convection film coefficient [W/(m^2*K)]
-
calculateDischargeConvectionCoefficient
public static double calculateDischargeConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double orificeDiameter, double vesselDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Calculates the mixed convection heat transfer coefficient during vessel discharge.During blowdown the outflow jet and resulting internal circulation augment heat transfer beyond pure natural convection. The internal circulation velocity is estimated from the outflow momentum. The forced and natural components are blended asymptotically.
- Parameters:
characteristicLength- Characteristic length [m]wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]massFlowRate- Discharge mass flow rate (positive) [kg/s]orificeDiameter- Orifice / outlet nozzle diameter [m]vesselDiameter- Vessel inner diameter [m]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientation- Returns:
- Mixed convection film coefficient [W/(m^2*K)]
-
calculateDischargeConvectionCoefficient
public static double calculateDischargeConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double orificeDiameter, double vesselDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical, double thermalExpansionCoeff) Calculates the mixed convection heat transfer coefficient during vessel discharge with real-gas thermal expansion coefficient.- Parameters:
characteristicLength- Characteristic length [m]wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]massFlowRate- Discharge mass flow rate (positive) [kg/s]orificeDiameter- Orifice / outlet nozzle diameter [m]vesselDiameter- Vessel inner diameter [m]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientationthermalExpansionCoeff- Volumetric thermal expansion coefficient [1/K]- Returns:
- Mixed convection film coefficient [W/(m^2*K)]
-
calculateNucleateBoilingHeatFlux
public static double calculateNucleateBoilingHeatFlux(double wallTemperatureK, double saturationTemperatureK, double latentHeat, double liquidDensity, double vaporDensity, double liquidViscosity, double liquidCp, double surfaceTension, double liquidPrandtl) Calculates the heat transfer coefficient for nucleate boiling (wetted wall with liquid).Uses the Rohsenow correlation for nucleate pool boiling:
q = mu_l * h_fg * [g * (rho_l - rho_v) / sigma]^0.5 * [Cp_l * (Twall - Tsat) / (Csf * h_fg * Pr^n)]^3
- Parameters:
wallTemperatureK- Wall temperature [K]saturationTemperatureK- Saturation temperature [K]latentHeat- Latent heat of vaporization [J/kg]liquidDensity- Liquid density [kg/m^3]vaporDensity- Vapor density [kg/m^3]liquidViscosity- Liquid dynamic viscosity [Pa*s]liquidCp- Liquid heat capacity [J/(kg*K)]surfaceTension- Surface tension [N/m]liquidPrandtl- Liquid Prandtl number- Returns:
- Heat flux [W/m^2] or 0 if wall is below saturation temperature
-
calculateWettedWallFilmCoefficient
public static double calculateWettedWallFilmCoefficient(double wallTemperatureK, double fluidTemperatureK, double saturationTemperatureK, double characteristicLength, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Estimates the internal film coefficient for wetted (liquid contact) vessel wall.For wetted walls with boiling liquid, this method combines natural convection and nucleate boiling effects to give an effective heat transfer coefficient.
- Parameters:
wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk liquid temperature [K]saturationTemperatureK- Saturation temperature [K]characteristicLength- Characteristic length [m]thermalConductivity- Liquid thermal conductivity [W/(m*K)]heatCapacity- Liquid heat capacity [J/(kg*K)]dynamicViscosity- Liquid dynamic viscosity [Pa*s]density- Liquid density [kg/m^3]isVertical- true for vertical vessel orientation- Returns:
- Internal film coefficient for wetted wall [W/(m^2*K)]
-
calculateCompleteHeatTransfer
public static VesselHeatTransferCalculator.HeatTransferResult calculateCompleteHeatTransfer(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical) Performs a complete internal heat transfer calculation for a vessel.- Parameters:
characteristicLength- Characteristic length [m]wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientation- Returns:
- Complete heat transfer calculation result
-
calculateCompleteHeatTransfer
public static VesselHeatTransferCalculator.HeatTransferResult calculateCompleteHeatTransfer(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical, double thermalExpansionCoeff) Performs a complete internal heat transfer calculation for a vessel with real-gas thermal expansion coefficient.- Parameters:
characteristicLength- Characteristic length [m]wallTemperatureK- Wall temperature [K]fluidTemperatureK- Bulk fluid temperature [K]thermalConductivity- Fluid thermal conductivity [W/(m*K)]heatCapacity- Fluid heat capacity [J/(kg*K)]dynamicViscosity- Fluid dynamic viscosity [Pa*s]density- Fluid density [kg/m^3]isVertical- true for vertical vessel orientationthermalExpansionCoeff- Volumetric thermal expansion coefficient [1/K]- Returns:
- Complete heat transfer calculation result
-