Class FieldDevelopmentCostEstimator
java.lang.Object
neqsim.process.util.fielddevelopment.FieldDevelopmentCostEstimator
- All Implemented Interfaces:
Serializable
Integrates process mechanical design and cost estimation into field development workflows.
This class provides a bridge between process equipment design and field development economics, enabling:
- CAPEX estimation at different fidelity levels (screening, conceptual, FEED)
- Equipment sizing linked to production capacity
- Cost scaling with production rate
- Mechanical design output (weights, dimensions, materials)
- NPV-integrated cost estimation for concept comparison
Fidelity Levels
| Level | Accuracy | Use Case | Cost Basis |
|---|---|---|---|
| SCREENING | ±50% | Discovery, feasibility | Capacity correlations |
| CONCEPTUAL | ±30% | Concept selection | Equipment-type correlations |
| PRE_FEED | ±20% | Pre-FEED | Sized equipment costs |
| FEED | ±10% | FEED, AFE | Detailed mechanical design |
Integration with FieldProductionScheduler
// Create production scheduler
FieldProductionScheduler scheduler = new FieldProductionScheduler("Offshore Field");
scheduler.addReservoir(reservoir);
scheduler.setFacility(facility);
scheduler.setPlateauRate(10.0, "MSm3/day");
// Create cost estimator linked to facility
FieldDevelopmentCostEstimator costEstimator = new FieldDevelopmentCostEstimator(facility);
costEstimator.setFidelityLevel(FidelityLevel.CONCEPTUAL);
costEstimator.setLocationFactor(1.3); // Norwegian Sea
// Run mechanical design and cost estimation
FieldDevelopmentCostReport report = costEstimator.estimateDevelopmentCosts();
System.out.println("Total CAPEX: $" + report.getTotalCapex() / 1e6 + " M");
System.out.println("Facilities weight: " + report.getTotalWeight() / 1000 + " tonnes");
System.out.println("Installation man-hours: " + report.getTotalManHours());
// Use for NPV calculation
scheduler.setCapex(report.getTotalCapex() / 1e6, 2025);
ProductionSchedule schedule = scheduler.generateSchedule(startDate, 20.0, 30.0);
System.out.println("NPV: $" + schedule.getNPV() / 1e6 + "M");
Concept Comparison
// Compare multiple development concepts
List<ProcessSystem> concepts = Arrays.asList(conceptA, conceptB, conceptC);
List<FieldDevelopmentCostReport> reports = costEstimator.compareConceptCosts(concepts);
for (FieldDevelopmentCostReport report : reports) {
System.out.printf("%s: CAPEX=$%.0fM, Weight=%.0ft, Area=%.0fm2%n", report.getConceptName(),
report.getTotalCapex() / 1e6, report.getTotalWeight() / 1000, report.getFootprintArea());
}
- Version:
- 1.0
- Author:
- AGAS
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumDevelopment concept type affecting cost factors.static classEquipment cost item for detailed breakdown.static enumFidelity level for cost estimation.static classCost report for field development. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleComplexity factor (1.0 = standard).Development concept type.private CostEstimationCalculatorCost calculator.private StringCurrency code for reporting.private final ProcessSystemProcess system for cost estimation.Fidelity level.private booleanInclude subsea costs.private doubleLocation factor (1.0 = US Gulf Coast).private intReference year for costs.private static final longSerialization version UID.private doubleSubsea tieback length in km.private doubleWater depth in meters. -
Constructor Summary
ConstructorsConstructorDescriptionFieldDevelopmentCostEstimator(ProcessSystem facility) Constructor with process system. -
Method Summary
Modifier and TypeMethodDescriptioncompareConceptCosts(List<ProcessSystem> concepts) Compare costs for multiple development concepts.Estimate development costs for the facility.private doubleEstimate subsea infrastructure costs.Get cost calculator.Get the fidelity level.doublescaleCapexByCapacity(double baseCapex, double baseCapacity, double targetCapacity, String capacityUnit) Estimate CAPEX for a given production capacity using scaling factors.voidsetComplexityFactor(double factor) Set complexity factor.voidSet the development concept type.voidSet the fidelity level for cost estimation.voidsetLocationFactor(double factor) Set location factor for regional cost adjustment.voidsetSubseaParameters(double tiebackLength, double waterDepthM) Set subsea parameters.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
facility
Process system for cost estimation. -
fidelityLevel
Fidelity level. -
conceptType
Development concept type. -
costCalculator
Cost calculator. -
locationFactor
private double locationFactorLocation factor (1.0 = US Gulf Coast). -
complexityFactor
private double complexityFactorComplexity factor (1.0 = standard). -
currencyCode
Currency code for reporting. -
referenceYear
private int referenceYearReference year for costs. -
includeSubseaCosts
private boolean includeSubseaCostsInclude subsea costs. -
subseaTiebackLength
private double subseaTiebackLengthSubsea tieback length in km. -
waterDepth
private double waterDepthWater depth in meters.
-
-
Constructor Details
-
FieldDevelopmentCostEstimator
Constructor with process system.- Parameters:
facility- the process system to estimate costs for
-
-
Method Details
-
setFidelityLevel
Set the fidelity level for cost estimation.- Parameters:
level- fidelity level
-
getFidelityLevel
Get the fidelity level.- Returns:
- fidelity level
-
setConceptType
Set the development concept type.- Parameters:
type- concept type
-
setLocationFactor
public void setLocationFactor(double factor) Set location factor for regional cost adjustment.- Parameters:
factor- location factor (1.0 = US Gulf Coast, 1.3 = North Sea, etc.)
-
setComplexityFactor
public void setComplexityFactor(double factor) Set complexity factor.- Parameters:
factor- complexity factor (1.0 = standard, >1.0 = complex)
-
setSubseaParameters
public void setSubseaParameters(double tiebackLength, double waterDepthM) Set subsea parameters.- Parameters:
tiebackLength- tieback length in kmwaterDepthM- water depth in meters
-
estimateDevelopmentCosts
Estimate development costs for the facility.This method:
- Runs mechanical design for all equipment
- Calculates cost estimates based on fidelity level
- Applies location and concept factors
- Generates comprehensive cost report
- Returns:
- cost report with CAPEX, weights, and man-hours
-
estimateSubseaCosts
private double estimateSubseaCosts()Estimate subsea infrastructure costs.- Returns:
- subsea CAPEX in USD
-
compareConceptCosts
public List<FieldDevelopmentCostEstimator.FieldDevelopmentCostReport> compareConceptCosts(List<ProcessSystem> concepts) Compare costs for multiple development concepts.- Parameters:
concepts- list of process systems representing different concepts- Returns:
- list of cost reports for comparison
-
scaleCapexByCapacity
public double scaleCapexByCapacity(double baseCapex, double baseCapacity, double targetCapacity, String capacityUnit) Estimate CAPEX for a given production capacity using scaling factors.Uses the six-tenths rule: Cost2/Cost1 = (Capacity2/Capacity1)^0.6
- Parameters:
baseCapex- base CAPEX in USDbaseCapacity- base capacitytargetCapacity- target capacitycapacityUnit- capacity unit- Returns:
- scaled CAPEX in USD
-
getCostCalculator
Get cost calculator.- Returns:
- cost calculator instance
-