Class SubseaTree
java.lang.Object
neqsim.util.NamedBaseClass
neqsim.process.SimulationBaseClass
neqsim.process.equipment.ProcessEquipmentBaseClass
neqsim.process.equipment.TwoPortEquipment
neqsim.process.equipment.subsea.SubseaTree
- All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, TwoPortInterface, SimulationInterface, NamedInterface
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumPressure rating class per API 17D.static enumSubsea tree type configurations. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate StringActuator type for valves.private booleanAnnulus master valve (AMV).private booleanAnnulus wing valve (AWV).private doubleBore size in inches.private intNumber of chemical injection points.private doubleprivate StringTree connector type.private doubleDesign pressure in bara.private doubleDesign temperature in Celsius.private doubleDry weight in tonnes.private booleanWhether has fail-safe close.private doubleFlowline connection size in inches.private StringFlowline connection type.private booleanWhether has annulus pressure monitoring.private booleanWhether has downhole pressure gauge.private booleanWhether has downhole temperature gauge.private SubseaTreeMechanicalDesignMechanical design instance.private booleanprivate SubseaTree.PressureRatingPressure rating.private ThrottlingValveProduction choke.private ThrottlingValveProduction master valve (PMV).private ThrottlingValveProduction wing valve (PWV).private booleanProduction swab valve (PSV).private booleanprivate static final longSerialization version UID.private doubleSubmerged weight in tonnes.private doubleTree footprint (diameter) in meters.private doubleTree height in meters.private SubseaTree.TreeTypeTree type.private doubleWater depth in meters.private booleanCrossover valve (XOV).Fields inherited from class TwoPortEquipment
inStream, outStreamFields inherited from class ProcessEquipmentBaseClass
conditionAnalysisMessage, energyStream, hasController, isSolved, properties, reportFields inherited from class SimulationBaseClass
calcIdentifier, calculateSteadyState, timeFields inherited from class NamedBaseClass
name -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.SubseaTree(String name) Constructor with name.SubseaTree(String name, StreamInterface inStream) Constructor with name and inlet stream. -
Method Summary
Modifier and TypeMethodDescriptionvoidEmergency shutdown - close all valves.Get actuator type.doubleGet bore size.intGet chemical injection points count.doubleGet choke opening.Get connector type.doubleGet design pressure.doubleGet design temperature.doubleGet dry weight.doubleGet flowline connection size.Get flowline connection type.Get mechanical design.Get pressure rating.Get production choke.doubleGet submerged weight.doubleGet tree diameter.doubleGet tree height.Get tree type.doubleGet water depth.booleanCheck if has downhole pressure gauge.booleanCheck if has downhole temperature gauge.private voidInitialize internal valves.voidInitialize mechanical design.booleanCheck if AMV is open.booleanCheck if AWV is open.booleanCheck if XOV is open.booleanCheck if fail-safe close.booleanCheck if PMV is open.booleanCheck if PWV is open.voidOpen tree for production.voidIn this method all thermodynamic and unit operations will be calculated in a steady state calculation.voidsetActuatorType(String actuatorType) Set actuator type.voidsetAnnulusMasterValveOpen(boolean open) Set AMV position.voidsetAnnulusWingValveOpen(boolean open) Set AWV position.voidsetBoreSizeInches(double boreSizeInches) Set bore size.voidsetChemicalInjectionPoints(int chemicalInjectionPoints) Set chemical injection points count.voidsetChokeOpening(double chokeOpening) Set choke opening.voidsetConnectorType(String connectorType) Set connector type.voidsetCrossoverValveOpen(boolean open) Set XOV position.voidsetDesignPressure(double designPressure) Set design pressure.voidsetDesignTemperature(double designTemperature) Set design temperature.voidsetDryWeight(double dryWeight) Set dry weight.voidsetFailSafeClose(boolean failSafeClose) Set fail-safe close.voidsetFlowlineConnectionSizeInches(double flowlineConnectionSizeInches) Set flowline connection size.voidsetFlowlineConnectionType(String flowlineConnectionType) Set flowline connection type.voidsetHasDownholePressure(boolean hasDownholePressure) Set whether has downhole pressure gauge.voidsetHasDownholeTemperature(boolean hasDownholeTemperature) Set whether has downhole temperature gauge.voidsetPressureRating(SubseaTree.PressureRating pressureRating) Set pressure rating.voidsetProductionMasterValveOpen(boolean open) Set PMV position.voidsetProductionWingValveOpen(boolean open) Set PWV position.voidsetSubmergedWeight(double submergedWeight) Set submerged weight.voidsetTreeDiameter(double treeDiameter) Set tree diameter.voidsetTreeHeight(double treeHeight) Set tree height.voidsetTreeType(SubseaTree.TreeType treeType) Set tree type.voidsetWaterDepth(double waterDepth) Set water depth.Methods inherited from class TwoPortEquipment
getInletPressure, getInletStream, getInletTemperature, getMassBalance, getOutletPressure, getOutletStream, getOutletTemperature, setInletPressure, setInletStream, setInletTemperature, setOutletPressure, setOutletPressure, setOutletStream, setOutletTemperature, setOutletTemperature, toJson, toJson, validateSetupMethods inherited from class ProcessEquipmentBaseClass
copy, displayResult, equals, getConditionAnalysisMessage, getController, getEffectiveCapacityFactor, getEnergyStream, getEntropyProduction, getExergyChange, getFailureMode, getMassBalance, getMinimumFlow, getPressure, getPressure, getProperty, getReport_json, getResultTable, getSpecification, getTemperature, getTemperature, getThermoSystem, hashCode, isActive, isActive, isCapacityAnalysisEnabled, isFailed, isSetEnergyStream, reportResults, restoreFromFailure, run_step, runConditionAnalysis, setCapacityAnalysisEnabled, setController, setEnergyStream, setEnergyStream, setFailureMode, setFlowValveController, setMinimumFlow, setPressure, setRegulatorOutSignal, setSpecification, setTemperature, simulateDegradedOperation, simulateTrip, solvedMethods inherited from class SimulationBaseClass
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from class NamedBaseClass
getName, getTagName, setName, setTagNameMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface NamedInterface
getName, getTagName, setName, setTagNameMethods inherited from interface ProcessEquipmentInterface
getCapacityDuty, getCapacityMax, getExergyChange, getFluid, getOperatingEnvelopeViolation, getRestCapacity, getSimulationValidationErrors, isSimulationValid, isWithinOperatingEnvelope, needRecalculationMethods inherited from interface SimulationInterface
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, run, run_step, runTransient, runTransient, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from interface TwoPortInterface
getInStream, getOutStream, setOutPressure, setOutPressure, setOutTemperature, setOutTemperature
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
treeType
Tree type. -
pressureRating
Pressure rating. -
waterDepth
private double waterDepthWater depth in meters. -
designPressure
private double designPressureDesign pressure in bara. -
designTemperature
private double designTemperatureDesign temperature in Celsius. -
boreSizeInches
private double boreSizeInchesBore size in inches. -
productionMasterValve
Production master valve (PMV). -
pmvOpen
private boolean pmvOpen -
productionWingValve
Production wing valve (PWV). -
pwvOpen
private boolean pwvOpen -
psvOpen
private boolean psvOpenProduction swab valve (PSV). -
amvOpen
private boolean amvOpenAnnulus master valve (AMV). -
awvOpen
private boolean awvOpenAnnulus wing valve (AWV). -
xovOpen
private boolean xovOpenCrossover valve (XOV). -
productionChoke
Production choke. -
chokeOpening
private double chokeOpening -
actuatorType
Actuator type for valves. -
failSafeClose
private boolean failSafeCloseWhether has fail-safe close. -
hasDownholePressure
private boolean hasDownholePressureWhether has downhole pressure gauge. -
hasDownholeTemperature
private boolean hasDownholeTemperatureWhether has downhole temperature gauge. -
hasAnnulusPressure
private boolean hasAnnulusPressureWhether has annulus pressure monitoring. -
chemicalInjectionPoints
private int chemicalInjectionPointsNumber of chemical injection points. -
connectorType
Tree connector type. -
flowlineConnectionType
Flowline connection type. -
flowlineConnectionSizeInches
private double flowlineConnectionSizeInchesFlowline connection size in inches. -
treeHeight
private double treeHeightTree height in meters. -
treeDiameter
private double treeDiameterTree footprint (diameter) in meters. -
dryWeight
private double dryWeightDry weight in tonnes. -
submergedWeight
private double submergedWeightSubmerged weight in tonnes. -
mechanicalDesign
Mechanical design instance.
-
-
Constructor Details
-
SubseaTree
public SubseaTree()Default constructor. -
SubseaTree
-
SubseaTree
Constructor with name and inlet stream.- Parameters:
name- equipment nameinStream- inlet stream (from well)
-
-
Method Details
-
initializeValves
private void initializeValves()Initialize internal valves. -
run
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
Get mechanical design.- Specified by:
getMechanicalDesignin interfaceProcessEquipmentInterface- Overrides:
getMechanicalDesignin classProcessEquipmentBaseClass- Returns:
- mechanical design instance
-
initMechanicalDesign
public void initMechanicalDesign()Initialize mechanical design.- Specified by:
initMechanicalDesignin interfaceProcessEquipmentInterface- Overrides:
initMechanicalDesignin classProcessEquipmentBaseClass
-
getTreeType
-
setTreeType
Set tree type.- Parameters:
treeType- tree type
-
getPressureRating
-
setPressureRating
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
-
setActuatorType
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
-
setConnectorType
Set connector type.- Parameters:
connectorType- connector type (Collet, Clamp, etc.)
-
getFlowlineConnectionType
Get flowline connection type.- Returns:
- flowline connection type
-
setFlowlineConnectionType
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
-