Class WellDesignCalculator

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

public class WellDesignCalculator extends Object implements Serializable
Calculator for well casing and tubing mechanical design.

Provides engineering calculations for subsea well tubular design per:

  • API 5CT / ISO 11960 - Casing and Tubing grades and properties
  • API Bull 5C3 - Formulas for burst, collapse, and tension
  • NORSOK D-010 - Well integrity design factors
  • API RP 90 - Annular casing pressure management

Casing Design Loads

  • Burst - Internal pressure exceeds external (kick, displacement to gas)
  • Collapse - External pressure exceeds internal (cement, lost returns)
  • Tension - Axial load from casing weight plus running/landing loads

Design Factors (NORSOK D-010 / API)

Minimum design factors for casing design
Load Case Factor
Burst 1.10
Collapse 1.00
Tension 1.60
Triaxial (VME) 1.25
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

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

      private double measuredDepth
      Measured depth in meters.
    • trueVerticalDepth

      private double trueVerticalDepth
      True vertical depth in meters.
    • waterDepth

      private double waterDepth
      Water depth in meters.
    • maxWellheadPressure

      private double maxWellheadPressure
      Max wellhead pressure in bara.
    • reservoirPressure

      private double reservoirPressure
      Reservoir pressure in bara.
    • reservoirTemperature

      private double reservoirTemperature
      Reservoir temperature in Celsius.
    • maxBottomholeTemperature

      private double maxBottomholeTemperature
      Max bottomhole temperature in Celsius.
    • conductorOD

      private double conductorOD
      Conductor OD in inches.
    • conductorDepth

      private double conductorDepth
      Conductor depth in meters MD.
    • surfaceCasingOD

      private double surfaceCasingOD
      Surface casing OD in inches.
    • surfaceCasingDepth

      private double surfaceCasingDepth
      Surface casing depth in meters MD.
    • intermediateCasingOD

      private double intermediateCasingOD
      Intermediate casing OD in inches.
    • intermediateCasingDepth

      private double intermediateCasingDepth
      Intermediate casing depth in meters MD.
    • productionCasingOD

      private double productionCasingOD
      Production casing OD in inches.
    • productionCasingDepth

      private double productionCasingDepth
      Production casing depth in meters MD.
    • productionLinerOD

      private double productionLinerOD
      Production liner OD in inches.
    • productionLinerDepth

      private double productionLinerDepth
      Production liner depth in meters MD.
    • tubingOD

      private double tubingOD
      Tubing OD in inches.
    • tubingWeight

      private double tubingWeight
      Tubing weight in lb/ft.
    • tubingGrade

      private String tubingGrade
      Tubing grade.
    • productionCasingWallThickness

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

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

      private double surfaceCasingWallThickness
      Surface casing 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.
    • tubingWallThickness

      private double tubingWallThickness
      Tubing wall thickness in mm.
    • tubingBurstDF

      private double tubingBurstDF
      Tubing burst design factor.
    • 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 cuttings volume in m3.
    • productionCasingVME_DF

      private double productionCasingVME_DF
      Production casing VME (triaxial) design factor.
    • temperatureDeratingFactor

      private double temperatureDeratingFactor
      Temperature derating factor applied to production casing (0-1).
    • minBurstDF

      private double minBurstDF
      Minimum burst design factor (default: NORSOK D-010 Table 18).
    • minCollapseDF

      private double minCollapseDF
      Minimum collapse design factor (default: NORSOK D-010 Table 18).
    • minTensionDF

      private double minTensionDF
      Minimum tension design factor (default: NORSOK D-010 Table 18).
    • minVmeDF

      private double minVmeDF
      Minimum triaxial (von Mises Equivalent) design factor per NORSOK D-010.
    • injectionWell

      private boolean injectionWell
      Whether this is an injection well (changes load cases).
    • PORE_PRESSURE_GRADIENT

      private static final double PORE_PRESSURE_GRADIENT
      Pore pressure gradient (bar/m) — typical hydrostatic.
      See Also:
    • FRAC_GRADIENT

      private static final double FRAC_GRADIENT
      Fracture pressure gradient (bar/m) — typical.
      See Also:
    • STEEL_DENSITY

      private static final double STEEL_DENSITY
      Steel density kg/m3.
      See Also:
    • SEAWATER_DENSITY

      private static final double SEAWATER_DENSITY
      Seawater density kg/m3.
      See Also:
    • CEMENT_DENSITY

      private static final double CEMENT_DENSITY
      Cement slurry density kg/m3.
      See Also:
  • Constructor Details

    • WellDesignCalculator

      public WellDesignCalculator()
      Default constructor.
  • Method Details

    • calculateCasingDesign

      public void calculateCasingDesign()
      Calculate casing design for all strings.

      Performs burst, collapse, and tension checks per API Bull 5C3 / NORSOK D-010.

    • calculateProductionCasing

      private void calculateProductionCasing()
      Calculate production casing design.
    • calculateIntermediateCasing

      private void calculateIntermediateCasing()
      Calculate intermediate casing design.
    • calculateSurfaceCasing

      private void calculateSurfaceCasing()
      Calculate surface casing design.
    • calculateTubingDesign

      public void calculateTubingDesign()
      Calculate tubing design.
    • calculateWeights

      public void calculateWeights()
      Calculate total weights for all strings.
    • calculateCementVolumes

      public void calculateCementVolumes()
      Calculate cement volumes for all annuli.
    • calculatePipeWeight

      private double calculatePipeWeight(double outerDiameterInches, double wallThicknessMm, double lengthM)
      Calculate pipe weight in kg.
      Parameters:
      outerDiameterInches - OD in inches
      wallThicknessMm - wall thickness in mm
      lengthM - length in meters
      Returns:
      weight in kg
    • calculateAnnularVolume

      private double calculateAnnularVolume(double outerOD, double outerWT, double innerOD, double innerWT, double lengthM)
      Calculate annular volume between two concentric casings.
      Parameters:
      outerOD - outer casing OD in inches
      outerWT - outer casing wall thickness in mm
      innerOD - inner casing OD in inches
      innerWT - inner casing wall thickness in mm (unused for hole wall)
      lengthM - length in meters
      Returns:
      volume in m3
    • calculateHoleVolume

      private double calculateHoleVolume()
      Calculate total drilled hole volume.
      Returns:
      hole volume in m3
    • estimateCollapseThickness

      private double estimateCollapseThickness(double odMm, double collapsePressureMPa, double smysMPa)
      Estimate required wall thickness for collapse resistance.

      Uses the API 5C3 yield-strength collapse formula for an initial estimate.

      Parameters:
      odMm - outer diameter in mm
      collapsePressureMPa - collapse pressure in MPa
      smysMPa - SMYS in MPa
      Returns:
      required wall thickness in mm
    • applyTemperatureDerating

      private double applyTemperatureDerating(double smysMPa, double temperatureC)
      Apply API 5CT temperature derating to yield strength.

      Per API 5CT / ISO 11960, yield strength is derated at elevated temperatures. The derating factors are from API TR 5C3 Table D.1 (typical carbon/low-alloy).

      Parameters:
      smysMPa - SMYS at ambient temperature in MPa
      temperatureC - design temperature in Celsius
      Returns:
      derated yield strength in MPa
    • getCasingGradeSMTS

      public double getCasingGradeSMTS(String grade)
      Get SMTS (Specified Minimum Tensile Strength) for a casing grade per API 5CT / ISO 11960.
      Parameters:
      grade - casing grade string (e.g., "L80", "P110", "K55")
      Returns:
      SMTS in MPa
    • getCasingGradeSMYS

      public double getCasingGradeSMYS(String grade)
      Get SMYS for a casing grade per API 5CT / ISO 11960.
      Parameters:
      grade - casing grade string (e.g., "L80", "P110", "K55")
      Returns:
      SMYS in MPa
    • toMap

      public Map<String,Object> toMap()
      Get design results as a Map for JSON export.
      Returns:
      map of all results
    • setMeasuredDepth

      public void setMeasuredDepth(double measuredDepth)
      Set measured depth.
      Parameters:
      measuredDepth - measured depth in meters
    • setTrueVerticalDepth

      public void setTrueVerticalDepth(double trueVerticalDepth)
      Set true vertical depth.
      Parameters:
      trueVerticalDepth - TVD in meters
    • setWaterDepth

      public void setWaterDepth(double waterDepth)
      Set water depth.
      Parameters:
      waterDepth - water depth in meters
    • setMaxWellheadPressure

      public void setMaxWellheadPressure(double maxWellheadPressure)
      Set maximum wellhead pressure.
      Parameters:
      maxWellheadPressure - max wellhead pressure in bara
    • setReservoirPressure

      public void setReservoirPressure(double reservoirPressure)
      Set reservoir pressure.
      Parameters:
      reservoirPressure - reservoir pressure in bara
    • setReservoirTemperature

      public void setReservoirTemperature(double reservoirTemperature)
      Set reservoir temperature.
      Parameters:
      reservoirTemperature - reservoir temperature in Celsius
    • setMaxBottomholeTemperature

      public void setMaxBottomholeTemperature(double maxBottomholeTemperature)
      Set max bottomhole temperature.
      Parameters:
      maxBottomholeTemperature - max BHT in Celsius
    • setConductorCasing

      public void setConductorCasing(double od, double depth)
      Set conductor casing properties.
      Parameters:
      od - outer diameter in inches
      depth - setting depth in meters MD
    • setSurfaceCasing

      public void setSurfaceCasing(double od, double depth)
      Set surface casing properties.
      Parameters:
      od - outer diameter in inches
      depth - setting depth in meters MD
    • setIntermediateCasing

      public void setIntermediateCasing(double od, double depth)
      Set intermediate casing properties.
      Parameters:
      od - outer diameter in inches
      depth - setting depth in meters MD
    • setProductionCasing

      public void setProductionCasing(double od, double depth)
      Set production casing properties.
      Parameters:
      od - outer diameter in inches
      depth - setting depth in meters MD
    • setProductionLiner

      public void setProductionLiner(double od, double depth)
      Set production liner properties.
      Parameters:
      od - outer diameter in inches
      depth - total depth in meters MD
    • setTubing

      public void setTubing(double od, double weight, String grade)
      Set tubing properties.
      Parameters:
      od - outer diameter in inches
      weight - weight in lb/ft
      grade - API 5CT grade string
    • getProductionCasingWallThickness

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

      public double getIntermediateCasingWallThickness()
      Get intermediate casing wall thickness.
      Returns:
      wall thickness in mm
    • getSurfaceCasingWallThickness

      public double getSurfaceCasingWallThickness()
      Get surface casing wall thickness.
      Returns:
      wall thickness in mm
    • getTubingWallThickness

      public double getTubingWallThickness()
      Get tubing wall thickness.
      Returns:
      wall thickness in mm
    • getProductionCasingBurstDF

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

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

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

      public double getTubingBurstDF()
      Get tubing burst design factor.
      Returns:
      burst DF
    • getTotalCasingWeight

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

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

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

      public double getTotalCuttingsVolume()
      Get total cuttings volume.
      Returns:
      volume in m3
    • getProductionCasingVME_DF

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

      The von Mises Equivalent combines hoop, axial, and radial stresses. Must be >= 1.25 per NORSOK D-010 Table 18.

      Returns:
      VME design factor
    • getTemperatureDeratingFactor

      public double getTemperatureDeratingFactor()
      Get the temperature derating factor applied to production casing SMYS.

      Per API 5CT / API TR 5C3 Table D.1, yield strength is derated at elevated temperatures. Factor of 1.0 means no derating (<= 100 degC).

      Returns:
      derating factor (0 to 1)
    • setMinBurstDesignFactor

      public void setMinBurstDesignFactor(double minBurstDF)
      Set the minimum burst design factor.
      Parameters:
      minBurstDF - burst design factor (default 1.10 per NORSOK D-010)
    • setMinCollapseDesignFactor

      public void setMinCollapseDesignFactor(double minCollapseDF)
      Set the minimum collapse design factor.
      Parameters:
      minCollapseDF - collapse design factor (default 1.00 per NORSOK D-010)
    • setMinTensionDesignFactor

      public void setMinTensionDesignFactor(double minTensionDF)
      Set the minimum tension design factor.
      Parameters:
      minTensionDF - tension design factor (default 1.60 per NORSOK D-010)
    • setMinVmeDesignFactor

      public void setMinVmeDesignFactor(double minVmeDF)
      Set the minimum triaxial (VME) design factor.
      Parameters:
      minVmeDF - VME design factor (default 1.25 per NORSOK D-010)
    • setInjectionWell

      public void setInjectionWell(boolean injectionWell)
      Set whether this is an injection well.

      Injection wells have different load cases: burst from injection pressure, collapse from evacuation during workover, and thermal stress considerations.

      Parameters:
      injectionWell - true for injection well design
    • isInjectionWell

      public boolean isInjectionWell()
      Check if this calculator is configured for injection well.
      Returns:
      true if injection well
    • getMinBurstDesignFactor

      public double getMinBurstDesignFactor()
      Get the current minimum burst design factor.
      Returns:
      burst design factor
    • getMinCollapseDesignFactor

      public double getMinCollapseDesignFactor()
      Get the current minimum collapse design factor.
      Returns:
      collapse design factor
    • getMinTensionDesignFactor

      public double getMinTensionDesignFactor()
      Get the current minimum tension design factor.
      Returns:
      tension design factor
    • getMinVmeDesignFactor

      public double getMinVmeDesignFactor()
      Get the current minimum VME design factor.
      Returns:
      VME design factor