Class ESPPump

All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, PumpInterface, TwoPortInterface, SimulationInterface, NamedInterface

public class ESPPump extends Pump
Electric Submersible Pump (ESP) simulation model for multiphase flow.

This class extends the standard Pump model to handle gas-liquid mixtures typical in oil production systems. ESP pumps experience performance degradation when gas is present at the pump intake.

Key Features

  • Gas Void Fraction (GVF) Handling: Performance degradation with gas content
  • Surging Detection: Identifies unstable operation at high GVF
  • Gas Separator Modeling: Optional gas separator at pump intake
  • Stage-by-Stage Calculation: Multi-stage pump modeling with gas expansion

GVF Degradation Model

The pump performance degrades as gas void fraction increases:

  • GVF < 10%: Minor degradation, pump operates normally
  • 10% < GVF < 20%: Moderate degradation (head drops ~20-40%)
  • 20% < GVF < 40%: Severe degradation and surging risk
  • GVF > 40%: Gas lock likely, pump may cease operation

Usage Example

// Create ESP pump for oil well
ESPPump esp = new ESPPump("ESP-1", wellStream);
esp.setNumberOfStages(100);
esp.setSpeed(3500); // rpm
esp.setHeadPerStage(10.0); // meters per stage at zero GVF
esp.setMaxGVF(0.30); // Maximum tolerable GVF
esp.run();

// Check operating status
double gvf = esp.getGasVoidFraction();
boolean surging = esp.isSurging();
double degradation = esp.getHeadDegradationFactor();
Version:
$Id: $Id
Author:
esol
See Also:
  • Field Details

    • serialVersionUID

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

      static org.apache.logging.log4j.Logger logger
      Logger object for class.
    • numberOfStages

      private int numberOfStages
    • headPerStage

      private double headPerStage
    • maxGVF

      private double maxGVF
    • surgingGVF

      private double surgingGVF
    • hasGasSeparator

      private boolean hasGasSeparator
    • gasSeparatorEfficiency

      private double gasSeparatorEfficiency
    • gasVoidFraction

      private double gasVoidFraction
    • headDegradationFactor

      private double headDegradationFactor
    • isSurging

      private boolean isSurging
    • isGasLocked

      private boolean isGasLocked
    • degradationCoeffA

      private double degradationCoeffA
    • degradationCoeffB

      private double degradationCoeffB
  • Constructor Details

    • ESPPump

      public ESPPump(String name)
      Constructor for ESPPump.
      Parameters:
      name - name of ESP pump
    • ESPPump

      public ESPPump(String name, StreamInterface inletStream)
      Constructor for ESPPump.
      Parameters:
      name - name of ESP pump
      inletStream - inlet stream
  • Method Details

    • run

      public void run(UUID id)

      In this method all thermodynamic and unit operations will be calculated in a steady state calculation.

      ESP-specific run method that accounts for multiphase flow effects.

      Specified by:
      run in interface SimulationInterface
      Overrides:
      run in class Pump
      Parameters:
      id - UUID
    • calculateGasVoidFraction

      private void calculateGasVoidFraction()
      Calculate gas void fraction at pump inlet.
    • calculateHeadDegradation

      private void calculateHeadDegradation(double gvf)
      Calculate head degradation factor based on GVF.

      Uses empirical correlation: f_degrad = 1 - A×GVF - B×GVF²

      Parameters:
      gvf - effective gas void fraction (0-1)
    • calculateTotalHead

      private double calculateTotalHead()
      Calculate total head with degradation.
      Returns:
      total head in meters
    • getLiquidDensity

      private double getLiquidDensity()
      Get liquid phase density.
      Returns:
      liquid density in kg/m³
    • getNumberOfStages

      public int getNumberOfStages()
      Get the number of pump stages.
      Returns:
      number of stages
    • setNumberOfStages

      public void setNumberOfStages(int numberOfStages)
      Set the number of pump stages.
      Parameters:
      numberOfStages - number of stages
    • getHeadPerStage

      public double getHeadPerStage()
      Get head per stage at design conditions.
      Returns:
      head per stage in meters
    • setHeadPerStage

      public void setHeadPerStage(double headPerStage)
      Set head per stage at design conditions.
      Parameters:
      headPerStage - head per stage in meters
    • getMaxGVF

      public double getMaxGVF()
      Get maximum tolerable gas void fraction.
      Returns:
      maximum GVF (0-1)
    • setMaxGVF

      public void setMaxGVF(double maxGVF)
      Set maximum tolerable gas void fraction.
      Parameters:
      maxGVF - maximum GVF (0-1)
    • getSurgingGVF

      public double getSurgingGVF()
      Get the surging GVF threshold.
      Returns:
      surging GVF threshold (0-1)
    • setSurgingGVF

      public void setSurgingGVF(double surgingGVF)
      Set the surging GVF threshold.
      Parameters:
      surgingGVF - surging GVF threshold (0-1)
    • hasGasSeparator

      public boolean hasGasSeparator()
      Check if pump has a gas separator.
      Returns:
      true if gas separator is present
    • setHasGasSeparator

      public void setHasGasSeparator(boolean hasGasSeparator)
      Set whether pump has a gas separator.
      Parameters:
      hasGasSeparator - true to enable gas separator
    • getGasSeparatorEfficiency

      public double getGasSeparatorEfficiency()
      Get gas separator efficiency.
      Returns:
      gas separator efficiency (0-1)
    • setGasSeparatorEfficiency

      public void setGasSeparatorEfficiency(double gasSeparatorEfficiency)
      Set gas separator efficiency.
      Parameters:
      gasSeparatorEfficiency - efficiency (0-1)
    • getGasVoidFraction

      public double getGasVoidFraction()
      Get the current gas void fraction at pump inlet.
      Returns:
      GVF (0-1)
    • getHeadDegradationFactor

      public double getHeadDegradationFactor()
      Get the current head degradation factor.
      Returns:
      degradation factor (0-1, where 1 = no degradation)
    • isSurging

      public boolean isSurging()
      Check if pump is surging due to high GVF.
      Returns:
      true if surging
    • isGasLocked

      public boolean isGasLocked()
      Check if pump is gas locked.
      Returns:
      true if gas locked
    • setDegradationCoefficients

      public void setDegradationCoefficients(double coeffA, double coeffB)
      Set degradation model coefficients.

      Degradation: f = 1 - A×GVF - B×GVF²

      Parameters:
      coeffA - linear coefficient
      coeffB - quadratic coefficient
    • getDesignHead

      public double getDesignHead()
      Get the total design head (without degradation).
      Returns:
      total design head in meters
    • getActualHead

      public double getActualHead()
      Get the actual head (with degradation).
      Returns:
      actual head in meters