Class CompressorCurveCorrections
- All Implemented Interfaces:
Serializable
This class implements industry-standard correction methods for more accurate compressor performance prediction:
- Reynolds Number Correction: Adjusts efficiency for viscous effects at off-design conditions
- Mach Number Limitation: Calculates stonewall (choke) flow based on sonic velocity
- Multistage Surge Correction: Adjusts surge line for multistage compressors at reduced speeds
References:
- API 617 - Axial and Centrifugal Compressors
- ASME PTC-10 - Performance Test Code for Compressors
- Ludwig's Applied Process Design for Chemical and Petrochemical Plants, Chapter 18
- Version:
- 1.0
- Author:
- Even Solbraa
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final doubleCritical Mach number threshold for stonewall onset.private static final doubleMaximum Mach number (choke condition).private static final doubleGas constant R = 8314 J/(kmol·K).private static final doubleReference Reynolds number for standard efficiency curves (typically 1e7).private static final doubleExponent for Reynolds correction (typically 0.1-0.2 for centrifugal compressors).private static final long -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivatePrivate constructor - utility class. -
Method Summary
Modifier and TypeMethodDescriptionstatic doublecalculateCorrectedEfficiency(double baseEfficiency, double actualReynolds, double flowRatio) Calculate combined efficiency correction.static doublecalculateEfficiencyAtFlow(double maxEfficiency, double flowRatio, double curveFactor) Apply efficiency correction for operating away from best efficiency point (BEP).static doublecalculateMachNumber(double gasVelocity, double sonicVelocity) Calculate Mach number at compressor inlet or impeller eye.static doublecalculateMultistageSurgeCorrection(double surgeFanLawFlow, double speedRatio, int numberOfStages) Calculate surge flow correction for multistage compressors at reduced speeds.static doublecalculateMultistageSurgeHeadCorrection(double surgeFanLawHead, double speedRatio, int numberOfStages) Calculate corrected surge head for multistage compressors at reduced speeds.static doublecalculateReynoldsEfficiencyCorrection(double actualReynolds) Calculate Reynolds number correction factor using default reference Reynolds number.static doublecalculateReynoldsEfficiencyCorrection(double actualReynolds, double referenceReynolds) Calculate Reynolds number correction factor for polytropic efficiency.static doublecalculateReynoldsNumber(double tipSpeed, double impellerDiameter, double kinematicViscosity) Calculate compressor Reynolds number.static doublecalculateSonicVelocity(double kappa, double temperature, double molarMass, double compressibilityFactor) Calculate sonic velocity (speed of sound) for an ideal gas.static doublecalculateStonewallFlow(double designFlow, double sonicVelocity, double designMachNumber) Calculate maximum flow (stonewall/choke) based on Mach number limitation.static doublecalculateTipSpeed(double rpm, double diameter) Calculate impeller tip speed from rotational speed and diameter.static doublecorrectStonewallFlowForGas(double referenceStonewallFlow, double referenceMolarMass, double actualMolarMass, double referenceKappa, double actualKappa) Calculate stonewall flow correction for gas molecular weight.static doubleGet the critical Mach number for stonewall calculations.static doubleGet the reference Reynolds number used for efficiency corrections.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
R_GAS
private static final double R_GASGas constant R = 8314 J/(kmol·K).- See Also:
-
REFERENCE_REYNOLDS
private static final double REFERENCE_REYNOLDSReference Reynolds number for standard efficiency curves (typically 1e7).- See Also:
-
REYNOLDS_EXPONENT
private static final double REYNOLDS_EXPONENTExponent for Reynolds correction (typically 0.1-0.2 for centrifugal compressors).- See Also:
-
CRITICAL_MACH
private static final double CRITICAL_MACHCritical Mach number threshold for stonewall onset.- See Also:
-
MAX_MACH
private static final double MAX_MACHMaximum Mach number (choke condition).- See Also:
-
-
Constructor Details
-
CompressorCurveCorrections
private CompressorCurveCorrections()Private constructor - utility class.
-
-
Method Details
-
calculateReynoldsEfficiencyCorrection
public static double calculateReynoldsEfficiencyCorrection(double actualReynolds, double referenceReynolds) Calculate Reynolds number correction factor for polytropic efficiency.The efficiency of centrifugal compressors varies with Reynolds number due to viscous losses in the boundary layers. This correction is based on the correlation:
η_corrected / η_reference = (Re_actual / Re_reference)^n
Where n is typically 0.1-0.2 for centrifugal compressors (API 617 suggests using surface roughness correlations for more accuracy).
- Parameters:
actualReynolds- Actual Reynolds number at operating conditionsreferenceReynolds- Reference Reynolds number for the performance map (default 1e7)- Returns:
- Efficiency correction factor (multiply by reference efficiency)
-
calculateReynoldsEfficiencyCorrection
public static double calculateReynoldsEfficiencyCorrection(double actualReynolds) Calculate Reynolds number correction factor using default reference Reynolds number.- Parameters:
actualReynolds- Actual Reynolds number at operating conditions- Returns:
- Efficiency correction factor
-
calculateReynoldsNumber
public static double calculateReynoldsNumber(double tipSpeed, double impellerDiameter, double kinematicViscosity) Calculate compressor Reynolds number.Reynolds number for compressors is typically defined as:
Re = (u * D) / ν
Where u is tip speed, D is impeller diameter, and ν is kinematic viscosity.
- Parameters:
tipSpeed- Impeller tip speed in m/simpellerDiameter- Impeller diameter in mkinematicViscosity- Kinematic viscosity in m²/s- Returns:
- Reynolds number (dimensionless)
-
calculateTipSpeed
public static double calculateTipSpeed(double rpm, double diameter) Calculate impeller tip speed from rotational speed and diameter.- Parameters:
rpm- Rotational speed in revolutions per minutediameter- Impeller diameter in m- Returns:
- Tip speed in m/s
-
calculateMachNumber
public static double calculateMachNumber(double gasVelocity, double sonicVelocity) Calculate Mach number at compressor inlet or impeller eye.The Mach number is the ratio of gas velocity to sonic velocity:
Ma = V / c
- Parameters:
gasVelocity- Gas velocity in m/ssonicVelocity- Speed of sound in the gas in m/s- Returns:
- Mach number (dimensionless)
-
calculateSonicVelocity
public static double calculateSonicVelocity(double kappa, double temperature, double molarMass, double compressibilityFactor) Calculate sonic velocity (speed of sound) for an ideal gas.The speed of sound in an ideal gas is:
c = sqrt(k * R * T / M)
Where k is the heat capacity ratio, R is the gas constant, T is temperature, and M is molar mass.
- Parameters:
kappa- Heat capacity ratio (Cp/Cv)temperature- Temperature in KmolarMass- Molar mass in kg/kmolcompressibilityFactor- Z-factor (use 1.0 for ideal gas)- Returns:
- Speed of sound in m/s
-
calculateStonewallFlow
public static double calculateStonewallFlow(double designFlow, double sonicVelocity, double designMachNumber) Calculate maximum flow (stonewall/choke) based on Mach number limitation.The stonewall flow is limited by the sonic velocity at the impeller inlet. When the flow velocity approaches the speed of sound (Ma ≈ 1), no further increase in flow is possible regardless of downstream pressure reduction.
The maximum flow can be estimated from:
Q_max = A * c * Ma_critical
Where A is the flow area, c is sonic velocity, and Ma_critical ≈ 0.9-1.0.
- Parameters:
designFlow- Design flow rate in m³/hrsonicVelocity- Speed of sound at inlet conditions in m/sdesignMachNumber- Mach number at design flow (typically 0.6-0.8)- Returns:
- Maximum (stonewall) flow in m³/hr
-
correctStonewallFlowForGas
public static double correctStonewallFlowForGas(double referenceStonewallFlow, double referenceMolarMass, double actualMolarMass, double referenceKappa, double actualKappa) Calculate stonewall flow correction for gas molecular weight.Heavier gases have lower sonic velocities, which means they choke at lower flow rates.
- Parameters:
referenceStonewallFlow- Stonewall flow at reference conditions in m³/hrreferenceMolarMass- Reference gas molar mass in kg/kmolactualMolarMass- Actual gas molar mass in kg/kmolreferenceKappa- Reference heat capacity ratioactualKappa- Actual heat capacity ratio- Returns:
- Corrected stonewall flow in m³/hr
-
calculateMultistageSurgeCorrection
public static double calculateMultistageSurgeCorrection(double surgeFanLawFlow, double speedRatio, int numberOfStages) Calculate surge flow correction for multistage compressors at reduced speeds.For multistage compressors, the simple fan law prediction for surge (Q_surge ∝ N) becomes inaccurate at reduced speeds. This is because:
- Volume reduction per stage is less at lower speeds
- Later stages handle more than their rated volume
- Surge can be initiated by different stages at different speeds
This correction shifts the surge line to higher flows at reduced speeds, which better matches observed behavior in multistage machines.
- Parameters:
surgeFanLawFlow- Surge flow predicted by simple fan law in m³/hrspeedRatio- Actual speed / Design speed (0 to 1)numberOfStages- Number of compression stages- Returns:
- Corrected surge flow in m³/hr
-
calculateMultistageSurgeHeadCorrection
public static double calculateMultistageSurgeHeadCorrection(double surgeFanLawHead, double speedRatio, int numberOfStages) Calculate corrected surge head for multistage compressors at reduced speeds.Similar to flow, the surge head may not follow simple fan law (H ∝ N²) exactly for multistage machines at reduced speeds.
- Parameters:
surgeFanLawHead- Surge head predicted by simple fan law in kJ/kgspeedRatio- Actual speed / Design speednumberOfStages- Number of compression stages- Returns:
- Corrected surge head in kJ/kg
-
calculateEfficiencyAtFlow
public static double calculateEfficiencyAtFlow(double maxEfficiency, double flowRatio, double curveFactor) Apply efficiency correction for operating away from best efficiency point (BEP).Compressor efficiency decreases as operating point moves away from BEP. This method calculates a parabolic efficiency profile:
η = η_max * [1 - k * (Q/Q_design - 1)²]
- Parameters:
maxEfficiency- Maximum (BEP) efficiency as fraction (0-1)flowRatio- Actual flow / Design flowcurveFactor- Shape factor k (typically 0.3-0.5 for centrifugal compressors)- Returns:
- Efficiency at the specified flow ratio
-
calculateCorrectedEfficiency
public static double calculateCorrectedEfficiency(double baseEfficiency, double actualReynolds, double flowRatio) Calculate combined efficiency correction.This method combines Reynolds number correction and flow-based efficiency variation.
- Parameters:
baseEfficiency- Base polytropic efficiency at design point (fraction 0-1)actualReynolds- Actual Reynolds numberflowRatio- Actual flow / Design flow- Returns:
- Corrected efficiency (fraction 0-1)
-
getReferenceReynolds
public static double getReferenceReynolds()Get the reference Reynolds number used for efficiency corrections.- Returns:
- Reference Reynolds number
-
getCriticalMach
public static double getCriticalMach()Get the critical Mach number for stonewall calculations.- Returns:
- Critical Mach number
-