Class FieldDevelopmentCostEstimator

java.lang.Object
neqsim.process.util.fielddevelopment.FieldDevelopmentCostEstimator
All Implemented Interfaces:
Serializable

public class FieldDevelopmentCostEstimator extends Object implements 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

Cost Estimation 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:
  • Field Details

    • serialVersionUID

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

      private final ProcessSystem facility
      Process system for cost estimation.
    • fidelityLevel

      Fidelity level.
    • conceptType

      Development concept type.
    • costCalculator

      private transient CostEstimationCalculator costCalculator
      Cost calculator.
    • locationFactor

      private double locationFactor
      Location factor (1.0 = US Gulf Coast).
    • complexityFactor

      private double complexityFactor
      Complexity factor (1.0 = standard).
    • currencyCode

      private String currencyCode
      Currency code for reporting.
    • referenceYear

      private int referenceYear
      Reference year for costs.
    • includeSubseaCosts

      private boolean includeSubseaCosts
      Include subsea costs.
    • subseaTiebackLength

      private double subseaTiebackLength
      Subsea tieback length in km.
    • waterDepth

      private double waterDepth
      Water depth in meters.
  • Constructor Details

    • FieldDevelopmentCostEstimator

      public FieldDevelopmentCostEstimator(ProcessSystem facility)
      Constructor with process system.
      Parameters:
      facility - the process system to estimate costs for
  • Method Details

    • setFidelityLevel

      public void setFidelityLevel(FieldDevelopmentCostEstimator.FidelityLevel level)
      Set the fidelity level for cost estimation.
      Parameters:
      level - fidelity level
    • getFidelityLevel

      Get the fidelity level.
      Returns:
      fidelity level
    • setConceptType

      public void setConceptType(FieldDevelopmentCostEstimator.ConceptType type)
      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 km
      waterDepthM - water depth in meters
    • estimateDevelopmentCosts

      Estimate development costs for the facility.

      This method:

      1. Runs mechanical design for all equipment
      2. Calculates cost estimates based on fidelity level
      3. Applies location and concept factors
      4. 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

      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 USD
      baseCapacity - base capacity
      targetCapacity - target capacity
      capacityUnit - capacity unit
      Returns:
      scaled CAPEX in USD
    • getCostCalculator

      public CostEstimationCalculator getCostCalculator()
      Get cost calculator.
      Returns:
      cost calculator instance