Class HeatExchangerDesignFeasibilityReport

java.lang.Object
neqsim.process.mechanicaldesign.heatexchanger.HeatExchangerDesignFeasibilityReport

public class HeatExchangerDesignFeasibilityReport extends Object
Design feasibility report for heat exchangers.

Generates a comprehensive feasibility assessment including:

  • Mechanical design calculations (ASME, TEMA, ALPEMA)
  • Cost estimation (CAPEX, OPEX, lifecycle)
  • Supplier matching from the HeatExchangerSuppliers database
  • Feasibility checks with BLOCKER/WARNING/INFO severity
  • Overall verdict: FEASIBLE / FEASIBLE_WITH_WARNINGS / NOT_FEASIBLE

Supports both standard heat exchangers (shell-and-tube, plate, air-cooler, double-pipe) and LNG cryogenic BAHX (plate-fin). When used with LNGHeatExchanger, additional BAHX-specific checks are performed: mercury risk, freeze-out risk, thermal stress, flow maldistribution, and MITA margin.

Version:
1.0
Author:
NeqSim
  • Field Details

    • heatExchanger

      private final Object heatExchanger
      The heat exchanger equipment.
    • isBAHX

      private final boolean isBAHX
      Whether the equipment is an LNGHeatExchanger.
    • exchangerType

      private String exchangerType
      Exchanger type for supplier matching and cost.
    • designStandard

      private String designStandard
      Design standard code.
    • annualOperatingHours

      private int annualOperatingHours
      Annual operating hours for OPEX.
    • mechanicalDesign

      private MechanicalDesign mechanicalDesign
    • purchasedEquipmentCostUSD

      private double purchasedEquipmentCostUSD
    • installedCostUSD

      private double installedCostUSD
    • annualMaintenanceCostUSD

      private double annualMaintenanceCostUSD
    • costBreakdown

      private Map<String,Object> costBreakdown
    • feasible

      private boolean feasible
    • reportGenerated

      private boolean reportGenerated
    • issues

    • matchingSuppliers

    • dutyKW

      private double dutyKW
    • hotInletTempC

      private double hotInletTempC
    • hotOutletTempC

      private double hotOutletTempC
    • coldInletTempC

      private double coldInletTempC
    • coldOutletTempC

      private double coldOutletTempC
    • maxPressureBara

      private double maxPressureBara
    • minTempC

      private double minTempC
    • heatTransferAreaM2

      private double heatTransferAreaM2
  • Constructor Details

    • HeatExchangerDesignFeasibilityReport

      public HeatExchangerDesignFeasibilityReport(HeatExchanger heatExchanger)
      Construct a feasibility report for a standard HeatExchanger.
      Parameters:
      heatExchanger - the heat exchanger to assess
    • HeatExchangerDesignFeasibilityReport

      public HeatExchangerDesignFeasibilityReport(LNGHeatExchanger lngHeatExchanger)
      Construct a feasibility report for an LNGHeatExchanger (BAHX).
      Parameters:
      lngHeatExchanger - the LNG BAHX to assess
  • Method Details

    • setExchangerType

      public HeatExchangerDesignFeasibilityReport setExchangerType(String type)
      Set the exchanger type for supplier matching.
      Parameters:
      type - exchanger type ("shell-tube", "plate", "plate-fin", "air-cooler", "double-pipe")
      Returns:
      this report for method chaining
    • setDesignStandard

      public HeatExchangerDesignFeasibilityReport setDesignStandard(String standard)
      Set the design standard code.
      Parameters:
      standard - design standard (e.g. "TEMA-R", "ASME-VIII-Div1", "ALPEMA")
      Returns:
      this report for method chaining
    • setAnnualOperatingHours

      public HeatExchangerDesignFeasibilityReport setAnnualOperatingHours(int hours)
      Set annual operating hours for OPEX estimation.
      Parameters:
      hours - annual operating hours
      Returns:
      this report for method chaining
    • generateReport

      public void generateReport()
      Generate the complete feasibility report.

      Runs all assessment steps in sequence: capture operating point, run mechanical design, run cost estimation, match suppliers, check feasibility, determine verdict.

    • captureOperatingPoint

      private void captureOperatingPoint()
      Capture the current operating point from the heat exchanger.
    • runMechanicalDesign

      private void runMechanicalDesign()
      Run mechanical design calculations.
    • runCostEstimation

      private void runCostEstimation()
      Run cost estimation.
    • matchSuppliers

      private void matchSuppliers()
      Match suppliers from the HeatExchangerSuppliers.csv database.
    • isSupplierMatch

      private boolean isSupplierMatch(HeatExchangerDesignFeasibilityReport.SupplierMatch supplier)
      Check if a supplier matches the current operating requirements.
      Parameters:
      supplier - the supplier data
      Returns:
      true if the supplier can potentially provide this exchanger
    • typeMatches

      private boolean typeMatches(String supplierType, String requestedType)
      Check if the supplier type matches the requested type.
      Parameters:
      supplierType - supplier's exchanger type
      requestedType - requested exchanger type
      Returns:
      true if types are compatible
    • runFeasibilityChecks

      private void runFeasibilityChecks()
      Run all feasibility checks.
    • checkTemperatureRange

      private void checkTemperatureRange()
      Check temperature range feasibility.
    • checkPressureRange

      private void checkPressureRange()
      Check pressure range feasibility.
    • checkAreaRange

      private void checkAreaRange()
      Check heat transfer area range.
    • checkCostReasonableness

      private void checkCostReasonableness()
      Check cost reasonableness.
    • checkSupplierAvailability

      private void checkSupplierAvailability()
      Check if any suppliers were matched.
    • checkBAHXSpecific

      private void checkBAHXSpecific()
      Run BAHX-specific feasibility checks.
    • loadSupplierDatabase

      Load supplier data from HeatExchangerSuppliers.csv.
      Returns:
      list of all suppliers
    • parseSupplierLine

      Parse a CSV line into a SupplierMatch.
      Parameters:
      line - CSV line
      Returns:
      supplier data or null
    • parseCsvLine

      private List<String> parseCsvLine(String line)
      Parse a quoted CSV line.
      Parameters:
      line - the CSV line
      Returns:
      list of field values
    • parseDouble

      private double parseDouble(String value, double defaultValue)
      Safely parse a double value.
      Parameters:
      value - string value
      defaultValue - default if parsing fails
      Returns:
      parsed value
    • getVerdict

      public String getVerdict()
      Get the overall feasibility verdict.
      Returns:
      "FEASIBLE", "FEASIBLE_WITH_WARNINGS", or "NOT_FEASIBLE"
    • isFeasible

      public boolean isFeasible()
      Check if the design is feasible (no blockers).
      Returns:
      true if feasible
    • getIssues

      Get the list of feasibility issues.
      Returns:
      list of issues
    • getMatchingSuppliers

      Get the list of matching suppliers.
      Returns:
      list of supplier matches
    • getNumberOfMatchingSuppliers

      public int getNumberOfMatchingSuppliers()
      Get the number of matching suppliers.
      Returns:
      number of matching suppliers
    • getMechanicalDesign

      public MechanicalDesign getMechanicalDesign()
      Get the mechanical design.
      Returns:
      mechanical design object
    • getPurchasedEquipmentCostUSD

      public double getPurchasedEquipmentCostUSD()
      Get the purchased equipment cost (ex-works) in USD.
      Returns:
      equipment cost
    • getInstalledCostUSD

      public double getInstalledCostUSD()
      Get the total installed cost in USD.
      Returns:
      installed cost
    • toJson

      public String toJson()
      Get the complete feasibility report as JSON.
      Returns:
      JSON string with all report data
    • round

      private double round(double value, int decimals)
      Round a double value to the specified number of decimal places.
      Parameters:
      value - the value to round
      decimals - number of decimal places
      Returns:
      rounded value