Class SubseaProductionSystem

java.lang.Object
neqsim.process.fielddevelopment.subsea.SubseaProductionSystem
All Implemented Interfaces:
Serializable

public class SubseaProductionSystem extends Object implements 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:

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:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • name

      private String 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

      private String flowlineMaterial
    • umbilicalLengthKm

      private double umbilicalLengthKm
    • hostFacility

      private HostFacility hostFacility
    • reservoirFluid

      private SystemInterface reservoirFluid
    • subseaProcess

      private transient ProcessSystem subseaProcess
    • wells

      private transient List<SubseaWell> wells
    • subseaChokes

      private transient List<ThrottlingValve> subseaChokes
    • flowlines

      private transient List<SimpleFlowLine> flowlines
    • network

      private transient WellFlowlineNetwork network
    • tiebackAnalyzer

      private transient TiebackAnalyzer tiebackAnalyzer
    • tiebackOption

      private transient TiebackOption tiebackOption
    • result

    • hasRun

      private boolean hasRun
  • Constructor Details

    • SubseaProductionSystem

      public SubseaProductionSystem(String name)
      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

      public SubseaProductionSystem setWaterDepthM(double depthM)
      Sets water depth.
      Parameters:
      depthM - water depth in meters
      Returns:
      this for chaining
    • setTiebackDistanceKm

      public SubseaProductionSystem setTiebackDistanceKm(double distanceKm)
      Sets tieback distance from discovery to host.
      Parameters:
      distanceKm - distance in kilometers
      Returns:
      this for chaining
    • setDiscoveryLocation

      public SubseaProductionSystem setDiscoveryLocation(double latitude, double longitude)
      Sets discovery location.
      Parameters:
      latitude - latitude in degrees
      longitude - longitude in degrees
      Returns:
      this for chaining
    • setWellCount

      public SubseaProductionSystem setWellCount(int count)
      Sets the number of production wells.
      Parameters:
      count - well count
      Returns:
      this for chaining
    • setReservoirConditions

      public SubseaProductionSystem setReservoirConditions(double pressureBara, double temperatureC)
      Sets reservoir conditions.
      Parameters:
      pressureBara - reservoir pressure in bara
      temperatureC - reservoir temperature in Celsius
      Returns:
      this for chaining
    • setWellheadConditions

      public SubseaProductionSystem setWellheadConditions(double pressureBara, double temperatureC)
      Sets wellhead conditions.
      Parameters:
      pressureBara - wellhead pressure in bara
      temperatureC - wellhead temperature in Celsius
      Returns:
      this for chaining
    • setRatePerWell

      public SubseaProductionSystem setRatePerWell(double rateSm3d)
      Sets production rate per well.
      Parameters:
      rateSm3d - rate in Sm3/day
      Returns:
      this for chaining
    • setWellDepthM

      public SubseaProductionSystem setWellDepthM(double depthM)
      Sets well depth (measured depth).
      Parameters:
      depthM - well depth in meters
      Returns:
      this for chaining
    • setTubingDiameterInches

      public SubseaProductionSystem setTubingDiameterInches(double diameterInches)
      Sets tubing diameter.
      Parameters:
      diameterInches - tubing ID in inches
      Returns:
      this for chaining
    • setFlowlineDiameterInches

      public SubseaProductionSystem setFlowlineDiameterInches(double diameterInches)
      Sets flowline diameter.
      Parameters:
      diameterInches - flowline ID in inches
      Returns:
      this for chaining
    • setFlowlineWallThicknessMm

      public SubseaProductionSystem setFlowlineWallThicknessMm(double thicknessMm)
      Sets flowline wall thickness.
      Parameters:
      thicknessMm - wall thickness in millimeters
      Returns:
      this for chaining
    • setSeabedTemperatureC

      public SubseaProductionSystem setSeabedTemperatureC(double temperatureC)
      Sets seabed temperature.
      Parameters:
      temperatureC - seabed temperature in Celsius
      Returns:
      this for chaining
    • setFlowlineMaterial

      public SubseaProductionSystem setFlowlineMaterial(String material)
      Sets flowline material.
      Parameters:
      material - material type (e.g., "Carbon Steel", "CRA", "Flexible")
      Returns:
      this for chaining
    • setHostFacility

      public SubseaProductionSystem setHostFacility(HostFacility host)
      Sets the host facility for tieback.
      Parameters:
      host - host facility
      Returns:
      this for chaining
    • setReservoirFluid

      public SubseaProductionSystem setReservoirFluid(SystemInterface fluid)
      Sets the reservoir fluid.
      Parameters:
      fluid - thermodynamic system
      Returns:
      this for chaining
    • setManifoldCount

      public SubseaProductionSystem setManifoldCount(int count)
      Sets the number of manifolds (for clustered architectures).
      Parameters:
      count - manifold count
      Returns:
      this for chaining
    • build

      public SubseaProductionSystem 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

      private void configureTubing(SubseaWell well)
    • configureFlowline

      private void configureFlowline(SimpleFlowLine flowline, double lengthKm)
    • run

      public void run()
      Runs the subsea production system simulation.
    • run

      public void run(UUID id)
      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

      public ProcessSystem getProcessSystem()
      Gets the internal process system.
      Returns:
      process system
    • getWells

      public List<SubseaWell> getWells()
      Gets the list of subsea wells.
      Returns:
      list of wells
    • getFlowlines

      public List<SimpleFlowLine> getFlowlines()
      Gets the list of flowlines.
      Returns:
      list of flowlines
    • getTiebackOption

      public TiebackOption getTiebackOption()
      Gets the tieback option analysis.
      Returns:
      tieback option if analyzed, null otherwise
    • getName

      public String getName()
      Gets the system name.
      Returns:
      system name
    • 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