Class TwoPhasePressureDrop

java.lang.Object
neqsim.process.mechanicaldesign.heatexchanger.TwoPhasePressureDrop

public final class TwoPhasePressureDrop extends Object
Two-phase pressure drop correlations for heat exchanger design.

Implements the Friedel (1979) correlation, the most widely-used general two-phase pressure drop method for horizontal and vertical tubes. Also includes the Muller-Steinhagen and Heck (1986) correlation as a simpler alternative.

The Friedel correlation uses a two-phase friction multiplier phi_lo^2 applied to the all-liquid frictional pressure drop:

(dP/dz)_tp = phi_lo^2 * (dP/dz)_lo

phi_lo^2 = E + 3.24 * F * H / (Fr^0.045 * We^0.035)

The correlation is validated for wide ranges of flow conditions (all flow patterns except stratified flow) and is recommended by HTRI as a primary method.

References:

  • Friedel, L. (1979). "Improved friction pressure drop correlations for horizontal and vertical two-phase pipe flow." European Two-Phase Flow Group Meeting, Ispra, Italy, Paper E2.
  • Muller-Steinhagen, H. and Heck, K. (1986). "A simple friction pressure drop correlation for two-phase flow in pipes." Chemical Engineering and Processing, 20, 297-308.
Version:
1.0
Author:
NeqSim Development Team
See Also:
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    Private constructor to prevent instantiation.
  • Method Summary

    Modifier and Type
    Method
    Description
    static double
    calcAccelerationPressureDrop(double massFlux, double qualityIn, double qualityOut, double liquidDensity, double vaporDensity)
    Calculates the acceleration pressure drop component due to quality change.
    (package private) static double
    Calculates the Fanning friction factor for smooth tubes.
    static double
    calcFriedelAveragePressureDrop(double massFlux, double qualityIn, double qualityOut, double tubeID, double tubeLength, double liquidDensity, double vaporDensity, double liquidViscosity, double vaporViscosity, double surfaceTension, int intervals)
    Calculates the average two-phase pressure drop over a quality change using numerical integration.
    static double
    calcFriedelGradient(double massFlux, double vaporQuality, double tubeID, double liquidDensity, double vaporDensity, double liquidViscosity, double vaporViscosity, double surfaceTension)
    Calculates the two-phase frictional pressure drop gradient using the Friedel (1979) correlation.
    static double
    calcFriedelPressureDrop(double massFlux, double vaporQuality, double tubeID, double tubeLength, double liquidDensity, double vaporDensity, double liquidViscosity, double vaporViscosity, double surfaceTension)
    Calculates the total two-phase frictional pressure drop over a tube length.
    static double
    calcGravitationalGradient(double vaporQuality, double liquidDensity, double vaporDensity)
    Calculates the gravitational pressure drop component for vertical two-phase flow.
    private static double
    calcMomentumFlux(double quality, double liquidDensity, double vaporDensity)
    Calculates the momentum flux term for a given quality.
    static double
    calcMullerSteinhagenHeckGradient(double massFlux, double vaporQuality, double tubeID, double liquidDensity, double vaporDensity, double liquidViscosity, double vaporViscosity)
    Calculates the two-phase frictional pressure drop gradient using the Muller-Steinhagen and Heck (1986) correlation.

    Methods inherited from class Object

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

    • TwoPhasePressureDrop

      private TwoPhasePressureDrop()
      Private constructor to prevent instantiation.
  • Method Details

    • calcFriedelGradient

      public static double calcFriedelGradient(double massFlux, double vaporQuality, double tubeID, double liquidDensity, double vaporDensity, double liquidViscosity, double vaporViscosity, double surfaceTension)
      Calculates the two-phase frictional pressure drop gradient using the Friedel (1979) correlation.

      This is the recommended method for most conditions. Valid for all flow patterns except stratified flow. Accuracy is typically within 30% for the recommended range.

      Parameters:
      massFlux - total mass flux G (kg/(m2*s))
      vaporQuality - local vapor quality x (0 to 1)
      tubeID - tube inner diameter (m)
      liquidDensity - liquid density (kg/m3)
      vaporDensity - vapor density (kg/m3)
      liquidViscosity - liquid dynamic viscosity (Pa*s)
      vaporViscosity - vapor dynamic viscosity (Pa*s)
      surfaceTension - surface tension (N/m)
      Returns:
      frictional pressure drop gradient (Pa/m)
    • calcFriedelPressureDrop

      public static double calcFriedelPressureDrop(double massFlux, double vaporQuality, double tubeID, double tubeLength, double liquidDensity, double vaporDensity, double liquidViscosity, double vaporViscosity, double surfaceTension)
      Calculates the total two-phase frictional pressure drop over a tube length.
      Parameters:
      massFlux - total mass flux (kg/(m2*s))
      vaporQuality - vapor quality (assumed constant along length) (0 to 1)
      tubeID - tube inner diameter (m)
      tubeLength - tube length (m)
      liquidDensity - liquid density (kg/m3)
      vaporDensity - vapor density (kg/m3)
      liquidViscosity - liquid viscosity (Pa*s)
      vaporViscosity - vapor viscosity (Pa*s)
      surfaceTension - surface tension (N/m)
      Returns:
      total frictional pressure drop (Pa)
    • calcFriedelAveragePressureDrop

      public static double calcFriedelAveragePressureDrop(double massFlux, double qualityIn, double qualityOut, double tubeID, double tubeLength, double liquidDensity, double vaporDensity, double liquidViscosity, double vaporViscosity, double surfaceTension, int intervals)
      Calculates the average two-phase pressure drop over a quality change using numerical integration.

      Integrates the Friedel gradient over the quality range using Simpson's rule.

      Parameters:
      massFlux - total mass flux (kg/(m2*s))
      qualityIn - inlet vapor quality (0 to 1)
      qualityOut - outlet vapor quality (0 to 1)
      tubeID - tube inner diameter (m)
      tubeLength - tube length (m)
      liquidDensity - liquid density (kg/m3)
      vaporDensity - vapor density (kg/m3)
      liquidViscosity - liquid viscosity (Pa*s)
      vaporViscosity - vapor viscosity (Pa*s)
      surfaceTension - surface tension (N/m)
      intervals - number of integration intervals (minimum 4, must be even)
      Returns:
      average frictional pressure drop over the tube (Pa)
    • calcMullerSteinhagenHeckGradient

      public static double calcMullerSteinhagenHeckGradient(double massFlux, double vaporQuality, double tubeID, double liquidDensity, double vaporDensity, double liquidViscosity, double vaporViscosity)
      Calculates the two-phase frictional pressure drop gradient using the Muller-Steinhagen and Heck (1986) correlation.

      A simpler alternative to Friedel that does not require surface tension:

      (dP/dz)_tp = G_factor * (1-x)^(1/3) + B * x^3
      
      where G_factor = A + 2*(B-A)*x
      A = (dP/dz)_lo (all-liquid)
      B = (dP/dz)_vo (all-vapor)
      

      Accuracy is typically within 30-50%, but the method is very robust and easy to implement.

      Parameters:
      massFlux - total mass flux G (kg/(m2*s))
      vaporQuality - local vapor quality (0 to 1)
      tubeID - tube inner diameter (m)
      liquidDensity - liquid density (kg/m3)
      vaporDensity - vapor density (kg/m3)
      liquidViscosity - liquid viscosity (Pa*s)
      vaporViscosity - vapor viscosity (Pa*s)
      Returns:
      frictional pressure drop gradient (Pa/m)
    • calcGravitationalGradient

      public static double calcGravitationalGradient(double vaporQuality, double liquidDensity, double vaporDensity)
      Calculates the gravitational pressure drop component for vertical two-phase flow.

      Uses homogeneous void fraction:

      alpha = 1 / (1 + (1-x)/x * rho_v/rho_l)
      rho_tp = rho_l*(1-alpha) + rho_v*alpha
      (dP/dz)_grav = rho_tp * g
      
      Parameters:
      vaporQuality - vapor quality (0 to 1)
      liquidDensity - liquid density (kg/m3)
      vaporDensity - vapor density (kg/m3)
      Returns:
      gravitational pressure drop gradient (Pa/m), positive for upflow
    • calcAccelerationPressureDrop

      public static double calcAccelerationPressureDrop(double massFlux, double qualityIn, double qualityOut, double liquidDensity, double vaporDensity)
      Calculates the acceleration pressure drop component due to quality change.
      dP_accel = G^2 * [x_out^2/(alpha_out*rho_v) + (1-x_out)^2/((1-alpha_out)*rho_l)
               - x_in^2/(alpha_in*rho_v) - (1-x_in)^2/((1-alpha_in)*rho_l)]
      
      Parameters:
      massFlux - total mass flux (kg/(m2*s))
      qualityIn - inlet vapor quality (0 to 1)
      qualityOut - outlet vapor quality (0 to 1)
      liquidDensity - liquid density (kg/m3)
      vaporDensity - vapor density (kg/m3)
      Returns:
      acceleration pressure drop (Pa)
    • calcMomentumFlux

      private static double calcMomentumFlux(double quality, double liquidDensity, double vaporDensity)
      Calculates the momentum flux term for a given quality.
      Parameters:
      quality - vapor quality (0 to 1)
      liquidDensity - liquid density (kg/m3)
      vaporDensity - vapor density (kg/m3)
      Returns:
      momentum flux term (m3/kg)
    • calcFanningFriction

      static double calcFanningFriction(double Re)
      Calculates the Fanning friction factor for smooth tubes.

      Uses Blasius for turbulent flow (Re > 2300) and 16/Re for laminar.

      Parameters:
      Re - Reynolds number
      Returns:
      Fanning friction factor