Class TwoFluidSection

java.lang.Object
neqsim.process.equipment.pipeline.twophasepipe.PipeSection
neqsim.process.equipment.pipeline.twophasepipe.TwoFluidSection
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
ThreeFluidSection

public class TwoFluidSection extends PipeSection
Extended pipe section state for the two-fluid model.

Extends the base PipeSection with additional state variables and methods required for the two-fluid conservation equations. Key additions include:

  • Separate conservative variables for each phase
  • Wetted perimeter and interfacial geometry
  • Wall and interfacial shear stresses
  • Source term storage

Conservative Variables

For each phase k (gas or liquid), the conservative variables are:

  • U1 = α_k * ρ_k * A (mass per unit length)
  • U2 = α_k * ρ_k * v_k * A (momentum per unit length)
  • U3 = α_k * ρ_k * E_k * A (energy per unit length)
Version:
1.0
Author:
Even Solbraa
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • gasWettedPerimeter

      private double gasWettedPerimeter
      Gas wetted perimeter (m).
    • liquidWettedPerimeter

      private double liquidWettedPerimeter
      Liquid wetted perimeter (m).
    • interfacialWidth

      private double interfacialWidth
      Interfacial width/perimeter (m).
    • stratifiedLiquidLevel

      private double stratifiedLiquidLevel
      Liquid level for stratified flow (m).
    • gasHydraulicDiameter

      private double gasHydraulicDiameter
      Gas hydraulic diameter (m).
    • liquidHydraulicDiameter

      private double liquidHydraulicDiameter
      Liquid hydraulic diameter (m).
    • gasWallShear

      private double gasWallShear
      Gas wall shear stress (Pa).
    • liquidWallShear

      private double liquidWallShear
      Liquid wall shear stress (Pa).
    • interfacialShear

      private double interfacialShear
      Interfacial shear stress (Pa). Positive = gas pushes liquid.
    • gasMassSource

      private double gasMassSource
      Gas mass source (kg/(m·s)). From liquid evaporation.
    • liquidMassSource

      private double liquidMassSource
      Liquid mass source (kg/(m·s)). From gas condensation.
    • gasMomentumSource

      private double gasMomentumSource
      Gas momentum source (N/m). Wall + interfacial + gravity.
    • liquidMomentumSource

      private double liquidMomentumSource
      Liquid momentum source (N/m). Wall + interfacial + gravity.
    • energySource

      private double energySource
      Energy source (W/m). Heat transfer + friction work.
    • gasMassPerLength

      private double gasMassPerLength
      Gas mass per unit length: α_g * ρ_g * A (kg/m).
    • liquidMassPerLength

      private double liquidMassPerLength
      Liquid mass per unit length: α_L * ρ_L * A (kg/m).
    • gasMomentumPerLength

      private double gasMomentumPerLength
      Gas momentum per unit length: α_g * ρ_g * v_g * A (kg/s).
    • liquidMomentumPerLength

      private double liquidMomentumPerLength
      Liquid momentum per unit length: α_L * ρ_L * v_L * A (kg/s).
    • energyPerLength

      private double energyPerLength
      Mixture energy per unit length: (α_g*ρ_g*E_g + α_L*ρ_L*E_L) * A (J/m).
    • oilFractionInLiquid

      private double oilFractionInLiquid
      Oil holdup within liquid phase (oil/(oil+water)).
    • waterCut

      private double waterCut
      Water cut (water fraction of total liquid).
    • waterHoldup

      private double waterHoldup
      Water holdup (fraction of pipe area). α_w
    • oilHoldup

      private double oilHoldup
      Oil holdup (fraction of pipe area). α_o = α_L - α_w
    • waterMassPerLength

      private double waterMassPerLength
      Water mass per unit length: α_w * ρ_w * A (kg/m).
    • oilMassPerLength

      private double oilMassPerLength
      Oil mass per unit length: α_o * ρ_o * A (kg/m).
    • waterMomentumPerLength

      private double waterMomentumPerLength
      Water momentum per unit length: α_w * ρ_w * v_w * A (kg/s).
    • oilMomentumPerLength

      private double oilMomentumPerLength
      Oil momentum per unit length: α_o * ρ_o * v_o * A (kg/s).
    • waterVelocity

      private double waterVelocity
      Water velocity (m/s).
    • oilVelocity

      private double oilVelocity
      Oil velocity (m/s).
    • oilDensity

      private double oilDensity
      Oil density (kg/m³).
    • waterDensity

      private double waterDensity
      Water density (kg/m³).
    • oilViscosity

      private double oilViscosity
      Oil viscosity (Pa·s).
    • waterViscosity

      private double waterViscosity
      Water viscosity (Pa·s).
    • geometryCalc

      private transient GeometryCalculator geometryCalc
  • Constructor Details

    • TwoFluidSection

      public TwoFluidSection()
      Default constructor.
    • TwoFluidSection

      public TwoFluidSection(double position, double length, double diameter, double inclination)
      Constructor with geometry.
      Parameters:
      position - Position from inlet (m)
      length - Segment length (m)
      diameter - Pipe diameter (m)
      inclination - Pipe inclination (radians)
  • Method Details

    • fromPipeSection

      public static TwoFluidSection fromPipeSection(PipeSection base)
      Create from existing PipeSection.
      Parameters:
      base - Base pipe section to copy from
      Returns:
      New TwoFluidSection with copied state
    • updateStratifiedGeometry

      public void updateStratifiedGeometry()
      Update stratified flow geometry based on current liquid holdup.
    • updateConservativeVariables

      public void updateConservativeVariables()
      Calculate conservative variables from primitive variables.
    • extractPrimitiveVariables

      public void extractPrimitiveVariables()
      Extract primitive variables from conservative variables.

      This is the inverse operation of updateConservativeVariables. Requires equation of state evaluation for complete solution. Includes stability guards to prevent NaN values.

    • getStateVector

      public double[] getStateVector()
      Get state vector for numerical integration (7-equation model with water-oil slip).
      Returns:
      Conservative state [gasMass, oilMass, waterMass, gasMom, oilMom, waterMom, energy]
    • setStateVector

      public void setStateVector(double[] state)
      Set state from vector (7-equation model with water-oil slip).
      Parameters:
      state - Conservative state [gasMass, oilMass, waterMass, gasMom, oilMom, waterMom, energy]
    • updateWaterOilHoldups

      public void updateWaterOilHoldups()
      Update water and oil holdups from conservative variables. Should be called after extractPrimitiveVariables if separate tracking is needed. Note: extractPrimitiveVariables now also sets oil/water holdups, so this is mainly for velocity extraction.
    • updateWaterOilConservativeVariables

      public void updateWaterOilConservativeVariables()
      Update conservative variables for water and oil separately.
    • updateThreePhaseProperties

      public void updateThreePhaseProperties()
      Calculate effective liquid properties for three-phase flow.

      Combines oil and water properties using volume-weighted averages. Uses local water cut which may vary along the pipeline.

    • calcGravityForces

      public double[] calcGravityForces()
      Calculate gravity force per unit length for each phase.
      Returns:
      [gasGravityForce, liquidGravityForce] in N/m
    • getGasWettedPerimeter

      public double getGasWettedPerimeter()
    • setGasWettedPerimeter

      public void setGasWettedPerimeter(double gasWettedPerimeter)
    • getLiquidWettedPerimeter

      public double getLiquidWettedPerimeter()
    • setLiquidWettedPerimeter

      public void setLiquidWettedPerimeter(double liquidWettedPerimeter)
    • getInterfacialWidth

      public double getInterfacialWidth()
    • setInterfacialWidth

      public void setInterfacialWidth(double interfacialWidth)
    • getStratifiedLiquidLevel

      public double getStratifiedLiquidLevel()
    • setStratifiedLiquidLevel

      public void setStratifiedLiquidLevel(double stratifiedLiquidLevel)
    • getGasHydraulicDiameter

      public double getGasHydraulicDiameter()
    • setGasHydraulicDiameter

      public void setGasHydraulicDiameter(double gasHydraulicDiameter)
    • getLiquidHydraulicDiameter

      public double getLiquidHydraulicDiameter()
    • setLiquidHydraulicDiameter

      public void setLiquidHydraulicDiameter(double liquidHydraulicDiameter)
    • getGasWallShear

      public double getGasWallShear()
    • setGasWallShear

      public void setGasWallShear(double gasWallShear)
    • getLiquidWallShear

      public double getLiquidWallShear()
    • setLiquidWallShear

      public void setLiquidWallShear(double liquidWallShear)
    • getInterfacialShear

      public double getInterfacialShear()
    • setInterfacialShear

      public void setInterfacialShear(double interfacialShear)
    • calcOilWaterInterfacialShear

      public double calcOilWaterInterfacialShear()
      Calculate the oil-water interfacial shear stress.

      Models the shear between oil and water phases when they flow at different velocities. Uses a simplified model based on relative velocity and Stokes settling.

      Returns:
      Oil-water interfacial shear stress (Pa), positive when oil flows faster than water
    • getGasMassSource

      public double getGasMassSource()
    • setGasMassSource

      public void setGasMassSource(double gasMassSource)
    • getLiquidMassSource

      public double getLiquidMassSource()
    • setLiquidMassSource

      public void setLiquidMassSource(double liquidMassSource)
    • getGasMomentumSource

      public double getGasMomentumSource()
    • setGasMomentumSource

      public void setGasMomentumSource(double gasMomentumSource)
    • getLiquidMomentumSource

      public double getLiquidMomentumSource()
    • setLiquidMomentumSource

      public void setLiquidMomentumSource(double liquidMomentumSource)
    • getEnergySource

      public double getEnergySource()
    • setEnergySource

      public void setEnergySource(double energySource)
    • getGasMassPerLength

      public double getGasMassPerLength()
    • setGasMassPerLength

      public void setGasMassPerLength(double gasMassPerLength)
    • getLiquidMassPerLength

      public double getLiquidMassPerLength()
    • setLiquidMassPerLength

      public void setLiquidMassPerLength(double liquidMassPerLength)
    • getGasMomentumPerLength

      public double getGasMomentumPerLength()
    • setGasMomentumPerLength

      public void setGasMomentumPerLength(double gasMomentumPerLength)
    • getLiquidMomentumPerLength

      public double getLiquidMomentumPerLength()
    • setLiquidMomentumPerLength

      public void setLiquidMomentumPerLength(double liquidMomentumPerLength)
    • getEnergyPerLength

      public double getEnergyPerLength()
    • setEnergyPerLength

      public void setEnergyPerLength(double energyPerLength)
    • getOilFractionInLiquid

      public double getOilFractionInLiquid()
    • setOilFractionInLiquid

      public void setOilFractionInLiquid(double oilFractionInLiquid)
    • getWaterCut

      public double getWaterCut()
    • setWaterCut

      public void setWaterCut(double waterCut)
    • getOilDensity

      public double getOilDensity()
    • setOilDensity

      public void setOilDensity(double oilDensity)
    • getWaterDensity

      public double getWaterDensity()
    • setWaterDensity

      public void setWaterDensity(double waterDensity)
    • getOilViscosity

      public double getOilViscosity()
    • setOilViscosity

      public void setOilViscosity(double oilViscosity)
    • getWaterViscosity

      public double getWaterViscosity()
    • setWaterViscosity

      public void setWaterViscosity(double waterViscosity)
    • getWaterHoldup

      public double getWaterHoldup()
    • setWaterHoldup

      public void setWaterHoldup(double waterHoldup)
    • getOilHoldup

      public double getOilHoldup()
    • setOilHoldup

      public void setOilHoldup(double oilHoldup)
    • getLiquidHoldup

      public double getLiquidHoldup()
      Override getLiquidHoldup to return the total liquid holdup (oil + water).

      In TwoFluidSection, the oil and water holdups are tracked separately. This override ensures that getLiquidHoldup() returns their sum for consistent behavior with LiquidAccumulationTracker and other components that depend on total liquid holdup.

      Overrides:
      getLiquidHoldup in class PipeSection
      Returns:
      Total liquid holdup (oil + water)
    • setLiquidHoldup

      public void setLiquidHoldup(double liquidHoldup)
      Override setLiquidHoldup to also update oil and water holdups proportionally.

      When the liquid holdup is changed (e.g., by LiquidAccumulationTracker), the oil and water holdups must be updated to maintain their relative proportions within the liquid phase.

      Overrides:
      setLiquidHoldup in class PipeSection
      Parameters:
      liquidHoldup - the new total liquid holdup
    • getWaterMassPerLength

      public double getWaterMassPerLength()
    • setWaterMassPerLength

      public void setWaterMassPerLength(double waterMassPerLength)
    • getOilMassPerLength

      public double getOilMassPerLength()
    • setOilMassPerLength

      public void setOilMassPerLength(double oilMassPerLength)
    • getWaterMomentumPerLength

      public double getWaterMomentumPerLength()
    • setWaterMomentumPerLength

      public void setWaterMomentumPerLength(double waterMomentumPerLength)
    • getOilMomentumPerLength

      public double getOilMomentumPerLength()
    • setOilMomentumPerLength

      public void setOilMomentumPerLength(double oilMomentumPerLength)
    • getWaterVelocity

      public double getWaterVelocity()
    • setWaterVelocity

      public void setWaterVelocity(double waterVelocity)
    • getOilVelocity

      public double getOilVelocity()
    • setOilVelocity

      public void setOilVelocity(double oilVelocity)
    • clone

      public TwoFluidSection clone()
      Overrides:
      clone in class PipeSection