Class MultiphaseFlowRegime
- All Implemented Interfaces:
Serializable
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumEnumeration of two-phase gas-liquid flow regimes. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final doubleGravitational acceleration [m/s2].private doubleprivate doubleprivate doubleprivate DropletSizeDistributionprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate Stringprivate MultiphaseFlowRegime.FlowRegimeprivate static final longSerialization version UID.private double -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoubleEstimates the entrained liquid fraction in the gas core for annular/mist flow.private DropletSizeDistributionGenerates DSD for annular flow — fine droplets from film atomization.private DropletSizeDistributionGenerates bubble size distribution for dispersed bubble / bubble flow.private DropletSizeDistributionGenerates DSD for churn flow — intermediate between slug and annular.private DropletSizeDistributionGenerates the expected inlet droplet size distribution for a given flow regime.private DropletSizeDistributionGenerates DSD for plug flow — large gas bubbles, minimal entrainment.private DropletSizeDistributionGenerates DSD for slug flow — bimodal approximated as broad Rosin-Rammler.private DropletSizeDistributionGenerates DSD for stratified flow — large drops from wave entrainment.doubleGets the gas phase density.doubleGets the superficial gas velocity.doubleGets the gas phase dynamic viscosity.Gets the generated inlet DSD for the predicted regime.doubleGets the liquid phase density.doubleGets the superficial liquid velocity.doubleGets the liquid phase dynamic viscosity.doubleGets the inlet pipe internal diameter.Gets the inlet pipe orientation.Gets the predicted flow regime.doubleGets the gas-liquid interfacial tension.voidpredict()Predicts the flow regime based on the current input parameters.private MultiphaseFlowRegime.FlowRegimePredicts horizontal flow regime using simplified Mandhane-Gregory-Aziz (1974) boundaries.private MultiphaseFlowRegime.FlowRegimePredicts vertical flow regime using simplified Taitel-Dukler-Barnea (1980) criteria.voidsetGasDensity(double gasDensity) Sets the gas phase density.voidsetGasSuperficialVelocity(double gasSuperficialVelocity) Sets the superficial gas velocity in the pipe.voidsetGasViscosity(double gasViscosity) Sets the gas phase dynamic viscosity.voidsetLiquidDensity(double liquidDensity) Sets the liquid phase density.voidsetLiquidSuperficialVelocity(double liquidSuperficialVelocity) Sets the superficial liquid velocity in the pipe.voidsetLiquidViscosity(double liquidViscosity) Sets the liquid phase dynamic viscosity.voidsetPipeDiameter(double pipeDiameter) Sets the inlet pipe internal diameter.voidsetPipeOrientation(String pipeOrientation) Sets the inlet pipe orientation.voidsetSurfaceTension(double surfaceTension) Sets the gas-liquid interfacial tension.toJson()Returns a JSON representation of the flow regime prediction results.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
G
private static final double GGravitational 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
-
predictedRegime
-
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
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
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
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
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
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
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
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
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
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
Returns a JSON representation of the flow regime prediction results.- Returns:
- JSON string
-
getPredictedRegime
Gets the predicted flow regime.- Returns:
- predicted regime, or null if predict() has not been called
-
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
Sets the inlet pipe orientation.- Parameters:
pipeOrientation- "horizontal" or "vertical"
-
getPipeOrientation
-