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.
    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 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.
    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.
    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
    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.
    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.
    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.
    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.
    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
    calculateNusseltImpingingJet(double reynoldsNumber, double prandtlNumber, double hOverD, double rOverD)
    Calculates the Nusselt number for an axisymmetric impinging jet on a flat surface.
    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)]
    • 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 orientation
      thermalExpansionCoeff - 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 velocity
      prandtlNumber - Prandtl number
      hOverD - 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 orientation
      thermalExpansionCoeff - 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 orientation
      thermalExpansionCoeff - 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 orientation
      thermalExpansionCoeff - Volumetric thermal expansion coefficient [1/K]
      Returns:
      Complete heat transfer calculation result