Class TiebackAnalyzer

java.lang.Object
neqsim.process.fielddevelopment.tieback.TiebackAnalyzer
All Implemented Interfaces:
Serializable

public class TiebackAnalyzer extends Object implements Serializable
Analyzes tie-back options for connecting satellite fields to host facilities.

The TiebackAnalyzer is the main entry point for evaluating subsea tie-back development options. For each potential host facility, it:

  1. Calculates distance and checks routing feasibility
  2. Evaluates host capacity constraints
  3. Performs flow assurance screening
  4. Estimates CAPEX breakdown
  5. Calculates NPV and other economics
  6. Ranks options by value

Cost Estimation Basis

The analyzer uses parametric cost models calibrated to Norwegian Continental Shelf benchmarks:

  • Subsea tree: 25 MUSD per well
  • Manifold/template: 30-50 MUSD
  • Pipeline: 2-4 MUSD/km depending on diameter
  • Umbilical: 1 MUSD/km
  • Host modifications: 20-100 MUSD depending on scope

Example Usage

// Define discovery
FieldConcept discovery = FieldConcept.gasTieback("Marginal Gas", 25.0, 2, 1.5);

// Define potential hosts
List<HostFacility> hosts = new ArrayList<>();
hosts.add(HostFacility.builder("Platform A").location(61.5, 2.3).waterDepth(110)
    .spareGasCapacity(3.0).minTieInPressure(80).build());
hosts.add(HostFacility.builder("FPSO B").location(61.8, 2.1).waterDepth(350)
    .spareGasCapacity(5.0).build());

// Analyze
TiebackAnalyzer analyzer = new TiebackAnalyzer();
TiebackReport report = analyzer.analyze(discovery, hosts, 61.6, 2.5);

// Review results
System.out.println(report.getSummary());
TiebackOption best = report.getBestOption();
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • subseaTreeCostMusd

      private double subseaTreeCostMusd
      Cost per subsea tree in MUSD.
    • manifoldBaseCostMusd

      private double manifoldBaseCostMusd
      Base cost for manifold/template in MUSD.
    • pipelineCostPerKmMusd

      private double pipelineCostPerKmMusd
      Pipeline cost per km in MUSD (base, adjusted for diameter).
    • umbilicalCostPerKmMusd

      private double umbilicalCostPerKmMusd
      Umbilical cost per km in MUSD.
    • hostModificationBaseCostMusd

      private double hostModificationBaseCostMusd
      Base cost for host modifications in MUSD.
    • drillingCostPerWellMusd

      private double drillingCostPerWellMusd
      Drilling cost per well in MUSD.
    • discountRate

      private double discountRate
      Discount rate for NPV calculations.
    • gasPriceUsdPerSm3

      private double gasPriceUsdPerSm3
      Default gas price in USD/Sm3.
    • oilPriceUsdPerBbl

      private double oilPriceUsdPerBbl
      Default oil price in USD/bbl.
    • opexFraction

      private double opexFraction
      OPEX as fraction of CAPEX per year.
    • maxTiebackDistanceKm

      private double maxTiebackDistanceKm
      Maximum tieback distance in km.
    • minHydrateMarginC

      private double minHydrateMarginC
      Minimum hydrate margin for PASS in Celsius.
    • seabedTemperatureC

      private double seabedTemperatureC
      Seabed temperature for flow assurance in Celsius.
    • taxModel

      private NorwegianTaxModel taxModel
  • Constructor Details

    • TiebackAnalyzer

      public TiebackAnalyzer()
      Creates a new tieback analyzer with default parameters.
  • Method Details

    • analyze

      public TiebackReport analyze(FieldConcept discovery, List<HostFacility> hosts, double discoveryLatitude, double discoveryLongitude)
      Analyzes all tieback options for a discovery.

      For each host facility, evaluates the technical feasibility and economic attractiveness of a tieback connection. Options are ranked by NPV, with infeasible options marked accordingly.

      Parameters:
      discovery - the satellite field concept
      hosts - list of potential host facilities
      discoveryLatitude - discovery latitude in degrees
      discoveryLongitude - discovery longitude in degrees
      Returns:
      comprehensive tieback report with ranked options
    • analyze

      public TiebackReport analyze(FieldConcept discovery, List<HostFacility> hosts)
      Analyzes tieback options using concept infrastructure input for location.
      Parameters:
      discovery - the satellite field concept
      hosts - list of potential host facilities
      Returns:
      comprehensive tieback report
    • evaluateSingleTieback

      public TiebackOption evaluateSingleTieback(FieldConcept discovery, HostFacility host, double discoveryLatitude, double discoveryLongitude)
      Evaluates a single tieback option.
      Parameters:
      discovery - the satellite field concept
      host - the host facility
      discoveryLatitude - discovery latitude
      discoveryLongitude - discovery longitude
      Returns:
      evaluated tieback option
    • screenFlowAssurance

      private void screenFlowAssurance(TiebackOption option, ReservoirInput reservoir, double distanceKm)
    • estimateCapex

      private void estimateCapex(TiebackOption option, int wellCount, double distanceKm, HostFacility host)
    • calculateEconomics

      private void calculateEconomics(TiebackOption option, boolean isGasField, int wellCount, double gasRateMSm3d, double oilRateBopd)
    • getDiscountRate

      public double getDiscountRate()
      Gets the discount rate.
      Returns:
      discount rate (0-1)
    • setDiscountRate

      public void setDiscountRate(double discountRate)
      Sets the discount rate.
      Parameters:
      discountRate - discount rate (0-1)
    • getGasPriceUsdPerSm3

      public double getGasPriceUsdPerSm3()
      Gets the gas price.
      Returns:
      gas price in USD/Sm3
    • setGasPriceUsdPerSm3

      public void setGasPriceUsdPerSm3(double gasPriceUsdPerSm3)
      Sets the gas price.
      Parameters:
      gasPriceUsdPerSm3 - gas price in USD/Sm3
    • getOilPriceUsdPerBbl

      public double getOilPriceUsdPerBbl()
      Gets the oil price.
      Returns:
      oil price in USD/bbl
    • setOilPriceUsdPerBbl

      public void setOilPriceUsdPerBbl(double oilPriceUsdPerBbl)
      Sets the oil price.
      Parameters:
      oilPriceUsdPerBbl - oil price in USD/bbl
    • getSubseaTreeCostMusd

      public double getSubseaTreeCostMusd()
      Gets the subsea tree cost.
      Returns:
      cost in MUSD per tree
    • setSubseaTreeCostMusd

      public void setSubseaTreeCostMusd(double subseaTreeCostMusd)
      Sets the subsea tree cost.
      Parameters:
      subseaTreeCostMusd - cost in MUSD per tree
    • getPipelineCostPerKmMusd

      public double getPipelineCostPerKmMusd()
      Gets the pipeline cost per km.
      Returns:
      cost in MUSD/km
    • setPipelineCostPerKmMusd

      public void setPipelineCostPerKmMusd(double pipelineCostPerKmMusd)
      Sets the pipeline cost per km.
      Parameters:
      pipelineCostPerKmMusd - cost in MUSD/km
    • getMaxTiebackDistanceKm

      public double getMaxTiebackDistanceKm()
      Gets the maximum tieback distance.
      Returns:
      maximum distance in km
    • setMaxTiebackDistanceKm

      public void setMaxTiebackDistanceKm(double maxTiebackDistanceKm)
      Sets the maximum tieback distance.
      Parameters:
      maxTiebackDistanceKm - maximum distance in km
    • getTaxModel

      public NorwegianTaxModel getTaxModel()
      Gets the tax model.
      Returns:
      tax model
    • setTaxModel

      public void setTaxModel(NorwegianTaxModel taxModel)
      Sets the tax model.
      Parameters:
      taxModel - tax model
    • quickScreen

      public TiebackAnalyzer.TiebackScreeningResult quickScreen(double discoveryLat, double discoveryLon, double reservesMMboe, double waterDepthM, HostFacility host)
      Quick screening for tieback feasibility without full analysis.

      Performs rapid go/no-go screening based on key constraints:

      • Distance to host
      • Water depth compatibility
      • Host capacity
      • Pressure compatibility
      Parameters:
      discoveryLat - discovery latitude
      discoveryLon - discovery longitude
      reservesMMboe - reserves in MMboe
      waterDepthM - water depth in meters
      host - potential host facility
      Returns:
      screening result with pass/fail and reason
    • screenAllHosts

      public List<TiebackAnalyzer.TiebackScreeningResult> screenAllHosts(double discoveryLat, double discoveryLon, double reservesMMboe, double waterDepthM, List<HostFacility> hosts)
      Screen multiple hosts quickly and return ranked results.
      Parameters:
      discoveryLat - discovery latitude
      discoveryLon - discovery longitude
      reservesMMboe - reserves in MMboe
      waterDepthM - water depth in meters
      hosts - list of potential hosts
      Returns:
      list of screening results, ranked by estimated NPV
    • estimateQuickCapex

      private double estimateQuickCapex(double distanceKm, double waterDepthM)
      Quick CAPEX estimate for screening.
    • estimateQuickNpv

      private double estimateQuickNpv(double reservesMMboe, double capexMusd)
      Quick NPV estimate for screening.