Class ProductionLoad
java.lang.Object
neqsim.process.fielddevelopment.tieback.capacity.ProductionLoad
- All Implemented Interfaces:
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 Summary
FieldsModifier and TypeFieldDescriptionstatic final doubleConversion factor from stock-tank barrel to cubic metre.private final doubleAverage gas rate in million standard cubic metres per day.private final doubleGas value in USD per million standard cubic metre.private final doubleExplicit total-liquid rate in cubic metres per day, or zero to infer from oil and water.private final doubleLiquid value in USD per cubic metre for explicit total-liquid streams.private final doubleAverage oil rate in stock-tank barrels per day.private final doubleOil value in USD per stock-tank barrel.private final doubleLength of the planning period in days.private final StringPeriod label used in reports.private static final longSerialization version UID.private final doubleAverage produced-water rate in cubic metres per day.private final doubleWater value in USD per cubic metre, often negative for handling cost.private final intCalendar year for discounting and profile alignment. -
Constructor Summary
ConstructorsConstructorDescriptionProductionLoad(int year, double gasRateMSm3d, double oilRateBopd, double waterRateM3d, double liquidRateM3d) Creates a production load with a default period name and one-year length.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.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. -
Method Summary
Modifier and TypeMethodDescriptionprivate static doublecombineLiquidRates(ProductionLoad first, ProductionLoad second) Combines explicit liquid rates when either load uses them.doubleCalculates daily value using embedded commodity values.doubleGets the average gas rate.doubleGets the gas value.doubleCalculates period gas volume.doubleGets the explicit total-liquid rate.doubleGets the liquid value.doubleCalculates period total-liquid volume.doubleGets the average oil rate.doubleGets the oil value.doubleCalculates period oil volume.doubleGets the period length.Gets the period display name.doubleCalculates total period value using embedded commodity values.doubleGets the total liquid rate used for capacity checks.doubleGets the average produced-water rate.doubleGets the water value.doubleCalculates period produced-water volume.intgetYear()Gets the calendar year.booleanisZero()Returns true if all stream rates are effectively zero.plus(ProductionLoad other) Adds another load to this load.scale(double factor) Scales all stream rates by a non-negative factor.Subtracts another load and floors each rate at zero.toString()withCommodityValues(double gasUsdPerMSm3, double oilUsdPerBbl, double waterUsdPerM3, double liquidUsdPerM3) Creates a load with updated commodity values.withPeriod(String newPeriodName, int newYear) Creates a load with a different period name and year.withPeriodLengthDays(double newPeriodLengthDays) Creates a load with an updated period length.static ProductionLoadCreates a zero load for a planning period.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
BARREL_TO_M3
public static final double BARREL_TO_M3Conversion factor from stock-tank barrel to cubic metre.- See Also:
-
periodName
Period label used in reports. -
year
private final int yearCalendar year for discounting and profile alignment. -
gasRateMSm3d
private final double gasRateMSm3dAverage gas rate in million standard cubic metres per day. -
oilRateBopd
private final double oilRateBopdAverage oil rate in stock-tank barrels per day. -
waterRateM3d
private final double waterRateM3dAverage produced-water rate in cubic metres per day. -
liquidRateM3d
private final double liquidRateM3dExplicit total-liquid rate in cubic metres per day, or zero to infer from oil and water. -
periodLengthDays
private final double periodLengthDaysLength of the planning period in days. -
gasValueUsdPerMSm3
private final double gasValueUsdPerMSm3Gas value in USD per million standard cubic metre. -
oilValueUsdPerBbl
private final double oilValueUsdPerBblOil value in USD per stock-tank barrel. -
waterValueUsdPerM3
private final double waterValueUsdPerM3Water value in USD per cubic metre, often negative for handling cost. -
liquidValueUsdPerM3
private final double liquidValueUsdPerM3Liquid 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 periodgasRateMSm3d- average gas rate in MSm3/doilRateBopd- average oil rate in bbl/dwaterRateM3d- average water rate in m3/dliquidRateM3d- 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 periodyear- calendar year for the periodgasRateMSm3d- average gas rate in MSm3/doilRateBopd- average oil rate in bbl/dwaterRateM3d- average water rate in m3/dliquidRateM3d- 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 periodyear- calendar year for the periodgasRateMSm3d- average gas rate in MSm3/doilRateBopd- average oil rate in bbl/dwaterRateM3d- average water rate in m3/dliquidRateM3d- explicit total-liquid rate in m3/d, or zero to infer from oil and waterperiodLengthDays- number of days represented by the periodgasValueUsdPerMSm3- gas value in USD/MSm3oilValueUsdPerBbl- oil value in USD/bblwaterValueUsdPerM3- water value in USD/m3liquidValueUsdPerM3- liquid value in USD/m3
-
-
Method Details
-
zero
Creates a zero load for a planning period.- Parameters:
year- calendar year for the periodperiodName- display name for the period- Returns:
- zero production load
-
getPeriodName
-
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
Creates a load with a different period name and year.- Parameters:
newPeriodName- new period namenewYear- 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/MSm3oilUsdPerBbl- oil value in USD/bblwaterUsdPerM3- water value in USD/m3liquidUsdPerM3- liquid value in USD/m3- Returns:
- copied load with updated values
-
withPeriodLengthDays
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
Scales all stream rates by a non-negative factor.- Parameters:
factor- multiplier applied to all rates- Returns:
- scaled production load
-
plus
Adds another load to this load.- Parameters:
other- load to add- Returns:
- combined production load
-
subtractNonNegative
Subtracts another load and floors each rate at zero.- Parameters:
other- load to subtract- Returns:
- non-negative difference load
-
combineLiquidRates
Combines explicit liquid rates when either load uses them.- Parameters:
first- first loadsecond- second load- Returns:
- combined explicit total-liquid rate or zero when both loads infer liquid rate
-
toString
-