Class TieInCapacityPlanner
java.lang.Object
neqsim.process.fielddevelopment.tieback.capacity.TieInCapacityPlanner
- All Implemented Interfaces:
Serializable
Time-series host tie-in planner for capacity allocation, satellite holdback, process-model
checks, and debottleneck recommendations.
The planner has three layers:
- Nameplate ullage: base-host and satellite rates are checked against gas, oil, water, and
liquid capacities in
HostFacility. - Process capacity: when a process model and
HostTieInPointare configured, the accepted satellite load is injected into a host stream and equipment capacity constraints are checked. - Decision layer: deferred or curtailed production value is summarized and converted into a simple debottleneck recommendation.
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final classNameplate allocation result.private static final classProcess-adjusted allocation result.private static final classProcess-model capacity outcome. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate CapacityAllocationPolicyAllocation policy for constrained periods.private doubleDefault debottleneck investment estimate.private doubleGas value in USD per MSm3 used when loads do not carry values.private doubleLiquid value in USD per m3 used when loads do not carry values.private doubleOil value in USD per bbl used when loads do not carry values.private doubleWater value in USD per m3 used when loads do not carry values.private doubleDiscount rate used for deferred value.private HoldbackPolicyHoldback policy for unaccepted satellite production.private final HostFacilityHost facility receiving the satellite production.private ProductionProfileSeriesBase host production profile.private intNumber of binary-search iterations for process holdback.private doubleMaximum accepted process utilization as fraction.private ProductionProfileSeriesSatellite production profile.private static final longSerialization version UID.private HostTieInPointOptional process-model tie-in point. -
Constructor Summary
ConstructorsConstructorDescriptionTieInCapacityPlanner(HostFacility hostFacility) Creates a tie-in capacity planner. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddUtilization(Map<String, Double> utilizations, String name, double requested, double capacity, boolean active) Adds one utilization entry when the capacity dimension is active.allocateNameplate(ProductionLoad baseRequest, ProductionLoad satelliteRequest) Allocates nameplate capacity between base and satellite production.applyProcessCapacity(ProductionLoad baseRequest, TieInCapacityPlanner.AllocationResult allocation) Applies process-model capacity checks and additional holdback if required.private List<DebottleneckDecision> buildDebottleneckDecisions(List<TieInPeriodResult> periods) Builds debottleneck decisions from period results.private StringbuildPeriodSummary(ProductionLoad scheduledSatellite, TieInCapacityPlanner.ProcessAdjustedAllocation adjusted, ProductionLoad heldBack) Builds a period summary string.private StringbuildResultSummary(List<TieInPeriodResult> periods, List<DebottleneckDecision> decisions) Builds an aggregate result summary.private doubleCalculates daily value using load-specific values or planner defaults.private doubleCalculates total period value.private doublecalculateTargetProcessRate(double originalFlow, ProductionLoad acceptedBase, ProductionLoad acceptedSatellite) Calculates the target process-stream rate for a trial operating point.private StringchooseMostFrequentBottleneck(Map<String, Integer> bottleneckCounts) Chooses the most frequent bottleneck from constrained periods.private doubleclampScale(double scale) Clamps a scale factor to the valid allocation range.private doublediscount(double valueMusd, int periodIndex) Discounts a value by period index.evaluateProcessCapacity(ProductionLoad acceptedBase, ProductionLoad acceptedSatellite) Evaluates the process model for a base-plus-satellite operating point.private ProductionLoadgetBaseLoad(int year, int index, String periodName) Gets base host production for a period.private intGets the first year in the satellite profile.private ProductionLoadgetHostCapacityLoad(int year, String periodName) Builds a production-load object representing host nameplate capacity.private StringidentifyNameplateBottleneck(ProductionLoad request, ProductionLoad capacity) Identifies the most constrained nameplate capacity category.private doublerequiredDimensionScale(double requested, double capacity) Calculates scale for one required capacity dimension.private voidrestoreProcessStream(ProcessSystem processSystem, StreamInterface stream, double originalFlow) Restores the process stream after a trial process-model run.run()Runs the capacity and holdback study.private doublescaleAgainstCapacity(ProductionLoad request, ProductionLoad capacity) Calculates the feasible scale against host capacity.setAllocationPolicy(CapacityAllocationPolicy allocationPolicy) Sets the allocation policy.setDefaultCommodityValues(double gasUsdPerMSm3, double oilUsdPerBbl, double waterUsdPerM3, double liquidUsdPerM3) Sets default commodity values.setDefaultDebottleneckCapexMusd(double defaultDebottleneckCapexMusd) Sets default debottleneck CAPEX.setDiscountRate(double discountRate) Sets the discount rate.setHoldbackPolicy(HoldbackPolicy holdbackPolicy) Sets the holdback policy.setHostProductionProfile(ProductionProfileSeries hostProductionProfile) Sets the base host production profile.setProcessUtilizationLimit(double processUtilizationLimit) Sets the process utilization limit.setSatelliteProductionProfile(ProductionProfileSeries satelliteProductionProfile) Sets the satellite production profile.setTieInPoint(HostTieInPoint tieInPoint) Sets the process-model tie-in point.private voidValidates required profiles before running.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
hostFacility
Host facility receiving the satellite production. -
hostProductionProfile
Base host production profile. -
satelliteProductionProfile
Satellite production profile. -
allocationPolicy
Allocation policy for constrained periods. -
holdbackPolicy
Holdback policy for unaccepted satellite production. -
tieInPoint
Optional process-model tie-in point. -
processUtilizationLimit
private double processUtilizationLimitMaximum accepted process utilization as fraction. -
processSearchIterations
private int processSearchIterationsNumber of binary-search iterations for process holdback. -
defaultGasValueUsdPerMSm3
private double defaultGasValueUsdPerMSm3Gas value in USD per MSm3 used when loads do not carry values. -
defaultOilValueUsdPerBbl
private double defaultOilValueUsdPerBblOil value in USD per bbl used when loads do not carry values. -
defaultWaterValueUsdPerM3
private double defaultWaterValueUsdPerM3Water value in USD per m3 used when loads do not carry values. -
defaultLiquidValueUsdPerM3
private double defaultLiquidValueUsdPerM3Liquid value in USD per m3 used when loads do not carry values. -
discountRate
private double discountRateDiscount rate used for deferred value. -
defaultDebottleneckCapexMusd
private double defaultDebottleneckCapexMusdDefault debottleneck investment estimate.
-
-
Constructor Details
-
TieInCapacityPlanner
Creates a tie-in capacity planner.- Parameters:
hostFacility- host facility to evaluate
-
-
Method Details
-
setHostProductionProfile
Sets the base host production profile.- Parameters:
hostProductionProfile- host production profile- Returns:
- this planner for method chaining
-
setSatelliteProductionProfile
public TieInCapacityPlanner setSatelliteProductionProfile(ProductionProfileSeries satelliteProductionProfile) Sets the satellite production profile.- Parameters:
satelliteProductionProfile- satellite production profile- Returns:
- this planner for method chaining
-
setAllocationPolicy
Sets the allocation policy.- Parameters:
allocationPolicy- allocation policy- Returns:
- this planner for method chaining
-
setHoldbackPolicy
Sets the holdback policy.- Parameters:
holdbackPolicy- holdback policy- Returns:
- this planner for method chaining
-
setTieInPoint
Sets the process-model tie-in point.- Parameters:
tieInPoint- process-model tie-in point- Returns:
- this planner for method chaining
-
setProcessUtilizationLimit
Sets the process utilization limit.- Parameters:
processUtilizationLimit- maximum utilization fraction allowed in the process model- Returns:
- this planner for method chaining
-
setDefaultCommodityValues
public TieInCapacityPlanner setDefaultCommodityValues(double gasUsdPerMSm3, double oilUsdPerBbl, double waterUsdPerM3, double liquidUsdPerM3) Sets default 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:
- this planner for method chaining
-
setDiscountRate
Sets the discount rate.- Parameters:
discountRate- annual discount rate as a fraction- Returns:
- this planner for method chaining
-
setDefaultDebottleneckCapexMusd
Sets default debottleneck CAPEX.- Parameters:
defaultDebottleneckCapexMusd- default debottleneck CAPEX in MUSD- Returns:
- this planner for method chaining
-
run
Runs the capacity and holdback study.- Returns:
- aggregated tie-in capacity result
-
validateProfiles
private void validateProfiles()Validates required profiles before running. -
getFirstYear
private int getFirstYear()Gets the first year in the satellite profile.- Returns:
- first satellite profile year
-
getBaseLoad
Gets base host production for a period.- Parameters:
year- calendar yearindex- zero-based profile indexperiodName- period name- Returns:
- base host production load
-
allocateNameplate
private TieInCapacityPlanner.AllocationResult allocateNameplate(ProductionLoad baseRequest, ProductionLoad satelliteRequest) Allocates nameplate capacity between base and satellite production.- Parameters:
baseRequest- base host requestsatelliteRequest- satellite request- Returns:
- allocation result before process-model holdback
-
getHostCapacityLoad
Builds a production-load object representing host nameplate capacity.- Parameters:
year- calendar yearperiodName- period name- Returns:
- nameplate capacity load
-
scaleAgainstCapacity
Calculates the feasible scale against host capacity.- Parameters:
request- requested loadcapacity- capacity load- Returns:
- feasible scale between zero and one
-
requiredDimensionScale
private double requiredDimensionScale(double requested, double capacity) Calculates scale for one required capacity dimension.- Parameters:
requested- requested ratecapacity- available capacity rate- Returns:
- scale for the dimension
-
clampScale
private double clampScale(double scale) Clamps a scale factor to the valid allocation range.- Parameters:
scale- raw scale- Returns:
- scale between zero and one
-
identifyNameplateBottleneck
Identifies the most constrained nameplate capacity category.- Parameters:
request- combined production requestcapacity- host capacity- Returns:
- bottleneck category name
-
addUtilization
private void addUtilization(Map<String, Double> utilizations, String name, double requested, double capacity, boolean active) Adds one utilization entry when the capacity dimension is active.- Parameters:
utilizations- utilization mapname- capacity category namerequested- requested ratecapacity- capacity rateactive- true if the dimension should constrain allocation
-
applyProcessCapacity
private TieInCapacityPlanner.ProcessAdjustedAllocation applyProcessCapacity(ProductionLoad baseRequest, TieInCapacityPlanner.AllocationResult allocation) Applies process-model capacity checks and additional holdback if required.- Parameters:
baseRequest- base production requestallocation- nameplate allocation result- Returns:
- process-adjusted allocation
-
evaluateProcessCapacity
private TieInCapacityPlanner.ProcessOutcome evaluateProcessCapacity(ProductionLoad acceptedBase, ProductionLoad acceptedSatellite) Evaluates the process model for a base-plus-satellite operating point.- Parameters:
acceptedBase- accepted base productionacceptedSatellite- accepted satellite production- Returns:
- process outcome
-
calculateTargetProcessRate
private double calculateTargetProcessRate(double originalFlow, ProductionLoad acceptedBase, ProductionLoad acceptedSatellite) Calculates the target process-stream rate for a trial operating point.- Parameters:
originalFlow- original process-stream rateacceptedBase- accepted base productionacceptedSatellite- accepted satellite production- Returns:
- target process-stream flow rate
-
restoreProcessStream
private void restoreProcessStream(ProcessSystem processSystem, StreamInterface stream, double originalFlow) Restores the process stream after a trial process-model run.- Parameters:
processSystem- process system containing the streamstream- stream to restoreoriginalFlow- original flow rate in the tie-in point rate unit
-
calculateDailyValueUsd
Calculates daily value using load-specific values or planner defaults.- Parameters:
load- production load- Returns:
- daily value in USD/d
-
calculatePeriodValueMusd
Calculates total period value.- Parameters:
load- production load- Returns:
- period value in MUSD
-
discount
private double discount(double valueMusd, int periodIndex) Discounts a value by period index.- Parameters:
valueMusd- value in MUSD before discountingperiodIndex- zero-based period index- Returns:
- discounted value in MUSD
-
buildDebottleneckDecisions
Builds debottleneck decisions from period results.- Parameters:
periods- period results- Returns:
- debottleneck decisions
-
chooseMostFrequentBottleneck
-
buildPeriodSummary
private String buildPeriodSummary(ProductionLoad scheduledSatellite, TieInCapacityPlanner.ProcessAdjustedAllocation adjusted, ProductionLoad heldBack) Builds a period summary string.- Parameters:
scheduledSatellite- scheduled satellite loadadjusted- process-adjusted allocationheldBack- held-back satellite load- Returns:
- summary string
-
buildResultSummary
private String buildResultSummary(List<TieInPeriodResult> periods, List<DebottleneckDecision> decisions) Builds an aggregate result summary.- Parameters:
periods- period resultsdecisions- debottleneck decisions- Returns:
- summary string
-