Class OilWaterFlowRegimeDetector
- All Implemented Interfaces:
Serializable
Predicts the oil-water flow configuration (stratified, dispersed oil-in-water, dispersed water-in-oil, or dual dispersion) based on phase velocities, fluid properties, and pipe geometry. This is critical for:
- Corrosion prediction (water wetting vs oil wetting of pipe wall)
- Effective viscosity calculation (emulsion viscosity depends on continuous phase)
- Produced water management (water dropout in low-velocity sections)
- Phase inversion prediction (the point where continuous phase switches)
Flow Regime Classification
Based on the work of Trallero (1995), Angeli and Hewitt (2000), and Brauner (2003):
- Stratified: Separate oil and water layers (low velocity)
- Stratified with mixing: Stratified layers with interfacial waves/mixing zone
- Dispersed oil-in-water (O/W): Oil droplets in continuous water phase
- Dispersed water-in-oil (W/O): Water droplets in continuous oil phase
- Dual dispersion: Both O/W and W/O regions coexist
- Annular: Oil core with water annulus (or vice versa)
References
- Trallero, J.L. (1995). Oil-Water Flow Patterns in Horizontal Pipes. PhD Thesis, U. Tulsa.
- Brauner, N. (2003). Liquid-Liquid Two-Phase Flow Systems. In Modelling and Experimentation in Two-Phase Flow, Springer, pp. 221-279.
- Angeli, P. and Hewitt, G.F. (2000). Flow structure in horizontal oil-water flow. Int. J. Multiphase Flow, 26(7), 1117-1140.
- Decarre, S. and Fabre, J. (1997). Phase inversion prediction study. Oil & Gas Science and Technology, 52(4), 415-424.
- Version:
- 1.0
- Author:
- Even Solbraa
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumOil-water flow regime enumeration.static classResult of oil-water flow regime detection. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleCritical Weber number for droplet breakup (Hinze, 1955).private static final doubleGravitational acceleration (m/s2).private doubleEmpirical constant for inversion model (Decarre and Fabre, 1997).private static final long -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoublecalcCriticalDispersionVelocity(double waterCut, double rhoOil, double rhoWater, double muCont, double sigmaOW, double diameter) Calculate the critical mixture velocity for transition from stratified to fully dispersed oil-water flow (Brauner, 2003).doublecalcEffectiveViscosity(double waterCut, double muOil, double muWater, boolean oilContinuous) Calculate effective viscosity of the oil-water mixture.doublecalcInversionWaterFraction(double muRatio, double rhoOil, double rhoWater) Calculate the phase inversion water fraction.doublecalcMaxDropletDiameter(double velocity, double rhoCont, double sigmaOW, double diameter, double muCont) Calculate the maximum stable droplet diameter using the Hinze (1955) criterion.detect(double waterCut, double mixtureVelocity, double rhoOil, double rhoWater, double muOil, double muWater, double sigmaOW, double pipeDiameter, double inclination) Detect oil-water flow regime and compute associated properties.doubleGet the critical Weber number.doubleGet the inversion model constant.booleanisWaterDropoutLikely(double waterCut, double mixtureVelocity, double rhoOil, double rhoWater, double muOil, double diameter, double dropletDiameter) Check if water dropout is likely in a low-point section.voidsetCriticalWeber(double we) Set the critical Weber number for droplet breakup.voidsetInversionConstant(double constant) Set the inversion model constant.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
GRAVITY
private static final double GRAVITYGravitational acceleration (m/s2).- See Also:
-
criticalWeber
private double criticalWeberCritical Weber number for droplet breakup (Hinze, 1955). -
inversionConstant
private double inversionConstantEmpirical constant for inversion model (Decarre and Fabre, 1997).
-
-
Constructor Details
-
OilWaterFlowRegimeDetector
public OilWaterFlowRegimeDetector()Default constructor.
-
-
Method Details
-
detect
public OilWaterFlowRegimeDetector.OilWaterResult detect(double waterCut, double mixtureVelocity, double rhoOil, double rhoWater, double muOil, double muWater, double sigmaOW, double pipeDiameter, double inclination) Detect oil-water flow regime and compute associated properties.- Parameters:
waterCut- water volume fraction in liquid (0-1)mixtureVelocity- superficial mixture liquid velocity (m/s)rhoOil- oil density (kg/m3)rhoWater- water density (kg/m3)muOil- oil dynamic viscosity (Pa.s)muWater- water dynamic viscosity (Pa.s)sigmaOW- oil-water interfacial tension (N/m)pipeDiameter- pipe internal diameter (m)inclination- pipe inclination (radians, positive = uphill)- Returns:
- OilWaterResult with regime classification and properties
-
calcInversionWaterFraction
public double calcInversionWaterFraction(double muRatio, double rhoOil, double rhoWater) Calculate the phase inversion water fraction.Uses the model of Decarre and Fabre (1997) where inversion occurs when the surface-energy-weighted viscosity ratio reaches equilibrium. For equal viscosity fluids, inversion is near 50%.
- Parameters:
muRatio- oil-to-water viscosity ratio (mu_o/mu_w)rhoOil- oil density (kg/m3)rhoWater- water density (kg/m3)- Returns:
- water volume fraction at inversion point (0-1)
-
calcCriticalDispersionVelocity
public double calcCriticalDispersionVelocity(double waterCut, double rhoOil, double rhoWater, double muCont, double sigmaOW, double diameter) Calculate the critical mixture velocity for transition from stratified to fully dispersed oil-water flow (Brauner, 2003).Below this velocity, gravity dominates and the phases stratify. Above this velocity, turbulent mixing disperses one phase into the other.
- Parameters:
waterCut- water volume fraction (0-1)rhoOil- oil density (kg/m3)rhoWater- water density (kg/m3)muCont- viscosity of continuous phase (Pa.s)sigmaOW- oil-water interfacial tension (N/m)diameter- pipe diameter (m)- Returns:
- critical mixture velocity (m/s)
-
calcMaxDropletDiameter
public double calcMaxDropletDiameter(double velocity, double rhoCont, double sigmaOW, double diameter, double muCont) Calculate the maximum stable droplet diameter using the Hinze (1955) criterion.d_max = We_crit^{3/5} * (sigma / rho_c)^{3/5} * epsilon^{-2/5} where epsilon is the turbulent energy dissipation rate estimated from the mixture velocity.
- Parameters:
velocity- mixture velocity (m/s)rhoCont- density of continuous phase (kg/m3)sigmaOW- oil-water interfacial tension (N/m)diameter- pipe diameter (m)muCont- viscosity of continuous phase (Pa.s)- Returns:
- maximum stable droplet diameter (m)
-
calcEffectiveViscosity
public double calcEffectiveViscosity(double waterCut, double muOil, double muWater, boolean oilContinuous) Calculate effective viscosity of the oil-water mixture.Uses the Brinkman (1952) equation for dilute dispersions and the Pal and Rhodes (1989) model for concentrated dispersions:
- Dilute (phi < 0.3): mu_eff = mu_c * (1 - phi)^{-2.5}
- Concentrated: mu_eff = mu_c * (1 - phi/phi_max)^{-2.5}
- Parameters:
waterCut- water volume fraction (0-1)muOil- oil viscosity (Pa.s)muWater- water viscosity (Pa.s)oilContinuous- true if oil is the continuous phase- Returns:
- effective mixture viscosity (Pa.s)
-
isWaterDropoutLikely
public boolean isWaterDropoutLikely(double waterCut, double mixtureVelocity, double rhoOil, double rhoWater, double muOil, double diameter, double dropletDiameter) Check if water dropout is likely in a low-point section.Water dropout occurs when the settling velocity of water droplets exceeds the turbulent re-entrainment capacity. This is particularly relevant in:
- Low-velocity sections (turndown conditions)
- Pipe low-points (valleys) where water can accumulate
- After uphill sections where water may slide back
- Parameters:
waterCut- water volume fraction (0-1)mixtureVelocity- mixture velocity (m/s)rhoOil- oil density (kg/m3)rhoWater- water density (kg/m3)muOil- oil viscosity (Pa.s)diameter- pipe diameter (m)dropletDiameter- water droplet diameter (m)- Returns:
- true if water dropout is likely
-
setCriticalWeber
public void setCriticalWeber(double we) Set the critical Weber number for droplet breakup.- Parameters:
we- critical Weber number (default 1.17 from Hinze, 1955)
-
getCriticalWeber
public double getCriticalWeber()Get the critical Weber number.- Returns:
- critical Weber number
-
setInversionConstant
public void setInversionConstant(double constant) Set the inversion model constant.- Parameters:
constant- exponent for viscosity ratio in inversion model (default 0.5)
-
getInversionConstant
public double getInversionConstant()Get the inversion model constant.- Returns:
- inversion constant
-