Class CompressorChartKhader2015
- All Implemented Interfaces:
Serializable, Cloneable, CompressorChartInterface
- Author:
- esol
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classSimple POJO to hold corrected (dimensionless) compressor curve data for a given speed.static classSimple POJO to hold real (physical units) compressor curve data for a given speed. -
Field Summary
FieldsModifier and TypeFieldDescription(package private) SystemInterfaceprivate double(package private) static org.apache.logging.log4j.LoggerLogger object for class.(package private) List<CompressorChartKhader2015.RealCurve> (package private) SystemInterfaceprivate static final longSerialization version UID.(package private) StreamInterfaceFields inherited from class CompressorChartAlternativeMapLookup
chartConditions, fanLawCorrectionFunc, gearRatio, isStoneWall, isSurge, reducedHeadFitterFunc, reducedPolytropicEfficiencyFunc, referenceSpeed, refMW, refPressure, refTemperature, refZFields inherited from class CompressorChart
chartSpeeds, chartValues, fanLawCorrectionFitter, flow, flowPolytropicEfficiency, head, maxSpeedCurve, minSpeedCurve, polytropicEfficiency, redflow, redflowPolytropicEfficiency, redhead, redpolytropicEfficiency, reducedFlowFitter, reducedHeadFitter, reducedPolytropicEfficiencyFitter, speed, stoneWallCurve, surgeCurve -
Constructor Summary
ConstructorsConstructorDescriptionCompressorChartKhader2015(StreamInterface stream, double impellerdiam) Constructs a CompressorChartKhader2015 object with the specified stream and impeller diameter.CompressorChartKhader2015(SystemInterface fluid, double impellerdiam) Constructs a CompressorChartKhader2015 object with the specified fluid and impeller diameter.CompressorChartKhader2015(SystemInterface fluid, SystemInterface referenceFluid, double impellerdiam) Constructs a CompressorChartKhader2015 object with the specified fluid and impeller diameter. -
Method Summary
Modifier and TypeMethodDescriptionprivate SystemInterfacecreateDefaultFluid(double[] chartConditions) Creates and initializes a default fluid for compressor chart calculations.voidConverts a list of dimensionless (corrected) compressor curves to real (physical units) curves for a given fluid and speeds.voidgenerateStoneWallCurve.voidGenerates the surge curve by taking the head value at the lowest flow for each speed from the compressor chart values.getCorrectedCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, double[][] flowPolyEff, double[][] polyEff) Returns a list of corrected compressor curves (dimensionless) based on the provided chart conditions and map data.doubleReturns the outer diameter of the impeller.doublegetPolytropicEfficiency(double flow, double speed) Get method for polytropic efficiency from reference curves.doublegetPolytropicHead(double flow, double speed) Get method for polytropic head from reference curves.Getter for the fieldrealCurves.getReferenceFluid.doublegetStoneWallFlowAtSpeed(double speed) Get the stone wall flow (maximum flow) at a specific speed.doublegetStoneWallHeadAtSpeed(double speed) Get the stone wall head (polytropic head at maximum flow) at a specific speed.doublegetSurgeFlowAtSpeed(double speed) Get the surge flow (minimum flow) at a specific speed.doublegetSurgeHeadAtSpeed(double speed) Get the surge head (polytropic head at minimum flow) at a specific speed.voidPretty print all RealCurve objects for the current fluid.voidsetCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, double[][] flowPolyEff, double[][] polyEff) Sets the compressor curves based on the provided chart conditions, speed, flow, head, flowPolytrpicEfficiency and polytropic efficiency values.voidsetImpellerOuterDiameter(double impellerOuterDiameter) Sets the outer diameter of the impeller.voidsetReferenceFluid(SystemInterface ref_fluid) setReferenceFluid.Methods inherited from class CompressorChartAlternativeMapLookupExtrapolate
getClosestRefSpeedsMethods inherited from class CompressorChartAlternativeMapLookup
addCurve, addCurve, addSurgeCurve, bisect_left, bisect_left, checkStoneWall, checkSurge1, checkSurge2, getChartConditions, getChartValues, getCurveAtRefSpeed, getFlow, getFlows, getGearRatio, getHeads, getHeadUnit, getMaxSpeedCurve, getMinSpeedCurve, getPolytropicEfficiencies, getSpeed, getSpeeds, getSpeedValue, getStoneWallCurve, getSurgeCurve, isUseCompressorChart, main, plot, polytropicEfficiency, prettyPrintChartValues, setCurves, setGearRatio, setHeadUnit, setReferenceConditions, setStoneWallCurve, setSurgeCurve, setUseCompressorChart, setUseRealKappa, useRealKappaMethods inherited from class CompressorChart
equals, fitReducedCurve, getDischargeTemperatures, getGamma, getInletPressure, getInletTemperature, getPolytropicExponent, getPowers, getPressureRatios, getReferenceDensity, hashCode, setGamma, setInletPressure, setInletTemperature, setMaxSpeedCurve, setMinSpeedCurve, setPolytropicExponent, setReferenceDensityMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface CompressorChartInterface
equals, getDischargeTemperatures, getGamma, getInletPressure, getInletStream, getInletTemperature, getOperatingMW, getPolytropicExponent, getPowers, getPressureRatios, getRatioToMaxSpeed, getRatioToMinSpeed, getReferenceDensity, hashCode, isHigherThanMaxSpeed, isLowerThanMinSpeed, isSpeedWithinRange, setGamma, setInletPressure, setInletStream, setInletTemperature, setOperatingMW, setPolytropicExponent, setReferenceDensity
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
logger
static org.apache.logging.log4j.Logger loggerLogger object for class. -
fluid
SystemInterface fluid -
ref_fluid
SystemInterface ref_fluid -
stream
StreamInterface stream -
impellerOuterDiameter
private double impellerOuterDiameter -
realCurves
List<CompressorChartKhader2015.RealCurve> realCurves
-
-
Constructor Details
-
CompressorChartKhader2015
Constructs a CompressorChartKhader2015 object with the specified fluid and impeller diameter.- Parameters:
fluid- the working fluid for the compressorimpellerdiam- the outer diameter of the impeller
-
CompressorChartKhader2015
public CompressorChartKhader2015(SystemInterface fluid, SystemInterface referenceFluid, double impellerdiam) Constructs a CompressorChartKhader2015 object with the specified fluid and impeller diameter.- Parameters:
fluid- the working fluid for the compressorreferenceFluid- the referenceFluid for the compressorcurveimpellerdiam- the outer diameter of the impeller
-
CompressorChartKhader2015
Constructs a CompressorChartKhader2015 object with the specified stream and impeller diameter.- Parameters:
stream- the stream for the compressorimpellerdiam- the outer diameter of the impeller
-
-
Method Details
-
setCurves
public void setCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, double[][] flowPolyEff, double[][] polyEff) Sets the compressor curves based on the provided chart conditions, speed, flow, head, flowPolytrpicEfficiency and polytropic efficiency values. Mathematical background (see Kader 2015):
The method normalizes compressor map data using the following relations:- Corrected Head Factor: Hcorr = H / cs2
- Corrected Flow Factor: Qcorr = Q / (cs D2)
- Corrected Flow Factor for Efficiency: Qcorr,eff = Qeff / (cs D2)
- Polytropic Efficiency: ηp = ηp
- Machine Mach Number: Ma = N D / cs
- H = head
- Q = flow
- Qeff = flow for efficiency
- N = speed
- D = impeller outer diameter
- cs = sound speed of the fluid
- Specified by:
setCurvesin interfaceCompressorChartInterface- Overrides:
setCurvesin classCompressorChartAlternativeMapLookup- Parameters:
chartConditions- array with temperature, pressure, (optionally density, molecular weight)speed- array of speedsflow- 2D array of flowshead- 2D array of headsflowPolyEff- 2D array of flows for efficiencypolyEff- 2D array of polytropic efficiencies
-
getCorrectedCurves
public List<CompressorChartKhader2015.CorrectedCurve> getCorrectedCurves(double[] chartConditions, double[] speed, double[][] flow, double[][] head, double[][] flowPolyEff, double[][] polyEff) Returns a list of corrected compressor curves (dimensionless) based on the provided chart conditions and map data. Each CorrectedCurve contains the machine Mach number, corrected flow factor, corrected head factor, corrected flow factor for efficiency, and polytropic efficiency arrays for each speed.- Parameters:
chartConditions- array with temperature, pressure, (optionally density, molecular weight)speed- array of speedsflow- 2D array of flowshead- 2D array of headsflowPolyEff- 2D array of flows for efficiencypolyEff- 2D array of polytropic efficiencies- Returns:
- List of CorrectedCurve objects containing dimensionless map data
-
generateRealCurvesForFluid
public void generateRealCurvesForFluid()Converts a list of dimensionless (corrected) compressor curves to real (physical units) curves for a given fluid and speeds. -
prettyPrintRealCurvesForFluid
public void prettyPrintRealCurvesForFluid()Pretty print all RealCurve objects for the current fluid. -
createDefaultFluid
Creates and initializes a default fluid for compressor chart calculations.- Parameters:
chartConditions- array with temperature, pressure, (optionally density, molecular weight)- Returns:
- the sound speed of the fluid
-
getPolytropicHead
public double getPolytropicHead(double flow, double speed) Get method for polytropic head from reference curves.This method interpolates the polytropic head values from reference speeds closest to the given speed and averages them to estimate the polytropic head at the specified flow and speed.
Calculates the polytropic head for a given flow and speed by interpolating or extrapolating between reference compressor curves.
The method first converts the input flow and speed to dimensionless numbers using the sound speed and impeller diameter:- Corrected Flow Factor: Qcorr = Q / (cs D2)
- Machine Mach Number: Ma = N D / cs
- Specified by:
getPolytropicHeadin interfaceCompressorChartInterface- Overrides:
getPolytropicHeadin classCompressorChartAlternativeMapLookupExtrapolate- Parameters:
flow- [m3/h], speed in [rpm].speed- a double- Returns:
- polytropic head in unit [getHeadUnit]
-
getPolytropicEfficiency
public double getPolytropicEfficiency(double flow, double speed) Get method for polytropic efficiency from reference curves.Calculates the polytropic efficiency of the compressor for a given flow and speed. The method interpolates the efficiency values from reference speed curves and averages them to estimate the efficiency at the specified conditions.
Calculates the polytropic efficiency for a given flow and speed by interpolating or extrapolating between reference compressor curves.
The method first converts the input flow and speed to dimensionless numbers using the sound speed and impeller diameter:- Corrected Flow Factor: Qcorr = Q / (cs D2)
- Machine Mach Number: Ma = N D / cs
- Specified by:
getPolytropicEfficiencyin interfaceCompressorChartInterface- Overrides:
getPolytropicEfficiencyin classCompressorChartAlternativeMapLookupExtrapolate- Parameters:
flow- [m3/h], speed in [rpm].speed- a double- Returns:
- polytropic efficiency [%].
-
getImpellerOuterDiameter
public double getImpellerOuterDiameter()Returns the outer diameter of the impeller.- Returns:
- the impeller outer diameter
-
setImpellerOuterDiameter
public void setImpellerOuterDiameter(double impellerOuterDiameter) Sets the outer diameter of the impeller.- Parameters:
impellerOuterDiameter- the new outer diameter of the impeller unit meters
-
getReferenceFluid
-
setReferenceFluid
setReferenceFluid.
- Parameters:
ref_fluid- aSystemInterfaceobject
-
generateSurgeCurve
public void generateSurgeCurve()Generates the surge curve by taking the head value at the lowest flow for each speed from the compressor chart values.Generates and prints the surge curve based on RealCurve data. The surge curve is typically the minimum stable flow for each speed.
- Specified by:
generateSurgeCurvein interfaceCompressorChartInterface- Overrides:
generateSurgeCurvein classCompressorChart
-
generateStoneWallCurve
public void generateStoneWallCurve()generateStoneWallCurve.
Generates the stone wall curve by taking the head value at the highest flow for each speed from the compressor chart values.
Generates and sets the stone wall curve based on RealCurve data. The stone wall curve is typically the maximum flow for each speed.
- Specified by:
generateStoneWallCurvein interfaceCompressorChartInterface- Overrides:
generateStoneWallCurvein classCompressorChart
-
getRealCurves
Getter for the field
realCurves.- Returns:
- a
Listobject
-
getSurgeFlowAtSpeed
public double getSurgeFlowAtSpeed(double speed) Get the surge flow (minimum flow) at a specific speed.
This method finds the compressor curve closest to the specified speed and returns the minimum flow on that curve. This is useful for single speed compressors where the surge curve is not active, as well as for multi-speed compressors to get the surge point at a specific speed.
Override to use RealCurve data which contains the corrected flow and head values for the actual fluid.
- Specified by:
getSurgeFlowAtSpeedin interfaceCompressorChartInterface- Overrides:
getSurgeFlowAtSpeedin classCompressorChart- Parameters:
speed- The compressor speed in RPM- Returns:
- The surge flow (minimum flow) at the specified speed in m3/hr, or Double.NaN if no curves exist
-
getSurgeHeadAtSpeed
public double getSurgeHeadAtSpeed(double speed) Get the surge head (polytropic head at minimum flow) at a specific speed.
This method finds the compressor curve closest to the specified speed and returns the polytropic head at the minimum flow point (surge point) on that curve.
Override to use RealCurve data which contains the corrected flow and head values for the actual fluid.
- Specified by:
getSurgeHeadAtSpeedin interfaceCompressorChartInterface- Overrides:
getSurgeHeadAtSpeedin classCompressorChart- Parameters:
speed- The compressor speed in RPM- Returns:
- The surge head at the specified speed in kJ/kg or meter (depending on headUnit), or Double.NaN if no curves exist
-
getStoneWallFlowAtSpeed
public double getStoneWallFlowAtSpeed(double speed) Get the stone wall flow (maximum flow) at a specific speed.
This method finds the compressor curve closest to the specified speed and returns the maximum flow on that curve (choke limit). This is useful for single speed compressors where the stone wall curve is not active.
Override to use RealCurve data which contains the corrected flow and head values for the actual fluid.
- Specified by:
getStoneWallFlowAtSpeedin interfaceCompressorChartInterface- Overrides:
getStoneWallFlowAtSpeedin classCompressorChart- Parameters:
speed- The compressor speed in RPM- Returns:
- The stone wall flow (maximum flow) at the specified speed in m3/hr, or Double.NaN if no curves exist
-
getStoneWallHeadAtSpeed
public double getStoneWallHeadAtSpeed(double speed) Get the stone wall head (polytropic head at maximum flow) at a specific speed.
This method finds the compressor curve closest to the specified speed and returns the polytropic head at the maximum flow point (choke limit) on that curve.
Override to use RealCurve data which contains the corrected flow and head values for the actual fluid.
- Specified by:
getStoneWallHeadAtSpeedin interfaceCompressorChartInterface- Overrides:
getStoneWallHeadAtSpeedin classCompressorChart- Parameters:
speed- The compressor speed in RPM- Returns:
- The stone wall head at the specified speed in kJ/kg or meter (depending on headUnit), or Double.NaN if no curves exist
-