Class TiebackOption

java.lang.Object
neqsim.process.fielddevelopment.tieback.TiebackOption
All Implemented Interfaces:
Serializable, Comparable<TiebackOption>

public class TiebackOption extends Object implements Serializable, Comparable<TiebackOption>
Represents a specific tie-back option evaluated by the TiebackAnalyzer.

A TiebackOption encapsulates all the technical and economic parameters for connecting a satellite field to a host facility. It includes:

  • Technical parameters: Distance, pipeline size, flow assurance requirements
  • Economic parameters: CAPEX breakdown, NPV, payback
  • Constraints: Host capacity limits, pressure requirements
  • Flow assurance: Hydrate, wax, and corrosion screening results
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • discoveryName

      private String discoveryName
    • hostName

      private String hostName
    • optionId

      private String optionId
    • distanceKm

      private double distanceKm
      Tieback distance in kilometers.
    • pipelineDiameterInches

      private double pipelineDiameterInches
      Pipeline diameter in inches.
    • maxWaterDepthM

      private double maxWaterDepthM
      Maximum water depth along route in meters.
    • routeNetworkName

      private String routeNetworkName
      Optional route-network name for multi-segment routes.
    • routeSummary

      private String routeSummary
      Route summary with branches, risers, shared corridor, and host hub information.
    • routeInstalledLengthKm

      private double routeInstalledLengthKm
      Total installed route length including branch segments in kilometres.
    • routeSharedCorridorLengthKm

      private double routeSharedCorridorLengthKm
      Shared corridor length in kilometres.
    • routeBranchCount

      private int routeBranchCount
      Number of branch segments in the route network.
    • routeRiserCount

      private int routeRiserCount
      Number of riser segments in the route network.
    • arrivalPressureBara

      private double arrivalPressureBara
      Estimated arrival pressure at host in bara.
    • arrivalTemperatureC

      private double arrivalTemperatureC
      Estimated arrival temperature at host in Celsius.
    • pipelineHeatTransferCoefficientWm2K

      private double pipelineHeatTransferCoefficientWm2K
      Pipeline heat transfer coefficient used in hydraulic screening in W/m2K.
    • hydraulicFeasible

      private boolean hydraulicFeasible
      Whether the hydraulic screening case meets pressure and velocity constraints.
    • hydraulicInfeasibilityReason

      private String hydraulicInfeasibilityReason
      Reason for hydraulic infeasibility if hydraulic screening fails.
    • flowRegime

      private String flowRegime
      Flow regime identified for the tieback route.
    • erosionalVelocityRatio

      private double erosionalVelocityRatio
      Mixture velocity divided by erosional velocity limit.
    • hydrateFormationTemperatureC

      private double hydrateFormationTemperatureC
      Hydrate formation temperature calculated for route arrival pressure in Celsius.
    • shutdownCooldownRiskScore

      private double shutdownCooldownRiskScore
      Screening score for shutdown cooldown risk from 0 (low) to 1 (high).
    • shutdownCooldownTimeToHydrateHours

      private double shutdownCooldownTimeToHydrateHours
      Estimated cooldown time to hydrate risk during shutdown in hours.
    • hostCapacitySummary

      private String hostCapacitySummary
      Host capacity summary from nameplate and optional process-model screening.
    • wellCount

      private int wellCount
      Number of subsea wells.
    • maxProductionRate

      private double maxProductionRate
      Maximum production rate constrained by host capacity (gas: MSm3/d, oil: bbl/d).
    • rateUnit

      private String rateUnit
      Production rate unit.
    • recoverableReserves

      private double recoverableReserves
      Total recoverable reserves.
    • reservesUnit

      private String reservesUnit
      Reserves unit.
    • fieldLifeYears

      private double fieldLifeYears
      Expected field life in years.
    • subseaCapexMusd

      private double subseaCapexMusd
      Subsea equipment CAPEX (trees, manifolds, controls).
    • pipelineCapexMusd

      private double pipelineCapexMusd
      Pipeline CAPEX.
    • umbilicalCapexMusd

      private double umbilicalCapexMusd
      Umbilical CAPEX.
    • drillingCapexMusd

      private double drillingCapexMusd
      Drilling and completion CAPEX.
    • hostModificationCapexMusd

      private double hostModificationCapexMusd
      Host modifications CAPEX.
    • totalCapexMusd

      private double totalCapexMusd
      Total CAPEX.
    • npvMusd

      private double npvMusd
      Net Present Value in MUSD.
    • irr

      private double irr
      Internal Rate of Return (0-1).
    • paybackYears

      private double paybackYears
      Payback period in years.
    • breakevenPrice

      private double breakevenPrice
      Breakeven price (oil: USD/bbl, gas: USD/Sm3).
    • hydrateResult

      private FlowAssuranceResult hydrateResult
      Hydrate screening result.
    • waxResult

      private FlowAssuranceResult waxResult
      Wax screening result.
    • corrosionResult

      private FlowAssuranceResult corrosionResult
      Corrosion screening result.
    • hydrateMarginC

      private double hydrateMarginC
      Hydrate subcooling margin in Celsius.
    • watMarginC

      private double watMarginC
      WAT margin in Celsius.
    • flowAssuranceNotes

      private String flowAssuranceNotes
      Flow assurance notes/recommendations.
    • feasible

      private boolean feasible
      Whether the option is technically feasible.
    • infeasibilityReason

      private String infeasibilityReason
      Reason for infeasibility (if not feasible).
  • Constructor Details

    • TiebackOption

      public TiebackOption(String discoveryName, String hostName)
      Creates a new tieback option.
      Parameters:
      discoveryName - name of the satellite field
      hostName - name of the host facility
  • Method Details

    • calculateTotalCapex

      public double calculateTotalCapex()
      Calculates total CAPEX from breakdown.
      Returns:
      total CAPEX in MUSD
    • estimatePipelineCapex

      public double estimatePipelineCapex(double costPerKmMusd)
      Estimates pipeline CAPEX based on distance and diameter.
      Parameters:
      costPerKmMusd - cost per km in MUSD
      Returns:
      pipeline CAPEX in MUSD
    • hasFlowAssuranceIssues

      public boolean hasFlowAssuranceIssues()
      Checks if the option has any critical flow assurance issues.
      Returns:
      true if any flow assurance category fails
    • getOverallFlowAssuranceResult

      public FlowAssuranceResult getOverallFlowAssuranceResult()
      Gets the overall flow assurance status.
      Returns:
      worst flow assurance result across all categories
    • getCapexPerKm

      public double getCapexPerKm()
      Gets CAPEX per km of tieback.
      Returns:
      CAPEX intensity in MUSD/km
    • getCapexPerReserveUnit

      public double getCapexPerReserveUnit()
      Gets CAPEX per unit of reserves.
      Returns:
      CAPEX intensity in MUSD per reserve unit
    • compareTo

      public int compareTo(TiebackOption other)
      Compares by NPV (descending - higher NPV is better).
      Specified by:
      compareTo in interface Comparable<TiebackOption>
      Parameters:
      other - other option to compare
      Returns:
      comparison result
    • getSummary

      public String getSummary()
      Generates a summary string.
      Returns:
      formatted summary
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getDiscoveryName

      public String getDiscoveryName()
      Gets the discovery name.
      Returns:
      discovery name
    • getHostName

      public String getHostName()
      Gets the host name.
      Returns:
      host name
    • getOptionId

      public String getOptionId()
      Gets the option ID.
      Returns:
      option ID
    • getDistanceKm

      public double getDistanceKm()
      Gets the distance.
      Returns:
      distance in km
    • setDistanceKm

      public void setDistanceKm(double distanceKm)
      Sets the distance.
      Parameters:
      distanceKm - distance in km
    • getPipelineDiameterInches

      public double getPipelineDiameterInches()
      Gets the pipeline diameter.
      Returns:
      pipeline diameter in inches
    • setPipelineDiameterInches

      public void setPipelineDiameterInches(double pipelineDiameterInches)
      Sets the pipeline diameter.
      Parameters:
      pipelineDiameterInches - pipeline diameter in inches
    • getMaxWaterDepthM

      public double getMaxWaterDepthM()
      Gets the maximum water depth.
      Returns:
      water depth in meters
    • setMaxWaterDepthM

      public void setMaxWaterDepthM(double maxWaterDepthM)
      Sets the maximum water depth.
      Parameters:
      maxWaterDepthM - water depth in meters
    • getRouteNetworkName

      public String getRouteNetworkName()
      Gets the route-network name.
      Returns:
      route-network name, or an empty string for scalar-distance screening
    • setRouteNetworkName

      public void setRouteNetworkName(String routeNetworkName)
      Sets the route-network name.
      Parameters:
      routeNetworkName - route-network name
    • getRouteSummary

      public String getRouteSummary()
      Gets the route-network summary.
      Returns:
      route-network summary text
    • setRouteSummary

      public void setRouteSummary(String routeSummary)
      Sets the route-network summary.
      Parameters:
      routeSummary - route-network summary text
    • getRouteInstalledLengthKm

      public double getRouteInstalledLengthKm()
      Gets installed route length.
      Returns:
      installed route length in kilometres
    • setRouteInstalledLengthKm

      public void setRouteInstalledLengthKm(double routeInstalledLengthKm)
      Sets installed route length.
      Parameters:
      routeInstalledLengthKm - installed route length in kilometres
    • getRouteSharedCorridorLengthKm

      public double getRouteSharedCorridorLengthKm()
      Gets shared corridor length.
      Returns:
      shared corridor length in kilometres
    • setRouteSharedCorridorLengthKm

      public void setRouteSharedCorridorLengthKm(double routeSharedCorridorLengthKm)
      Sets shared corridor length.
      Parameters:
      routeSharedCorridorLengthKm - shared corridor length in kilometres
    • getRouteBranchCount

      public int getRouteBranchCount()
      Gets branch count.
      Returns:
      number of branch segments
    • setRouteBranchCount

      public void setRouteBranchCount(int routeBranchCount)
      Sets branch count.
      Parameters:
      routeBranchCount - number of branch segments
    • getRouteRiserCount

      public int getRouteRiserCount()
      Gets riser count.
      Returns:
      number of riser segments
    • setRouteRiserCount

      public void setRouteRiserCount(int routeRiserCount)
      Sets riser count.
      Parameters:
      routeRiserCount - number of riser segments
    • getArrivalPressureBara

      public double getArrivalPressureBara()
      Gets the arrival pressure.
      Returns:
      arrival pressure in bara
    • setArrivalPressureBara

      public void setArrivalPressureBara(double arrivalPressureBara)
      Sets the arrival pressure.
      Parameters:
      arrivalPressureBara - arrival pressure in bara
    • getArrivalTemperatureC

      public double getArrivalTemperatureC()
      Gets the arrival temperature.
      Returns:
      arrival temperature in Celsius
    • setArrivalTemperatureC

      public void setArrivalTemperatureC(double arrivalTemperatureC)
      Sets the arrival temperature.
      Parameters:
      arrivalTemperatureC - arrival temperature in Celsius
    • getPipelineHeatTransferCoefficientWm2K

      public double getPipelineHeatTransferCoefficientWm2K()
      Gets the pipeline heat transfer coefficient used in hydraulic screening.
      Returns:
      pipeline heat transfer coefficient in W/m2K
    • setPipelineHeatTransferCoefficientWm2K

      public void setPipelineHeatTransferCoefficientWm2K(double pipelineHeatTransferCoefficientWm2K)
      Sets the pipeline heat transfer coefficient used in hydraulic screening.
      Parameters:
      pipelineHeatTransferCoefficientWm2K - heat transfer coefficient in W/m2K
    • isHydraulicFeasible

      public boolean isHydraulicFeasible()
      Checks whether hydraulic screening passed.
      Returns:
      true if hydraulic screening passed
    • setHydraulicFeasible

      public void setHydraulicFeasible(boolean hydraulicFeasible)
      Sets whether hydraulic screening passed.
      Parameters:
      hydraulicFeasible - true if hydraulic screening passed
    • getHydraulicInfeasibilityReason

      public String getHydraulicInfeasibilityReason()
      Gets the hydraulic infeasibility reason.
      Returns:
      hydraulic infeasibility reason, or null if hydraulic screening passed
    • setHydraulicInfeasibilityReason

      public void setHydraulicInfeasibilityReason(String hydraulicInfeasibilityReason)
      Sets the hydraulic infeasibility reason.
      Parameters:
      hydraulicInfeasibilityReason - hydraulic infeasibility reason
    • getFlowRegime

      public String getFlowRegime()
      Gets the flow regime identified for the route.
      Returns:
      flow regime description
    • setFlowRegime

      public void setFlowRegime(String flowRegime)
      Sets the flow regime identified for the route.
      Parameters:
      flowRegime - flow regime description
    • getErosionalVelocityRatio

      public double getErosionalVelocityRatio()
      Gets the erosional velocity ratio.
      Returns:
      mixture velocity divided by erosional velocity limit
    • setErosionalVelocityRatio

      public void setErosionalVelocityRatio(double erosionalVelocityRatio)
      Sets the erosional velocity ratio.
      Parameters:
      erosionalVelocityRatio - mixture velocity divided by erosional velocity limit
    • getWellCount

      public int getWellCount()
      Gets the well count.
      Returns:
      well count
    • setWellCount

      public void setWellCount(int wellCount)
      Sets the well count.
      Parameters:
      wellCount - well count
    • getMaxProductionRate

      public double getMaxProductionRate()
      Gets the maximum production rate.
      Returns:
      production rate
    • setMaxProductionRate

      public void setMaxProductionRate(double maxProductionRate)
      Sets the maximum production rate.
      Parameters:
      maxProductionRate - production rate
    • getRateUnit

      public String getRateUnit()
      Gets the rate unit.
      Returns:
      rate unit string
    • setRateUnit

      public void setRateUnit(String rateUnit)
      Sets the rate unit.
      Parameters:
      rateUnit - rate unit string
    • getRecoverableReserves

      public double getRecoverableReserves()
      Gets the recoverable reserves.
      Returns:
      recoverable reserves
    • setRecoverableReserves

      public void setRecoverableReserves(double recoverableReserves)
      Sets the recoverable reserves.
      Parameters:
      recoverableReserves - reserves amount
    • getReservesUnit

      public String getReservesUnit()
      Gets the reserves unit.
      Returns:
      reserves unit string
    • setReservesUnit

      public void setReservesUnit(String reservesUnit)
      Sets the reserves unit.
      Parameters:
      reservesUnit - reserves unit string
    • getFieldLifeYears

      public double getFieldLifeYears()
      Gets the field life.
      Returns:
      field life in years
    • setFieldLifeYears

      public void setFieldLifeYears(double fieldLifeYears)
      Sets the field life.
      Parameters:
      fieldLifeYears - field life in years
    • getSubseaCapexMusd

      public double getSubseaCapexMusd()
      Gets the subsea CAPEX.
      Returns:
      subsea CAPEX in MUSD
    • setSubseaCapexMusd

      public void setSubseaCapexMusd(double subseaCapexMusd)
      Sets the subsea CAPEX.
      Parameters:
      subseaCapexMusd - subsea CAPEX in MUSD
    • getPipelineCapexMusd

      public double getPipelineCapexMusd()
      Gets the pipeline CAPEX.
      Returns:
      pipeline CAPEX in MUSD
    • setPipelineCapexMusd

      public void setPipelineCapexMusd(double pipelineCapexMusd)
      Sets the pipeline CAPEX.
      Parameters:
      pipelineCapexMusd - pipeline CAPEX in MUSD
    • getUmbilicalCapexMusd

      public double getUmbilicalCapexMusd()
      Gets the umbilical CAPEX.
      Returns:
      umbilical CAPEX in MUSD
    • setUmbilicalCapexMusd

      public void setUmbilicalCapexMusd(double umbilicalCapexMusd)
      Sets the umbilical CAPEX.
      Parameters:
      umbilicalCapexMusd - umbilical CAPEX in MUSD
    • getDrillingCapexMusd

      public double getDrillingCapexMusd()
      Gets the drilling CAPEX.
      Returns:
      drilling CAPEX in MUSD
    • setDrillingCapexMusd

      public void setDrillingCapexMusd(double drillingCapexMusd)
      Sets the drilling CAPEX.
      Parameters:
      drillingCapexMusd - drilling CAPEX in MUSD
    • getHostModificationCapexMusd

      public double getHostModificationCapexMusd()
      Gets the host modification CAPEX.
      Returns:
      host modification CAPEX in MUSD
    • setHostModificationCapexMusd

      public void setHostModificationCapexMusd(double hostModificationCapexMusd)
      Sets the host modification CAPEX.
      Parameters:
      hostModificationCapexMusd - host modification CAPEX in MUSD
    • getTotalCapexMusd

      public double getTotalCapexMusd()
      Gets the total CAPEX.
      Returns:
      total CAPEX in MUSD
    • setTotalCapexMusd

      public void setTotalCapexMusd(double totalCapexMusd)
      Sets the total CAPEX.
      Parameters:
      totalCapexMusd - total CAPEX in MUSD
    • getNpvMusd

      public double getNpvMusd()
      Gets the NPV.
      Returns:
      NPV in MUSD
    • setNpvMusd

      public void setNpvMusd(double npvMusd)
      Sets the NPV.
      Parameters:
      npvMusd - NPV in MUSD
    • getIrr

      public double getIrr()
      Gets the IRR.
      Returns:
      IRR (0-1)
    • setIrr

      public void setIrr(double irr)
      Sets the IRR.
      Parameters:
      irr - IRR (0-1)
    • getPaybackYears

      public double getPaybackYears()
      Gets the payback period.
      Returns:
      payback in years
    • setPaybackYears

      public void setPaybackYears(double paybackYears)
      Sets the payback period.
      Parameters:
      paybackYears - payback in years
    • getBreakevenPrice

      public double getBreakevenPrice()
      Gets the breakeven price.
      Returns:
      breakeven price
    • setBreakevenPrice

      public void setBreakevenPrice(double breakevenPrice)
      Sets the breakeven price.
      Parameters:
      breakevenPrice - breakeven price
    • getHydrateResult

      public FlowAssuranceResult getHydrateResult()
      Gets the hydrate result.
      Returns:
      hydrate screening result
    • setHydrateResult

      public void setHydrateResult(FlowAssuranceResult hydrateResult)
      Sets the hydrate result.
      Parameters:
      hydrateResult - hydrate screening result
    • getWaxResult

      public FlowAssuranceResult getWaxResult()
      Gets the wax result.
      Returns:
      wax screening result
    • setWaxResult

      public void setWaxResult(FlowAssuranceResult waxResult)
      Sets the wax result.
      Parameters:
      waxResult - wax screening result
    • getCorrosionResult

      public FlowAssuranceResult getCorrosionResult()
      Gets the corrosion result.
      Returns:
      corrosion screening result
    • setCorrosionResult

      public void setCorrosionResult(FlowAssuranceResult corrosionResult)
      Sets the corrosion result.
      Parameters:
      corrosionResult - corrosion screening result
    • getHydrateMarginC

      public double getHydrateMarginC()
      Gets the hydrate margin.
      Returns:
      hydrate margin in Celsius
    • setHydrateMarginC

      public void setHydrateMarginC(double hydrateMarginC)
      Sets the hydrate margin.
      Parameters:
      hydrateMarginC - hydrate margin in Celsius
    • getHydrateFormationTemperatureC

      public double getHydrateFormationTemperatureC()
      Gets the hydrate formation temperature.
      Returns:
      hydrate formation temperature in Celsius
    • setHydrateFormationTemperatureC

      public void setHydrateFormationTemperatureC(double hydrateFormationTemperatureC)
      Sets the hydrate formation temperature.
      Parameters:
      hydrateFormationTemperatureC - hydrate formation temperature in Celsius
    • getShutdownCooldownRiskScore

      public double getShutdownCooldownRiskScore()
      Gets the shutdown cooldown risk score.
      Returns:
      risk score from 0 (low) to 1 (high)
    • setShutdownCooldownRiskScore

      public void setShutdownCooldownRiskScore(double shutdownCooldownRiskScore)
      Sets the shutdown cooldown risk score.
      Parameters:
      shutdownCooldownRiskScore - risk score from 0 (low) to 1 (high)
    • getShutdownCooldownTimeToHydrateHours

      public double getShutdownCooldownTimeToHydrateHours()
      Gets the estimated shutdown cooldown time to hydrate risk.
      Returns:
      cooldown time in hours
    • setShutdownCooldownTimeToHydrateHours

      public void setShutdownCooldownTimeToHydrateHours(double shutdownCooldownTimeToHydrateHours)
      Sets the estimated shutdown cooldown time to hydrate risk.
      Parameters:
      shutdownCooldownTimeToHydrateHours - cooldown time in hours
    • getHostCapacitySummary

      public String getHostCapacitySummary()
      Gets the host capacity summary.
      Returns:
      host capacity summary text
    • setHostCapacitySummary

      public void setHostCapacitySummary(String hostCapacitySummary)
      Sets the host capacity summary.
      Parameters:
      hostCapacitySummary - host capacity summary text
    • getWatMarginC

      public double getWatMarginC()
      Gets the WAT margin.
      Returns:
      WAT margin in Celsius
    • setWatMarginC

      public void setWatMarginC(double watMarginC)
      Sets the WAT margin.
      Parameters:
      watMarginC - WAT margin in Celsius
    • getFlowAssuranceNotes

      public String getFlowAssuranceNotes()
      Gets the flow assurance notes.
      Returns:
      flow assurance notes
    • setFlowAssuranceNotes

      public void setFlowAssuranceNotes(String flowAssuranceNotes)
      Sets the flow assurance notes.
      Parameters:
      flowAssuranceNotes - notes string
    • isFeasible

      public boolean isFeasible()
      Checks if the option is feasible.
      Returns:
      true if feasible
    • setFeasible

      public void setFeasible(boolean feasible)
      Sets the feasibility flag.
      Parameters:
      feasible - true if feasible
    • getInfeasibilityReason

      public String getInfeasibilityReason()
      Gets the infeasibility reason.
      Returns:
      reason string or null
    • setInfeasibilityReason

      public void setInfeasibilityReason(String infeasibilityReason)
      Sets the infeasibility reason.
      Parameters:
      infeasibilityReason - reason string