Class WellProductionAllocator
java.lang.Object
neqsim.process.equipment.well.allocation.WellProductionAllocator
- All Implemented Interfaces:
Serializable
Allocates commingled production back to individual wells.
Implements multiple allocation methods commonly used in production accounting:
- Well test allocation: Uses periodic well test data
- VFM-based allocation: Uses virtual flow meter estimates
- Choke model allocation: Uses choke performance curves
- Combined method: Weighted combination of above
Designed for integration with AI optimization platforms that require real-time production allocation for reservoir management.
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumAllocation methods.static classData for a single well. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Stringprivate doubleprivate static final longprivate final List<WellProductionAllocator.WellData> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionAdds a well to the allocator.allocate(double totalOilRate, double totalGasRate, double totalWaterRate) Allocates total production to individual wells.private voidallocateByChokeModel(Map<String, Double> oilRates, Map<String, Double> gasRates, Map<String, Double> waterRates, Map<String, Double> uncertainties) Allocates based on choke model.private voidallocateByVFM(Map<String, Double> oilRates, Map<String, Double> gasRates, Map<String, Double> waterRates, Map<String, Double> uncertainties) Allocates based on VFM estimates.private voidallocateByWellTest(Map<String, Double> oilRates, Map<String, Double> gasRates, Map<String, Double> waterRates, Map<String, Double> uncertainties) Allocates based on well test data.private voidallocateCombined(Map<String, Double> oilRates, Map<String, Double> gasRates, Map<String, Double> waterRates, Map<String, Double> uncertainties) Allocates using weighted combination of methods.getName()Gets the allocator name.Gets a well by name.intGets the number of wells.Gets the well names.private voidreconcileRates(Map<String, Double> rates, double total) Reconciles rates to match total.voidSets the allocation method.voidsetReconciliationTolerance(double tolerance) Sets the reconciliation tolerance.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
name
-
wells
-
method
-
reconciliationTolerance
private double reconciliationTolerance
-
-
Constructor Details
-
WellProductionAllocator
Creates a well production allocator.- Parameters:
name- allocator name
-
-
Method Details
-
getName
-
addWell
Adds a well to the allocator.- Parameters:
wellName- well name- Returns:
- well data object for configuration
-
getWell
Gets a well by name.- Parameters:
wellName- well name- Returns:
- well data or null
-
setAllocationMethod
Sets the allocation method.- Parameters:
method- allocation method
-
setReconciliationTolerance
public void setReconciliationTolerance(double tolerance) Sets the reconciliation tolerance.- Parameters:
tolerance- relative tolerance for balancing (e.g., 0.01 for 1%)
-
allocate
Allocates total production to individual wells.- Parameters:
totalOilRate- total oil rate at separator (Sm3/day)totalGasRate- total gas rate at separator (Sm3/day)totalWaterRate- total water rate at separator (Sm3/day)- Returns:
- allocation result
-
allocateByWellTest
private void allocateByWellTest(Map<String, Double> oilRates, Map<String, Double> gasRates, Map<String, Double> waterRates, Map<String, Double> uncertainties) Allocates based on well test data.- Parameters:
oilRates- map to store allocated oil rates by well namegasRates- map to store allocated gas rates by well namewaterRates- map to store allocated water rates by well nameuncertainties- map to store allocation uncertainties by well name
-
allocateByVFM
private void allocateByVFM(Map<String, Double> oilRates, Map<String, Double> gasRates, Map<String, Double> waterRates, Map<String, Double> uncertainties) Allocates based on VFM estimates.- Parameters:
oilRates- map to store allocated oil rates by well namegasRates- map to store allocated gas rates by well namewaterRates- map to store allocated water rates by well nameuncertainties- map to store uncertainty values by well name
-
allocateByChokeModel
private void allocateByChokeModel(Map<String, Double> oilRates, Map<String, Double> gasRates, Map<String, Double> waterRates, Map<String, Double> uncertainties) Allocates based on choke model.- Parameters:
oilRates- map to store allocated oil rates by well namegasRates- map to store allocated gas rates by well namewaterRates- map to store allocated water rates by well nameuncertainties- map to store uncertainty values by well name
-
allocateCombined
private void allocateCombined(Map<String, Double> oilRates, Map<String, Double> gasRates, Map<String, Double> waterRates, Map<String, Double> uncertainties) Allocates using weighted combination of methods.- Parameters:
oilRates- map to store allocated oil rates by well namegasRates- map to store allocated gas rates by well namewaterRates- map to store allocated water rates by well nameuncertainties- map to store uncertainty values by well name
-
reconcileRates
-
getWellCount
public int getWellCount()Gets the number of wells.- Returns:
- well count
-
getWellNames
-