Skip to the content.

Umbilicals

Documentation for subsea umbilical equipment in NeqSim.

Table of Contents


Overview

Location: neqsim.process.equipment.subsea

An umbilical is a bundled assembly of tubes, hoses, and cables used to supply subsea equipment with:

Class Description
Umbilical Subsea umbilical assembly
UmbilicalMechanicalDesign Mechanical design calculations

Umbilical Class

Class Hierarchy

ProcessEquipmentBaseClass
└── Umbilical
    ├── enum: UmbilicalType
    ├── enum: CrossSectionType
    └── static class: UmbilicalElement

Key Features

Constructor

import neqsim.process.equipment.subsea.Umbilical;

// Create steel tube umbilical
Umbilical umbilical = new Umbilical("Main Umbilical");
umbilical.setUmbilicalType(Umbilical.UmbilicalType.STEEL_TUBE);
umbilical.setLength(25000.0);  // 25 km
umbilical.setWaterDepth(450.0);

Umbilical Types

UmbilicalType Enumeration

Type Description Application
STEEL_TUBE Steel tubes for hydraulic/chemical Modern standard
THERMOPLASTIC Nylon/PE hoses Legacy systems
INTEGRATED_PRODUCTION Combined with small bore production Compact systems
ELECTRO_HYDRAULIC Combined hydraulic + electrical Standard
ELECTRIC_ONLY All-electric control Future systems

Cross-Section Types

Type Description
CIRCULAR Standard circular cross-section
FLAT Ribbon/flat configuration
BUNDLED Loose bundled elements

Selecting Umbilical Type

// Modern steel tube umbilical
umbilical.setUmbilicalType(Umbilical.UmbilicalType.STEEL_TUBE);
umbilical.setCrossSectionType(Umbilical.CrossSectionType.CIRCULAR);

// All-electric system
umbilical.setUmbilicalType(Umbilical.UmbilicalType.ELECTRIC_ONLY);

Functional Elements

UmbilicalElement Class

Each element within the umbilical has specific properties:

Property Description Unit
Type hydraulic, chemical, electrical, fiber -
ID/OD Inner/outer diameter mm
Design Pressure Maximum working pressure bar
Material Construction material -
Function Specific purpose -

Adding Hydraulic Lines

// Add LP and HP hydraulic supply lines
umbilical.addHydraulicLine("LP Hydraulic", 12.7, 345.0);  // 12.7mm ID, 345 bar
umbilical.addHydraulicLine("HP Hydraulic", 9.5, 690.0);   // 9.5mm ID, 690 bar

// Hydraulic return line
umbilical.addHydraulicLine("Hydraulic Return", 19.0, 100.0);

Adding Chemical Lines

// MEG injection line
umbilical.addChemicalLine("MEG", 25.4, 150.0);  // 25.4mm ID, 150 bar

// Methanol injection
umbilical.addChemicalLine("Methanol", 19.0, 200.0);

// Scale inhibitor
umbilical.addChemicalLine("Scale Inhibitor", 12.7, 150.0);

// Corrosion inhibitor
umbilical.addChemicalLine("Corrosion Inhibitor", 9.5, 150.0);

Adding Electrical Cables

// Main power cable (3-phase, 6.6 kV)
umbilical.addElectricalCable("Power", 3, 6600.0);  // 3 cores, 6600V

// Auxiliary power
umbilical.addElectricalCable("Auxiliary Power", 3, 690.0);

// Control/signal cables
umbilical.addElectricalCable("Control", 7, 24.0);  // 7 cores, 24V

Adding Fiber Optic Cables

// Control and monitoring fiber
umbilical.addFiberOptic("Control", 12);  // 12 fibers

// Communication fiber
umbilical.addFiberOptic("Communication", 24);  // 24 fibers

Configuration

Basic Configuration

import neqsim.process.equipment.subsea.Umbilical;

// Create and configure umbilical
Umbilical umbilical = new Umbilical("Production Umbilical");

// Set type and length
umbilical.setUmbilicalType(Umbilical.UmbilicalType.STEEL_TUBE);
umbilical.setLength(30000.0);      // 30 km
umbilical.setWaterDepth(500.0);

// Design parameters
umbilical.setDesignLife(25);       // years
umbilical.setDesignTemperature(90.0);  // °C max

// Add functional elements
umbilical.addHydraulicLine("LP Hydraulic", 12.7, 345.0);
umbilical.addHydraulicLine("HP Hydraulic", 9.5, 690.0);
umbilical.addChemicalLine("MEG", 25.4, 150.0);
umbilical.addChemicalLine("Methanol", 19.0, 200.0);
umbilical.addElectricalCable("Power", 3, 6600.0);
umbilical.addFiberOptic("Control", 12);

Flow Calculations

// Set chemical injection rates
umbilical.setMEGInjectionRate(5.0, "m3/hr");
umbilical.setMethanolInjectionRate(2.0, "m3/hr");

// Calculate pressure drops
double megDeltaP = umbilical.calculatePressureDrop("MEG");
double methanolDeltaP = umbilical.calculatePressureDrop("Methanol");

System.out.println("MEG pressure drop: " + megDeltaP + " bar");
System.out.println("Methanol pressure drop: " + methanolDeltaP + " bar");

Power Calculations

// Set power transmission parameters
umbilical.setPowerTransmissionVoltage(6600.0);  // V
umbilical.setPowerLoad(5.0);  // MW

// Calculate losses
double voltageDrop = umbilical.calculateVoltageDrop();
double powerLoss = umbilical.calculatePowerLoss();

System.out.println("Voltage drop: " + voltageDrop + "%");
System.out.println("Power loss: " + powerLoss + " MW");

Usage Examples

Example 1: Complete Umbilical Configuration

import neqsim.process.equipment.subsea.Umbilical;

// Create main production umbilical
Umbilical mainUmbilical = new Umbilical("Main Production Umbilical");
mainUmbilical.setUmbilicalType(Umbilical.UmbilicalType.STEEL_TUBE);
mainUmbilical.setLength(25000.0);  // 25 km to manifold
mainUmbilical.setWaterDepth(450.0);

// Hydraulic supply/return
mainUmbilical.addHydraulicLine("LP Supply", 12.7, 345.0);
mainUmbilical.addHydraulicLine("HP Supply", 9.5, 690.0);
mainUmbilical.addHydraulicLine("LP Return", 15.9, 100.0);

// Chemical injection
mainUmbilical.addChemicalLine("MEG Injection", 25.4, 150.0);
mainUmbilical.addChemicalLine("Methanol", 19.0, 200.0);
mainUmbilical.addChemicalLine("Scale Inhibitor", 12.7, 150.0);
mainUmbilical.addChemicalLine("Corrosion Inhibitor", 9.5, 150.0);
mainUmbilical.addChemicalLine("LDHI", 9.5, 150.0);

// Electrical power
mainUmbilical.addElectricalCable("Main Power", 3, 6600.0);
mainUmbilical.addElectricalCable("Auxiliary Power", 3, 690.0);

// Fiber optics
mainUmbilical.addFiberOptic("Control/Communication", 24);
mainUmbilical.addFiberOptic("Spare", 12);

// Get summary
System.out.println("Umbilical: " + mainUmbilical.getName());
System.out.println("Length: " + mainUmbilical.getLength() / 1000 + " km");
System.out.println("Elements: " + mainUmbilical.getElementCount());

Example 2: Chemical Injection Sizing

// Umbilical for MEG injection system
Umbilical megUmbilical = new Umbilical("MEG Supply");
megUmbilical.setUmbilicalType(Umbilical.UmbilicalType.STEEL_TUBE);
megUmbilical.setLength(30000.0);

// Main MEG line - sized for injection rate
double megRate = 8.0;  // m³/hr required injection rate
double velocity = 2.0;  // m/s target velocity

// Calculate required diameter
double areaRequired = (megRate / 3600.0) / velocity;  // m²
double diameterRequired = Math.sqrt(4 * areaRequired / Math.PI) * 1000;  // mm

System.out.println("Required MEG line ID: " + diameterRequired + " mm");

// Add MEG line (use next standard size)
umbilical.addChemicalLine("MEG", 32.0, 200.0);  // 32mm ID

// Calculate actual pressure drop
megUmbilical.setMEGInjectionRate(megRate, "m3/hr");
double actualDeltaP = megUmbilical.calculatePressureDrop("MEG");

System.out.println("MEG pressure drop over " + megUmbilical.getLength()/1000 + " km: " + actualDeltaP + " bar");

Example 3: Power Transmission Design

// Long step-out umbilical for subsea booster
Umbilical powerUmbilical = new Umbilical("Power Umbilical");
powerUmbilical.setUmbilicalType(Umbilical.UmbilicalType.ELECTRO_HYDRAULIC);
powerUmbilical.setLength(80000.0);  // 80 km
powerUmbilical.setWaterDepth(1200.0);

// Power cable for 6 MW booster
powerUmbilical.addElectricalCable("Main Power", 3, 36000.0);  // 36 kV transmission

// Set load parameters
powerUmbilical.setPowerLoad(6.0);  // MW
powerUmbilical.setPowerFactor(0.9);

// Calculate transmission losses
double voltageDrop = powerUmbilical.calculateVoltageDrop();
double losses = powerUmbilical.calculatePowerLoss();
double efficiency = (6.0 - losses) / 6.0 * 100;

System.out.println("Transmission voltage: 36 kV");
System.out.println("Step-out distance: 80 km");
System.out.println("Voltage drop: " + String.format("%.1f", voltageDrop) + "%");
System.out.println("Power loss: " + String.format("%.2f", losses) + " MW");
System.out.println("Efficiency: " + String.format("%.1f", efficiency) + "%");

Example 4: Umbilical with Mechanical Design

import neqsim.process.mechanicaldesign.subsea.UmbilicalMechanicalDesign;

// Create umbilical
Umbilical umbilical = new Umbilical("Export Umbilical");
umbilical.setUmbilicalType(Umbilical.UmbilicalType.STEEL_TUBE);
umbilical.setLength(40000.0);
umbilical.setWaterDepth(800.0);

// Add elements
umbilical.addHydraulicLine("LP", 12.7, 345.0);
umbilical.addHydraulicLine("HP", 9.5, 690.0);
umbilical.addChemicalLine("MEG", 25.4, 150.0);
umbilical.addElectricalCable("Power", 3, 6600.0);
umbilical.addFiberOptic("Control", 24);

// Get mechanical design
UmbilicalMechanicalDesign design = umbilical.getMechanicalDesign();

// Configure
design.setArmorType("Double Cross-Wound");
design.setOuterSheath("HDPE");
design.setCorrosionProtection("Galvanized armor + cathodic");

// Calculate design
design.calcDesign();

// Get results
System.out.println("Outer diameter: " + design.getOuterDiameter() + " mm");
System.out.println("Dry weight: " + design.getDryWeight() + " kg/m");
System.out.println("Wet weight: " + design.getWetWeight() + " kg/m");
System.out.println("MBR: " + design.getMinimumBendRadius() + " m");
System.out.println("MWS: " + design.getMaxWallTension() + " kN");

// Get JSON report
String report = design.toJson();

Design Standards

Applicable Standards

Standard Title
API RP 17E Subsea Umbilicals
API Spec 17E Specification for Subsea Production Control Umbilicals
ISO 13628-5 Subsea Umbilicals
DNV-ST-F101 Submarine Pipeline Systems (for steel tubes)

Design Parameters

Parameter Typical Range Unit
Length 5-150 km
Water Depth 100-3000 m
Outer Diameter 80-250 mm
Dry Weight 15-100 kg/m
MBR 2-5 m
Design Life 20-30 years

Material Selection

Component Material Application
Steel Tubes Super Duplex 25Cr Hydraulic/chemical
Thermoplastic Hoses PA11, PVDF Legacy systems
Electrical Cables EPR/XLPE insulation Power/signal
Fiber Optics Single/multi-mode Control/comms
Armor Galvanized steel Mechanical protection
Outer Sheath HDPE, PA11 Abrasion protection

Typical Umbilical Cross-Section

         ┌─────────────────────┐
         │    Outer Sheath     │
         │  ┌───────────────┐  │
         │  │    Armor      │  │
         │  │  ┌─────────┐  │  │
         │  │  │ LP Hyd  │  │  │
         │  │  │  ┌───┐  │  │  │
         │  │  │  │HP │  │  │  │
         │  │  │  │Hyd│  │  │  │
         │  │  │  └───┘  │  │  │
         │  │  │ MEG  CH │  │  │
         │  │  │ ┌──┐┌──┐│  │  │
         │  │  │ │  ││  ││  │  │
         │  │  │ └──┘└──┘│  │  │
         │  │  │ Power   │  │  │
         │  │  │ ┌────┐  │  │  │
         │  │  │ │Fiber│ │  │  │
         │  │  │ └────┘  │  │  │
         │  │  └─────────┘  │  │
         │  └───────────────┘  │
         └─────────────────────┘


API Reference

Umbilical

// Constructors
Umbilical(String name)

// Type configuration
void setUmbilicalType(UmbilicalType type)
UmbilicalType getUmbilicalType()
void setCrossSectionType(CrossSectionType type)
CrossSectionType getCrossSectionType()

// Physical parameters
void setLength(double meters)
double getLength()
void setWaterDepth(double meters)
void setDesignLife(int years)
void setDesignTemperature(double celsius)

// Adding elements
void addHydraulicLine(String name, double idMm, double pressureBar)
void addChemicalLine(String name, double idMm, double pressureBar)
void addElectricalCable(String name, int cores, double voltage)
void addFiberOptic(String name, int fibers)

// Element management
int getElementCount()
List<UmbilicalElement> getElements()

// Flow calculations
void setMEGInjectionRate(double rate, String unit)
void setMethanolInjectionRate(double rate, String unit)
double calculatePressureDrop(String chemicalName)

// Power calculations
void setPowerTransmissionVoltage(double volts)
void setPowerLoad(double megawatts)
void setPowerFactor(double pf)
double calculateVoltageDrop()
double calculatePowerLoss()

// Mechanical design
UmbilicalMechanicalDesign getMechanicalDesign()

UmbilicalType Enum

enum UmbilicalType {
    STEEL_TUBE,
    THERMOPLASTIC,
    INTEGRATED_PRODUCTION,
    ELECTRO_HYDRAULIC,
    ELECTRIC_ONLY
}

CrossSectionType Enum

enum CrossSectionType {
    CIRCULAR,
    FLAT,
    BUNDLED
}

UmbilicalElement Class

class UmbilicalElement {
    String getName()
    String getType()  // hydraulic, chemical, electrical, fiber
    double getInnerDiameter()
    double getOuterDiameter()
    double getDesignPressure()
    String getMaterial()
    String getFunction()
}