Class MooringSystem

All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, ProcessElementInterface, SimulationInterface, NamedInterface

public class MooringSystem extends ProcessEquipmentBaseClass
Mooring system design for floating offshore structures.

Calculates catenary mooring line geometry, tensions, anchor loads, and provides concept-level mooring design per applicable standards. Supports single-line and multi-line configurations with chain, wire rope, and polyester rope segments.

Key Calculations

  • Catenary geometry (line profile, touchdown point)
  • Line tensions (fairlead, anchor, maximum)
  • Anchor holding capacity requirements
  • Line weight and length estimation
  • Offset and restoring force characteristics
  • Breaking strength and safety factor checks

Line Types

  • Chain: R3, R4, R5 studless chain per DNV-OS-E302
  • Wire rope: Six-strand or spiral strand
  • Polyester rope: Lightweight synthetic for deep water
  • Chain-wire-chain: Combined catenary for deep water

Design Standards

  • DNV-OS-E301 — Position mooring
  • DNV-OS-E302 — Offshore mooring chain
  • API RP 2SK — Design and analysis of stationkeeping systems
  • ABS Guide for Position Mooring Systems

Usage Example

MooringSystem ms = new MooringSystem("Mooring Alpha");
ms.setWaterDepth(265.0);          // m
ms.setNumberOfLines(3);
ms.setLineType(MooringSystem.LineType.CHAIN_POLYESTER_CHAIN);
ms.setChainDiameter(0.127);       // m (127 mm)
ms.setDesignHorizontalForce(2500.0); // kN (per line)
ms.setDesignVerticalForce(500.0);    // kN
ms.setAnchorRadius(800.0);        // m
ms.run();
double tension = ms.getFairleadTension();  // kN
double safetyFactor = ms.getBreakingStrengthSafetyFactor();
Version:
1.0
Author:
esol
See Also:
  • Field Details

    • serialVersionUID

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

      private double waterDepth
      Water depth [m].
    • numberOfLines

      private int numberOfLines
      Number of mooring lines.
    • lineType

      private MooringSystem.LineType lineType
      Line type.
    • anchorType

      private MooringSystem.AnchorType anchorType
      Anchor type.
    • chainDiameter

      private double chainDiameter
      Chain nominal diameter [m].
    • chainGrade

      private int chainGrade
      Chain grade (R3=3, R4=4, R5=5).
    • polyesterDiameter

      private double polyesterDiameter
      Polyester rope diameter [m] (for hybrid lines).
    • wireRopeDiameter

      private double wireRopeDiameter
      Wire rope diameter [m].
    • designHorizontalForce

      private double designHorizontalForce
      Design horizontal force per line at fairlead [kN].
    • designVerticalForce

      private double designVerticalForce
      Design vertical force per line at fairlead [kN].
    • anchorRadius

      private double anchorRadius
      Anchor radius (horizontal distance fairlead to anchor) [m].
    • fairleadDepth

      private double fairleadDepth
      Fairlead depth below waterline [m].
    • soilType

      private String soilType
      Seabed soil type for anchor design.
    • requiredSafetyFactor

      private double requiredSafetyFactor
      Required safety factor per DNV-OS-E301 (ULS).
    • seawaterDensity

      private double seawaterDensity
      Seawater density [kg/m3].
    • lineLength

      private double lineLength
      Total line length per line [m].
    • bottomChainLength

      private double bottomChainLength
      Chain segment length (at seabed end) [m].
    • middleSegmentLength

      private double middleSegmentLength
      Polyester / wire segment length [m].
    • topChainLength

      private double topChainLength
      Top chain segment length [m].
    • fairleadTension

      private double fairleadTension
      Fairlead tension (resultant) per line [kN].
    • anchorTension

      private double anchorTension
      Anchor tension (horizontal at seabed) per line [kN].
    • maxLineTension

      private double maxLineTension
      Maximum line tension [kN].
    • lineWeightPerMeter

      private double lineWeightPerMeter
      Line weight in water per unit length [kN/m].
    • minimumBreakingLoad

      private double minimumBreakingLoad
      Minimum breaking load of critical section [kN].
    • safetyFactor

      private double safetyFactor
      Safety factor (MBL / max tension).
    • touchdownLength

      private double touchdownLength
      Touchdown length (line lying on seabed) [m].
    • fairleadAngle

      private double fairleadAngle
      Catenary angle at fairlead [deg].
    • totalWeight

      private double totalWeight
      Total mooring system steel weight [tonnes].
    • estimatedCost

      private double estimatedCost
      Estimated mooring system cost [MNOK].
    • requiredAnchorCapacity

      private double requiredAnchorCapacity
      Anchor holding capacity required [kN].
    • restoringStiffness

      private double restoringStiffness
      Restoring force coefficient (horizontal stiffness) [kN/m].
    • maxOffset

      private double maxOffset
      Maximum vessel offset [m] (at design load).
  • Constructor Details

    • MooringSystem

      public MooringSystem()
      Default constructor.
    • MooringSystem

      public MooringSystem(String name)
      Construct with name.
      Parameters:
      name - equipment name
  • Method Details

    • run

      public void run(UUID id)

      In this method all thermodynamic and unit operations will be calculated in a steady state calculation.

      Parameters:
      id - UUID
    • calculateLineProperties

      private void calculateLineProperties()
      Calculate line weight and segment lengths based on line type.
    • getChainWeightPerMeter

      private double getChainWeightPerMeter(double diameterMm)
      Calculate chain weight in water per meter [kN/m].
      Parameters:
      diameterMm - chain diameter in mm
      Returns:
      submerged weight per meter in kN/m
    • calculateCatenary

      private void calculateCatenary()
      Calculate catenary geometry and tensions.
    • calculateBreakingStrength

      private void calculateBreakingStrength()
      Calculate minimum breaking load and safety factor.
    • calculateAnchorRequirements

      private void calculateAnchorRequirements()
      Calculate anchor holding capacity requirements.
    • calculateRestoringForce

      private void calculateRestoringForce()
      Calculate restoring force and maximum offset.
    • estimateCost

      private void estimateCost()
      Estimate mooring system cost.
    • getLineLength

      public double getLineLength()
      Get total line length per line [m].
      Returns:
      line length in metres
    • getFairleadTension

      public double getFairleadTension()
      Get fairlead tension per line [kN].
      Returns:
      fairlead tension in kN
    • getAnchorTension

      public double getAnchorTension()
      Get anchor tension per line [kN].
      Returns:
      anchor tension in kN
    • getMaxLineTension

      public double getMaxLineTension()
      Get maximum line tension [kN].
      Returns:
      max tension in kN
    • getMinimumBreakingLoad

      public double getMinimumBreakingLoad()
      Get minimum breaking load [kN].
      Returns:
      MBL in kN
    • getBreakingStrengthSafetyFactor

      public double getBreakingStrengthSafetyFactor()
      Get breaking strength safety factor.
      Returns:
      safety factor (MBL / max tension)
    • isSafetyFactorAdequate

      public boolean isSafetyFactorAdequate()
      Check if the safety factor meets the required minimum per DNV-OS-E301.
      Returns:
      true if safety factor meets requirement
    • getTouchdownLength

      public double getTouchdownLength()
      Get touchdown length [m] (line lying on seabed).
      Returns:
      touchdown length in metres
    • getFairleadAngle

      public double getFairleadAngle()
      Get fairlead angle [deg].
      Returns:
      fairlead angle in degrees
    • getTotalWeight

      public double getTotalWeight()
      Get total mooring system weight [tonnes].
      Returns:
      total weight in tonnes
    • getEstimatedCost

      public double getEstimatedCost()
      Get estimated mooring system cost [MNOK].
      Returns:
      cost in MNOK
    • getRequiredAnchorCapacity

      public double getRequiredAnchorCapacity()
      Get required anchor holding capacity [kN].
      Returns:
      required anchor capacity in kN
    • getRestoringStiffness

      public double getRestoringStiffness()
      Get horizontal restoring stiffness [kN/m].
      Returns:
      restoring stiffness in kN/m
    • getMaxOffset

      public double getMaxOffset()
      Get maximum vessel offset at design load [m].
      Returns:
      maximum offset in metres
    • getLineWeightPerMeter

      public double getLineWeightPerMeter()
      Get line weight in water per unit length [kN/m].
      Returns:
      line weight per meter in kN/m
    • getDesignResults

      public Map<String,Object> getDesignResults()
      Get all design results as a map for JSON reporting.
      Returns:
      map of design results
    • getCatenaryProfile

      public List<double[]> getCatenaryProfile(int nPoints)
      Get catenary profile as list of (x, z) coordinate pairs. x is horizontal distance from fairlead [m], z is depth below waterline [m].
      Parameters:
      nPoints - number of points along the line
      Returns:
      list of double arrays [x, z]
    • setWaterDepth

      public void setWaterDepth(double depth)
      Set water depth [m].
      Parameters:
      depth - water depth in metres
    • setNumberOfLines

      public void setNumberOfLines(int n)
      Set number of mooring lines.
      Parameters:
      n - number of lines
    • setLineType

      public void setLineType(MooringSystem.LineType type)
      Set mooring line type.
      Parameters:
      type - line type
    • setAnchorType

      public void setAnchorType(MooringSystem.AnchorType type)
      Set anchor type.
      Parameters:
      type - anchor type
    • setChainDiameter

      public void setChainDiameter(double diameter)
      Set chain nominal diameter [m].
      Parameters:
      diameter - chain diameter in metres
    • setChainGrade

      public void setChainGrade(int grade)
      Set chain grade (3=R3, 4=R4, 5=R5).
      Parameters:
      grade - chain grade
    • setPolyesterDiameter

      public void setPolyesterDiameter(double diameter)
      Set polyester rope diameter [m].
      Parameters:
      diameter - polyester diameter in metres
    • setDesignHorizontalForce

      public void setDesignHorizontalForce(double force)
      Set design horizontal force per line at fairlead [kN].
      Parameters:
      force - horizontal force in kN
    • setDesignVerticalForce

      public void setDesignVerticalForce(double force)
      Set design vertical force per line at fairlead [kN].
      Parameters:
      force - vertical force in kN
    • setAnchorRadius

      public void setAnchorRadius(double radius)
      Set anchor radius [m].
      Parameters:
      radius - anchor radius in metres
    • setFairleadDepth

      public void setFairleadDepth(double depth)
      Set fairlead depth below waterline [m].
      Parameters:
      depth - fairlead depth in metres
    • setSoilType

      public void setSoilType(String type)
      Set seabed soil type.
      Parameters:
      type - soil type description
    • setRequiredSafetyFactor

      public void setRequiredSafetyFactor(double sf)
      Set required safety factor.
      Parameters:
      sf - required safety factor
    • setSeawaterDensity

      public void setSeawaterDensity(double density)
      Set seawater density [kg/m3].
      Parameters:
      density - seawater density in kg/m3