Class CompressorDesignFeasibilityReport
java.lang.Object
neqsim.process.mechanicaldesign.compressor.CompressorDesignFeasibilityReport
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classA single feasibility issue or observation.static enumSeverity levels for feasibility issues.static classData class for a compressor supplier/manufacturer match. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleAnnual operating hours for OPEX calculation.private final CompressorThe compressor being assessed.private StringCompressor type.private CompressorCostEstimateCost estimation.private StringCurve template name.private StringDriver type for cost estimation.private doubleElectricity rate in USD/kWh.private booleanOverall feasibility verdict.private doubleFuel rate in USD/GJ (for gas turbine/engine drivers).private doubleprivate booleanWhether to generate compressor curves as part of the report.private CompressorChartInterfaceGenerated compressor chart (if requested).private doubleprivate doubleprivate final List<CompressorDesignFeasibilityReport.FeasibilityIssue> List of feasibility issues (warnings and blockers).private doubleprivate final List<CompressorDesignFeasibilityReport.SupplierMatch> List of matching suppliers.private CompressorMechanicalDesignMechanical design calculations.private intNumber of speed curves to generate.private doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate booleanWhether the report has been generated.private doubleprivate double -
Constructor Summary
ConstructorsConstructorDescriptionCompressorDesignFeasibilityReport(Compressor compressor) Constructor for CompressorDesignFeasibilityReport. -
Method Summary
Modifier and TypeMethodDescriptionvoidApply the generated compressor chart to the compressor.private voidCapture the current operating point from the compressor.private voidCheck cost estimate is in a reasonable range.private voidCheck discharge temperature limit.private voidCheck polytropic efficiency is realistic.private voidCheck volume flow is in a buildable range.private voidCheck power is in a buildable range.private voidCheck pressure ratio per stage.private voidCheck rotor dynamics (critical speed separation).private voidCheck impeller tip speed.private voidGenerate realistic compressor performance curves.voidGenerate the complete feasibility report.Get the cost estimate.Get the generated compressor chart.Get the list of feasibility issues found.Get the list of matching suppliers.Get the mechanical design calculations.Get overall feasibility verdict as a string.booleanReturns whether the compressor design is feasible (no blockers).private booleanCheck whether a supplier can build a compressor for the current requirements.Load supplier data from the CompressorSuppliers.csv resource file.private voidMatch compressor suppliers from the database.parseCsvLine(String line) Parse a quoted CSV line respecting double quotes.private doubleparseDouble(String value, double defaultValue) Safely parse a double value.private intSafely parse an int value.parseSupplierLine(String line) Parse a single CSV line into a SupplierMatch.private doubleround(double value, int decimals) Round a double value to the specified number of decimal places.private voidRun cost estimation.private voidRun all feasibility checks.private voidRun mechanical design calculations.setAnnualOperatingHours(double hours) Set annual operating hours for OPEX calculation.setCompressorType(String compressorType) Set the compressor type.setCurveTemplate(String template) Set curve template for chart generation.setDriverType(String driverType) Set the driver type for cost estimation.setElectricityRate(double rate) Set electricity rate for operating cost.setFuelRate(double rate) Set fuel rate for gas turbine/engine drivers.setGenerateCurves(boolean generate) Set whether to generate compressor performance curves.setNumberOfSpeedCurves(int count) Set number of speed curves to generate.toJson()Get the complete feasibility report as JSON.
-
Field Details
-
compressor
The compressor being assessed. -
mechanicalDesign
Mechanical design calculations. -
costEstimate
Cost estimation. -
feasible
private boolean feasibleOverall feasibility verdict. -
reportGenerated
private boolean reportGeneratedWhether the report has been generated. -
issues
List of feasibility issues (warnings and blockers). -
matchingSuppliers
List of matching suppliers. -
generatedChart
Generated compressor chart (if requested). -
driverType
Driver type for cost estimation. -
compressorType
Compressor type. -
annualOperatingHours
private double annualOperatingHoursAnnual operating hours for OPEX calculation. -
electricityRate
private double electricityRateElectricity rate in USD/kWh. -
fuelRate
private double fuelRateFuel rate in USD/GJ (for gas turbine/engine drivers). -
generateCurves
private boolean generateCurvesWhether to generate compressor curves as part of the report. -
curveTemplate
Curve template name. -
numberOfSpeedCurves
private int numberOfSpeedCurvesNumber 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
Constructor for CompressorDesignFeasibilityReport.- Parameters:
compressor- the compressor to assess (must have been run)
-
-
Method Details
-
setDriverType
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
Set the compressor type.- Parameters:
compressorType- type ("centrifugal", "reciprocating", "screw", "axial")- Returns:
- this report for method chaining
-
setAnnualOperatingHours
Set annual operating hours for OPEX calculation.- Parameters:
hours- operating hours per year (typically 8000-8760)- Returns:
- this report for method chaining
-
setElectricityRate
Set electricity rate for operating cost.- Parameters:
rate- electricity rate in USD/kWh- Returns:
- this report for method chaining
-
setFuelRate
Set fuel rate for gas turbine/engine drivers.- Parameters:
rate- fuel rate in USD/GJ- Returns:
- this report for method chaining
-
setGenerateCurves
Set whether to generate compressor performance curves.- Parameters:
generate- true to include curve generation- Returns:
- this report for method chaining
-
setCurveTemplate
Set curve template for chart generation.- Parameters:
template- template name (e.g. "CENTRIFUGAL_STANDARD", "PIPELINE", "EXPORT")- Returns:
- this report for method chaining
-
setNumberOfSpeedCurves
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
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
Load supplier data from the CompressorSuppliers.csv resource file.- Returns:
- list of all suppliers
-
parseSupplierLine
Parse a single CSV line into a SupplierMatch.- Parameters:
line- CSV line- Returns:
- supplier data or null
-
parseCsvLine
-
parseDouble
Safely parse a double value.- Parameters:
value- string valuedefaultValue- default if parsing fails- Returns:
- parsed value
-
parseInt
Safely parse an int value.- Parameters:
value- string valuedefaultValue- 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
Get the list of matching suppliers.- Returns:
- list of supplier matches
-
getMechanicalDesign
Get the mechanical design calculations.- Returns:
- mechanical design or null if report not yet generated
-
getCostEstimate
Get the cost estimate.- Returns:
- cost estimate or null if report not yet generated
-
getGeneratedChart
Get the generated compressor chart.- Returns:
- compressor chart or null if not generated
-
getVerdict
Get overall feasibility verdict as a string.- Returns:
- "FEASIBLE", "FEASIBLE_WITH_WARNINGS", or "NOT_FEASIBLE"
-
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 rounddecimals- 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).
-