Class SubseaManifold

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

public class SubseaManifold extends ProcessEquipmentBaseClass
Subsea Production Manifold equipment class.

A subsea manifold gathers production from multiple wells and routes it to flowlines for transport to the host facility. Key features include:

  • Production headers for well gathering
  • Test headers for individual well testing
  • Service/utility headers for chemicals and hydraulics
  • Valve skids with production and isolation valves
  • Flowline connections to export pipelines

Design Standards

  • API RP 17G - Recommended Practice for Completion/Workover Risers
  • API RP 17N - Subsea Production System Reliability
  • DNV-ST-F101 - Submarine Pipeline Systems
  • NORSOK U-001 - Subsea Production Systems

Usage Example

// Create 6-slot subsea manifold
SubseaManifold manifold = new SubseaManifold("Manifold-A", 6);
manifold.setWaterDepth(380.0);
manifold.setDesignPressure(350.0);
manifold.setHasTestHeader(true);

// Add well streams
manifold.addWellStream(well1Stream);
manifold.addWellStream(well2Stream);
manifold.addWellStream(well3Stream);

// Run manifold
manifold.run();

// Get production and test streams
StreamInterface productionStream = manifold.getProductionStream();
StreamInterface testStream = manifold.getTestStream();
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 in meters.
    • designPressure

      private double designPressure
      Design pressure in bara.
    • designTemperature

      private double designTemperature
      Design temperature in Celsius.
    • numberOfSlots

      private int numberOfSlots
      Number of well slots.
    • manifoldType

      private SubseaManifold.ManifoldType manifoldType
      Manifold type.
    • productionHeaderSizeInches

      private double productionHeaderSizeInches
      Production header size in inches.
    • testHeaderSizeInches

      private double testHeaderSizeInches
      Test header size in inches.
    • branchSizeInches

      private double branchSizeInches
      Branch/jumper connection size in inches.
    • hasTestHeader

      private boolean hasTestHeader
      Whether has test header.
    • hasServiceHeader

      private boolean hasServiceHeader
      Whether has service/utility header.
    • hasInjectionHeader

      private boolean hasInjectionHeader
      Whether has injection header.
    • valveSkids

      private List<SubseaManifold.ValveSkid> valveSkids
      Valve skids for each slot.
    • wellSlotMap

      private Map<String,Integer> wellSlotMap
      Map of well names to slot numbers.
    • productionMixer

      private Mixer productionMixer
      Production header mixer.
    • testMixer

      private Mixer testMixer
      Test header mixer.
    • productionStream

      private StreamInterface productionStream
      Production outlet stream.
    • testStream

      private StreamInterface testStream
      Test outlet stream.
    • structureLength

      private double structureLength
      Structure length in meters.
    • structureWidth

      private double structureWidth
      Structure width in meters.
    • structureHeight

      private double structureHeight
      Structure height in meters.
    • dryWeight

      private double dryWeight
      Dry weight in tonnes.
    • submergedWeight

      private double submergedWeight
      Submerged weight in tonnes.
    • foundationType

      private String foundationType
      Foundation type.
    • mechanicalDesign

      private SubseaManifoldMechanicalDesign mechanicalDesign
      Mechanical design instance.
  • Constructor Details

    • SubseaManifold

      public SubseaManifold()
      Default constructor.
    • SubseaManifold

      public SubseaManifold(String name)
      Constructor with name.
      Parameters:
      name - equipment name
    • SubseaManifold

      public SubseaManifold(String name, int numberOfSlots)
      Constructor with name and number of slots.
      Parameters:
      name - equipment name
      numberOfSlots - number of well slots
  • Method Details

    • initializeManifold

      private void initializeManifold()
      Initialize manifold components.
    • addWellStream

      public int addWellStream(StreamInterface wellStream)
      Add well stream to next available slot.
      Parameters:
      wellStream - well inlet stream
      Returns:
      slot number assigned
    • addWellStream

      public int addWellStream(StreamInterface wellStream, String wellName)
      Add well stream with well name.
      Parameters:
      wellStream - well inlet stream
      wellName - well name
      Returns:
      slot number assigned
    • routeToProduction

      public void routeToProduction(String wellName)
      Route well to production header.
      Parameters:
      wellName - well name
    • routeToTest

      public void routeToTest(String wellName)
      Route well to test header.
      Parameters:
      wellName - well name
    • shutInWell

      public void shutInWell(String wellName)
      Shut in a well.
      Parameters:
      wellName - well name
    • 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
    • calculateHeaderPressureDrop

      private double calculateHeaderPressureDrop(double headerSizeInches)
      Calculate header pressure drop.
      Parameters:
      headerSizeInches - header size in inches
      Returns:
      pressure drop in bar
    • applyPressureDrop

      private void applyPressureDrop(StreamInterface stream, double pressureDrop)
      Apply pressure drop to stream.
      Parameters:
      stream - stream to modify
      pressureDrop - pressure drop in bar
    • getProductionStream

      public StreamInterface getProductionStream()
      Get production stream.
      Returns:
      production outlet stream
    • getTestStream

      public StreamInterface getTestStream()
      Get test stream.
      Returns:
      test outlet stream
    • getActiveWellCount

      public int getActiveWellCount()
      Get number of active wells.
      Returns:
      count of active wells
    • getMechanicalDesign

      public SubseaManifoldMechanicalDesign getMechanicalDesign()
      Get mechanical design.
      Specified by:
      getMechanicalDesign in interface ProcessEquipmentInterface
      Overrides:
      getMechanicalDesign in class ProcessEquipmentBaseClass
      Returns:
      mechanical design instance
    • initMechanicalDesign

      public void initMechanicalDesign()
      Initialize mechanical design.
      Specified by:
      initMechanicalDesign in interface ProcessEquipmentInterface
      Overrides:
      initMechanicalDesign in class ProcessEquipmentBaseClass
    • getWaterDepth

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

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

      public double getDesignPressure()
      Get design pressure.
      Returns:
      design pressure in bara
    • setDesignPressure

      public void setDesignPressure(double designPressure)
      Set design pressure.
      Parameters:
      designPressure - design pressure in bara
    • getDesignTemperature

      public double getDesignTemperature()
      Get design temperature.
      Returns:
      design temperature in Celsius
    • setDesignTemperature

      public void setDesignTemperature(double designTemperature)
      Set design temperature.
      Parameters:
      designTemperature - design temperature in Celsius
    • getNumberOfSlots

      public int getNumberOfSlots()
      Get number of slots.
      Returns:
      number of well slots
    • setNumberOfSlots

      public void setNumberOfSlots(int numberOfSlots)
      Set number of slots.
      Parameters:
      numberOfSlots - number of well slots
    • getManifoldType

      public SubseaManifold.ManifoldType getManifoldType()
      Get manifold type.
      Returns:
      manifold type
    • setManifoldType

      public void setManifoldType(SubseaManifold.ManifoldType manifoldType)
      Set manifold type.
      Parameters:
      manifoldType - manifold type
    • getProductionHeaderSizeInches

      public double getProductionHeaderSizeInches()
      Get production header size.
      Returns:
      production header size in inches
    • setProductionHeaderSizeInches

      public void setProductionHeaderSizeInches(double productionHeaderSizeInches)
      Set production header size.
      Parameters:
      productionHeaderSizeInches - production header size in inches
    • getTestHeaderSizeInches

      public double getTestHeaderSizeInches()
      Get test header size.
      Returns:
      test header size in inches
    • setTestHeaderSizeInches

      public void setTestHeaderSizeInches(double testHeaderSizeInches)
      Set test header size.
      Parameters:
      testHeaderSizeInches - test header size in inches
    • getBranchSizeInches

      public double getBranchSizeInches()
      Get branch size.
      Returns:
      branch size in inches
    • setBranchSizeInches

      public void setBranchSizeInches(double branchSizeInches)
      Set branch size.
      Parameters:
      branchSizeInches - branch size in inches
    • hasTestHeader

      public boolean hasTestHeader()
      Check if has test header.
      Returns:
      true if has test header
    • setHasTestHeader

      public void setHasTestHeader(boolean hasTestHeader)
      Set whether has test header.
      Parameters:
      hasTestHeader - true to include test header
    • hasServiceHeader

      public boolean hasServiceHeader()
      Check if has service header.
      Returns:
      true if has service header
    • setHasServiceHeader

      public void setHasServiceHeader(boolean hasServiceHeader)
      Set whether has service header.
      Parameters:
      hasServiceHeader - true to include service header
    • hasInjectionHeader

      public boolean hasInjectionHeader()
      Check if has injection header.
      Returns:
      true if has injection header
    • setHasInjectionHeader

      public void setHasInjectionHeader(boolean hasInjectionHeader)
      Set whether has injection header.
      Parameters:
      hasInjectionHeader - true to include injection header
    • getValveSkids

      public List<SubseaManifold.ValveSkid> getValveSkids()
      Get valve skids.
      Returns:
      list of valve skids
    • getStructureLength

      public double getStructureLength()
      Get structure length.
      Returns:
      structure length in meters
    • setStructureLength

      public void setStructureLength(double structureLength)
      Set structure length.
      Parameters:
      structureLength - structure length in meters
    • getStructureWidth

      public double getStructureWidth()
      Get structure width.
      Returns:
      structure width in meters
    • setStructureWidth

      public void setStructureWidth(double structureWidth)
      Set structure width.
      Parameters:
      structureWidth - structure width in meters
    • getStructureHeight

      public double getStructureHeight()
      Get structure height.
      Returns:
      structure height in meters
    • setStructureHeight

      public void setStructureHeight(double structureHeight)
      Set structure height.
      Parameters:
      structureHeight - structure height in meters
    • getDryWeight

      public double getDryWeight()
      Get dry weight.
      Returns:
      dry weight in tonnes
    • setDryWeight

      public void setDryWeight(double dryWeight)
      Set dry weight.
      Parameters:
      dryWeight - dry weight in tonnes
    • getSubmergedWeight

      public double getSubmergedWeight()
      Get submerged weight.
      Returns:
      submerged weight in tonnes
    • setSubmergedWeight

      public void setSubmergedWeight(double submergedWeight)
      Set submerged weight.
      Parameters:
      submergedWeight - submerged weight in tonnes
    • getFoundationType

      public String getFoundationType()
      Get foundation type.
      Returns:
      foundation type
    • setFoundationType

      public void setFoundationType(String foundationType)
      Set foundation type.
      Parameters:
      foundationType - foundation type (Gravity Base, Piled, Suction Anchor)