Class ESPPump
- All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, PumpInterface, TwoPortInterface, SimulationInterface, NamedInterface
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 Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate doubleprivate doubleprivate doubleprivate booleanprivate doubleprivate doubleprivate booleanprivate boolean(package private) static org.apache.logging.log4j.LoggerLogger object for class.private doubleprivate intprivate static final longSerialization version UID.private doubleFields inherited from class Pump
dH, isentropicEfficiency, powerSet, pressure, thermoSystemFields inherited from class TwoPortEquipment
inStream, outStreamFields inherited from class ProcessEquipmentBaseClass
conditionAnalysisMessage, energyStream, hasController, isSolved, properties, reportFields inherited from class SimulationBaseClass
calcIdentifier, calculateSteadyState, timeFields inherited from class NamedBaseClass
name -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for ESPPump.ESPPump(String name, StreamInterface inletStream) Constructor for ESPPump. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidCalculate gas void fraction at pump inlet.private voidcalculateHeadDegradation(double gvf) Calculate head degradation factor based on GVF.private doubleCalculate total head with degradation.doubleGet the actual head (with degradation).doubleGet the total design head (without degradation).doubleGet gas separator efficiency.doubleGet the current gas void fraction at pump inlet.doubleGet the current head degradation factor.doubleGet head per stage at design conditions.private doubleGet liquid phase density.doubleGet maximum tolerable gas void fraction.intGet the number of pump stages.doubleGet the surging GVF threshold.booleanCheck if pump has a gas separator.booleanCheck if pump is gas locked.booleanCheck if pump is surging due to high GVF.voidIn this method all thermodynamic and unit operations will be calculated in a steady state calculation.voidsetDegradationCoefficients(double coeffA, double coeffB) Set degradation model coefficients.voidsetGasSeparatorEfficiency(double gasSeparatorEfficiency) Set gas separator efficiency.voidsetHasGasSeparator(boolean hasGasSeparator) Set whether pump has a gas separator.voidsetHeadPerStage(double headPerStage) Set head per stage at design conditions.voidsetMaxGVF(double maxGVF) Set maximum tolerable gas void fraction.voidsetNumberOfStages(int numberOfStages) Set the number of pump stages.voidsetSurgingGVF(double surgingGVF) Set the surging GVF threshold.Methods inherited from class Pump
calculateAsCompressor, displayResult, getCapacityDuty, getCapacityMax, getDuty, getEnergy, getEntropyProduction, getIsentropicEfficiency, getMechanicalDesign, getMinimumFlow, getMolarFlow, getNPSHAvailable, getNPSHMargin, getNPSHRequired, getOutTemperature, getPower, getPower, getPumpChart, getSpeed, getThermoSystem, initMechanicalDesign, isCavitating, isCheckNPSH, setCheckNPSH, setIsentropicEfficiency, setMinimumFlow, setMolarFlow, setNPSHMargin, setOutletPressure, setOutletPressure, setOutTemperature, setPressure, setPressure, setPumpChartType, setSpeed, toJson, toJsonMethods inherited from class TwoPortEquipment
getInletPressure, getInletStream, getInletTemperature, getMassBalance, getOutletPressure, getOutletStream, getOutletTemperature, setInletPressure, setInletStream, setInletTemperature, setOutletStream, setOutletTemperature, validateSetupMethods inherited from class ProcessEquipmentBaseClass
copy, equals, getConditionAnalysisMessage, getController, getEnergyStream, getExergyChange, getMassBalance, getPressure, getPressure, getProperty, getReport_json, getResultTable, getSpecification, getTemperature, getTemperature, hashCode, isActive, isActive, isSetEnergyStream, reportResults, run_step, runConditionAnalysis, setController, setEnergyStream, setEnergyStream, setFlowValveController, setRegulatorOutSignal, setSpecification, setTemperature, solvedMethods inherited from class SimulationBaseClass
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from class NamedBaseClass
getName, getTagName, setName, setTagNameMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface NamedInterface
getName, getTagName, setName, setTagNameMethods inherited from interface ProcessEquipmentInterface
equals, getConditionAnalysisMessage, getController, getExergyChange, getExergyChange, getFluid, getMassBalance, getMassBalance, getPressure, getPressure, getReport_json, getRestCapacity, getResultTable, getSpecification, getTemperature, getTemperature, hashCode, needRecalculation, reportResults, runConditionAnalysis, setController, setRegulatorOutSignal, setSpecification, setTemperature, validateSetupMethods inherited from interface SimulationInterface
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, run, run_step, run_step, runTransient, runTransient, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTime, solvedMethods inherited from interface TwoPortInterface
getInletPressure, getInletStream, getInletTemperature, getInStream, getOutletPressure, getOutletStream, getOutletTemperature, getOutStream, setInletPressure, setInletStream, setInletTemperature, setOutletStream, setOutletTemperature
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
logger
static org.apache.logging.log4j.Logger loggerLogger 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
-
ESPPump
Constructor for ESPPump.- Parameters:
name- name of ESP pumpinletStream- inlet stream
-
-
Method Details
-
run
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:
runin interfaceSimulationInterface- Overrides:
runin classPump- 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 coefficientcoeffB- 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
-