Class ThreeFluidSection
java.lang.Object
neqsim.process.equipment.pipeline.twophasepipe.PipeSection
neqsim.process.equipment.pipeline.twophasepipe.TwoFluidSection
neqsim.process.equipment.pipeline.twophasepipe.ThreeFluidSection
- All Implemented Interfaces:
Serializable, Cloneable
Extended section state for three-phase (gas-oil-water) pipe flow.
Extends TwoFluidSection to include a water phase alongside gas and liquid (oil). Uses a layered stratified model where water settles at the bottom, oil in the middle, and gas at the top.
Conservation Variables
The three-fluid model tracks 7 PDEs:- Gas mass: ∂(α_g ρ_g A)/∂t + ∂(α_g ρ_g u_g A)/∂x = Γ_go + Γ_gw
- Oil mass: ∂(α_o ρ_o A)/∂t + ∂(α_o ρ_o u_o A)/∂x = -Γ_go
- Water mass: ∂(α_w ρ_w A)/∂t + ∂(α_w ρ_w u_w A)/∂x = -Γ_gw
- Gas momentum
- Oil momentum
- Water momentum
- Mixture energy (or separate phase energies)
Stratified Three-Layer Geometry
Gas (α_g)
─────────────────
Oil (α_o)
─────────────────
Water (α_w)
- Version:
- 1.0
- Author:
- Even Solbraa
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class PipeSection
PipeSection.FlowRegime -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate static final longprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate double -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.ThreeFluidSection(double position, double length, double diameter) Constructor with basic parameters.ThreeFluidSection(double position, double length, double diameter, double inclination) Constructor with inclination. -
Method Summary
Modifier and TypeMethodDescriptionprivate doublecalculateLevelFromArea(double targetArea, double d) Calculate liquid level from cross-sectional area using Newton iteration.clone()Create a deep copy of this section.voidExtract primitive variables from conservative variables.doubledoubledoubledoubleGet mixture liquid density (holdup-weighted average).doubleGet mixture liquid velocity (flow-weighted average).doubleGet mixture liquid viscosity (holdup-weighted average).doubledoubledoubledoubledoubledoubledoubledoubledoubledoubledoubledoubledoubledoubleGet total liquid holdup (oil + water).doubledoubledoubledoubledoubledoubledoubledoubledoubledoubledoubledoubleprivate voidInitialize water phase with default values.voidsetGasOilSurfaceTension(double gasOilSurfaceTension) voidsetGasWaterSurfaceTension(double gasWaterSurfaceTension) voidsetHoldups(double gasHoldup, double oilHoldup, double waterHoldup) Set holdups for all three phases.voidsetOilDensity(double oilDensity) voidsetOilEnthalpy(double oilEnthalpy) voidsetOilEvaporationRate(double oilEvaporationRate) voidsetOilHoldup(double oilHoldup) voidsetOilMassPerLength(double oilMassPerLength) voidsetOilMomentumPerLength(double oilMomentumPerLength) voidsetOilVelocity(double oilVelocity) voidsetOilViscosity(double oilViscosity) voidsetOilWaterSurfaceTension(double oilWaterSurfaceTension) voidsetWaterCut(double waterCut) voidsetWaterDensity(double waterDensity) voidsetWaterEnthalpy(double waterEnthalpy) voidsetWaterEvaporationRate(double waterEvaporationRate) voidsetWaterHoldup(double waterHoldup) voidsetWaterMassPerLength(double waterMassPerLength) voidsetWaterMomentumPerLength(double waterMomentumPerLength) voidsetWaterVelocity(double waterVelocity) voidsetWaterViscosity(double waterViscosity) voidUpdate conservative variables from primitive variables.voidCalculate three-layer stratified geometry.Methods inherited from class TwoFluidSection
calcGravityForces, calcOilWaterInterfacialShear, fromPipeSection, getEnergyPerLength, getEnergySource, getGasHydraulicDiameter, getGasMassPerLength, getGasMassSource, getGasMomentumPerLength, getGasMomentumSource, getGasWallShear, getGasWettedPerimeter, getInterfacialShear, getInterfacialWidth, getLiquidHoldup, getLiquidHydraulicDiameter, getLiquidMassPerLength, getLiquidMassSource, getLiquidMomentumPerLength, getLiquidMomentumSource, getLiquidWallShear, getLiquidWettedPerimeter, getOilFractionInLiquid, getStateVector, getStratifiedLiquidLevel, setEnergyPerLength, setEnergySource, setGasHydraulicDiameter, setGasMassPerLength, setGasMassSource, setGasMomentumPerLength, setGasMomentumSource, setGasWallShear, setGasWettedPerimeter, setInterfacialShear, setInterfacialWidth, setLiquidHoldup, setLiquidHydraulicDiameter, setLiquidMassPerLength, setLiquidMassSource, setLiquidMomentumPerLength, setLiquidMomentumSource, setLiquidWallShear, setLiquidWettedPerimeter, setOilFractionInLiquid, setStateVector, setStratifiedLiquidLevel, updateStratifiedGeometry, updateThreePhaseProperties, updateWaterOilConservativeVariables, updateWaterOilHoldupsMethods inherited from class PipeSection
getAccumulatedLiquidVolume, getArea, getConservativeVariables, getDiameter, getEffectiveLiquidHoldup, getEffectiveMixtureDensity, getElevation, getFlowRegime, getFrictionPressureGradient, getGasDensity, getGasEnthalpy, getGasHoldup, getGasSoundSpeed, getGasVelocity, getGasViscosity, getGravityPressureGradient, getInclination, getLength, getLiquidDensity, getLiquidEnthalpy, getLiquidLevel, getLiquidSoundSpeed, getLiquidVelocity, getLiquidViscosity, getMassTransferRate, getMixtureDensity, getMixtureHeatCapacity, getMixtureVelocity, getPosition, getPressure, getRoughness, getSlugHoldup, getSuperficialGasVelocity, getSuperficialLiquidVelocity, getSurfaceTension, getTemperature, getWallisSoundSpeed, isHighPoint, isInSlugBody, isInSlugBubble, isLowPoint, setAccumulatedLiquidVolume, setDiameter, setElevation, setFlowRegime, setFrictionPressureGradient, setFromConservativeVariables, setGasDensity, setGasEnthalpy, setGasHoldup, setGasSoundSpeed, setGasVelocity, setGasViscosity, setGravityPressureGradient, setHighPoint, setInclination, setInSlugBody, setInSlugBubble, setLength, setLiquidDensity, setLiquidEnthalpy, setLiquidSoundSpeed, setLiquidVelocity, setLiquidViscosity, setLowPoint, setMassTransferRate, setMixtureHeatCapacity, setPosition, setPressure, setRoughness, setSlugHoldup, setSurfaceTension, setTemperature, updateDerivedQuantities
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
waterHoldup
private double waterHoldup -
waterVelocity
private double waterVelocity -
waterDensity
private double waterDensity -
waterViscosity
private double waterViscosity -
waterEnthalpy
private double waterEnthalpy -
oilHoldup
private double oilHoldup -
oilVelocity
private double oilVelocity -
oilDensity
private double oilDensity -
oilViscosity
private double oilViscosity -
oilEnthalpy
private double oilEnthalpy -
waterMassPerLength
private double waterMassPerLength -
waterMomentumPerLength
private double waterMomentumPerLength -
oilMassPerLength
private double oilMassPerLength -
oilMomentumPerLength
private double oilMomentumPerLength -
gasOilSurfaceTension
private double gasOilSurfaceTension -
oilWaterSurfaceTension
private double oilWaterSurfaceTension -
gasWaterSurfaceTension
private double gasWaterSurfaceTension -
waterLevel
private double waterLevel -
oilLevel
private double oilLevel -
waterArea
private double waterArea -
oilArea
private double oilArea -
waterWettedPerimeter
private double waterWettedPerimeter -
oilWettedPerimeter
private double oilWettedPerimeter -
gasOilInterfacialWidth
private double gasOilInterfacialWidth -
oilWaterInterfacialWidth
private double oilWaterInterfacialWidth -
waterCut
private double waterCut -
oilEvaporationRate
private double oilEvaporationRate -
waterEvaporationRate
private double waterEvaporationRate
-
-
Constructor Details
-
ThreeFluidSection
public ThreeFluidSection()Default constructor. -
ThreeFluidSection
public ThreeFluidSection(double position, double length, double diameter) Constructor with basic parameters.- Parameters:
position- Distance from inlet (m)length- Section length (m)diameter- Pipe diameter (m)
-
ThreeFluidSection
public ThreeFluidSection(double position, double length, double diameter, double inclination) Constructor with inclination.- Parameters:
position- Distance from inlet (m)length- Section length (m)diameter- Pipe diameter (m)inclination- Pipe inclination (radians)
-
-
Method Details
-
initializeWaterPhase
private void initializeWaterPhase()Initialize water phase with default values. -
setHoldups
public void setHoldups(double gasHoldup, double oilHoldup, double waterHoldup) Set holdups for all three phases. Must sum to 1.0.- Parameters:
gasHoldup- Gas holdup (0-1)oilHoldup- Oil holdup (0-1)waterHoldup- Water holdup (0-1)
-
updateConservativeVariables
public void updateConservativeVariables()Update conservative variables from primitive variables.- Overrides:
updateConservativeVariablesin classTwoFluidSection
-
extractPrimitiveVariables
public void extractPrimitiveVariables()Extract primitive variables from conservative variables.- Overrides:
extractPrimitiveVariablesin classTwoFluidSection
-
updateThreeLayerGeometry
public void updateThreeLayerGeometry()Calculate three-layer stratified geometry.Assumes circular pipe with three stratified layers: water at bottom, oil in middle, gas at top.
-
calculateLevelFromArea
private double calculateLevelFromArea(double targetArea, double d) Calculate liquid level from cross-sectional area using Newton iteration.- Parameters:
targetArea- target cross-sectional area in m²d- pipe diameter in meters- Returns:
- liquid level height in meters
-
getTotalLiquidHoldup
public double getTotalLiquidHoldup()Get total liquid holdup (oil + water).- Returns:
- Total liquid holdup
-
getMixtureLiquidVelocity
public double getMixtureLiquidVelocity()Get mixture liquid velocity (flow-weighted average).- Returns:
- Mixture liquid velocity (m/s)
-
getMixtureLiquidDensity
public double getMixtureLiquidDensity()Get mixture liquid density (holdup-weighted average).- Returns:
- Mixture liquid density (kg/m³)
-
getMixtureLiquidViscosity
public double getMixtureLiquidViscosity()Get mixture liquid viscosity (holdup-weighted average).- Returns:
- Mixture liquid viscosity (Pa·s)
-
clone
Create a deep copy of this section.- Overrides:
clonein classTwoFluidSection- Returns:
- Cloned section
-
getWaterHoldup
public double getWaterHoldup()- Overrides:
getWaterHoldupin classTwoFluidSection
-
setWaterHoldup
public void setWaterHoldup(double waterHoldup) - Overrides:
setWaterHoldupin classTwoFluidSection
-
getWaterVelocity
public double getWaterVelocity()- Overrides:
getWaterVelocityin classTwoFluidSection
-
setWaterVelocity
public void setWaterVelocity(double waterVelocity) - Overrides:
setWaterVelocityin classTwoFluidSection
-
getWaterDensity
public double getWaterDensity()- Overrides:
getWaterDensityin classTwoFluidSection
-
setWaterDensity
public void setWaterDensity(double waterDensity) - Overrides:
setWaterDensityin classTwoFluidSection
-
getWaterViscosity
public double getWaterViscosity()- Overrides:
getWaterViscosityin classTwoFluidSection
-
setWaterViscosity
public void setWaterViscosity(double waterViscosity) - Overrides:
setWaterViscosityin classTwoFluidSection
-
getWaterEnthalpy
public double getWaterEnthalpy() -
setWaterEnthalpy
public void setWaterEnthalpy(double waterEnthalpy) -
getOilHoldup
public double getOilHoldup()- Overrides:
getOilHoldupin classTwoFluidSection
-
setOilHoldup
public void setOilHoldup(double oilHoldup) - Overrides:
setOilHoldupin classTwoFluidSection
-
getOilVelocity
public double getOilVelocity()- Overrides:
getOilVelocityin classTwoFluidSection
-
setOilVelocity
public void setOilVelocity(double oilVelocity) - Overrides:
setOilVelocityin classTwoFluidSection
-
getOilDensity
public double getOilDensity()- Overrides:
getOilDensityin classTwoFluidSection
-
setOilDensity
public void setOilDensity(double oilDensity) - Overrides:
setOilDensityin classTwoFluidSection
-
getOilViscosity
public double getOilViscosity()- Overrides:
getOilViscosityin classTwoFluidSection
-
setOilViscosity
public void setOilViscosity(double oilViscosity) - Overrides:
setOilViscosityin classTwoFluidSection
-
getOilEnthalpy
public double getOilEnthalpy() -
setOilEnthalpy
public void setOilEnthalpy(double oilEnthalpy) -
getWaterMassPerLength
public double getWaterMassPerLength()- Overrides:
getWaterMassPerLengthin classTwoFluidSection
-
setWaterMassPerLength
public void setWaterMassPerLength(double waterMassPerLength) - Overrides:
setWaterMassPerLengthin classTwoFluidSection
-
getWaterMomentumPerLength
public double getWaterMomentumPerLength()- Overrides:
getWaterMomentumPerLengthin classTwoFluidSection
-
setWaterMomentumPerLength
public void setWaterMomentumPerLength(double waterMomentumPerLength) - Overrides:
setWaterMomentumPerLengthin classTwoFluidSection
-
getOilMassPerLength
public double getOilMassPerLength()- Overrides:
getOilMassPerLengthin classTwoFluidSection
-
setOilMassPerLength
public void setOilMassPerLength(double oilMassPerLength) - Overrides:
setOilMassPerLengthin classTwoFluidSection
-
getOilMomentumPerLength
public double getOilMomentumPerLength()- Overrides:
getOilMomentumPerLengthin classTwoFluidSection
-
setOilMomentumPerLength
public void setOilMomentumPerLength(double oilMomentumPerLength) - Overrides:
setOilMomentumPerLengthin classTwoFluidSection
-
getWaterLevel
public double getWaterLevel() -
getOilLevel
public double getOilLevel() -
getWaterArea
public double getWaterArea() -
getOilArea
public double getOilArea() -
getWaterWettedPerimeter
public double getWaterWettedPerimeter() -
getOilWettedPerimeter
public double getOilWettedPerimeter() -
getGasOilInterfacialWidth
public double getGasOilInterfacialWidth() -
getOilWaterInterfacialWidth
public double getOilWaterInterfacialWidth() -
getGasOilSurfaceTension
public double getGasOilSurfaceTension() -
setGasOilSurfaceTension
public void setGasOilSurfaceTension(double gasOilSurfaceTension) -
getOilWaterSurfaceTension
public double getOilWaterSurfaceTension() -
setOilWaterSurfaceTension
public void setOilWaterSurfaceTension(double oilWaterSurfaceTension) -
getGasWaterSurfaceTension
public double getGasWaterSurfaceTension() -
setGasWaterSurfaceTension
public void setGasWaterSurfaceTension(double gasWaterSurfaceTension) -
getWaterCut
public double getWaterCut()- Overrides:
getWaterCutin classTwoFluidSection
-
setWaterCut
public void setWaterCut(double waterCut) - Overrides:
setWaterCutin classTwoFluidSection
-
getOilEvaporationRate
public double getOilEvaporationRate() -
setOilEvaporationRate
public void setOilEvaporationRate(double oilEvaporationRate) -
getWaterEvaporationRate
public double getWaterEvaporationRate() -
setWaterEvaporationRate
public void setWaterEvaporationRate(double waterEvaporationRate)
-