Class SubseaCostEstimator
java.lang.Object
neqsim.process.mechanicaldesign.subsea.SubseaCostEstimator
Cost estimation calculator for subsea SURF equipment.
Provides cost estimation capabilities for subsea equipment including:
- Equipment procurement costs
- Material costs
- Fabrication costs
- Installation costs (vessel, labor, ROV)
- Engineering and project management
- Contingency and risk allowances
- Version:
- 1.0
- Author:
- ESOL
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumCost currency.static enumRegion for cost adjustment. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleContingency allowance.private doubleContingency percentage.private SubseaCostEstimator.CurrencyCurrency for reporting.private doubleCurrency conversion rate to USD.private doubleDiving hours required (if applicable).private doubleEngineering cost.private doubleEngineering manhours.private doubleEngineering percentage of equipment cost.private doubleEngineering rate per hour USD.private doubleEquipment/material procurement cost.private doubleFabrication cost.private doubleFabrication manhours.private doubleFabrication rate per hour USD.private doubleInstallation cost.private doubleInstallation manhours.private doubleInstallation crew rate per hour USD.private doubleProject management cost.private doubleProject management percentage.private SubseaCostEstimator.RegionRegion for cost adjustment.private doubleROV spread day rate USD.private doubleROV hours required.private doubleTotal project cost.private doubleTotal manhours.private doubleVessel cost.private doubleVessel day rate USD.private doubleVessel days required. -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.Constructor with region. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidApply region cost factor.voidcalculateBoosterCost(double powerMW, boolean isCompressor, double waterDepthM, boolean hasRedundancy) Calculate Subsea Booster cost estimate.voidcalculateFlexiblePipeCost(double lengthM, double innerDiameterInches, double waterDepthM, boolean isDynamic, boolean hasBuoyancy) Calculate Flexible Pipe cost estimate.voidcalculateJumperCost(double lengthM, double diameterInches, boolean isRigid, double waterDepthM) Calculate Subsea Jumper cost estimate.voidcalculateManifoldCost(int numberOfSlots, double dryWeightTonnes, double waterDepthM, boolean hasTestHeader) Calculate Subsea Manifold cost estimate.voidcalculatePLETCost(double dryWeightTonnes, double hubSizeInches, double waterDepthM, boolean hasIsolationValve, boolean hasPiggingFacility) Calculate PLET cost estimate.private voidcalculateSubseaInstallation(double weightTonnes, double waterDepthM, boolean requiresPrecision) Calculate generic subsea installation cost.private voidCalculate total costs.voidcalculateTreeCost(double pressureRatingPsi, double boreSizeInches, double waterDepthM, boolean isHorizontal, boolean isDualBore) Calculate Subsea Tree cost estimate.voidcalculateUmbilicalCost(double lengthKm, int numberOfHydraulicLines, int numberOfChemicalLines, int numberOfElectricalCables, double waterDepthM, boolean isDynamic) Calculate Umbilical cost estimate.generateBillOfMaterials(String equipmentType, Map<String, Object> details) Generate bill of materials.generateBOM(String equipmentType, double weightTonnes, double waterDepth) Generate bill of materials for subsea equipment.Get cost breakdown as Map.Get currency.doubleGet equipment cost.doubleGet fabrication cost.doubleGet installation cost.Get region.doubleGet total cost.doubleGet total manhours.doubleGet vessel days.voidsetContingencyPct(double contingencyPct) Set contingency percentage.voidsetCurrency(SubseaCostEstimator.Currency currency) Set currency.voidsetRegion(SubseaCostEstimator.Region region) Set region.toJson()Get cost as JSON string.
-
Field Details
-
equipmentCost
private double equipmentCostEquipment/material procurement cost. -
fabricationCost
private double fabricationCostFabrication cost. -
installationCost
private double installationCostInstallation cost. -
vesselCost
private double vesselCostVessel cost. -
engineeringCost
private double engineeringCostEngineering cost. -
projectManagementCost
private double projectManagementCostProject management cost. -
contingency
private double contingencyContingency allowance. -
totalCost
private double totalCostTotal project cost. -
engineeringManhours
private double engineeringManhoursEngineering manhours. -
fabricationManhours
private double fabricationManhoursFabrication manhours. -
installationManhours
private double installationManhoursInstallation manhours. -
totalManhours
private double totalManhoursTotal manhours. -
vesselDays
private double vesselDaysVessel days required. -
rovHours
private double rovHoursROV hours required. -
divingHours
private double divingHoursDiving hours required (if applicable). -
region
Region for cost adjustment. -
currency
Currency for reporting. -
currencyRate
private double currencyRateCurrency conversion rate to USD. -
engineeringRate
private double engineeringRateEngineering rate per hour USD. -
fabricationRate
private double fabricationRateFabrication rate per hour USD. -
installationRate
private double installationRateInstallation crew rate per hour USD. -
vesselDayRate
private double vesselDayRateVessel day rate USD. -
rovDayRate
private double rovDayRateROV spread day rate USD. -
engineeringPct
private double engineeringPctEngineering percentage of equipment cost. -
projectMgmtPct
private double projectMgmtPctProject management percentage. -
contingencyPct
private double contingencyPctContingency percentage.
-
-
Constructor Details
-
SubseaCostEstimator
public SubseaCostEstimator()Default constructor. -
SubseaCostEstimator
Constructor with region.- Parameters:
region- cost region
-
-
Method Details
-
applyRegionFactor
private void applyRegionFactor()Apply region cost factor. -
calculatePLETCost
public void calculatePLETCost(double dryWeightTonnes, double hubSizeInches, double waterDepthM, boolean hasIsolationValve, boolean hasPiggingFacility) Calculate PLET cost estimate.- Parameters:
dryWeightTonnes- dry weight in tonneshubSizeInches- hub size in incheswaterDepthM- water depth in metershasIsolationValve- has isolation valvehasPiggingFacility- has pigging facilities
-
calculateTreeCost
public void calculateTreeCost(double pressureRatingPsi, double boreSizeInches, double waterDepthM, boolean isHorizontal, boolean isDualBore) Calculate Subsea Tree cost estimate.- Parameters:
pressureRatingPsi- pressure rating in psiboreSizeInches- bore size in incheswaterDepthM- water depth in metersisHorizontal- is horizontal treeisDualBore- is dual bore tree
-
calculateManifoldCost
public void calculateManifoldCost(int numberOfSlots, double dryWeightTonnes, double waterDepthM, boolean hasTestHeader) Calculate Subsea Manifold cost estimate.- Parameters:
numberOfSlots- number of well slotsdryWeightTonnes- dry weight in tonneswaterDepthM- water depth in metershasTestHeader- has test header
-
calculateJumperCost
public void calculateJumperCost(double lengthM, double diameterInches, boolean isRigid, double waterDepthM) Calculate Subsea Jumper cost estimate.- Parameters:
lengthM- length in metersdiameterInches- diameter in inchesisRigid- is rigid jumperwaterDepthM- water depth in meters
-
calculateUmbilicalCost
public void calculateUmbilicalCost(double lengthKm, int numberOfHydraulicLines, int numberOfChemicalLines, int numberOfElectricalCables, double waterDepthM, boolean isDynamic) Calculate Umbilical cost estimate.- Parameters:
lengthKm- length in kilometersnumberOfHydraulicLines- number of hydraulic linesnumberOfChemicalLines- number of chemical linesnumberOfElectricalCables- number of electrical cableswaterDepthM- water depth in metersisDynamic- is dynamic section
-
calculateFlexiblePipeCost
public void calculateFlexiblePipeCost(double lengthM, double innerDiameterInches, double waterDepthM, boolean isDynamic, boolean hasBuoyancy) Calculate Flexible Pipe cost estimate.- Parameters:
lengthM- length in metersinnerDiameterInches- inner diameter in incheswaterDepthM- water depth in metersisDynamic- is dynamic riserhasBuoyancy- has buoyancy modules
-
calculateBoosterCost
public void calculateBoosterCost(double powerMW, boolean isCompressor, double waterDepthM, boolean hasRedundancy) Calculate Subsea Booster cost estimate.- Parameters:
powerMW- power in MWisCompressor- is compressor (vs pump)waterDepthM- water depth in metershasRedundancy- has redundant motor
-
calculateSubseaInstallation
private void calculateSubseaInstallation(double weightTonnes, double waterDepthM, boolean requiresPrecision) Calculate generic subsea installation cost.- Parameters:
weightTonnes- equipment weight in tonneswaterDepthM- water depth in metersrequiresPrecision- requires precision landing
-
calculateTotals
private void calculateTotals()Calculate total costs. -
getCostBreakdown
-
generateBillOfMaterials
-
toJson
-
getEquipmentCost
public double getEquipmentCost()Get equipment cost.- Returns:
- equipment cost in USD
-
getFabricationCost
public double getFabricationCost()Get fabrication cost.- Returns:
- fabrication cost in USD
-
getInstallationCost
public double getInstallationCost()Get installation cost.- Returns:
- installation cost in USD
-
getTotalCost
public double getTotalCost()Get total cost.- Returns:
- total cost in USD
-
getVesselDays
public double getVesselDays()Get vessel days.- Returns:
- vessel days
-
getTotalManhours
public double getTotalManhours()Get total manhours.- Returns:
- total manhours
-
getRegion
-
setRegion
-
setContingencyPct
public void setContingencyPct(double contingencyPct) Set contingency percentage.- Parameters:
contingencyPct- contingency percentage (0.0 - 1.0)
-
getCurrency
-
setCurrency
Set currency.- Parameters:
currency- currency
-
generateBOM
public List<Map<String,Object>> generateBOM(String equipmentType, double weightTonnes, double waterDepth) Generate bill of materials for subsea equipment.- Parameters:
equipmentType- type of equipmentweightTonnes- equipment weight in tonneswaterDepth- water depth in meters- Returns:
- list of BOM items
-