Class WellDesignCalculator
- All Implemented Interfaces:
Serializable
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)
| Load Case | Factor |
|---|---|
| Burst | 1.10 |
| Collapse | 1.00 |
| Tension | 1.60 |
| Triaxial (VME) | 1.25 |
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final doubleCement slurry density kg/m3.private doubleConductor depth in meters MD.private doubleConductor OD in inches.private static final doubleFracture pressure gradient (bar/m) — typical.private booleanWhether this is an injection well (changes load cases).private doubleIntermediate casing depth in meters MD.private doubleIntermediate casing OD in inches.private doubleIntermediate casing wall thickness in mm.private doubleMax bottomhole temperature in Celsius.private doubleMax wellhead pressure in bara.private doubleMeasured depth in meters.private doubleMinimum burst design factor (default: NORSOK D-010 Table 18).private doubleMinimum collapse design factor (default: NORSOK D-010 Table 18).private doubleMinimum tension design factor (default: NORSOK D-010 Table 18).private doubleMinimum triaxial (von Mises Equivalent) design factor per NORSOK D-010.private static final doublePore pressure gradient (bar/m) — typical hydrostatic.private doubleProduction casing burst design factor.private doubleProduction casing collapse design factor.private doubleProduction casing depth in meters MD.private doubleProduction casing OD in inches.private doubleProduction casing tension design factor.private doubleProduction casing VME (triaxial) design factor.private doubleProduction casing wall thickness in mm.private doubleProduction liner depth in meters MD.private doubleProduction liner OD in inches.private doubleReservoir pressure in bara.private doubleReservoir temperature in Celsius.private static final doubleSeawater density kg/m3.private static final longSerialization version UID.private static final doubleSteel density kg/m3.private doubleSurface casing depth in meters MD.private doubleSurface casing OD in inches.private doubleSurface casing wall thickness in mm.private doubleTemperature derating factor applied to production casing (0-1).private doubleTotal casing weight in tonnes.private doubleTotal cement volume in m3.private doubleTotal cuttings volume in m3.private doubleTotal tubing weight in tonnes.private doubleTrue vertical depth in meters.private doubleTubing burst design factor.private StringTubing grade.private doubleTubing OD in inches.private doubleTubing wall thickness in mm.private doubleTubing weight in lb/ft.private doubleWater depth in meters. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate doubleapplyTemperatureDerating(double smysMPa, double temperatureC) Apply API 5CT temperature derating to yield strength.private doublecalculateAnnularVolume(double outerOD, double outerWT, double innerOD, double innerWT, double lengthM) Calculate annular volume between two concentric casings.voidCalculate casing design for all strings.voidCalculate cement volumes for all annuli.private doubleCalculate total drilled hole volume.private voidCalculate intermediate casing design.private doublecalculatePipeWeight(double outerDiameterInches, double wallThicknessMm, double lengthM) Calculate pipe weight in kg.private voidCalculate production casing design.private voidCalculate surface casing design.voidCalculate tubing design.voidCalculate total weights for all strings.private doubleestimateCollapseThickness(double odMm, double collapsePressureMPa, double smysMPa) Estimate required wall thickness for collapse resistance.doublegetCasingGradeSMTS(String grade) Get SMTS (Specified Minimum Tensile Strength) for a casing grade per API 5CT / ISO 11960.doublegetCasingGradeSMYS(String grade) Get SMYS for a casing grade per API 5CT / ISO 11960.doubleGet intermediate casing wall thickness.doubleGet the current minimum burst design factor.doubleGet the current minimum collapse design factor.doubleGet the current minimum tension design factor.doubleGet the current minimum VME design factor.doubleGet production casing burst design factor.doubleGet production casing collapse design factor.doubleGet production casing tension design factor.doubleGet production casing VME (triaxial) design factor per NORSOK D-010.doubleGet production casing wall thickness.doubleGet surface casing wall thickness.doubleGet the temperature derating factor applied to production casing SMYS.doubleGet total casing weight.doubleGet total cement volume.doubleGet total cuttings volume.doubleGet total tubing weight.doubleGet tubing burst design factor.doubleGet tubing wall thickness.booleanCheck if this calculator is configured for injection well.voidsetConductorCasing(double od, double depth) Set conductor casing properties.voidsetInjectionWell(boolean injectionWell) Set whether this is an injection well.voidsetIntermediateCasing(double od, double depth) Set intermediate casing properties.voidsetMaxBottomholeTemperature(double maxBottomholeTemperature) Set max bottomhole temperature.voidsetMaxWellheadPressure(double maxWellheadPressure) Set maximum wellhead pressure.voidsetMeasuredDepth(double measuredDepth) Set measured depth.voidsetMinBurstDesignFactor(double minBurstDF) Set the minimum burst design factor.voidsetMinCollapseDesignFactor(double minCollapseDF) Set the minimum collapse design factor.voidsetMinTensionDesignFactor(double minTensionDF) Set the minimum tension design factor.voidsetMinVmeDesignFactor(double minVmeDF) Set the minimum triaxial (VME) design factor.voidsetProductionCasing(double od, double depth) Set production casing properties.voidsetProductionLiner(double od, double depth) Set production liner properties.voidsetReservoirPressure(double reservoirPressure) Set reservoir pressure.voidsetReservoirTemperature(double reservoirTemperature) Set reservoir temperature.voidsetSurfaceCasing(double od, double depth) Set surface casing properties.voidsetTrueVerticalDepth(double trueVerticalDepth) Set true vertical depth.voidSet tubing properties.voidsetWaterDepth(double waterDepth) Set water depth.toMap()Get design results as a Map for JSON export.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
measuredDepth
private double measuredDepthMeasured depth in meters. -
trueVerticalDepth
private double trueVerticalDepthTrue vertical depth in meters. -
waterDepth
private double waterDepthWater depth in meters. -
maxWellheadPressure
private double maxWellheadPressureMax wellhead pressure in bara. -
reservoirPressure
private double reservoirPressureReservoir pressure in bara. -
reservoirTemperature
private double reservoirTemperatureReservoir temperature in Celsius. -
maxBottomholeTemperature
private double maxBottomholeTemperatureMax bottomhole temperature in Celsius. -
conductorOD
private double conductorODConductor OD in inches. -
conductorDepth
private double conductorDepthConductor depth in meters MD. -
surfaceCasingOD
private double surfaceCasingODSurface casing OD in inches. -
surfaceCasingDepth
private double surfaceCasingDepthSurface casing depth in meters MD. -
intermediateCasingOD
private double intermediateCasingODIntermediate casing OD in inches. -
intermediateCasingDepth
private double intermediateCasingDepthIntermediate casing depth in meters MD. -
productionCasingOD
private double productionCasingODProduction casing OD in inches. -
productionCasingDepth
private double productionCasingDepthProduction casing depth in meters MD. -
productionLinerOD
private double productionLinerODProduction liner OD in inches. -
productionLinerDepth
private double productionLinerDepthProduction liner depth in meters MD. -
tubingOD
private double tubingODTubing OD in inches. -
tubingWeight
private double tubingWeightTubing weight in lb/ft. -
tubingGrade
Tubing grade. -
productionCasingWallThickness
private double productionCasingWallThicknessProduction casing wall thickness in mm. -
intermediateCasingWallThickness
private double intermediateCasingWallThicknessIntermediate casing wall thickness in mm. -
surfaceCasingWallThickness
private double surfaceCasingWallThicknessSurface casing wall thickness in mm. -
productionCasingBurstDF
private double productionCasingBurstDFProduction casing burst design factor. -
productionCasingCollapseDF
private double productionCasingCollapseDFProduction casing collapse design factor. -
productionCasingTensionDF
private double productionCasingTensionDFProduction casing tension design factor. -
tubingWallThickness
private double tubingWallThicknessTubing wall thickness in mm. -
tubingBurstDF
private double tubingBurstDFTubing burst design factor. -
totalCasingWeight
private double totalCasingWeightTotal casing weight in tonnes. -
totalTubingWeight
private double totalTubingWeightTotal tubing weight in tonnes. -
totalCementVolume
private double totalCementVolumeTotal cement volume in m3. -
totalCuttingsVolume
private double totalCuttingsVolumeTotal cuttings volume in m3. -
productionCasingVME_DF
private double productionCasingVME_DFProduction casing VME (triaxial) design factor. -
temperatureDeratingFactor
private double temperatureDeratingFactorTemperature derating factor applied to production casing (0-1). -
minBurstDF
private double minBurstDFMinimum burst design factor (default: NORSOK D-010 Table 18). -
minCollapseDF
private double minCollapseDFMinimum collapse design factor (default: NORSOK D-010 Table 18). -
minTensionDF
private double minTensionDFMinimum tension design factor (default: NORSOK D-010 Table 18). -
minVmeDF
private double minVmeDFMinimum triaxial (von Mises Equivalent) design factor per NORSOK D-010. -
injectionWell
private boolean injectionWellWhether this is an injection well (changes load cases). -
PORE_PRESSURE_GRADIENT
private static final double PORE_PRESSURE_GRADIENTPore pressure gradient (bar/m) — typical hydrostatic.- See Also:
-
FRAC_GRADIENT
private static final double FRAC_GRADIENTFracture pressure gradient (bar/m) — typical.- See Also:
-
STEEL_DENSITY
private static final double STEEL_DENSITYSteel density kg/m3.- See Also:
-
SEAWATER_DENSITY
private static final double SEAWATER_DENSITYSeawater density kg/m3.- See Also:
-
CEMENT_DENSITY
private static final double CEMENT_DENSITYCement 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 incheswallThicknessMm- wall thickness in mmlengthM- 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 inchesouterWT- outer casing wall thickness in mminnerOD- inner casing OD in inchesinnerWT- 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 mmcollapsePressureMPa- collapse pressure in MPasmysMPa- 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 MPatemperatureC- design temperature in Celsius- Returns:
- derated yield strength in MPa
-
getCasingGradeSMTS
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
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
-
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 inchesdepth- setting depth in meters MD
-
setSurfaceCasing
public void setSurfaceCasing(double od, double depth) Set surface casing properties.- Parameters:
od- outer diameter in inchesdepth- setting depth in meters MD
-
setIntermediateCasing
public void setIntermediateCasing(double od, double depth) Set intermediate casing properties.- Parameters:
od- outer diameter in inchesdepth- setting depth in meters MD
-
setProductionCasing
public void setProductionCasing(double od, double depth) Set production casing properties.- Parameters:
od- outer diameter in inchesdepth- setting depth in meters MD
-
setProductionLiner
public void setProductionLiner(double od, double depth) Set production liner properties.- Parameters:
od- outer diameter in inchesdepth- total depth in meters MD
-
setTubing
Set tubing properties.- Parameters:
od- outer diameter in inchesweight- weight in lb/ftgrade- 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
-