Class ProcessCostEstimate

java.lang.Object
neqsim.process.costestimation.ProcessCostEstimate
All Implemented Interfaces:
Serializable

public class ProcessCostEstimate extends Object implements Serializable
System-level cost estimation for an entire process.

This class aggregates cost estimates from all equipment in a ProcessSystem, providing:

  • Total purchased equipment cost (PEC)
  • Total bare module cost (BMC)
  • Total module cost (TMC)
  • Total grass roots cost (including infrastructure)
  • Cost breakdown by equipment type
  • Cost breakdown by discipline
  • Installation man-hours estimation
  • Consolidated bill of materials

The workflow for process cost estimation:

  1. ProcessSystem.run() - run the process simulation
  2. ProcessSystem.initAllMechanicalDesigns() - initialize mechanical designs
  3. ProcessSystem.runAllMechanicalDesigns() - calculate mechanical designs
  4. ProcessSystem.getCostEstimate() - get this ProcessCostEstimate
  5. ProcessCostEstimate.calculateAllCosts() - aggregate all cost estimates
  6. ProcessCostEstimate.toJson() - export comprehensive cost report

Example usage:


ProcessSystem process = new ProcessSystem();
// ... add equipment ...
process.run();

// Get cost estimate through ProcessSystem
ProcessCostEstimate costEstimate = process.getCostEstimate();
costEstimate.calculateAllCosts();

// Get totals
System.out.println("Total PEC: $" + costEstimate.getTotalPurchasedEquipmentCost());
System.out.println("Total TMC: $" + costEstimate.getTotalModuleCost());
System.out.println("Grass Roots: $" + costEstimate.getTotalGrassRootsCost());

// Export to JSON
String json = costEstimate.toJson();

Version:
1.0
Author:
esol
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • processSystem

      private ProcessSystem processSystem
      The process system being estimated.
    • systemMechanicalDesign

      private SystemMechanicalDesign systemMechanicalDesign
      The system mechanical design (optional, for integrated calculations).
    • costCalculator

      private transient CostEstimationCalculator costCalculator
      Central cost calculator for process-level factors.
    • totalPurchasedEquipmentCost

      private double totalPurchasedEquipmentCost
      Total purchased equipment cost (PEC) in USD.
    • totalBareModuleCost

      private double totalBareModuleCost
      Total bare module cost (BMC) in USD.
    • totalModuleCost

      private double totalModuleCost
      Total module cost (TMC) in USD.
    • totalGrassRootsCost

      private double totalGrassRootsCost
      Total grass roots cost in USD.
    • totalInstallationManHours

      private double totalInstallationManHours
      Total installation man-hours.
    • totalAnnualOperatingCost

      private double totalAnnualOperatingCost
      Total annual operating cost in USD.
    • costByEquipmentType

      private Map<String,Double> costByEquipmentType
      Cost breakdown by equipment type.
    • costByDiscipline

      private Map<String,Double> costByDiscipline
      Cost breakdown by discipline.
    • equipmentCosts

      Individual equipment costs.
    • operatingCostBreakdown

      private Map<String,Double> operatingCostBreakdown
      Operating cost breakdown by category.
    • processContingencyFactor

      private double processContingencyFactor
      Process contingency factor (fraction).
    • projectContingencyFactor

      private double projectContingencyFactor
      Project contingency factor (fraction).
    • workingCapitalFactor

      private double workingCapitalFactor
      Working capital factor (fraction of fixed capital).
    • locationFactor

      private double locationFactor
      Location factor (1.0 = US Gulf Coast).
    • complexityFactor

      private double complexityFactor
      Process complexity factor (1.0 = standard).
  • Constructor Details

    • ProcessCostEstimate

      public ProcessCostEstimate()
      Default constructor.
    • ProcessCostEstimate

      public ProcessCostEstimate(ProcessSystem processSystem)
      Constructor with process system.
      Parameters:
      processSystem - the process system to estimate costs for
    • ProcessCostEstimate

      public ProcessCostEstimate(ProcessSystem processSystem, SystemMechanicalDesign systemMechanicalDesign)
      Constructor with process system and mechanical design.
      Parameters:
      processSystem - the process system
      systemMechanicalDesign - the system mechanical design
  • Method Details

    • calculateAllCosts

      public void calculateAllCosts()
      Calculate cost estimates for all equipment in the process.

      This method iterates through all equipment, initializes mechanical designs if needed, calculates cost estimates, and aggregates the totals.

    • resetTotals

      private void resetTotals()
      Reset all cost totals to zero.
    • classifyEquipment

      private String classifyEquipment(ProcessEquipmentInterface equipment)
      Classify equipment into a type category.
      Parameters:
      equipment - the equipment to classify
      Returns:
      the equipment type name
    • accumulateCostByType

      private void accumulateCostByType(String type, double cost)
      Accumulate cost by equipment type.
      Parameters:
      type - equipment type
      cost - cost to add
    • calculateDisciplineCosts

      private void calculateDisciplineCosts()
      Calculate discipline cost breakdown (rough estimates based on typical percentages).
    • getTotalPurchasedEquipmentCost

      public double getTotalPurchasedEquipmentCost()
      Get total purchased equipment cost.
      Returns:
      total PEC in USD
    • getTotalBareModuleCost

      public double getTotalBareModuleCost()
      Get total bare module cost.
      Returns:
      total BMC in USD
    • getTotalModuleCost

      public double getTotalModuleCost()
      Get total module cost.
      Returns:
      total TMC in USD
    • getTotalGrassRootsCost

      public double getTotalGrassRootsCost()
      Get total grass roots cost.
      Returns:
      total grass roots cost in USD
    • getTotalInstallationManHours

      public double getTotalInstallationManHours()
      Get total installation man-hours.
      Returns:
      total man-hours
    • getCostByEquipmentType

      public Map<String,Double> getCostByEquipmentType()
      Get cost breakdown by equipment type.
      Returns:
      map of equipment type to cost
    • getCostByDiscipline

      public Map<String,Double> getCostByDiscipline()
      Get cost breakdown by discipline.
      Returns:
      map of discipline to cost
    • getEquipmentCosts

      public List<ProcessCostEstimate.EquipmentCostSummary> getEquipmentCosts()
      Get list of individual equipment costs.
      Returns:
      list of equipment cost summaries
    • setProcessSystem

      public void setProcessSystem(ProcessSystem processSystem)
      Set the process system.
      Parameters:
      processSystem - the process system
    • setLocationFactor

      public void setLocationFactor(double locationFactor)
      Set the location factor.
      Parameters:
      locationFactor - location factor (1.0 = US Gulf Coast)
    • getLocationFactor

      public double getLocationFactor()
      Get the location factor.
      Returns:
      location factor
    • setComplexityFactor

      public void setComplexityFactor(double complexityFactor)
      Set the complexity factor.
      Parameters:
      complexityFactor - complexity factor (1.0 = standard)
    • getComplexityFactor

      public double getComplexityFactor()
      Get the complexity factor.
      Returns:
      complexity factor
    • setCepci

      public void setCepci(double cepci)
      Set the CEPCI for cost escalation.
      Parameters:
      cepci - the Chemical Engineering Plant Cost Index
    • setMaterial

      public void setMaterial(String material)
      Set material of construction for all equipment.
      Parameters:
      material - material name (e.g., "Carbon Steel", "SS316")
    • generateSummaryReport

      public String generateSummaryReport()
      Generate a summary report as text.
      Returns:
      formatted summary report
    • generateEquipmentListReport

      public String generateEquipmentListReport()
      Generate detailed equipment list report.
      Returns:
      formatted equipment list
    • truncate

      private String truncate(String str, int maxLen)
      Truncate string to max length.
      Parameters:
      str - the string to truncate
      maxLen - maximum length
      Returns:
      truncated string
    • toJson

      public String toJson()
      Export cost estimate to JSON format.
      Returns:
      JSON string
    • toCompactJson

      public String toCompactJson()
      Export cost estimate to compact JSON format.
      Returns:
      compact JSON string
    • calculateOperatingCost

      public double calculateOperatingCost(int operatingHoursPerYear, double electricityCostPerKWh, double steamCostPerTonne, double coolingWaterCostPerM3, double laborCostPerHour)
      Calculate annual operating cost for the process.

      Operating costs include:

      • Utilities (electricity, steam, cooling water, fuel)
      • Maintenance (typically 3-5% of fixed capital)
      • Operating labor
      • Supervision and overhead
      • Supplies and materials
      Parameters:
      operatingHoursPerYear - annual operating hours (typically 8000-8760)
      electricityCostPerKWh - electricity cost in $/kWh
      steamCostPerTonne - steam cost in $/tonne
      coolingWaterCostPerM3 - cooling water cost in $/m3
      laborCostPerHour - labor cost in $/hr
      Returns:
      total annual operating cost in USD
    • calculateOperatingCost

      public double calculateOperatingCost(int operatingHoursPerYear)
      Calculate operating cost with default utility prices.

      Default prices (US Gulf Coast 2025):

      • Electricity: $0.08/kWh
      • Steam (150 psig): $15/tonne
      • Cooling water: $0.05/m3
      • Labor: $50/hr
      Parameters:
      operatingHoursPerYear - annual operating hours
      Returns:
      total annual operating cost in USD
    • getTotalAnnualOperatingCost

      public double getTotalAnnualOperatingCost()
      Get annual operating cost.
      Returns:
      annual operating cost in USD
    • getOperatingCostBreakdown

      public Map<String,Double> getOperatingCostBreakdown()
      Get operating cost breakdown by category.
      Returns:
      map of category to annual cost
    • calculatePaybackPeriod

      public double calculatePaybackPeriod(double annualRevenue)
      Calculate simple payback period.
      Parameters:
      annualRevenue - annual revenue in USD
      Returns:
      payback period in years
    • calculateROI

      public double calculateROI(double annualRevenue)
      Calculate return on investment (ROI).
      Parameters:
      annualRevenue - annual revenue in USD
      Returns:
      ROI as percentage
    • calculateNPV

      public double calculateNPV(double annualRevenue, double discountRate, int projectLifeYears)
      Calculate net present value (NPV).
      Parameters:
      annualRevenue - annual revenue in USD
      discountRate - annual discount rate (e.g., 0.10 for 10%)
      projectLifeYears - project life in years
      Returns:
      NPV in USD
    • setLocationByRegion

      public void setLocationByRegion(String region)
      Set location by region name (convenience method).
      Parameters:
      region - region name
    • setCurrency

      public void setCurrency(String currencyCode)
      Set currency for cost reporting.
      Parameters:
      currencyCode - currency code (USD, EUR, NOK, GBP, etc.)
    • getCostsInCurrency

      public Map<String,Double> getCostsInCurrency()
      Get costs in current currency.
      Returns:
      map of cost items in current currency
    • getCurrencyCode

      public String getCurrencyCode()
      Get currency code.
      Returns:
      currency code