Class ProductionLoad

java.lang.Object
neqsim.process.fielddevelopment.tieback.capacity.ProductionLoad
All Implemented Interfaces:
Serializable

public final class ProductionLoad extends Object implements Serializable
Immutable production load for one planning period in a host tie-in study.

Rates are average daily rates for the period. Volumes are calculated by multiplying rates by the period length in days. Oil is reported in stock-tank barrels per day, while liquid capacity checks use cubic metres per day; if an explicit total-liquid rate is not provided, oil is converted to cubic metres and added to water.

Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • BARREL_TO_M3

      public static final double BARREL_TO_M3
      Conversion factor from stock-tank barrel to cubic metre.
      See Also:
    • periodName

      private final String periodName
      Period label used in reports.
    • year

      private final int year
      Calendar year for discounting and profile alignment.
    • gasRateMSm3d

      private final double gasRateMSm3d
      Average gas rate in million standard cubic metres per day.
    • oilRateBopd

      private final double oilRateBopd
      Average oil rate in stock-tank barrels per day.
    • waterRateM3d

      private final double waterRateM3d
      Average produced-water rate in cubic metres per day.
    • liquidRateM3d

      private final double liquidRateM3d
      Explicit total-liquid rate in cubic metres per day, or zero to infer from oil and water.
    • periodLengthDays

      private final double periodLengthDays
      Length of the planning period in days.
    • gasValueUsdPerMSm3

      private final double gasValueUsdPerMSm3
      Gas value in USD per million standard cubic metre.
    • oilValueUsdPerBbl

      private final double oilValueUsdPerBbl
      Oil value in USD per stock-tank barrel.
    • waterValueUsdPerM3

      private final double waterValueUsdPerM3
      Water value in USD per cubic metre, often negative for handling cost.
    • liquidValueUsdPerM3

      private final double liquidValueUsdPerM3
      Liquid value in USD per cubic metre for explicit total-liquid streams.
  • Constructor Details

    • ProductionLoad

      public ProductionLoad(int year, double gasRateMSm3d, double oilRateBopd, double waterRateM3d, double liquidRateM3d)
      Creates a production load with a default period name and one-year length.
      Parameters:
      year - calendar year for the period
      gasRateMSm3d - average gas rate in MSm3/d
      oilRateBopd - average oil rate in bbl/d
      waterRateM3d - average water rate in m3/d
      liquidRateM3d - explicit total-liquid rate in m3/d, or zero to infer from oil and water
    • ProductionLoad

      public ProductionLoad(String periodName, int year, double gasRateMSm3d, double oilRateBopd, double waterRateM3d, double liquidRateM3d)
      Creates a production load with a named period and one-year length.
      Parameters:
      periodName - display name for the period
      year - calendar year for the period
      gasRateMSm3d - average gas rate in MSm3/d
      oilRateBopd - average oil rate in bbl/d
      waterRateM3d - average water rate in m3/d
      liquidRateM3d - explicit total-liquid rate in m3/d, or zero to infer from oil and water
    • ProductionLoad

      public ProductionLoad(String periodName, int year, double gasRateMSm3d, double oilRateBopd, double waterRateM3d, double liquidRateM3d, double periodLengthDays, double gasValueUsdPerMSm3, double oilValueUsdPerBbl, double waterValueUsdPerM3, double liquidValueUsdPerM3)
      Creates a fully specified production load.
      Parameters:
      periodName - display name for the period
      year - calendar year for the period
      gasRateMSm3d - average gas rate in MSm3/d
      oilRateBopd - average oil rate in bbl/d
      waterRateM3d - average water rate in m3/d
      liquidRateM3d - explicit total-liquid rate in m3/d, or zero to infer from oil and water
      periodLengthDays - number of days represented by the period
      gasValueUsdPerMSm3 - gas value in USD/MSm3
      oilValueUsdPerBbl - oil value in USD/bbl
      waterValueUsdPerM3 - water value in USD/m3
      liquidValueUsdPerM3 - liquid value in USD/m3
  • Method Details

    • zero

      public static ProductionLoad zero(int year, String periodName)
      Creates a zero load for a planning period.
      Parameters:
      year - calendar year for the period
      periodName - display name for the period
      Returns:
      zero production load
    • getPeriodName

      public String getPeriodName()
      Gets the period display name.
      Returns:
      period display name
    • getYear

      public int getYear()
      Gets the calendar year.
      Returns:
      calendar year
    • getGasRateMSm3d

      public double getGasRateMSm3d()
      Gets the average gas rate.
      Returns:
      gas rate in MSm3/d
    • getOilRateBopd

      public double getOilRateBopd()
      Gets the average oil rate.
      Returns:
      oil rate in bbl/d
    • getWaterRateM3d

      public double getWaterRateM3d()
      Gets the average produced-water rate.
      Returns:
      water rate in m3/d
    • getLiquidRateM3d

      public double getLiquidRateM3d()
      Gets the explicit total-liquid rate.
      Returns:
      explicit liquid rate in m3/d, or zero when inferred from oil and water
    • getTotalLiquidRateM3d

      public double getTotalLiquidRateM3d()
      Gets the total liquid rate used for capacity checks.
      Returns:
      total liquid rate in m3/d
    • getPeriodLengthDays

      public double getPeriodLengthDays()
      Gets the period length.
      Returns:
      period length in days
    • getGasValueUsdPerMSm3

      public double getGasValueUsdPerMSm3()
      Gets the gas value.
      Returns:
      gas value in USD/MSm3
    • getOilValueUsdPerBbl

      public double getOilValueUsdPerBbl()
      Gets the oil value.
      Returns:
      oil value in USD/bbl
    • getWaterValueUsdPerM3

      public double getWaterValueUsdPerM3()
      Gets the water value.
      Returns:
      water value in USD/m3
    • getLiquidValueUsdPerM3

      public double getLiquidValueUsdPerM3()
      Gets the liquid value.
      Returns:
      liquid value in USD/m3
    • getGasVolumeMSm3

      public double getGasVolumeMSm3()
      Calculates period gas volume.
      Returns:
      gas volume in MSm3 for the period
    • getOilVolumeBbl

      public double getOilVolumeBbl()
      Calculates period oil volume.
      Returns:
      oil volume in barrels for the period
    • getWaterVolumeM3

      public double getWaterVolumeM3()
      Calculates period produced-water volume.
      Returns:
      water volume in m3 for the period
    • getLiquidVolumeM3

      public double getLiquidVolumeM3()
      Calculates period total-liquid volume.
      Returns:
      liquid volume in m3 for the period
    • getDailyValueUsd

      public double getDailyValueUsd()
      Calculates daily value using embedded commodity values.
      Returns:
      daily value in USD/d
    • getPeriodValueUsd

      public double getPeriodValueUsd()
      Calculates total period value using embedded commodity values.
      Returns:
      total value in USD for the period
    • isZero

      public boolean isZero()
      Returns true if all stream rates are effectively zero.
      Returns:
      true if the load has no production
    • withPeriod

      public ProductionLoad withPeriod(String newPeriodName, int newYear)
      Creates a load with a different period name and year.
      Parameters:
      newPeriodName - new period name
      newYear - new calendar year
      Returns:
      copied load with the new period identity
    • withCommodityValues

      public ProductionLoad withCommodityValues(double gasUsdPerMSm3, double oilUsdPerBbl, double waterUsdPerM3, double liquidUsdPerM3)
      Creates a load with updated commodity values.
      Parameters:
      gasUsdPerMSm3 - gas value in USD/MSm3
      oilUsdPerBbl - oil value in USD/bbl
      waterUsdPerM3 - water value in USD/m3
      liquidUsdPerM3 - liquid value in USD/m3
      Returns:
      copied load with updated values
    • withPeriodLengthDays

      public ProductionLoad withPeriodLengthDays(double newPeriodLengthDays)
      Creates a load with an updated period length.
      Parameters:
      newPeriodLengthDays - number of days represented by the load
      Returns:
      copied load with updated period length
    • scale

      public ProductionLoad scale(double factor)
      Scales all stream rates by a non-negative factor.
      Parameters:
      factor - multiplier applied to all rates
      Returns:
      scaled production load
    • plus

      public ProductionLoad plus(ProductionLoad other)
      Adds another load to this load.
      Parameters:
      other - load to add
      Returns:
      combined production load
    • subtractNonNegative

      public ProductionLoad subtractNonNegative(ProductionLoad other)
      Subtracts another load and floors each rate at zero.
      Parameters:
      other - load to subtract
      Returns:
      non-negative difference load
    • combineLiquidRates

      private static double combineLiquidRates(ProductionLoad first, ProductionLoad second)
      Combines explicit liquid rates when either load uses them.
      Parameters:
      first - first load
      second - second load
      Returns:
      combined explicit total-liquid rate or zero when both loads infer liquid rate
    • toString

      public String toString()
      Overrides:
      toString in class Object