Class MultiphaseFlowRegime

java.lang.Object
neqsim.process.equipment.separator.entrainment.MultiphaseFlowRegime
All Implemented Interfaces:
Serializable

public class MultiphaseFlowRegime extends Object implements Serializable
Predicts multiphase flow regime from pipe flow conditions and generates the corresponding inlet droplet size distribution for separator design.

Flow regime prediction uses the Mandhane-Gregory-Aziz (1974) map for horizontal pipes and the Taitel-Dukler-Barnea (1980) criteria for vertical pipes. The flow regime at the separator inlet fundamentally determines the initial droplet size distribution that the separator must handle.

Flow regime to DSD mapping (open literature correlations):

  • Stratified / Wavy — Large wave-entrained droplets. d_max from Kelvin-Helmholtz instability, Ishii and Grolmes (1975).
  • Annular / Mist — Fine atomized droplets from film stripping. Azzopardi (1997) correlation for d_32 in annular flow.
  • Slug — Bimodal distribution: coarse from slug body + fine from gas pocket. Fernandes et al. (1983) slug unit model.
  • Bubble / Dispersed Bubble — Hinze (1955) breakup model for bubbles in continuous liquid. Small gas void fraction.
  • Churn — Intermediate between slug and annular. Uses Ishii-Zuber (1979) model.

References:

  • Mandhane, J.M., Gregory, G.A., Aziz, K. (1974), "A flow pattern map for gas-liquid flow in horizontal pipes", Int. J. Multiphase Flow, 1, 537-553.
  • Taitel, Y., Bornea, D., Dukler, A.E. (1980), "Modelling flow pattern transitions for steady upward gas-liquid flow in vertical tubes", AIChE J., 26(3), 345-354.
  • Azzopardi, B.J. (1997), "Drops in annular two-phase flow", Int. J. Multiphase Flow, 23(Suppl.), 1-53.
  • Ishii, M., Grolmes, M.A. (1975), "Inception criteria for droplet entrainment in two-phase concurrent film flow", AIChE J., 21(2), 308-318.
  • Hinze, J.O. (1955), "Fundamentals of the hydrodynamic mechanism of splitting in dispersion processes", AIChE J., 1(3), 289-295.
Version:
1.0
Author:
NeqSim team
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • G

      private static final double G
      Gravitational acceleration [m/s2].
      See Also:
    • gasDensity

      private double gasDensity
    • liquidDensity

      private double liquidDensity
    • gasViscosity

      private double gasViscosity
    • liquidViscosity

      private double liquidViscosity
    • surfaceTension

      private double surfaceTension
    • pipeDiameter

      private double pipeDiameter
    • gasSuperficialVelocity

      private double gasSuperficialVelocity
    • liquidSuperficialVelocity

      private double liquidSuperficialVelocity
    • pipeOrientation

      private String pipeOrientation
    • predictedRegime

      private MultiphaseFlowRegime.FlowRegime predictedRegime
    • generatedDSD

      private DropletSizeDistribution generatedDSD
    • liquidHoldup

      private double liquidHoldup
  • Constructor Details

    • MultiphaseFlowRegime

      public MultiphaseFlowRegime()
      Creates a new MultiphaseFlowRegime calculator.
  • Method Details

    • predict

      public void predict()
      Predicts the flow regime based on the current input parameters.

      Uses the Mandhane-Gregory-Aziz (1974) map for horizontal flow and Taitel-Dukler-Barnea (1980) criteria for vertical flow.

    • predictHorizontal

      private MultiphaseFlowRegime.FlowRegime predictHorizontal()
      Predicts horizontal flow regime using simplified Mandhane-Gregory-Aziz (1974) boundaries.

      The map uses superficial gas and liquid velocities (V_sg, V_sl) with boundaries corrected for fluid properties.

      Returns:
      predicted flow regime
    • predictVertical

      private MultiphaseFlowRegime.FlowRegime predictVertical()
      Predicts vertical flow regime using simplified Taitel-Dukler-Barnea (1980) criteria.

      Key transitions:

      • Bubble-slug: V_sg > 0.25 + 0.35 * sqrt(g*D*(rho_l-rho_g)/rho_l)
      • Slug-churn: V_sg > ~1.0 * sqrt(g*D) (onset of flooding)
      • Churn-annular: V_sg > 3.1 * (sigma*g*deltaRho/rho_g^2)^0.25 (Kutateladze criterion)
      Returns:
      predicted flow regime
    • generateDSDForRegime

      private DropletSizeDistribution generateDSDForRegime(MultiphaseFlowRegime.FlowRegime regime)
      Generates the expected inlet droplet size distribution for a given flow regime.

      Each flow regime produces a characteristic DSD based on the dominant droplet formation mechanism. Uses open-literature correlations from Azzopardi (1997), Ishii and Grolmes (1975), and Hinze (1955).

      Parameters:
      regime - the predicted flow regime
      Returns:
      droplet size distribution at the separator inlet
    • generateStratifiedDSD

      private DropletSizeDistribution generateStratifiedDSD()
      Generates DSD for stratified flow — large drops from wave entrainment.

      Uses the Ishii-Grolmes (1975) entrainment onset model. Drops are coarse (100-1000 um) with wide spread. Weber number at the interface determines max droplet size.

      Returns:
      DSD for stratified regime
    • generateAnnularDSD

      private DropletSizeDistribution generateAnnularDSD()
      Generates DSD for annular flow — fine droplets from film atomization.

      Uses the Azzopardi (1997) correlation for Sauter mean diameter in annular flow:

      $$ \frac{d_{32}}{D} = k \cdot We^{-0.6} \cdot Re_l^{0.1} $$

      where k = 0.069, We = rho_g * V_sg^2 * D / sigma, Re_l = rho_l * V_sl * D / mu_l. Azzopardi, B.J. (1997), Int. J. Multiphase Flow, 23(Suppl.), 1-53.

      Returns:
      DSD for annular regime
    • generateSlugDSD

      private DropletSizeDistribution generateSlugDSD()
      Generates DSD for slug flow — bimodal approximated as broad Rosin-Rammler.

      Slug flow produces a bimodal DSD: coarse drops from slug front/body breakup and fine drops from the gas pocket (similar to annular). The combined DSD is approximated by a broad Rosin-Rammler with lower spread parameter.

      Returns:
      DSD for slug regime
    • generateChurnDSD

      private DropletSizeDistribution generateChurnDSD()
      Generates DSD for churn flow — intermediate between slug and annular.

      Churn flow is chaotic with intense gas-liquid mixing, producing a DSD intermediate between slug and annular regimes. Uses the Ishii-Zuber (1979) entrainment model.

      Returns:
      DSD for churn regime
    • generatePlugDSD

      private DropletSizeDistribution generatePlugDSD()
      Generates DSD for plug flow — large gas bubbles, minimal entrainment.

      Plug flow has elongated gas bubbles surrounded by liquid. Droplet entrainment is minimal. The "DSD" represents the small number of entrained droplets from bubble cap breakup.

      Returns:
      DSD for plug regime
    • generateBubbleDSD

      private DropletSizeDistribution generateBubbleDSD()
      Generates bubble size distribution for dispersed bubble / bubble flow.

      Uses the Hinze (1955) maximum stable bubble diameter for turbulent breakup:

      $$ d_{max} = 0.725 \cdot We^{-3/5} \cdot D $$
      Returns:
      bubble size distribution
    • calcEntrainedLiquidFraction

      public double calcEntrainedLiquidFraction()
      Estimates the entrained liquid fraction in the gas core for annular/mist flow.

      Uses the Oliemans et al. (1986) correlation:

      $$ E = \tanh\left(7.25 \times 10^{-7} \cdot We^{1.25} \cdot Re_l^{0.25}\right) $$
      Returns:
      entrained liquid fraction [0-1]
    • toJson

      public String toJson()
      Returns a JSON representation of the flow regime prediction results.
      Returns:
      JSON string
    • getPredictedRegime

      public MultiphaseFlowRegime.FlowRegime getPredictedRegime()
      Gets the predicted flow regime.
      Returns:
      predicted regime, or null if predict() has not been called
    • getGeneratedDSD

      public DropletSizeDistribution getGeneratedDSD()
      Gets the generated inlet DSD for the predicted regime.
      Returns:
      droplet size distribution, or null if predict() has not been called
    • setGasDensity

      public void setGasDensity(double gasDensity)
      Sets the gas phase density.
      Parameters:
      gasDensity - [kg/m3]
    • getGasDensity

      public double getGasDensity()
      Gets the gas phase density.
      Returns:
      gas density [kg/m3]
    • setLiquidDensity

      public void setLiquidDensity(double liquidDensity)
      Sets the liquid phase density.
      Parameters:
      liquidDensity - [kg/m3]
    • getLiquidDensity

      public double getLiquidDensity()
      Gets the liquid phase density.
      Returns:
      liquid density [kg/m3]
    • setGasViscosity

      public void setGasViscosity(double gasViscosity)
      Sets the gas phase dynamic viscosity.
      Parameters:
      gasViscosity - [Pa.s]
    • getGasViscosity

      public double getGasViscosity()
      Gets the gas phase dynamic viscosity.
      Returns:
      gas viscosity [Pa.s]
    • setLiquidViscosity

      public void setLiquidViscosity(double liquidViscosity)
      Sets the liquid phase dynamic viscosity.
      Parameters:
      liquidViscosity - [Pa.s]
    • getLiquidViscosity

      public double getLiquidViscosity()
      Gets the liquid phase dynamic viscosity.
      Returns:
      liquid viscosity [Pa.s]
    • setSurfaceTension

      public void setSurfaceTension(double surfaceTension)
      Sets the gas-liquid interfacial tension.
      Parameters:
      surfaceTension - [N/m]
    • getSurfaceTension

      public double getSurfaceTension()
      Gets the gas-liquid interfacial tension.
      Returns:
      surface tension [N/m]
    • setPipeDiameter

      public void setPipeDiameter(double pipeDiameter)
      Sets the inlet pipe internal diameter.
      Parameters:
      pipeDiameter - [m]
    • getPipeDiameter

      public double getPipeDiameter()
      Gets the inlet pipe internal diameter.
      Returns:
      pipe diameter [m]
    • setGasSuperficialVelocity

      public void setGasSuperficialVelocity(double gasSuperficialVelocity)
      Sets the superficial gas velocity in the pipe.
      Parameters:
      gasSuperficialVelocity - [m/s]
    • getGasSuperficialVelocity

      public double getGasSuperficialVelocity()
      Gets the superficial gas velocity.
      Returns:
      gas superficial velocity [m/s]
    • setLiquidSuperficialVelocity

      public void setLiquidSuperficialVelocity(double liquidSuperficialVelocity)
      Sets the superficial liquid velocity in the pipe.
      Parameters:
      liquidSuperficialVelocity - [m/s]
    • getLiquidSuperficialVelocity

      public double getLiquidSuperficialVelocity()
      Gets the superficial liquid velocity.
      Returns:
      liquid superficial velocity [m/s]
    • setPipeOrientation

      public void setPipeOrientation(String pipeOrientation)
      Sets the inlet pipe orientation.
      Parameters:
      pipeOrientation - "horizontal" or "vertical"
    • getPipeOrientation

      public String getPipeOrientation()
      Gets the inlet pipe orientation.
      Returns:
      pipe orientation