Class InjectionWellModel
java.lang.Object
neqsim.process.fielddevelopment.reservoir.InjectionWellModel
- All Implemented Interfaces:
Serializable
Injection well performance model for water and gas injection.
This class provides comprehensive injection well modeling including:
- Injectivity Index: Relationship between injection rate and pressure
- Hall Plot Analysis: Injection performance monitoring
- Wellbore Hydraulics: Pressure losses in injection tubing
- Fracture Pressure: Maximum safe injection pressure
- Skin Factor Effects: Near-wellbore damage or stimulation
Injectivity Index
The injectivity index (II) relates injection rate to bottomhole pressure:
q = II × (P_wf - P_res)
where q is injection rate, P_wf is flowing bottomhole pressure, and P_res is average reservoir pressure. Injectivity depends on:
- Permeability and thickness (kh)
- Fluid viscosity at reservoir conditions
- Near-wellbore skin factor
- Wellbore radius and drainage radius
Hall Plot
The Hall plot is used to monitor injection well performance:
∫(P_wf - P_res)dt vs. Cumulative Injection
Slope changes indicate:
- Increasing slope: Formation damage (skin increase)
- Decreasing slope: Fracturing or channeling
- Constant slope: Stable injection
Usage Example
InjectionWellModel well = new InjectionWellModel();
well.setWellType(InjectionType.WATER_INJECTOR);
well.setReservoirPressure(250.0, "bara");
well.setFormationPermeability(100.0, "mD");
well.setFormationThickness(30.0, "m");
well.setSkinFactor(2.0);
well.setWellDepth(3000.0, "m");
well.setTubingID(0.1, "m");
well.setMaxBHP(350.0, "bara"); // Below fracture pressure
InjectionWellResult result = well.calculate(10000.0); // Target 10000 Sm3/day
System.out.println("Achievable rate: " + result.getAchievableRate() + " Sm3/day");
System.out.println("Required WHI pressure: " + result.getWellheadPressure() + " bara");
System.out.println("BHP: " + result.getBottomholePressure() + " bara");
System.out.println("Pump power: " + result.getPumpPower() + " kW");
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classPattern class for configuring multiple injection wells.static enumInjection well types.static classInjection well calculation result. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate static final doubleprivate InjectionWellModel.InjectionTypeprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate static final longprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate double -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new injection well model with default parameters.InjectionWellModel(InjectionWellModel.InjectionType injectionType) Creates a new injection well model. -
Method Summary
Modifier and TypeMethodDescriptioncalculate(double targetRateSm3d) Calculates injection well performance for target rate.private doublecalculateFrictionFactor(double reynolds) Calculates Darcy friction factor.private doublecalculateFrictionPressureDrop(double rateSm3d, double density) Calculates friction pressure drop in tubing.private voidCalculates Hall plot parameters for performance monitoring.private doubleCalculates injectivity index using Darcy's law.Calculates maximum injection rate at given constraints.private doublecalculatePumpPower(double rateSm3d, double deltaPbar) Calculates pump power requirement.private doublecalculateWellheadPressure(double rateSm3d, double bhp) Calculates wellhead injection pressure from BHP.calculateWithInterference(double targetRate, double[] producerDistances, double[] producerRates) Calculates injection with pressure interference from nearby producers.setDrainageRadius(double radius) Sets drainage radius.setFormationPermeability(double permeability, String unit) Sets formation permeability.setFormationThickness(double thickness, String unit) Sets formation thickness.setFracturePressure(double pressure, String unit) Sets fracture pressure.Sets maximum BHP (operating limit below fracture pressure).setPumpEfficiency(double efficiency) Sets pump efficiency.setReservoirPressure(double pressure, String unit) Sets reservoir pressure.setReservoirTemperature(double temperature, String unit) Sets reservoir temperature.setSkinFactor(double skin) Sets skin factor.setSurfaceInjectionPressure(double pressure, String unit) Sets surface injection pressure available.setTubingID(double diameter, String unit) Sets tubing ID.setWaterViscosity(double viscosity) Sets water viscosity at reservoir conditions.setWellboreRadius(double radius) Sets wellbore radius.setWellDepth(double depth, String unit) Sets well depth.Sets injection well type.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
GRAVITY
private static final double GRAVITY- See Also:
-
injectionType
-
reservoirPressure
private double reservoirPressure -
reservoirTemperature
private double reservoirTemperature -
formationPermeability
private double formationPermeability -
formationThickness
private double formationThickness -
drainageRadius
private double drainageRadius -
wellboreRadius
private double wellboreRadius -
skinFactor
private double skinFactor -
wellDepth
private double wellDepth -
tubingID
private double tubingID -
tubingRoughness
private double tubingRoughness -
fracturePressure
private double fracturePressure -
maxBHP
private double maxBHP -
minWHP
private double minWHP -
surfaceInjectionPressure
private double surfaceInjectionPressure -
waterDensity
private double waterDensity -
waterViscosity
private double waterViscosity -
gasMolecularWeight
private double gasMolecularWeight -
gasViscosity
private double gasViscosity -
formationWaterViscosity
private double formationWaterViscosity -
pumpEfficiency
private double pumpEfficiency
-
-
Constructor Details
-
InjectionWellModel
public InjectionWellModel()Creates a new injection well model with default parameters. -
InjectionWellModel
Creates a new injection well model.- Parameters:
injectionType- type of injection well
-
-
Method Details
-
calculate
Calculates injection well performance for target rate.- Parameters:
targetRateSm3d- target injection rate (Sm3/day)- Returns:
- injection well result
-
calculateMaximumRate
Calculates maximum injection rate at given constraints.- Returns:
- maximum injection result
-
calculateInjectivityIndex
private double calculateInjectivityIndex()Calculates injectivity index using Darcy's law.For radial flow: II = 2π × k × h / (μ × B × (ln(re/rw) + S))
- Returns:
- injectivity index (Sm3/day/bar)
-
calculateWellheadPressure
private double calculateWellheadPressure(double rateSm3d, double bhp) Calculates wellhead injection pressure from BHP.- Parameters:
rateSm3d- injection rate (Sm3/day)bhp- bottomhole pressure (bara)- Returns:
- wellhead pressure (bara)
-
calculateFrictionPressureDrop
private double calculateFrictionPressureDrop(double rateSm3d, double density) Calculates friction pressure drop in tubing.- Parameters:
rateSm3d- rate (Sm3/day)density- fluid density (kg/m³)- Returns:
- friction pressure drop (bar)
-
calculateFrictionFactor
private double calculateFrictionFactor(double reynolds) Calculates Darcy friction factor.- Parameters:
reynolds- Reynolds number- Returns:
- friction factor
-
calculatePumpPower
private double calculatePumpPower(double rateSm3d, double deltaPbar) Calculates pump power requirement.- Parameters:
rateSm3d- injection rate (Sm3/day)deltaPbar- pressure boost (bar)- Returns:
- pump power (kW)
-
calculateHallPlotParameters
Calculates Hall plot parameters for performance monitoring.- Parameters:
result- injection result to populate
-
calculateWithInterference
public InjectionWellModel.InjectionWellResult calculateWithInterference(double targetRate, double[] producerDistances, double[] producerRates) Calculates injection with pressure interference from nearby producers.- Parameters:
targetRate- target rate (Sm3/day)producerDistances- distances to nearby producers (m)producerRates- production rates of nearby wells (Sm3/day)- Returns:
- adjusted injection result
-
setWellType
Sets injection well type.- Parameters:
type- injection type- Returns:
- this for chaining
-
setReservoirPressure
Sets reservoir pressure.- Parameters:
pressure- pressure valueunit- unit ("bara", "psia")- Returns:
- this for chaining
-
setReservoirTemperature
Sets reservoir temperature.- Parameters:
temperature- temperature valueunit- unit ("K", "C", "F")- Returns:
- this for chaining
-
setFormationPermeability
Sets formation permeability.- Parameters:
permeability- permeability valueunit- unit ("mD", "D")- Returns:
- this for chaining
-
setFormationThickness
Sets formation thickness.- Parameters:
thickness- thickness valueunit- unit ("m", "ft")- Returns:
- this for chaining
-
setSkinFactor
Sets skin factor.- Parameters:
skin- skin factor (dimensionless)- Returns:
- this for chaining
-
setWellDepth
Sets well depth.- Parameters:
depth- depth valueunit- unit ("m", "ft")- Returns:
- this for chaining
-
setTubingID
Sets tubing ID.- Parameters:
diameter- diameter valueunit- unit ("m", "in", "mm")- Returns:
- this for chaining
-
setMaxBHP
Sets maximum BHP (operating limit below fracture pressure).- Parameters:
pressure- pressure valueunit- unit ("bara", "psia")- Returns:
- this for chaining
-
setFracturePressure
Sets fracture pressure.- Parameters:
pressure- pressure valueunit- unit ("bara", "psia")- Returns:
- this for chaining
-
setSurfaceInjectionPressure
Sets surface injection pressure available.- Parameters:
pressure- pressure valueunit- unit ("bara", "psia")- Returns:
- this for chaining
-
setWaterViscosity
Sets water viscosity at reservoir conditions.- Parameters:
viscosity- viscosity (cP)- Returns:
- this for chaining
-
setDrainageRadius
Sets drainage radius.- Parameters:
radius- radius (m)- Returns:
- this for chaining
-
setWellboreRadius
Sets wellbore radius.- Parameters:
radius- radius (m)- Returns:
- this for chaining
-
setPumpEfficiency
Sets pump efficiency.- Parameters:
efficiency- efficiency (0-1)- Returns:
- this for chaining
-