Class PLEM

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

public class PLEM extends ProcessEquipmentBaseClass
Pipeline End Manifold (PLEM) equipment class.

A PLEM is a subsea structure that provides multiple pipeline terminations and connections, typically used to:

  • Connect multiple flowlines to a single export line
  • Provide manifolding for multiple wells
  • Enable pipeline crossings with valved connections
  • Allow routing changes between pipelines

Design Standards

  • API RP 17G - Subsea Production System Design
  • API RP 17N - Subsea Production System Reliability
  • DNV-ST-F101 - Submarine Pipeline Systems
  • NORSOK U-001 - Subsea Production Systems

Usage Example

// Create PLEM for 4-slot manifold
PLEM plem = new PLEM("PLEM-A", 4);
plem.setWaterDepth(450.0);
plem.setDesignPressure(200.0);
plem.addInletStream(well1Stream);
plem.addInletStream(well2Stream);
plem.run();

Stream comingledStream = plem.getOutletStream();
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 connection slots.
    • configurationType

      private PLEM.ConfigurationType configurationType
      Configuration type.
    • headerSizeInches

      private double headerSizeInches
      Header pipe size in inches.
    • branchSizeInches

      private double branchSizeInches
      Branch pipe size in inches.
    • branchIsolationValves

      private boolean branchIsolationValves
      Whether each branch has isolation valve.
    • branchValves

      private List<ThrottlingValve> branchValves
      Internal branch isolation valves.
    • headerIsolationValves

      private boolean headerIsolationValves
      Whether header has isolation valves.
    • inletStreams

      private List<StreamInterface> inletStreams
      Inlet streams.
    • outletStream

      private StreamInterface outletStream
      Outlet stream.
    • internalMixer

      private Mixer internalMixer
      Internal mixer for commingling.
    • internalSplitter

      private Splitter internalSplitter
      Internal splitter for distribution.
    • 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 (gravity, piled, suction).
    • mechanicalDesign

      private PLEMMechanicalDesign mechanicalDesign
      Mechanical design instance.
  • Constructor Details

    • PLEM

      public PLEM()
      Default constructor.
    • PLEM

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

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

    • initializeInternalEquipment

      private void initializeInternalEquipment()
      Initialize internal mixing/splitting equipment.
    • addInletStream

      public void addInletStream(StreamInterface stream)
      Add inlet stream to PLEM.
      Parameters:
      stream - inlet stream to add
    • 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()
      Calculate pressure drop through header.
      Returns:
      pressure drop in bar
    • setBranchValveOpening

      public void setBranchValveOpening(int branchIndex, double percentOpen)
      Set branch valve opening.
      Parameters:
      branchIndex - branch index (0-based)
      percentOpen - valve opening percentage (0-100)
    • closeBranch

      public void closeBranch(int branchIndex)
      Close a branch valve.
      Parameters:
      branchIndex - branch index (0-based)
    • openBranch

      public void openBranch(int branchIndex)
      Open a branch valve.
      Parameters:
      branchIndex - branch index (0-based)
    • getOutletStream

      public StreamInterface getOutletStream()
      Get outlet stream.
      Returns:
      outlet stream
    • getMechanicalDesign

      public PLEMMechanicalDesign 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 connection slots
    • setNumberOfSlots

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

      public PLEM.ConfigurationType getConfigurationType()
      Get configuration type.
      Returns:
      configuration type
    • setConfigurationType

      public void setConfigurationType(PLEM.ConfigurationType configurationType)
      Set configuration type.
      Parameters:
      configurationType - configuration type
    • getHeaderSizeInches

      public double getHeaderSizeInches()
      Get header size.
      Returns:
      header size in inches
    • setHeaderSizeInches

      public void setHeaderSizeInches(double headerSizeInches)
      Set header size.
      Parameters:
      headerSizeInches - 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
    • hasBranchIsolationValves

      public boolean hasBranchIsolationValves()
      Check if branches have isolation valves.
      Returns:
      true if branches have isolation valves
    • setBranchIsolationValves

      public void setBranchIsolationValves(boolean branchIsolationValves)
      Set whether branches have isolation valves.
      Parameters:
      branchIsolationValves - true to include branch isolation valves
    • hasHeaderIsolationValves

      public boolean hasHeaderIsolationValves()
      Check if header has isolation valves.
      Returns:
      true if header has isolation valves
    • setHeaderIsolationValves

      public void setHeaderIsolationValves(boolean headerIsolationValves)
      Set whether header has isolation valves.
      Parameters:
      headerIsolationValves - true to include header isolation valves
    • getInletStreams

      public List<StreamInterface> getInletStreams()
      Get inlet streams.
      Returns:
      list of inlet streams
    • 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)
    • getBranchValves

      public List<ThrottlingValve> getBranchValves()
      Get branch valves.
      Returns:
      list of branch isolation valves