Class ArtificialLiftScreener

java.lang.Object
neqsim.process.fielddevelopment.screening.ArtificialLiftScreener
All Implemented Interfaces:
Serializable

public class ArtificialLiftScreener extends Object implements Serializable
Artificial lift screening and selection tool.

This class provides comprehensive artificial lift method comparison and selection based on reservoir and well conditions. Supported methods include:

  • Natural Flow: Baseline case with no artificial lift
  • Gas Lift: Continuous or intermittent gas injection
  • ESP (Electrical Submersible Pump): Downhole electric pump
  • Rod Pump: Sucker rod pump (beam pump)
  • PCP (Progressive Cavity Pump): For viscous fluids
  • Jet Pump: Hydraulic power fluid system

Screening Methodology

The screening process follows industry best practices:

  1. Technical Screening: Eliminates infeasible methods based on operating envelope
  2. Performance Calculation: Estimates production rate for each method
  3. Economic Ranking: Ranks methods by NPV or cost per barrel lifted
  4. Risk Assessment: Considers reliability and operational complexity

Operating Envelope Limits

Operating Envelope Limits by Method
Method Max Depth (m) Max Rate (Sm3/d) Max GOR Max Temp (°C) Max Visc (cP)
Gas Lift 5000 5000 5000 200 50
ESP 4500 15000 500 180 200
Rod Pump 3000 500 200 150 1000
PCP 2500 800 100 130 10000
Jet Pump 5000 2000 1000 200 50

Usage Example

ArtificialLiftScreener screener = new ArtificialLiftScreener();
screener.setReservoirPressure(250.0, "bara");
screener.setReservoirTemperature(90.0, "C");
screener.setWellheadPressure(15.0, "bara");
screener.setWellDepth(2800.0, "m");
screener.setProductivityIndex(8.0);
screener.setOilGravity(32.0, "API");
screener.setWaterCut(0.40);
screener.setFormationGOR(150.0);
screener.setOilViscosity(5.0, "cP");
screener.setGasLiftAvailable(true);
screener.setElectricityAvailable(true);

ScreeningResult result = screener.screen();

System.out.println("Recommended: " + result.getRecommendedMethod());
for (MethodResult method : result.getAllMethods()) {
  System.out.println(method);
}
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • reservoirPressure

      private double reservoirPressure
    • reservoirTemperature

      private double reservoirTemperature
    • wellheadPressure

      private double wellheadPressure
    • wellheadTemperature

      private double wellheadTemperature
    • wellDepth

      private double wellDepth
    • tubingID

      private double tubingID
    • productivityIndex

      private double productivityIndex
    • bubblePointPressure

      private double bubblePointPressure
    • oilDensityStd

      private double oilDensityStd
    • waterDensity

      private double waterDensity
    • formationGOR

      private double formationGOR
    • waterCut

      private double waterCut
    • oilViscosity

      private double oilViscosity
    • gasLiftAvailable

      private boolean gasLiftAvailable
    • electricityAvailable

      private boolean electricityAvailable
    • hydraulicPowerAvailable

      private boolean hydraulicPowerAvailable
    • gasLiftPressure

      private double gasLiftPressure
    • electricityPower

      private double electricityPower
    • oilPrice

      private double oilPrice
    • gasCost

      private double gasCost
    • electricityCost

      private double electricityCost
    • discountRate

      private double discountRate
    • economicLife

      private int economicLife
    • targetRate

      private double targetRate
  • Constructor Details

    • ArtificialLiftScreener

      public ArtificialLiftScreener()
      Creates a new artificial lift screener.
  • Method Details

    • screen

      Performs artificial lift screening.
      Returns:
      screening result with ranked methods
    • evaluateNaturalFlow

      private ArtificialLiftScreener.MethodResult evaluateNaturalFlow()
      Evaluates natural flow performance.
      Returns:
      method result
    • evaluateGasLift

      private ArtificialLiftScreener.MethodResult evaluateGasLift()
      Evaluates gas lift performance using GasLiftCalculator.
      Returns:
      method result or null if infeasible
    • evaluateESP

      private ArtificialLiftScreener.MethodResult evaluateESP()
      Evaluates ESP performance.
      Returns:
      method result or null if infeasible
    • evaluateRodPump

      private ArtificialLiftScreener.MethodResult evaluateRodPump()
      Evaluates rod pump (beam pump) performance.
      Returns:
      method result
    • evaluatePCP

      private ArtificialLiftScreener.MethodResult evaluatePCP()
      Evaluates PCP (progressive cavity pump) performance.
      Returns:
      method result
    • evaluateJetPump

      private ArtificialLiftScreener.MethodResult evaluateJetPump()
      Evaluates jet pump performance.
      Returns:
      method result
    • calculateAverageFluidDensity

      private double calculateAverageFluidDensity(double glr)
    • estimateIntakePressure

      private double estimateIntakePressure()
    • calculateGVF

      private double calculateGVF(double pressure)
    • calculateHydraulicPower

      private double calculateHydraulicPower(double rate)
    • setReservoirPressure

      public ArtificialLiftScreener setReservoirPressure(double pressure, String unit)
      Sets reservoir pressure.
      Parameters:
      pressure - pressure value
      unit - unit ("bara", "psia")
      Returns:
      this for chaining
    • setReservoirTemperature

      public ArtificialLiftScreener setReservoirTemperature(double temperature, String unit)
      Sets reservoir temperature.
      Parameters:
      temperature - temperature value
      unit - unit ("K", "C", "F")
      Returns:
      this for chaining
    • setWellheadPressure

      public ArtificialLiftScreener setWellheadPressure(double pressure, String unit)
      Sets wellhead pressure.
      Parameters:
      pressure - pressure value
      unit - unit
      Returns:
      this for chaining
    • setWellDepth

      public ArtificialLiftScreener setWellDepth(double depth, String unit)
      Sets well depth (TVD).
      Parameters:
      depth - depth value
      unit - unit ("m", "ft")
      Returns:
      this for chaining
    • setProductivityIndex

      public ArtificialLiftScreener setProductivityIndex(double pi)
      Sets productivity index.
      Parameters:
      pi - productivity index (Sm3/day/bar)
      Returns:
      this for chaining
    • setOilGravity

      public ArtificialLiftScreener setOilGravity(double gravity, String unit)
      Sets oil gravity.
      Parameters:
      gravity - gravity value
      unit - unit ("API", "SG")
      Returns:
      this for chaining
    • setWaterCut

      public ArtificialLiftScreener setWaterCut(double waterCut)
      Sets water cut.
      Parameters:
      waterCut - water cut fraction (0-1)
      Returns:
      this for chaining
    • setFormationGOR

      public ArtificialLiftScreener setFormationGOR(double gor)
      Sets formation GOR.
      Parameters:
      gor - formation GOR (Sm3/Sm3)
      Returns:
      this for chaining
    • setOilViscosity

      public ArtificialLiftScreener setOilViscosity(double viscosity, String unit)
      Sets oil viscosity.
      Parameters:
      viscosity - viscosity value
      unit - unit ("cP", "Pa.s")
      Returns:
      this for chaining
    • setGasLiftAvailable

      public ArtificialLiftScreener setGasLiftAvailable(boolean available)
      Sets gas lift availability.
      Parameters:
      available - true if gas lift is available
      Returns:
      this for chaining
    • setElectricityAvailable

      public ArtificialLiftScreener setElectricityAvailable(boolean available)
      Sets electricity availability.
      Parameters:
      available - true if electricity is available
      Returns:
      this for chaining
    • setGasLiftPressure

      public ArtificialLiftScreener setGasLiftPressure(double pressure)
      Sets gas lift pressure.
      Parameters:
      pressure - pressure (bara)
      Returns:
      this for chaining
    • setElectricityPower

      public ArtificialLiftScreener setElectricityPower(double power)
      Sets available electricity power.
      Parameters:
      power - power (kW)
      Returns:
      this for chaining
    • setOilPrice

      public ArtificialLiftScreener setOilPrice(double price)
      Sets oil price.
      Parameters:
      price - price (USD/bbl)
      Returns:
      this for chaining
    • setBubblePointPressure

      public ArtificialLiftScreener setBubblePointPressure(double pressure)
      Sets bubble point pressure.
      Parameters:
      pressure - bubble point (bara)
      Returns:
      this for chaining
    • setTubingID

      public ArtificialLiftScreener setTubingID(double diameter)
      Sets tubing ID.
      Parameters:
      diameter - diameter (m)
      Returns:
      this for chaining