Class WellProductionAllocator

java.lang.Object
neqsim.process.equipment.well.allocation.WellProductionAllocator
All Implemented Interfaces:
Serializable

public class WellProductionAllocator extends Object implements 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:
  • Field Details

  • Constructor Details

    • WellProductionAllocator

      public WellProductionAllocator(String name)
      Creates a well production allocator.
      Parameters:
      name - allocator name
  • Method Details

    • getName

      public String getName()
      Gets the allocator name.
      Returns:
      name
    • addWell

      public WellProductionAllocator.WellData addWell(String wellName)
      Adds a well to the allocator.
      Parameters:
      wellName - well name
      Returns:
      well data object for configuration
    • getWell

      public WellProductionAllocator.WellData getWell(String wellName)
      Gets a well by name.
      Parameters:
      wellName - well name
      Returns:
      well data or null
    • setAllocationMethod

      public void setAllocationMethod(WellProductionAllocator.AllocationMethod method)
      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

      public AllocationResult allocate(double totalOilRate, double totalGasRate, double totalWaterRate)
      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 name
      gasRates - map to store allocated gas rates by well name
      waterRates - map to store allocated water rates by well name
      uncertainties - 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 name
      gasRates - map to store allocated gas rates by well name
      waterRates - map to store allocated water rates by well name
      uncertainties - 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 name
      gasRates - map to store allocated gas rates by well name
      waterRates - map to store allocated water rates by well name
      uncertainties - 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 name
      gasRates - map to store allocated gas rates by well name
      waterRates - map to store allocated water rates by well name
      uncertainties - map to store uncertainty values by well name
    • reconcileRates

      private void reconcileRates(Map<String,Double> rates, double total)
      Reconciles rates to match total.
      Parameters:
      rates - map of rates by well name to reconcile
      total - target total rate to match
    • getWellCount

      public int getWellCount()
      Gets the number of wells.
      Returns:
      well count
    • getWellNames

      public List<String> getWellNames()
      Gets the well names.
      Returns:
      list of well names