Class WellCostEstimator

java.lang.Object
neqsim.process.mechanicaldesign.subsea.WellCostEstimator

public class WellCostEstimator extends Object
Cost estimation calculator for subsea wells.

Provides cost estimation for drilling and completing subsea wells including:

  • Drilling costs (rig, casing, cement, mud, bits)
  • Completion costs (tubing, packers, screens, safety valves)
  • Wellhead and Xmas tree procurement
  • Logging and evaluation
  • Contingency and risk allowances

Cost data is based on industry benchmarks and regional factors. Baseline costs are representative of Norwegian Continental Shelf (NCS) development wells in the 2020-2024 timeframe, aligned with data from actual field development plans (e.g., Ultima Thule concept study estimates).

Cost Breakdown Structure

Typical well cost categories as percentage of total
Category Oil Producer Water Injector
Drilling 55-60% 55-60%
Completion 20-25% 15-20%
Wellhead/Tree 10-12% 12-15%
Logging 5-8% 4-6%
Contingency 15% 15%
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • region

      Region for cost adjustment — reuses SubseaCostEstimator.Region.
    • drillingCost

      private double drillingCost
      Drilling rig and services cost.
    • casingMaterialCost

      private double casingMaterialCost
      Casing material cost.
    • cementCost

      private double cementCost
      Cement and cementing services cost.
    • mudCost

      private double mudCost
      Drilling mud / fluids cost.
    • bitsCost

      private double bitsCost
      Drill bits and downhole tools cost.
    • completionCost

      private double completionCost
      Completion equipment cost (tubing, packers, screens).
    • wellheadCost

      private double wellheadCost
      Wellhead and Xmas tree cost.
    • safetyValveCost

      private double safetyValveCost
      Safety valves (DHSV, SCSSV) cost.
    • loggingCost

      private double loggingCost
      Logging, surveys and evaluation cost.
    • wellTestCost

      private double wellTestCost
      Well testing cost.
    • contingencyCost

      private double contingencyCost
      Contingency allowance.
    • totalCost

      private double totalCost
      Total well cost.
    • contingencyPct

      private double contingencyPct
      Contingency percentage (default 15%).
    • regionFactor

      private double regionFactor
      Regional cost factor.
    • rigDayRate

      private double rigDayRate
      Rig day rate in USD.
    • casingCostPerTonne

      private double casingCostPerTonne
      Casing cost per tonne USD.
    • cementCostPerM3

      private double cementCostPerM3
      Cement cost per m3 USD.
    • mudCostPerM3

      private double mudCostPerM3
      Mud cost per m3 USD.
    • completionBaseCostProducer

      private double completionBaseCostProducer
      Completion equipment base cost USD (producer).
    • completionBaseCostInjector

      private double completionBaseCostInjector
      Completion equipment base cost USD (injector).
    • wellheadBaseCost

      private double wellheadBaseCost
      Wellhead and tree base cost USD.
    • loggingDayRate

      private double loggingDayRate
      Logging base cost per day USD.
    • dhsvCost

      private double dhsvCost
      DHSV cost USD.
    • wellTestDayRate

      private double wellTestDayRate
      Well test cost per day USD.
  • Constructor Details

    • WellCostEstimator

      public WellCostEstimator()
      Default constructor.
    • WellCostEstimator

      public WellCostEstimator(SubseaCostEstimator.Region region)
      Constructor with region.
      Parameters:
      region - cost estimation region
  • Method Details

    • applyRegionFactor

      private void applyRegionFactor()
      Apply regional cost adjustment factor.

      Regional factors reflect differences in rig markets, labor costs, logistics, and regulatory requirements.

    • calculateWellCost

      public void calculateWellCost(String wellType, String rigType, String completionType, double measuredDepth, double waterDepth, double drillingDays, double completionDays, double rigDayRateOverride, boolean hasDHSV, int numberOfCasingStrings)
      Calculate total well cost.
      Parameters:
      wellType - well type string (OIL_PRODUCER, GAS_PRODUCER, WATER_INJECTOR, etc.)
      rigType - rig type string (SEMI_SUBMERSIBLE, DRILLSHIP, etc.)
      completionType - completion type string
      measuredDepth - measured depth in meters
      waterDepth - water depth in meters
      drillingDays - planned drilling days
      completionDays - planned completion days
      rigDayRateOverride - rig day rate override (0 to use default)
      hasDHSV - whether well has downhole safety valve
      numberOfCasingStrings - number of casing strings
    • getRigTypeFactor

      private double getRigTypeFactor(String rigType)
      Get rig type cost factor.
      Parameters:
      rigType - rig type string
      Returns:
      cost factor multiplier
    • getCompletionTypeFactor

      private double getCompletionTypeFactor(String completionType)
      Get completion type cost factor.
      Parameters:
      completionType - completion type string
      Returns:
      cost factor multiplier
    • estimateCasingWeight

      private double estimateCasingWeight(double measuredDepth, int numberOfStrings)
      Estimate casing weight from well depth and string count.
      Parameters:
      measuredDepth - measured depth in meters
      numberOfStrings - number of casing strings
      Returns:
      estimated weight in tonnes
    • estimateCementVolume

      private double estimateCementVolume(double measuredDepth, int numberOfStrings)
      Estimate cement volume from depth and string count.
      Parameters:
      measuredDepth - measured depth in meters
      numberOfStrings - number of casing strings
      Returns:
      cement volume in m3
    • estimateMudVolume

      private double estimateMudVolume(double measuredDepth)
      Estimate mud volume from depth.
      Parameters:
      measuredDepth - measured depth in meters
      Returns:
      mud volume in m3
    • getCostBreakdown

      public Map<String,Object> getCostBreakdown()
      Get cost breakdown as a nested Map for reporting.
      Returns:
      map of cost categories and values
    • generateBillOfMaterials

      public List<Map<String,Object>> generateBillOfMaterials(SubseaWell well)
      Generate bill of materials for a well.
      Parameters:
      well - the SubseaWell to generate BOM for
      Returns:
      list of BOM items as maps
    • createBOMItem

      private Map<String,Object> createBOMItem(String name, String description, String category, double quantity, String unit)
      Create a BOM item.
      Parameters:
      name - item name
      description - item description
      category - item category
      quantity - quantity
      unit - unit of measure
      Returns:
      map representing the BOM item
    • totalCementVolumeFrom

      private double totalCementVolumeFrom(SubseaWell well)
      Estimate total cement volume from well properties.
      Parameters:
      well - the subsea well
      Returns:
      estimated cement volume in m3
    • toJson

      public String toJson()
      Convert results to JSON string.
      Returns:
      JSON representation of cost estimate
    • getTotalCost

      public double getTotalCost()
      Get total cost.
      Returns:
      total well cost in USD
    • getDrillingCost

      public double getDrillingCost()
      Get drilling cost.
      Returns:
      drilling cost in USD
    • getCompletionCost

      public double getCompletionCost()
      Get completion cost.
      Returns:
      completion cost in USD
    • getWellheadCost

      public double getWellheadCost()
      Get wellhead cost.
      Returns:
      wellhead and tree cost in USD
    • getLoggingCost

      public double getLoggingCost()
      Get logging cost.
      Returns:
      logging and evaluation cost in USD
    • getCasingMaterialCost

      public double getCasingMaterialCost()
      Get casing material cost.
      Returns:
      casing material cost in USD
    • getContingencyCost

      public double getContingencyCost()
      Get contingency cost.
      Returns:
      contingency allowance in USD
    • getContingencyPct

      public double getContingencyPct()
      Get contingency percentage.
      Returns:
      contingency as a fraction (e.g., 0.15 for 15%)
    • getRegion

      public SubseaCostEstimator.Region getRegion()
      Get region.
      Returns:
      the cost region
    • setRegion

      public void setRegion(SubseaCostEstimator.Region region)
      Set region.
      Parameters:
      region - the cost region
    • setContingencyPct

      public void setContingencyPct(double contingencyPct)
      Set contingency percentage.
      Parameters:
      contingencyPct - contingency as a fraction (e.g., 0.15 for 15%)
    • setRigDayRate

      public void setRigDayRate(double rigDayRate)
      Set rig day rate.
      Parameters:
      rigDayRate - rig day rate in USD
    • getCementCost

      public double getCementCost()
      Get cement cost.
      Returns:
      cement cost in USD
    • getMudCost

      public double getMudCost()
      Get mud cost.
      Returns:
      drilling mud cost in USD
    • getBitsCost

      public double getBitsCost()
      Get bits and tools cost.
      Returns:
      bits cost in USD
    • getSafetyValveCost

      public double getSafetyValveCost()
      Get safety valve cost.
      Returns:
      safety valve cost in USD
    • getWellTestCost

      public double getWellTestCost()
      Get well test cost.
      Returns:
      well test cost in USD
    • getRegionFactor

      public double getRegionFactor()
      Get regional cost factor.
      Returns:
      regional factor multiplier