Class SubseaTree

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

public class SubseaTree extends TwoPortEquipment
Subsea Tree (Christmas Tree) equipment class.

A subsea tree is a system of valves and connectors installed on top of a subsea wellhead to control production from the well. Key functions include:

  • Well control and shut-in capability
  • Production and annulus access
  • Chemical injection points
  • Monitoring (pressure, temperature sensors)
  • Connection interface for flowlines/jumpers

Tree Types

  • Vertical Tree: Tubing hanger inside wellhead, tree on top
  • Horizontal Tree: Tubing hanger inside tree body
  • Dual Bore Tree: Two production bores
  • Mudline Tree: Simplified tree for shallow water

Design Standards

  • API Spec 17D - Design and Operation of Subsea Production Systems
  • API RP 17A - Design and Operation of Subsea Production Systems
  • ISO 13628-4 - Subsea Wellhead and Tree Equipment
  • NORSOK U-001 - Subsea Production Systems

Usage Example

// Create horizontal tree
SubseaTree tree = new SubseaTree("Well-1 Tree", wellStream);
tree.setTreeType(SubseaTree.TreeType.HORIZONTAL);
tree.setWaterDepth(450.0);
tree.setDesignPressure(690.0); // 10000 psi
tree.setDesignTemperature(150.0);

// Configure valves
tree.setProductionMasterValveOpen(true);
tree.setProductionWingValveOpen(true);
tree.setChokeOpening(75.0);

tree.run();
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

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

      private SubseaTree.TreeType treeType
      Tree type.
    • pressureRating

      private SubseaTree.PressureRating pressureRating
      Pressure rating.
    • waterDepth

      private double waterDepth
      Water depth in meters.
    • designPressure

      private double designPressure
      Design pressure in bara.
    • designTemperature

      private double designTemperature
      Design temperature in Celsius.
    • boreSizeInches

      private double boreSizeInches
      Bore size in inches.
    • productionMasterValve

      private ThrottlingValve productionMasterValve
      Production master valve (PMV).
    • pmvOpen

      private boolean pmvOpen
    • productionWingValve

      private ThrottlingValve productionWingValve
      Production wing valve (PWV).
    • pwvOpen

      private boolean pwvOpen
    • psvOpen

      private boolean psvOpen
      Production swab valve (PSV).
    • amvOpen

      private boolean amvOpen
      Annulus master valve (AMV).
    • awvOpen

      private boolean awvOpen
      Annulus wing valve (AWV).
    • xovOpen

      private boolean xovOpen
      Crossover valve (XOV).
    • productionChoke

      private ThrottlingValve productionChoke
      Production choke.
    • chokeOpening

      private double chokeOpening
    • actuatorType

      private String actuatorType
      Actuator type for valves.
    • failSafeClose

      private boolean failSafeClose
      Whether has fail-safe close.
    • hasDownholePressure

      private boolean hasDownholePressure
      Whether has downhole pressure gauge.
    • hasDownholeTemperature

      private boolean hasDownholeTemperature
      Whether has downhole temperature gauge.
    • hasAnnulusPressure

      private boolean hasAnnulusPressure
      Whether has annulus pressure monitoring.
    • chemicalInjectionPoints

      private int chemicalInjectionPoints
      Number of chemical injection points.
    • connectorType

      private String connectorType
      Tree connector type.
    • flowlineConnectionType

      private String flowlineConnectionType
      Flowline connection type.
    • flowlineConnectionSizeInches

      private double flowlineConnectionSizeInches
      Flowline connection size in inches.
    • treeHeight

      private double treeHeight
      Tree height in meters.
    • treeDiameter

      private double treeDiameter
      Tree footprint (diameter) in meters.
    • dryWeight

      private double dryWeight
      Dry weight in tonnes.
    • submergedWeight

      private double submergedWeight
      Submerged weight in tonnes.
    • mechanicalDesign

      private SubseaTreeMechanicalDesign mechanicalDesign
      Mechanical design instance.
  • Constructor Details

    • SubseaTree

      public SubseaTree()
      Default constructor.
    • SubseaTree

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

      public SubseaTree(String name, StreamInterface inStream)
      Constructor with name and inlet stream.
      Parameters:
      name - equipment name
      inStream - inlet stream (from well)
  • Method Details

    • initializeValves

      private void initializeValves()
      Initialize internal valves.
    • 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
    • emergencyShutdown

      public void emergencyShutdown()
      Emergency shutdown - close all valves.
    • openForProduction

      public void openForProduction()
      Open tree for production.
    • getMechanicalDesign

      public SubseaTreeMechanicalDesign 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
    • getTreeType

      public SubseaTree.TreeType getTreeType()
      Get tree type.
      Returns:
      tree type
    • setTreeType

      public void setTreeType(SubseaTree.TreeType treeType)
      Set tree type.
      Parameters:
      treeType - tree type
    • getPressureRating

      public SubseaTree.PressureRating getPressureRating()
      Get pressure rating.
      Returns:
      pressure rating
    • setPressureRating

      public void setPressureRating(SubseaTree.PressureRating pressureRating)
      Set pressure rating.
      Parameters:
      pressureRating - pressure rating
    • 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
    • getBoreSizeInches

      public double getBoreSizeInches()
      Get bore size.
      Returns:
      bore size in inches
    • setBoreSizeInches

      public void setBoreSizeInches(double boreSizeInches)
      Set bore size.
      Parameters:
      boreSizeInches - bore size in inches
    • isProductionMasterValveOpen

      public boolean isProductionMasterValveOpen()
      Check if PMV is open.
      Returns:
      true if PMV open
    • setProductionMasterValveOpen

      public void setProductionMasterValveOpen(boolean open)
      Set PMV position.
      Parameters:
      open - true to open
    • isProductionWingValveOpen

      public boolean isProductionWingValveOpen()
      Check if PWV is open.
      Returns:
      true if PWV open
    • setProductionWingValveOpen

      public void setProductionWingValveOpen(boolean open)
      Set PWV position.
      Parameters:
      open - true to open
    • getChokeOpening

      public double getChokeOpening()
      Get choke opening.
      Returns:
      choke opening percentage (0-100)
    • setChokeOpening

      public void setChokeOpening(double chokeOpening)
      Set choke opening.
      Parameters:
      chokeOpening - choke opening percentage (0-100)
    • isAnnulusMasterValveOpen

      public boolean isAnnulusMasterValveOpen()
      Check if AMV is open.
      Returns:
      true if AMV open
    • setAnnulusMasterValveOpen

      public void setAnnulusMasterValveOpen(boolean open)
      Set AMV position.
      Parameters:
      open - true to open
    • isAnnulusWingValveOpen

      public boolean isAnnulusWingValveOpen()
      Check if AWV is open.
      Returns:
      true if AWV open
    • setAnnulusWingValveOpen

      public void setAnnulusWingValveOpen(boolean open)
      Set AWV position.
      Parameters:
      open - true to open
    • isCrossoverValveOpen

      public boolean isCrossoverValveOpen()
      Check if XOV is open.
      Returns:
      true if XOV open
    • setCrossoverValveOpen

      public void setCrossoverValveOpen(boolean open)
      Set XOV position.
      Parameters:
      open - true to open
    • getActuatorType

      public String getActuatorType()
      Get actuator type.
      Returns:
      actuator type
    • setActuatorType

      public void setActuatorType(String actuatorType)
      Set actuator type.
      Parameters:
      actuatorType - actuator type (Hydraulic, Electric)
    • isFailSafeClose

      public boolean isFailSafeClose()
      Check if fail-safe close.
      Returns:
      true if fail-safe
    • setFailSafeClose

      public void setFailSafeClose(boolean failSafeClose)
      Set fail-safe close.
      Parameters:
      failSafeClose - true for fail-safe
    • getConnectorType

      public String getConnectorType()
      Get connector type.
      Returns:
      connector type
    • setConnectorType

      public void setConnectorType(String connectorType)
      Set connector type.
      Parameters:
      connectorType - connector type (Collet, Clamp, etc.)
    • getFlowlineConnectionType

      public String getFlowlineConnectionType()
      Get flowline connection type.
      Returns:
      flowline connection type
    • setFlowlineConnectionType

      public void setFlowlineConnectionType(String flowlineConnectionType)
      Set flowline connection type.
      Parameters:
      flowlineConnectionType - connection type (Vertical Hub, Horizontal Hub)
    • getFlowlineConnectionSizeInches

      public double getFlowlineConnectionSizeInches()
      Get flowline connection size.
      Returns:
      connection size in inches
    • setFlowlineConnectionSizeInches

      public void setFlowlineConnectionSizeInches(double flowlineConnectionSizeInches)
      Set flowline connection size.
      Parameters:
      flowlineConnectionSizeInches - connection size in inches
    • getTreeHeight

      public double getTreeHeight()
      Get tree height.
      Returns:
      tree height in meters
    • setTreeHeight

      public void setTreeHeight(double treeHeight)
      Set tree height.
      Parameters:
      treeHeight - tree height in meters
    • getTreeDiameter

      public double getTreeDiameter()
      Get tree diameter.
      Returns:
      tree diameter in meters
    • setTreeDiameter

      public void setTreeDiameter(double treeDiameter)
      Set tree diameter.
      Parameters:
      treeDiameter - tree diameter 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
    • getChemicalInjectionPoints

      public int getChemicalInjectionPoints()
      Get chemical injection points count.
      Returns:
      number of chemical injection points
    • setChemicalInjectionPoints

      public void setChemicalInjectionPoints(int chemicalInjectionPoints)
      Set chemical injection points count.
      Parameters:
      chemicalInjectionPoints - number of points
    • hasDownholePressure

      public boolean hasDownholePressure()
      Check if has downhole pressure gauge.
      Returns:
      true if has DHPT
    • setHasDownholePressure

      public void setHasDownholePressure(boolean hasDownholePressure)
      Set whether has downhole pressure gauge.
      Parameters:
      hasDownholePressure - true to include
    • hasDownholeTemperature

      public boolean hasDownholeTemperature()
      Check if has downhole temperature gauge.
      Returns:
      true if has DHTT
    • setHasDownholeTemperature

      public void setHasDownholeTemperature(boolean hasDownholeTemperature)
      Set whether has downhole temperature gauge.
      Parameters:
      hasDownholeTemperature - true to include
    • getProductionChoke

      public ThrottlingValve getProductionChoke()
      Get production choke.
      Returns:
      production choke valve