Class SubseaProductionSystem
java.lang.Object
neqsim.process.fielddevelopment.subsea.SubseaProductionSystem
- All Implemented Interfaces:
Serializable
Unified subsea production system for field development workflow integration.
This class provides a high-level abstraction for modeling subsea production systems, integrating multiple NeqSim components:
SubseaWell- Well tubing from reservoir to seabedSimpleFlowLine- Flowline from well to manifold/hostWellFlowlineNetwork- Multi-well gathering network with manifoldsTiebackAnalyzer- Cost estimation for subsea infrastructure
Subsea Architecture Types
- DIRECT_TIEBACK - Wells tied directly to host (short distances, <10km)
- MANIFOLD_CLUSTER - Wells grouped at subsea manifold then tied back
- DAISY_CHAIN - Wells connected in series along flowline
- TEMPLATE - Multiple wells from single seabed template
Example Usage
// Create subsea system
SubseaProductionSystem subsea = new SubseaProductionSystem("Snohvit Satellite");
subsea.setArchitecture(SubseaArchitecture.MANIFOLD_CLUSTER);
subsea.setWaterDepthM(350.0);
subsea.setTiebackDistanceKm(25.0);
// Configure wells
subsea.setWellCount(4);
subsea.setWellheadPressureBara(180.0);
subsea.setWellheadTemperatureC(80.0);
// Set fluid
subsea.setReservoirFluid(gasCondensateFluid);
// Configure flowline
subsea.setFlowlineDiameterInches(12.0);
subsea.setSeabedTemperatureC(4.0);
// Define host facility
HostFacility host = HostFacility.builder("Snohvit LNG").location(71.3, 20.8).waterDepth(350)
.gasCapacity(20.0, "MSm3/d").build();
subsea.setHostFacility(host);
// Build and run
subsea.build();
subsea.run();
// Get results
double arrivalPressure = subsea.getArrivalPressureBara();
double arrivalTemperature = subsea.getArrivalTemperatureC();
SubseaSystemResult result = subsea.getResult();
- Version:
- 1.0
- Author:
- ESOL
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumSubsea architecture configuration.static classResult container for subsea production system analysis. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate doubleprivate doubleprivate Stringprivate List<SimpleFlowLine> private doubleprivate booleanprivate HostFacilityprivate doubleprivate intprivate doubleprivate Stringprivate WellFlowlineNetworkprivate doubleprivate SystemInterfaceprivate doubleprivate doubleprivate doubleprivate static final longprivate List<ThrottlingValve> private ProcessSystemprivate TiebackAnalyzerprivate doubleprivate TiebackOptionprivate doubleprivate doubleprivate doubleprivate intprivate doubleprivate doubleprivate doubleprivate List<SubseaWell> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbuild()Builds the subsea production system model.private voidBuilds daisy chain architecture (wells connected in series).private voidBuilds direct tieback architecture (wells to individual flowlines to host).private voidBuilds manifold cluster architecture (wells to manifold to trunk flowline to host).private voidBuilds template architecture (multiple wells from single location).private voidconfigureFlowline(SimpleFlowLine flowline, double lengthKm) private voidconfigureTubing(SubseaWell well) private voidprivate voidGets the architecture type.doubleGets arrival pressure at host.doubleGets arrival temperature at host.doubleGets flowline diameter.Gets the list of flowlines.getName()Gets the system name.private doubleGets the internal process system.Gets the subsea system result.doubleGets tieback distance.Gets the tieback option analysis.doubleGets water depth.intGets well count.getWells()Gets the list of subsea wells.voidrun()Runs the subsea production system simulation.voidRuns the subsea system with a specific calculation ID.Sets the subsea architecture type.setDiscoveryLocation(double latitude, double longitude) Sets discovery location.setFlowlineDiameterInches(double diameterInches) Sets flowline diameter.setFlowlineMaterial(String material) Sets flowline material.setFlowlineWallThicknessMm(double thicknessMm) Sets flowline wall thickness.setHostFacility(HostFacility host) Sets the host facility for tieback.setManifoldCount(int count) Sets the number of manifolds (for clustered architectures).setRatePerWell(double rateSm3d) Sets production rate per well.setReservoirConditions(double pressureBara, double temperatureC) Sets reservoir conditions.setReservoirFluid(SystemInterface fluid) Sets the reservoir fluid.setSeabedTemperatureC(double temperatureC) Sets seabed temperature.setTiebackDistanceKm(double distanceKm) Sets tieback distance from discovery to host.setTubingDiameterInches(double diameterInches) Sets tubing diameter.setWaterDepthM(double depthM) Sets water depth.setWellCount(int count) Sets the number of production wells.setWellDepthM(double depthM) Sets well depth (measured depth).setWellheadConditions(double pressureBara, double temperatureC) Sets wellhead conditions.private void
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
name
-
architecture
-
waterDepthM
private double waterDepthM -
tiebackDistanceKm
private double tiebackDistanceKm -
discoveryLatitude
private double discoveryLatitude -
discoveryLongitude
private double discoveryLongitude -
wellCount
private int wellCount -
reservoirPressureBara
private double reservoirPressureBara -
reservoirTemperatureC
private double reservoirTemperatureC -
wellheadPressureBara
private double wellheadPressureBara -
wellheadTemperatureC
private double wellheadTemperatureC -
ratePerWellSm3d
private double ratePerWellSm3d -
wellDepthM
private double wellDepthM -
tubingDiameterInches
private double tubingDiameterInches -
manifoldCount
private int manifoldCount -
manifoldPressureDropBara
private double manifoldPressureDropBara -
flowlineDiameterInches
private double flowlineDiameterInches -
flowlineWallThicknessMm
private double flowlineWallThicknessMm -
seabedTemperatureC
private double seabedTemperatureC -
insulationThicknessMm
private double insulationThicknessMm -
flowlineMaterial
-
umbilicalLengthKm
private double umbilicalLengthKm -
hostFacility
-
reservoirFluid
-
subseaProcess
-
wells
-
subseaChokes
-
flowlines
-
network
-
tiebackAnalyzer
-
tiebackOption
-
result
-
hasRun
private boolean hasRun
-
-
Constructor Details
-
SubseaProductionSystem
Creates a new subsea production system.- Parameters:
name- system name
-
-
Method Details
-
setArchitecture
Sets the subsea architecture type.- Parameters:
arch- architecture type- Returns:
- this for chaining
-
setWaterDepthM
Sets water depth.- Parameters:
depthM- water depth in meters- Returns:
- this for chaining
-
setTiebackDistanceKm
Sets tieback distance from discovery to host.- Parameters:
distanceKm- distance in kilometers- Returns:
- this for chaining
-
setDiscoveryLocation
Sets discovery location.- Parameters:
latitude- latitude in degreeslongitude- longitude in degrees- Returns:
- this for chaining
-
setWellCount
Sets the number of production wells.- Parameters:
count- well count- Returns:
- this for chaining
-
setReservoirConditions
Sets reservoir conditions.- Parameters:
pressureBara- reservoir pressure in baratemperatureC- reservoir temperature in Celsius- Returns:
- this for chaining
-
setWellheadConditions
Sets wellhead conditions.- Parameters:
pressureBara- wellhead pressure in baratemperatureC- wellhead temperature in Celsius- Returns:
- this for chaining
-
setRatePerWell
Sets production rate per well.- Parameters:
rateSm3d- rate in Sm3/day- Returns:
- this for chaining
-
setWellDepthM
Sets well depth (measured depth).- Parameters:
depthM- well depth in meters- Returns:
- this for chaining
-
setTubingDiameterInches
Sets tubing diameter.- Parameters:
diameterInches- tubing ID in inches- Returns:
- this for chaining
-
setFlowlineDiameterInches
Sets flowline diameter.- Parameters:
diameterInches- flowline ID in inches- Returns:
- this for chaining
-
setFlowlineWallThicknessMm
Sets flowline wall thickness.- Parameters:
thicknessMm- wall thickness in millimeters- Returns:
- this for chaining
-
setSeabedTemperatureC
Sets seabed temperature.- Parameters:
temperatureC- seabed temperature in Celsius- Returns:
- this for chaining
-
setFlowlineMaterial
Sets flowline material.- Parameters:
material- material type (e.g., "Carbon Steel", "CRA", "Flexible")- Returns:
- this for chaining
-
setHostFacility
Sets the host facility for tieback.- Parameters:
host- host facility- Returns:
- this for chaining
-
setReservoirFluid
Sets the reservoir fluid.- Parameters:
fluid- thermodynamic system- Returns:
- this for chaining
-
setManifoldCount
Sets the number of manifolds (for clustered architectures).- Parameters:
count- manifold count- Returns:
- this for chaining
-
build
Builds the subsea production system model.Creates the process equipment (wells, flowlines, manifolds) based on the configured architecture and parameters.
- Returns:
- this for chaining
-
validateConfiguration
private void validateConfiguration() -
buildDirectTieback
private void buildDirectTieback()Builds direct tieback architecture (wells to individual flowlines to host). -
buildManifoldCluster
private void buildManifoldCluster()Builds manifold cluster architecture (wells to manifold to trunk flowline to host). -
buildDaisyChain
private void buildDaisyChain()Builds daisy chain architecture (wells connected in series). -
buildTemplate
private void buildTemplate()Builds template architecture (multiple wells from single location). -
configureTubing
-
configureFlowline
-
run
public void run()Runs the subsea production system simulation. -
run
Runs the subsea system with a specific calculation ID.- Parameters:
id- calculation identifier
-
extractResults
private void extractResults() -
estimateTiebackCosts
private void estimateTiebackCosts() -
getPipelineCostPerKm
private double getPipelineCostPerKm() -
getResult
Gets the subsea system result.- Returns:
- subsea system result
-
getArrivalPressureBara
public double getArrivalPressureBara()Gets arrival pressure at host.- Returns:
- arrival pressure in bara
-
getArrivalTemperatureC
public double getArrivalTemperatureC()Gets arrival temperature at host.- Returns:
- arrival temperature in Celsius
-
getProcessSystem
-
getWells
-
getFlowlines
-
getTiebackOption
Gets the tieback option analysis.- Returns:
- tieback option if analyzed, null otherwise
-
getName
-
getArchitecture
Gets the architecture type.- Returns:
- architecture
-
getWaterDepthM
public double getWaterDepthM()Gets water depth.- Returns:
- water depth in meters
-
getTiebackDistanceKm
public double getTiebackDistanceKm()Gets tieback distance.- Returns:
- tieback distance in km
-
getWellCount
public int getWellCount()Gets well count.- Returns:
- number of wells
-
getFlowlineDiameterInches
public double getFlowlineDiameterInches()Gets flowline diameter.- Returns:
- flowline diameter in inches
-