Class GasLiftOptimizer.PerformanceCurve
java.lang.Object
neqsim.process.fielddevelopment.screening.GasLiftOptimizer.PerformanceCurve
- All Implemented Interfaces:
Serializable
- Enclosing class:
GasLiftOptimizer
Well performance curve representation.
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptiondouble[]Gas injection rates (Sm³/day).doubleNatural flow rate (zero injection).double[]Corresponding oil rates (Sm³/day).doubleOptimal GLR from performance curve analysis.private static final long -
Constructor Summary
ConstructorsConstructorDescriptionPerformanceCurve(double[] gasRates, double[] oilRates) Creates a performance curve from data points.PerformanceCurve(double naturalRate, double maxRate, double optimalGas) Creates a curve from a parametric model (simplified hyperbolic). -
Method Summary
Modifier and TypeMethodDescriptionprivate doublecalculateOilRate(double gas, double natural, double maxRate, double optGas) Calculates oil rate from a parametric gas lift performance model.private voidFinds the optimal gas-liquid ratio from the performance curve.doublegetMarginalResponse(double gasRate) Calculates marginal oil response (dQoil/dQgas) at given gas rate.doublegetOilRate(double gasRate) Calculates oil rate for a given gas injection using curve interpolation.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
gasRates
public double[] gasRatesGas injection rates (Sm³/day). -
oilRates
public double[] oilRatesCorresponding oil rates (Sm³/day). -
naturalFlowRate
public double naturalFlowRateNatural flow rate (zero injection). -
optimalGLR
public double optimalGLROptimal GLR from performance curve analysis.
-
-
Constructor Details
-
PerformanceCurve
public PerformanceCurve(double[] gasRates, double[] oilRates) Creates a performance curve from data points.- Parameters:
gasRates- gas injection ratesoilRates- corresponding oil production rates
-
PerformanceCurve
public PerformanceCurve(double naturalRate, double maxRate, double optimalGas) Creates a curve from a parametric model (simplified hyperbolic).- Parameters:
naturalRate- natural flow rate (Sm³/d)maxRate- maximum rate with gas lift (Sm³/d)optimalGas- optimal gas injection (Sm³/d)
-
-
Method Details
-
getOilRate
public double getOilRate(double gasRate) Calculates oil rate for a given gas injection using curve interpolation.- Parameters:
gasRate- gas injection rate (Sm³/d)- Returns:
- oil rate (Sm³/d)
-
getMarginalResponse
public double getMarginalResponse(double gasRate) Calculates marginal oil response (dQoil/dQgas) at given gas rate.- Parameters:
gasRate- gas injection rate (Sm³/d)- Returns:
- marginal response (Sm³ oil / Sm³ gas)
-
findOptimalGLR
private void findOptimalGLR()Finds the optimal gas-liquid ratio from the performance curve.The optimal GLR is the ratio of gas injection rate to oil rate at the point of maximum oil production on the performance curve. Beyond this point, additional gas injection provides diminishing returns or may even reduce production.
-
calculateOilRate
private double calculateOilRate(double gas, double natural, double maxRate, double optGas) Calculates oil rate from a parametric gas lift performance model.Uses a modified logistic function with decline to model typical gas lift behavior:
Q_oil = Q_natural + ΔQ × η(x) × d(x)where:
- x = Q_gas / Q_gas_optimal (normalized gas rate)
- η(x) = 1 / (1 + e^(-5(x-0.3))) is the efficiency factor (logistic)
- d(x) = e^(-0.5×max(0, x-1.5)) is the decline factor at high GLR
- ΔQ = Q_max - Q_natural is the maximum incremental production
This model captures: (1) rapid initial response, (2) plateau near optimal GLR, (3) decline at excessive gas rates due to liquid loading.
- Parameters:
gas- gas injection rate (Sm³/d)natural- natural flow rate without gas lift (Sm³/d)maxRate- maximum achievable rate with optimal gas lift (Sm³/d)optGas- optimal gas injection rate (Sm³/d)- Returns:
- calculated oil rate (Sm³/d)
-