Class VesselHeatTransferCalculator

java.lang.Object
neqsim.process.util.fire.VesselHeatTransferCalculator

public final class VesselHeatTransferCalculator extends Object
Calculates internal heat transfer coefficients for vessel filling and depressurization.

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 Classes
    Modifier and Type
    Class
    Description
    static final class 
    Container for complete heat transfer calculation results.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final double
    Gravitational acceleration [m/s^2].
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    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.
    static double
    calculateGrashofNumber(double characteristicLength, double fluidTemperatureK, double wallTemperatureK, double thermalExpansionCoeff, double kinematicViscosity)
    Calculates the Grashof number for natural convection.
    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.
    static double
    calculateMixedConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double inletDiameter, double thermalConductivity, double heatCapacity, double dynamicViscosity, double density, boolean isVertical)
    Calculates the mixed convection heat transfer coefficient for vessel filling.
    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).
    static double
    calculateNusseltForcedConvection(double reynoldsNumber, double prandtlNumber)
    Calculates Nusselt number for forced convection in a pipe/vessel entry region.
    static double
    calculateNusseltHorizontalCylinder(double rayleighNumber, double prandtlNumber)
    Calculates the Nusselt number for natural convection from a horizontal cylinder.
    static double
    calculateNusseltVerticalSurface(double rayleighNumber, double prandtlNumber)
    Calculates the Nusselt number for natural convection from a vertical surface.
    static double
    calculatePrandtlNumber(double heatCapacity, double dynamicViscosity, double thermalConductivity)
    Calculates the Prandtl number.
    static double
    calculateRayleighNumber(double grashofNumber, double prandtlNumber)
    Calculates the Rayleigh number.
    static double
    calculateReynoldsNumber(double velocity, double characteristicLength, double density, double dynamicViscosity)
    Calculates the Reynolds number for forced convection.
    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.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • GRAVITY

      public static final double GRAVITY
      Gravitational 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 gas
      kinematicViscosity - 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)}^2
      
      This 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)}^2
      
      Valid 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)]
    • 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)
    • calculateMixedConvectionCoefficient

      public static double calculateMixedConvectionCoefficient(double characteristicLength, double wallTemperatureK, double fluidTemperatureK, double massFlowRate, double inletDiameter, 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:

      Nu_mixed = (Nu_forced ^ n + Nu_natural ^ n) ^ (1 / n)
      
      where n is typically 3-4 for assisting flows.
      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)]
    • 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