Class WellMechanicalDesign

java.lang.Object
neqsim.process.mechanicaldesign.MechanicalDesign
neqsim.process.mechanicaldesign.subsea.WellMechanicalDesign
All Implemented Interfaces:
Serializable

public class WellMechanicalDesign extends MechanicalDesign
Mechanical design class for subsea wells.

Provides casing design, tubing stress analysis, well barrier verification, and cost estimation for subsea wells per applicable standards:

  • NORSOK D-010 - Well Integrity in Drilling and Well Operations
  • API 5CT - Casing and Tubing
  • ISO 11960 - Steel Pipes for Use as Casing or Tubing
  • API RP 90 - Annular Casing Pressure Management
  • API Bull 5C3 - Formulas and Calculations for Casing and Tubing Properties

Calculation Scope

  • Casing Design - Burst, collapse, tension checks per API 5C3
  • Tubing Analysis - Stress, burst/collapse, DHSV requirements
  • Well Barriers - Primary/secondary barrier verification per NORSOK D-010
  • Weight Estimation - Casing, tubing, cement, completion string weights
  • Cost Estimation - Drilling, completion, subsea wellhead, logging, contingency

Usage Example

SubseaWell well = new SubseaWell("Producer-1", stream);
well.setWellType(SubseaWell.WellType.OIL_PRODUCER);
well.setMeasuredDepth(3800.0);
well.setWaterDepth(350.0);

well.initMechanicalDesign();
WellMechanicalDesign design = (WellMechanicalDesign) well.getMechanicalDesign();
design.calcDesign();
design.calculateCostEstimate();

System.out.println("Total well cost: $" + design.getTotalCostUSD() / 1e6 + "M");
System.out.println(design.toJson());
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

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

      private SubseaWell well
      Reference to well equipment.
    • designStandardCode

      private String designStandardCode
      Design standard code.
    • calculator

      private transient WellDesignCalculator calculator
      Internal calculator.
    • costEstimator

      private transient WellCostEstimator costEstimator
      Cost estimator.
    • dataSource

      private transient WellMechanicalDesignDataSource dataSource
      Standards-based data source for loading design parameters from CSV.
    • barrierSchematic

      private WellBarrierSchematic barrierSchematic
      Well barrier schematic for NORSOK D-010 validation.
    • productionCasingWallThickness

      private double productionCasingWallThickness
      Production casing required wall thickness in mm.
    • intermediateCasingWallThickness

      private double intermediateCasingWallThickness
      Intermediate casing required wall thickness in mm.
    • surfaceCasingWallThickness

      private double surfaceCasingWallThickness
      Surface casing required wall thickness in mm.
    • tubingWallThickness

      private double tubingWallThickness
      Tubing required wall thickness in mm.
    • productionCasingBurstDF

      private double productionCasingBurstDF
      Production casing burst design factor.
    • productionCasingCollapseDF

      private double productionCasingCollapseDF
      Production casing collapse design factor.
    • productionCasingTensionDF

      private double productionCasingTensionDF
      Production casing tension design factor.
    • tubingBurstDF

      private double tubingBurstDF
      Tubing burst design factor.
    • productionCasingVME_DF

      private double productionCasingVME_DF
      Production casing VME (triaxial) design factor per NORSOK D-010.
    • temperatureDeratingFactor

      private double temperatureDeratingFactor
      Temperature derating factor applied per API 5CT / API TR 5C3.
    • totalCasingWeight

      private double totalCasingWeight
      Total casing weight in tonnes.
    • totalTubingWeight

      private double totalTubingWeight
      Total tubing weight in tonnes.
    • totalCementVolume

      private double totalCementVolume
      Total cement volume in m3.
    • totalCuttingsVolume

      private double totalCuttingsVolume
      Total drill cuttings volume in m3.
    • barrierVerificationPassed

      private boolean barrierVerificationPassed
      Well barrier verification result (pass/fail).
    • barrierIssueCount

      private int barrierIssueCount
      Number of barrier issues.
    • barrierNotes

      private final List<String> barrierNotes
      Barrier verification notes.
    • totalCostUSD

      private double totalCostUSD
      Total well cost in USD.
    • drillingCostUSD

      private double drillingCostUSD
      Drilling cost in USD.
    • completionCostUSD

      private double completionCostUSD
      Completion cost in USD.
    • wellheadCostUSD

      private double wellheadCostUSD
      Wellhead cost in USD.
    • loggingCostUSD

      private double loggingCostUSD
      Logging and testing cost in USD.
    • materialCostUSD

      private double materialCostUSD
      Material cost (casing, cement, mud) in USD.
  • Constructor Details

    • WellMechanicalDesign

      public WellMechanicalDesign(ProcessEquipmentInterface equipment)
      Constructor.
      Parameters:
      equipment - well equipment instance
  • Method Details

    • readDesignSpecifications

      public void readDesignSpecifications()

      readDesignSpecifications.

      Overrides:
      readDesignSpecifications in class MechanicalDesign
    • calcDesign

      public void calcDesign()

      calcDesign.

      Overrides:
      calcDesign in class MechanicalDesign
    • verifyWellBarriers

      private void verifyWellBarriers()
      Verify well barriers per NORSOK D-010 using the barrier schematic model.

      If a WellBarrierSchematic has been configured (via readDesignSpecifications()), validation uses the schematic model with element-level checking. Otherwise falls back to the legacy count-based check.

    • buildDefaultBarrierElements

      private void buildDefaultBarrierElements()
      Build default barrier elements from the SubseaWell configuration.

      Populates the primary and secondary envelopes based on the well type and whether DHSV/ISV are present. This provides a default element set when barriers are not explicitly configured.

    • calculateCostEstimate

      public void calculateCostEstimate()
      Calculate cost estimate for the well.
      Overrides:
      calculateCostEstimate in class MechanicalDesign
    • getCalculator

      public WellDesignCalculator getCalculator()
      Get the well design calculator, creating if needed.
      Returns:
      the calculator
    • getCostEstimator

      public WellCostEstimator getCostEstimator()
      Get the cost estimator, creating if needed.
      Returns:
      the cost estimator
    • getDataSource

      public WellMechanicalDesignDataSource getDataSource()
      Get the standards data source, creating if needed.
      Returns:
      the data source
    • getBarrierSchematic

      public WellBarrierSchematic getBarrierSchematic()
      Get the well barrier schematic.
      Returns:
      barrier schematic, or null if not yet configured
    • getCostBreakdown

      public Map<String,Object> getCostBreakdown()
      Get cost breakdown.
      Returns:
      map of cost categories
    • generateBillOfMaterials

      public List<Map<String,Object>> generateBillOfMaterials()
      Generate bill of materials for the well.
      Overrides:
      generateBillOfMaterials in class MechanicalDesign
      Returns:
      list of BOM items
    • toMap

      public Map<String,Object> toMap()
      Get design results as Map.
      Returns:
      design results map
    • toJson

      public String toJson()
      Export mechanical design data to JSON format.

      This method creates a MechanicalDesignResponse object and serializes it to JSON using Gson. The JSON includes equipment identification, weight breakdown, design conditions, dimensions, and materials information.

      Usage example:

      
      MechanicalDesign mecDesign = separator.getMechanicalDesign();
      mecDesign.calcDesign();
      String json = mecDesign.toJson();
      
      
      Overrides:
      toJson in class MechanicalDesign
      Returns:
      JSON string representation of the mechanical design
    • getDesignStandardCode

      public String getDesignStandardCode()
      Get design standard code.
      Returns:
      design standard code
    • setDesignStandardCode

      public void setDesignStandardCode(String designStandardCode)
      Set design standard code.
      Parameters:
      designStandardCode - design standard code
    • getTotalCostUSD

      public double getTotalCostUSD()
      Get total well cost in USD.
      Returns:
      total cost
    • getDrillingCostUSD

      public double getDrillingCostUSD()
      Get drilling cost in USD.
      Returns:
      drilling cost
    • getCompletionCostUSD

      public double getCompletionCostUSD()
      Get completion cost in USD.
      Returns:
      completion cost
    • getWellheadCostUSD

      public double getWellheadCostUSD()
      Get wellhead cost in USD.
      Returns:
      wellhead cost
    • getLoggingCostUSD

      public double getLoggingCostUSD()
      Get logging and testing cost in USD.
      Returns:
      logging cost
    • getMaterialCostUSD

      public double getMaterialCostUSD()
      Get material cost in USD.
      Returns:
      material cost
    • getProductionCasingWallThickness

      public double getProductionCasingWallThickness()
      Get production casing wall thickness in mm.
      Returns:
      wall thickness
    • getTotalCasingWeight

      public double getTotalCasingWeight()
      Get total casing weight in tonnes.
      Returns:
      casing weight
    • getTotalTubingWeight

      public double getTotalTubingWeight()
      Get total tubing weight in tonnes.
      Returns:
      tubing weight
    • getTotalCementVolume

      public double getTotalCementVolume()
      Get total cement volume in m3.
      Returns:
      cement volume
    • isBarrierVerificationPassed

      public boolean isBarrierVerificationPassed()
      Check if barrier verification passed.
      Returns:
      true if passed
    • getBarrierNotes

      public List<String> getBarrierNotes()
      Get barrier verification notes.
      Returns:
      list of notes
    • setRegion

      public void setRegion(SubseaCostEstimator.Region region)
      Set region for cost estimation.
      Parameters:
      region - cost region
    • getProductionCasingBurstDF

      public double getProductionCasingBurstDF()
      Get production casing burst design factor.
      Returns:
      burst design factor
    • getProductionCasingCollapseDF

      public double getProductionCasingCollapseDF()
      Get production casing collapse design factor.
      Returns:
      collapse design factor
    • getProductionCasingTensionDF

      public double getProductionCasingTensionDF()
      Get production casing tension design factor.
      Returns:
      tension design factor
    • getProductionCasingVME_DF

      public double getProductionCasingVME_DF()
      Get production casing VME (triaxial) design factor per NORSOK D-010.

      Must be >= 1.25 per NORSOK D-010 Table 18.

      Returns:
      VME design factor
    • getTemperatureDeratingFactor

      public double getTemperatureDeratingFactor()
      Get API 5CT / API TR 5C3 temperature derating factor.

      Factor of 1.0 means no derating (temperature <= 100 degC). Lower values indicate SMYS reduction at elevated temperatures.

      Returns:
      derating factor (0 to 1)