Class RiserMechanicalDesignCalculator

java.lang.Object
neqsim.process.mechanicaldesign.pipeline.PipeMechanicalDesignCalculator
neqsim.process.mechanicaldesign.pipeline.RiserMechanicalDesignCalculator
All Implemented Interfaces:
Serializable

public class RiserMechanicalDesignCalculator extends PipeMechanicalDesignCalculator
Calculator for riser-specific mechanical design.

This class extends PipeMechanicalDesignCalculator to provide riser-specific calculations including:

  • Top tension calculation (catenary and TTR)
  • Touchdown point stress analysis
  • VIV (Vortex-Induced Vibration) response
  • Dynamic stress from waves and currents
  • Heave motion response
  • Riser fatigue life estimation

Design Standards

  • DNV-OS-F201 - Dynamic Risers
  • DNV-RP-F204 - Riser Fatigue
  • DNV-RP-C203 - Fatigue Design of Offshore Structures
  • API RP 2RD - Design of Risers for Floating Production Systems

Key Formulas

Catenary Top Tension

For a catenary riser, the top tension is: T_top = w × H / sin(θ_top) where w = submerged weight per meter, H = water depth, θ_top = top angle from horizontal

VIV Response

Vortex shedding frequency: f_v = St × V / D where St = Strouhal number (~0.2), V = current velocity, D = outer diameter

Touchdown Point Stress

Bending stress at TDP: σ_b = E × D / (2 × R_TDP) where E = Young's modulus, D = outer diameter, R_TDP = radius of curvature at touchdown

Version:
1.0
Author:
ASMF
See Also:
  • Field Details

    • serialVersionUID

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

      private String riserType
      Riser type name.
    • waterDepth

      private double waterDepth
      Water depth in meters.
    • topAngle

      private double topAngle
      Top hangoff angle from vertical in degrees.
    • departureAngle

      private double departureAngle
      Departure angle from seabed in degrees.
    • currentVelocity

      private double currentVelocity
      Current velocity at mid-depth in m/s.
    • seabedCurrentVelocity

      private double seabedCurrentVelocity
      Current velocity at seabed in m/s.
    • significantWaveHeight

      private double significantWaveHeight
      Significant wave height in meters.
    • peakWavePeriod

      private double peakWavePeriod
      Peak wave period in seconds.
    • platformHeaveAmplitude

      private double platformHeaveAmplitude
      Platform heave motion amplitude in meters.
    • platformHeavePeriod

      private double platformHeavePeriod
      Platform heave period in seconds.
    • seabedFriction

      private double seabedFriction
      Seabed friction coefficient.
    • appliedTopTension

      private double appliedTopTension
      Applied top tension for TTR in kN.
    • tensionVariationFactor

      private double tensionVariationFactor
      Tension variation factor for heave.
    • buoyancyModuleDepth

      private double buoyancyModuleDepth
      Depth of buoyancy modules from surface in meters.
    • buoyancyModuleLength

      private double buoyancyModuleLength
      Length of buoyancy section in meters.
    • buoyancyPerMeter

      private double buoyancyPerMeter
      Buoyancy per unit length in N/m.
    • topTension

      private double topTension
      Calculated top tension in kN.
    • minTopTension

      private double minTopTension
      Minimum top tension in kN.
    • maxTopTension

      private double maxTopTension
      Maximum top tension in kN.
    • bottomTension

      private double bottomTension
      Bottom tension at seabed in kN.
    • catenaryParameter

      private double catenaryParameter
      Catenary parameter a in meters.
    • touchdownPointStress

      private double touchdownPointStress
      Touchdown point stress in MPa.
    • touchdownCurvatureRadius

      private double touchdownCurvatureRadius
      Radius of curvature at touchdown in meters.
    • touchdownZoneLength

      private double touchdownZoneLength
      Length of touchdown zone in meters.
    • touchdownBendingMoment

      private double touchdownBendingMoment
      Bending moment at touchdown in kN.m.
    • vortexSheddingFrequency

      private double vortexSheddingFrequency
      Vortex shedding frequency in Hz.
    • naturalFrequency

      private double naturalFrequency
      Riser natural frequency (first mode) in Hz.
    • vivAmplitude

      private double vivAmplitude
      VIV amplitude (A/D ratio).
    • vivStressRange

      private double vivStressRange
      VIV stress range in MPa.
    • vivFatigueDamage

      private double vivFatigueDamage
      VIV fatigue damage per year.
    • vivLockIn

      private boolean vivLockIn
      Whether VIV lock-in is occurring.
    • waveInducedStress

      private double waveInducedStress
      Wave-induced stress range in MPa.
    • heaveInducedStress

      private double heaveInducedStress
      Heave-induced stress range in MPa.
    • combinedDynamicStress

      private double combinedDynamicStress
      Combined dynamic stress in MPa.
    • strokeRequirement

      private double strokeRequirement
      Stroke requirement for TTR in meters.
    • riserFatigueLife

      private double riserFatigueLife
      Riser fatigue life in years.
    • totalFatigueDamageRate

      private double totalFatigueDamageRate
      Total fatigue damage rate per year.
    • waveFatigueDamage

      private double waveFatigueDamage
      Wave fatigue damage per year.
    • collapseUtilization

      private double collapseUtilization
      Collapse utilization factor.
    • maxStressUtilization

      private double maxStressUtilization
      Maximum stress utilization.
    • strouhalNumber

      private double strouhalNumber
      Strouhal number for VIV (configurable from DNV-RP-C205).
    • dragCoefficient

      private double dragCoefficient
      Drag coefficient for circular cylinder (configurable from DNV-RP-C205).
    • addedMassCoefficient

      private double addedMassCoefficient
      Added mass coefficient (configurable from DNV-RP-C205).
    • liftCoefficient

      private double liftCoefficient
      Lift coefficient for VIV (configurable from DNV-RP-C205).
    • snParameter

      private double snParameter
      S-N curve parameter log(a) for seawater with CP (configurable from DNV-RP-C203).
    • snSlope

      private double snSlope
      S-N curve slope parameter m (configurable from DNV-RP-C203).
    • fatigueDesignFactor

      private double fatigueDesignFactor
      Fatigue design factor (configurable from DNV-RP-F204).
    • dynamicAmplificationFactor

      private double dynamicAmplificationFactor
      Dynamic amplification factor (configurable from DNV-OS-F201).
    • stressConcentrationFactor

      private double stressConcentrationFactor
      Stress concentration factor for girth welds (configurable from DNV-RP-F204).
    • GRAVITY

      private static final double GRAVITY
      Gravity acceleration m/s².
      See Also:
    • SEAWATER_DENSITY

      private static final double SEAWATER_DENSITY
      Seawater density kg/m³.
      See Also:
  • Constructor Details

    • RiserMechanicalDesignCalculator

      public RiserMechanicalDesignCalculator()
      Default constructor.
  • Method Details

    • calculateCatenaryTopTension

      public double calculateCatenaryTopTension()
      Calculate top tension for catenary riser (SCR, flexible, lazy-wave).

      For a catenary riser, the tension distribution follows: T(s) = T_bottom + w × s where s = arc length from seabed, w = submerged weight per unit length

      Returns:
      top tension in kN
    • calculateTTRTension

      public double calculateTTRTension()
      Calculate tension for Top Tensioned Riser.

      For TTR, the applied tension must exceed the riser weight to maintain positive tension throughout the riser length.

      Returns:
      required top tension in kN
    • calculateStrokeRequirement

      public double calculateStrokeRequirement()
      Calculate stroke requirement for TTR heave compensation.
      Returns:
      stroke requirement in meters
    • calculateTouchdownPointStress

      public double calculateTouchdownPointStress()
      Calculate stress at the touchdown point.

      The touchdown point (TDP) is where the riser contacts the seabed. This is a critical fatigue location due to cyclic bending as the TDP moves with wave action.

      Returns:
      touchdown point stress in MPa
    • calculateTouchdownZoneLength

      public double calculateTouchdownZoneLength()
      Calculate length of the touchdown zone.

      The touchdown zone is where the riser transitions from suspended catenary to resting on seabed. This zone experiences cyclic motion with wave action.

      Returns:
      touchdown zone length in meters
    • calculateVIVResponse

      public double calculateVIVResponse()
      Calculate VIV (Vortex-Induced Vibration) response.

      VIV occurs when vortex shedding frequency approaches the riser natural frequency. This can cause significant fatigue damage.

      Returns:
      VIV amplitude as A/D ratio
    • calculateNaturalFrequency

      private double calculateNaturalFrequency()
      Calculate natural frequency of the riser (first mode).
      Returns:
      natural frequency in Hz
    • calculateVIVFatigueDamage

      public double calculateVIVFatigueDamage()
      Calculate VIV fatigue damage.
      Returns:
      VIV fatigue damage per year
    • calculateWaveInducedStress

      public double calculateWaveInducedStress()
      Calculate wave-induced stress.

      Waves cause cyclic loading on the riser through direct loading and vessel motion.

      Returns:
      wave-induced stress range in MPa
    • calculateHeaveInducedStress

      public double calculateHeaveInducedStress()
      Calculate heave-induced stress.

      Platform heave motion causes axial stress variations in the riser.

      Returns:
      heave-induced stress in MPa
    • calculateRiserFatigueLife

      public double calculateRiserFatigueLife()
      Calculate total riser fatigue life.

      Combines fatigue damage from: - VIV - Wave loading - Heave motion - TDP cyclic bending

      Returns:
      fatigue life in years
    • calculateExternalPressure

      public double calculateExternalPressure(double depth)
      Calculate external pressure at a given depth.
      Parameters:
      depth - water depth in meters
      Returns:
      external pressure in MPa
    • calculateCollapseUtilization

      public double calculateCollapseUtilization()
      Calculate collapse utilization.
      Returns:
      utilization factor (should be < 1.0)
    • getRiserType

      public String getRiserType()
      Get riser type.
      Returns:
      riser type name
    • setRiserType

      public void setRiserType(String riserType)
      Set riser type.
      Parameters:
      riserType - type name
    • getWaterDepth

      public double getWaterDepth()
      Get water depth.
      Overrides:
      getWaterDepth in class PipeMechanicalDesignCalculator
      Returns:
      depth in meters
    • setWaterDepth

      public void setWaterDepth(double waterDepth)
      Set water depth.
      Overrides:
      setWaterDepth in class PipeMechanicalDesignCalculator
      Parameters:
      waterDepth - depth in meters
    • getTopAngle

      public double getTopAngle()
      Get top angle.
      Returns:
      angle in degrees from vertical
    • setTopAngle

      public void setTopAngle(double topAngle)
      Set top angle.
      Parameters:
      topAngle - angle in degrees from vertical
    • getDepartureAngle

      public double getDepartureAngle()
      Get departure angle.
      Returns:
      angle in degrees
    • setDepartureAngle

      public void setDepartureAngle(double departureAngle)
      Set departure angle.
      Parameters:
      departureAngle - angle in degrees
    • getCurrentVelocity

      public double getCurrentVelocity()
      Get current velocity.
      Returns:
      velocity in m/s
    • setCurrentVelocity

      public void setCurrentVelocity(double currentVelocity)
      Set current velocity.
      Parameters:
      currentVelocity - velocity in m/s
    • getSeabedCurrentVelocity

      public double getSeabedCurrentVelocity()
      Get seabed current velocity.
      Returns:
      velocity in m/s
    • setSeabedCurrentVelocity

      public void setSeabedCurrentVelocity(double seabedCurrentVelocity)
      Set seabed current velocity.
      Parameters:
      seabedCurrentVelocity - velocity in m/s
    • getSignificantWaveHeight

      public double getSignificantWaveHeight()
      Get significant wave height.
      Returns:
      height in meters
    • setSignificantWaveHeight

      public void setSignificantWaveHeight(double significantWaveHeight)
      Set significant wave height.
      Parameters:
      significantWaveHeight - height in meters
    • getPeakWavePeriod

      public double getPeakWavePeriod()
      Get peak wave period.
      Returns:
      period in seconds
    • setPeakWavePeriod

      public void setPeakWavePeriod(double peakWavePeriod)
      Set peak wave period.
      Parameters:
      peakWavePeriod - period in seconds
    • getPlatformHeaveAmplitude

      public double getPlatformHeaveAmplitude()
      Get platform heave amplitude.
      Returns:
      amplitude in meters
    • setPlatformHeaveAmplitude

      public void setPlatformHeaveAmplitude(double platformHeaveAmplitude)
      Set platform heave amplitude.
      Parameters:
      platformHeaveAmplitude - amplitude in meters
    • getPlatformHeavePeriod

      public double getPlatformHeavePeriod()
      Get platform heave period.
      Returns:
      period in seconds
    • setPlatformHeavePeriod

      public void setPlatformHeavePeriod(double platformHeavePeriod)
      Set platform heave period.
      Parameters:
      platformHeavePeriod - period in seconds
    • getSeabedFriction

      public double getSeabedFriction()
      Get seabed friction.
      Returns:
      friction coefficient
    • setSeabedFriction

      public void setSeabedFriction(double seabedFriction)
      Set seabed friction.
      Parameters:
      seabedFriction - friction coefficient
    • getAppliedTopTension

      public double getAppliedTopTension()
      Get applied top tension.
      Returns:
      tension in kN
    • setAppliedTopTension

      public void setAppliedTopTension(double appliedTopTension)
      Set applied top tension for TTR.
      Parameters:
      appliedTopTension - tension in kN
    • getTensionVariationFactor

      public double getTensionVariationFactor()
      Get tension variation factor.
      Returns:
      factor
    • setTensionVariationFactor

      public void setTensionVariationFactor(double tensionVariationFactor)
      Set tension variation factor.
      Parameters:
      tensionVariationFactor - factor
    • getBuoyancyModuleDepth

      public double getBuoyancyModuleDepth()
      Get buoyancy module depth.
      Returns:
      depth in meters
    • setBuoyancyModuleDepth

      public void setBuoyancyModuleDepth(double buoyancyModuleDepth)
      Set buoyancy module depth.
      Parameters:
      buoyancyModuleDepth - depth in meters
    • getBuoyancyModuleLength

      public double getBuoyancyModuleLength()
      Get buoyancy module length.
      Returns:
      length in meters
    • setBuoyancyModuleLength

      public void setBuoyancyModuleLength(double buoyancyModuleLength)
      Set buoyancy module length.
      Parameters:
      buoyancyModuleLength - length in meters
    • getBuoyancyPerMeter

      public double getBuoyancyPerMeter()
      Get buoyancy per meter.
      Returns:
      buoyancy in N/m
    • setBuoyancyPerMeter

      public void setBuoyancyPerMeter(double buoyancyPerMeter)
      Set buoyancy per meter.
      Parameters:
      buoyancyPerMeter - buoyancy in N/m
    • setStrouhalNumber

      public void setStrouhalNumber(double strouhalNumber)
      Set Strouhal number for VIV calculation.
      Parameters:
      strouhalNumber - Strouhal number (typically 0.18-0.22 per DNV-RP-C205)
    • getStrouhalNumber

      public double getStrouhalNumber()
      Get Strouhal number.
      Returns:
      Strouhal number
    • setDragCoefficient

      public void setDragCoefficient(double dragCoefficient)
      Set drag coefficient.
      Parameters:
      dragCoefficient - drag coefficient (typically 0.9-1.2 per DNV-RP-C205)
    • getDragCoefficient

      public double getDragCoefficient()
      Get drag coefficient.
      Returns:
      drag coefficient
    • setAddedMassCoefficient

      public void setAddedMassCoefficient(double addedMassCoefficient)
      Set added mass coefficient.
      Parameters:
      addedMassCoefficient - added mass coefficient (typically 1.0 per DNV-RP-C205)
    • getAddedMassCoefficient

      public double getAddedMassCoefficient()
      Get added mass coefficient.
      Returns:
      added mass coefficient
    • setLiftCoefficient

      public void setLiftCoefficient(double liftCoefficient)
      Set lift coefficient for VIV.
      Parameters:
      liftCoefficient - lift coefficient (typically 0.8-1.0 per DNV-RP-C205)
    • getLiftCoefficient

      public double getLiftCoefficient()
      Get lift coefficient.
      Returns:
      lift coefficient
    • setSnParameter

      public void setSnParameter(double snParameter)
      Set S-N curve parameter log(a) for fatigue calculation.
      Parameters:
      snParameter - S-N curve parameter (12.164 for seawater with CP per DNV-RP-C203)
    • getSnParameter

      public double getSnParameter()
      Get S-N curve parameter.
      Returns:
      S-N curve parameter log(a)
    • setSnSlope

      public void setSnSlope(double snSlope)
      Set S-N curve slope parameter m.
      Parameters:
      snSlope - slope parameter (typically 3.0 per DNV-RP-C203)
    • getSnSlope

      public double getSnSlope()
      Get S-N curve slope.
      Returns:
      S-N curve slope parameter m
    • setFatigueDesignFactor

      public void setFatigueDesignFactor(double fatigueDesignFactor)
      Set fatigue design factor.
      Parameters:
      fatigueDesignFactor - fatigue design factor (3-10 per DNV-RP-F204)
    • getFatigueDesignFactor

      public double getFatigueDesignFactor()
      Get fatigue design factor.
      Returns:
      fatigue design factor
    • setDynamicAmplificationFactor

      public void setDynamicAmplificationFactor(double dynamicAmplificationFactor)
      Set dynamic amplification factor.
      Parameters:
      dynamicAmplificationFactor - DAF (typically 1.1-1.3 per DNV-OS-F201)
    • getDynamicAmplificationFactor

      public double getDynamicAmplificationFactor()
      Get dynamic amplification factor.
      Returns:
      dynamic amplification factor
    • setStressConcentrationFactor

      public void setStressConcentrationFactor(double stressConcentrationFactor)
      Set stress concentration factor for girth welds.
      Parameters:
      stressConcentrationFactor - SCF (typically 1.2-1.5 per DNV-RP-F204)
    • getStressConcentrationFactor

      public double getStressConcentrationFactor()
      Get stress concentration factor.
      Returns:
      stress concentration factor
    • getTopTension

      public double getTopTension()
      Get calculated top tension.
      Returns:
      tension in kN
    • getMinTopTension

      public double getMinTopTension()
      Get minimum top tension.
      Returns:
      tension in kN
    • getMaxTopTension

      public double getMaxTopTension()
      Get maximum top tension.
      Returns:
      tension in kN
    • getBottomTension

      public double getBottomTension()
      Get bottom tension.
      Returns:
      tension in kN
    • getCatenaryParameter

      public double getCatenaryParameter()
      Get catenary parameter.
      Returns:
      catenary parameter in meters
    • getTouchdownPointStress

      public double getTouchdownPointStress()
      Get touchdown point stress.
      Returns:
      stress in MPa
    • getTouchdownCurvatureRadius

      public double getTouchdownCurvatureRadius()
      Get touchdown curvature radius.
      Returns:
      radius in meters
    • getTouchdownZoneLength

      public double getTouchdownZoneLength()
      Get touchdown zone length.
      Returns:
      length in meters
    • getTouchdownBendingMoment

      public double getTouchdownBendingMoment()
      Get touchdown bending moment.
      Returns:
      moment in kN.m
    • getVortexSheddingFrequency

      public double getVortexSheddingFrequency()
      Get vortex shedding frequency.
      Returns:
      frequency in Hz
    • getNaturalFrequency

      public double getNaturalFrequency()
      Get natural frequency.
      Returns:
      frequency in Hz
    • getVIVAmplitude

      public double getVIVAmplitude()
      Get VIV amplitude.
      Returns:
      A/D ratio
    • getVIVStressRange

      public double getVIVStressRange()
      Get VIV stress range.
      Returns:
      stress in MPa
    • getVIVFatigueDamage

      public double getVIVFatigueDamage()
      Get VIV fatigue damage per year.
      Returns:
      damage rate
    • isVIVLockIn

      public boolean isVIVLockIn()
      Check if VIV lock-in is occurring.
      Returns:
      true if lock-in
    • getWaveInducedStress

      public double getWaveInducedStress()
      Get wave-induced stress.
      Returns:
      stress in MPa
    • getHeaveInducedStress

      public double getHeaveInducedStress()
      Get heave-induced stress.
      Returns:
      stress in MPa
    • getCombinedDynamicStress

      public double getCombinedDynamicStress()
      Get combined dynamic stress.
      Returns:
      stress in MPa
    • getStrokeRequirement

      public double getStrokeRequirement()
      Get stroke requirement for TTR.
      Returns:
      stroke in meters
    • getRiserFatigueLife

      public double getRiserFatigueLife()
      Get riser fatigue life.
      Returns:
      life in years
    • getTotalFatigueDamageRate

      public double getTotalFatigueDamageRate()
      Get total fatigue damage rate.
      Returns:
      damage per year
    • getWaveFatigueDamage

      public double getWaveFatigueDamage()
      Get wave fatigue damage per year.
      Returns:
      damage rate
    • getCollapseUtilization

      public double getCollapseUtilization()
      Get collapse utilization.
      Returns:
      utilization factor
    • getMaxStressUtilization

      public double getMaxStressUtilization()
      Get maximum stress utilization.
      Returns:
      utilization factor
    • setExternalPressure

      private void setExternalPressure(double pressure)
      Set external pressure.
      Parameters:
      pressure - pressure in MPa
    • toRiserMap

      public Map<String,Object> toRiserMap()
      Get riser-specific results as a map.
      Returns:
      map of results
    • toRiserJson

      public String toRiserJson()
      Get riser-specific results as JSON.
      Returns:
      JSON string
    • toMap

      public Map<String,Object> toMap()
      Convert mechanical design data to a Map for JSON serialization.
      Overrides:
      toMap in class PipeMechanicalDesignCalculator
      Returns:
      Map containing design data