Class CompressorDesignFeasibilityReport

java.lang.Object
neqsim.process.mechanicaldesign.compressor.CompressorDesignFeasibilityReport

public class CompressorDesignFeasibilityReport extends Object
Comprehensive feasibility report for centrifugal gas compressor design.

This class combines mechanical design (API 617), cost estimation, supplier matching, and operating envelope validation into a single report that answers the question: "Is this compressor realistic to build and operate?"

The report covers:

  • Mechanical feasibility: staging, impeller sizing, tip speed, shaft dynamics
  • Thermodynamic feasibility: discharge temperature, pressure ratio per stage
  • Cost estimation: purchased equipment, driver, installation, annual OPEX
  • Supplier matching: which OEMs can build this machine
  • Compressor curve generation: realistic performance maps
  • Overall feasibility verdict with warnings and recommendations

Usage:

Compressor comp = new Compressor("Export Compressor", feed);
comp.setOutletPressure(120.0);
comp.setPolytropicEfficiency(0.80);
comp.setSpeed(9000);
comp.run();

CompressorDesignFeasibilityReport report = new CompressorDesignFeasibilityReport(comp);
report.generateReport();

boolean feasible = report.isFeasible();
String json = report.toJson();
List<SupplierMatch> suppliers = report.getMatchingSuppliers();
Version:
1.0
Author:
NeqSim Development Team
  • Field Details

    • compressor

      private final Compressor compressor
      The compressor being assessed.
    • mechanicalDesign

      private CompressorMechanicalDesign mechanicalDesign
      Mechanical design calculations.
    • costEstimate

      private CompressorCostEstimate costEstimate
      Cost estimation.
    • feasible

      private boolean feasible
      Overall feasibility verdict.
    • reportGenerated

      private boolean reportGenerated
      Whether the report has been generated.
    • issues

      List of feasibility issues (warnings and blockers).
    • matchingSuppliers

      private final List<CompressorDesignFeasibilityReport.SupplierMatch> matchingSuppliers
      List of matching suppliers.
    • generatedChart

      private CompressorChartInterface generatedChart
      Generated compressor chart (if requested).
    • driverType

      private String driverType
      Driver type for cost estimation.
    • compressorType

      private String compressorType
      Compressor type.
    • annualOperatingHours

      private double annualOperatingHours
      Annual operating hours for OPEX calculation.
    • electricityRate

      private double electricityRate
      Electricity rate in USD/kWh.
    • fuelRate

      private double fuelRate
      Fuel rate in USD/GJ (for gas turbine/engine drivers).
    • generateCurves

      private boolean generateCurves
      Whether to generate compressor curves as part of the report.
    • curveTemplate

      private String curveTemplate
      Curve template name.
    • numberOfSpeedCurves

      private int numberOfSpeedCurves
      Number of speed curves to generate.
    • inletPressureBara

      private double inletPressureBara
    • outletPressureBara

      private double outletPressureBara
    • inletTemperatureC

      private double inletTemperatureC
    • outletTemperatureC

      private double outletTemperatureC
    • massFlowKghr

      private double massFlowKghr
    • volumeFlowM3hr

      private double volumeFlowM3hr
    • shaftPowerKW

      private double shaftPowerKW
    • polytropicHead

      private double polytropicHead
    • polytropicEfficiency

      private double polytropicEfficiency
    • pressureRatio

      private double pressureRatio
    • gasMolecularWeight

      private double gasMolecularWeight
  • Constructor Details

    • CompressorDesignFeasibilityReport

      public CompressorDesignFeasibilityReport(Compressor compressor)
      Constructor for CompressorDesignFeasibilityReport.
      Parameters:
      compressor - the compressor to assess (must have been run)
  • Method Details

    • setDriverType

      public CompressorDesignFeasibilityReport setDriverType(String driverType)
      Set the driver type for cost estimation.
      Parameters:
      driverType - driver type ("electric-motor", "gas-turbine", "steam-turbine", "gas-engine")
      Returns:
      this report for method chaining
    • setCompressorType

      public CompressorDesignFeasibilityReport setCompressorType(String compressorType)
      Set the compressor type.
      Parameters:
      compressorType - type ("centrifugal", "reciprocating", "screw", "axial")
      Returns:
      this report for method chaining
    • setAnnualOperatingHours

      public CompressorDesignFeasibilityReport setAnnualOperatingHours(double hours)
      Set annual operating hours for OPEX calculation.
      Parameters:
      hours - operating hours per year (typically 8000-8760)
      Returns:
      this report for method chaining
    • setElectricityRate

      public CompressorDesignFeasibilityReport setElectricityRate(double rate)
      Set electricity rate for operating cost.
      Parameters:
      rate - electricity rate in USD/kWh
      Returns:
      this report for method chaining
    • setFuelRate

      public CompressorDesignFeasibilityReport setFuelRate(double rate)
      Set fuel rate for gas turbine/engine drivers.
      Parameters:
      rate - fuel rate in USD/GJ
      Returns:
      this report for method chaining
    • setGenerateCurves

      public CompressorDesignFeasibilityReport setGenerateCurves(boolean generate)
      Set whether to generate compressor performance curves.
      Parameters:
      generate - true to include curve generation
      Returns:
      this report for method chaining
    • setCurveTemplate

      public CompressorDesignFeasibilityReport setCurveTemplate(String template)
      Set curve template for chart generation.
      Parameters:
      template - template name (e.g. "CENTRIFUGAL_STANDARD", "PIPELINE", "EXPORT")
      Returns:
      this report for method chaining
    • setNumberOfSpeedCurves

      public CompressorDesignFeasibilityReport setNumberOfSpeedCurves(int count)
      Set number of speed curves to generate.
      Parameters:
      count - number of speed curves (typically 5-9)
      Returns:
      this report for method chaining
    • generateReport

      public void generateReport()
      Generate the complete feasibility report.

      This method runs mechanical design, cost estimation, supplier matching, and feasibility validation. The compressor must have been run (i.e. outlet conditions calculated) before calling this method.

    • captureOperatingPoint

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

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

      private void runCostEstimation()
      Run cost estimation.
    • matchSuppliers

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

      private boolean isSupplierMatch(CompressorDesignFeasibilityReport.SupplierMatch supplier)
      Check whether a supplier can build a compressor for the current requirements.
      Parameters:
      supplier - the supplier data
      Returns:
      true if supplier can match the requirements
    • generateCompressorCurves

      private void generateCompressorCurves()
      Generate realistic compressor performance curves.
    • runFeasibilityChecks

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

      private void checkDischargeTemperature()
      Check discharge temperature limit.
    • checkPressureRatioPerStage

      private void checkPressureRatioPerStage()
      Check pressure ratio per stage.
    • checkTipSpeed

      private void checkTipSpeed()
      Check impeller tip speed.
    • checkPowerRange

      private void checkPowerRange()
      Check power is in a buildable range.
    • checkFlowRange

      private void checkFlowRange()
      Check volume flow is in a buildable range.
    • checkRotorDynamics

      private void checkRotorDynamics()
      Check rotor dynamics (critical speed separation).
    • checkEfficiency

      private void checkEfficiency()
      Check polytropic efficiency is realistic.
    • checkCostReasonableness

      private void checkCostReasonableness()
      Check cost estimate is in a reasonable range.
    • loadSupplierDatabase

      private List<CompressorDesignFeasibilityReport.SupplierMatch> loadSupplierDatabase()
      Load supplier data from the CompressorSuppliers.csv resource file.
      Returns:
      list of all suppliers
    • parseSupplierLine

      private CompressorDesignFeasibilityReport.SupplierMatch parseSupplierLine(String line)
      Parse a single 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 respecting double quotes.
      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
    • parseInt

      private int parseInt(String value, int defaultValue)
      Safely parse an int value.
      Parameters:
      value - string value
      defaultValue - default if parsing fails
      Returns:
      parsed value
    • isFeasible

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

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

      public List<CompressorDesignFeasibilityReport.SupplierMatch> getMatchingSuppliers()
      Get the list of matching suppliers.
      Returns:
      list of supplier matches
    • getMechanicalDesign

      public CompressorMechanicalDesign getMechanicalDesign()
      Get the mechanical design calculations.
      Returns:
      mechanical design or null if report not yet generated
    • getCostEstimate

      public CompressorCostEstimate getCostEstimate()
      Get the cost estimate.
      Returns:
      cost estimate or null if report not yet generated
    • getGeneratedChart

      public CompressorChartInterface getGeneratedChart()
      Get the generated compressor chart.
      Returns:
      compressor chart or null if not generated
    • getVerdict

      public String getVerdict()
      Get overall feasibility verdict as a string.
      Returns:
      "FEASIBLE", "FEASIBLE_WITH_WARNINGS", or "NOT_FEASIBLE"
    • 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
    • applyChartToCompressor

      public void applyChartToCompressor()
      Apply the generated compressor chart to the compressor.

      After calling this method, the compressor will use chart-based calculations instead of equation-based. This is useful for simulating realistic compressor behaviour over varying operating conditions (e.g. declining reservoir pressure over years).