Class CompressorMechanicalDesign

java.lang.Object
neqsim.process.mechanicaldesign.MechanicalDesign
neqsim.process.mechanicaldesign.compressor.CompressorMechanicalDesign
All Implemented Interfaces:
Serializable

public class CompressorMechanicalDesign extends MechanicalDesign
Mechanical design calculations for centrifugal compressors.

This class provides sizing and design calculations for centrifugal compressors based on API 617 and industry practice. Calculations include:

  • Number of stages based on pressure ratio and head per stage limits
  • Impeller diameter sizing based on flow coefficient
  • Driver power sizing with mechanical losses margin
  • Casing design pressure and temperature
  • Shaft diameter estimation
  • Module footprint and weight estimation

References:

  • API 617 - Axial and Centrifugal Compressors and Expander-compressors
  • API 672 - Packaged, Integrally Geared Centrifugal Air Compressors
Version:
2.0
Author:
NeqSim Development Team
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • MAX_HEAD_PER_STAGE

      private static final double MAX_HEAD_PER_STAGE
      Maximum polytropic head per stage [kJ/kg] - typical for process gas.
      See Also:
    • MAX_TIP_SPEED

      private static final double MAX_TIP_SPEED
      Maximum impeller tip speed [m/s] - material limit for steel impellers.
      See Also:
    • FLOW_COEFFICIENT_MIN

      private static final double FLOW_COEFFICIENT_MIN
      Typical flow coefficient range for centrifugal impellers.
      See Also:
    • FLOW_COEFFICIENT_MAX

      private static final double FLOW_COEFFICIENT_MAX
      See Also:
    • FLOW_COEFFICIENT_DESIGN

      private static final double FLOW_COEFFICIENT_DESIGN
      See Also:
    • DRIVER_MARGIN_SMALL

      private static final double DRIVER_MARGIN_SMALL
      Driver sizing margin per API 617.
      See Also:
    • DRIVER_MARGIN_MEDIUM

      private static final double DRIVER_MARGIN_MEDIUM
      See Also:
    • DRIVER_MARGIN_LARGE

      private static final double DRIVER_MARGIN_LARGE
      See Also:
    • DESIGN_PRESSURE_MARGIN

      private static final double DESIGN_PRESSURE_MARGIN
      Design pressure margin.
      See Also:
    • DESIGN_TEMPERATURE_MARGIN

      private static final double DESIGN_TEMPERATURE_MARGIN
      Design temperature margin [C].
      See Also:
    • compressorFactor

      private double compressorFactor
      Compressor design factor from design standard.
    • numberOfStages

      private int numberOfStages
      Number of compression stages.
    • impellerDiameter

      private double impellerDiameter
      Impeller outer diameter [mm].
    • shaftDiameter

      private double shaftDiameter
      Shaft diameter at impeller [mm].
    • tipSpeed

      private double tipSpeed
      Impeller tip speed [m/s].
    • driverPower

      private double driverPower
      Required driver power [kW].
    • driverMargin

      private double driverMargin
      Driver power margin factor.
    • designPressure

      private double designPressure
      Design pressure [bara].
    • designTemperature

      private double designTemperature
      Design temperature [C].
    • maxContinuousSpeed

      private double maxContinuousSpeed
      Maximum continuous speed [rpm].
    • tripSpeed

      private double tripSpeed
      Trip speed (typically 105% of max continuous) [rpm].
    • firstCriticalSpeed

      private double firstCriticalSpeed
      First lateral critical speed [rpm].
    • headPerStage

      private double headPerStage
      Polytropic head per stage [kJ/kg].
    • casingType

      Casing type.
    • casingWeight

      private double casingWeight
      Casing weight [kg].
    • rotorWeight

      private double rotorWeight
      Rotor weight [kg].
    • bearingSpan

      private double bearingSpan
      Bearing span [mm].
    • bundleWeight

      private double bundleWeight
      Bundle (rotor + internals) weight [kg].
    • mechanicalLosses

      private CompressorMechanicalLosses mechanicalLosses
      Mechanical losses model reference.
    • surgeMarginPercent

      private double surgeMarginPercent
      Surge margin minimum requirement [%].
    • stonewallMarginPercent

      private double stonewallMarginPercent
      Stonewall margin minimum requirement [%].
    • minTurndownPercent

      private double minTurndownPercent
      Minimum turndown requirement [%].
    • targetPolytropicEfficiency

      private double targetPolytropicEfficiency
      Target polytropic efficiency [%].
    • minPolytropicEfficiency

      private double minPolytropicEfficiency
      Minimum polytropic efficiency [%].
    • flowMarginFactor

      private double flowMarginFactor
      Design flow margin factor.
    • recycleValveMarginPercent

      private double recycleValveMarginPercent
      Recycle valve capacity margin [%].
    • suctionPressureMargin

      private double suctionPressureMargin
      Design suction pressure margin [bara].
    • maxDischargeTemperatureC

      private double maxDischargeTemperatureC
      Maximum discharge temperature [C].
    • minSpeedPercent

      private double minSpeedPercent
      Speed range requirement - minimum [% of rated].
    • maxSpeedPercent

      private double maxSpeedPercent
      Speed range requirement - maximum [% of rated].
    • criticalSpeedMarginPercent

      private double criticalSpeedMarginPercent
      Separation margin from first critical speed [%].
    • antiSurgeResponseTimeSec

      private double antiSurgeResponseTimeSec
      Anti-surge control response time requirement [seconds].
    • maxSuctionStrainerDPBar

      private double maxSuctionStrainerDPBar
      Maximum allowable suction strainer pressure drop [bar].
    • sealGasConsumptionPercent

      private double sealGasConsumptionPercent
      Seal gas consumption allowance [% of design flow].
    • maxBearingVibrationMmS

      private double maxBearingVibrationMmS
      Vibration limit at bearing [mm/s RMS].
    • surgeFlowM3hr

      private double surgeFlowM3hr
      Calculated surge flow rate [m3/hr].
    • stonewallFlowM3hr

      private double stonewallFlowM3hr
      Calculated stonewall flow rate [m3/hr].
    • turndownFlowM3hr

      private double turndownFlowM3hr
      Calculated turndown flow rate [m3/hr].
    • maxPressureRatioPerStage

      private double maxPressureRatioPerStage
      Maximum pressure ratio per stage.
    • designFlowMargin

      private double designFlowMargin
      Design flow margin factor.
    • maxVibrationMmPerSec

      private double maxVibrationMmPerSec
      Maximum allowable vibration [mm/s RMS].
    • minSealGasDifferentialPressureBar

      private double minSealGasDifferentialPressureBar
      Minimum seal gas differential pressure [bar].
    • maxStagesPerCasing

      private int maxStagesPerCasing
      Maximum number of stages per casing.
    • sealType

      private String sealType
      Seal type.
    • bearingType

      private String bearingType
      Bearing type.
    • materialClass

      private String materialClass
      Material class.
    • naceCompliance

      private boolean naceCompliance
      NACE MR0175 compliance required.
  • Constructor Details

    • CompressorMechanicalDesign

      public CompressorMechanicalDesign(ProcessEquipmentInterface equipment)
      Constructor for CompressorMechanicalDesign.
      Parameters:
      equipment - the compressor equipment
  • Method Details

    • readDesignSpecifications

      public void readDesignSpecifications()

      readDesignSpecifications.

      Overrides:
      readDesignSpecifications in class MechanicalDesign
    • calcDesign

      public void calcDesign()

      calcDesign.

      Overrides:
      calcDesign in class MechanicalDesign
    • selectCasingType

      private void selectCasingType(double pressure)
      Select casing type based on design pressure per API 617 guidelines.
      Parameters:
      pressure - design pressure in bara
    • calculateNumberOfStages

      private void calculateNumberOfStages(double totalPolytropicHead)
      Calculate number of compression stages based on total head and max head per stage.
      Parameters:
      totalPolytropicHead - total polytropic head in kJ/kg
    • calculateImpellerSizing

      private void calculateImpellerSizing(double volumeFlowM3hr, double polytropicHead, double speedRPM)
      Calculate impeller diameter and tip speed.
      Parameters:
      volumeFlowM3hr - inlet volume flow rate in m3/hr
      polytropicHead - total polytropic head in kJ/kg
      speedRPM - shaft speed in rpm
    • calculateShaftDiameter

      private void calculateShaftDiameter(double powerKW, double speedRPM)
      Calculate shaft diameter based on torque requirements.
      Parameters:
      powerKW - shaft power in kW
      speedRPM - shaft speed in rpm
    • calculateDriverSizing

      private void calculateDriverSizing(double shaftPowerKW)
      Calculate driver power requirement with API 617 margins.
      Parameters:
      shaftPowerKW - required shaft power in kW
    • calculateRotorDynamics

      private void calculateRotorDynamics(double operatingSpeedRPM)
      Calculate rotor dynamics parameters.
      Parameters:
      operatingSpeedRPM - operating speed in rpm
    • calculateWeights

      private void calculateWeights(double massFlowKghr, double designPressureBara)
      Calculate compressor weights.
      Parameters:
      massFlowKghr - mass flow rate in kg/hr
      designPressureBara - design pressure in bara
    • calculateModuleDimensions

      private void calculateModuleDimensions()
      Calculate module dimensions for plot plan.
    • setDesign

      public void setDesign()

      setDesign.

      Overrides:
      setDesign in class MechanicalDesign
    • displayResults

      public void displayResults()

      displayResults.

      Overrides:
      displayResults in class MechanicalDesign
    • getNumberOfStages

      public int getNumberOfStages()
      Get the calculated number of stages.
      Returns:
      number of compression stages
    • setNumberOfStages

      public void setNumberOfStages(int numberOfStages)
      Set the number of stages (override calculated value).
      Parameters:
      numberOfStages - number of stages
    • getImpellerDiameter

      public double getImpellerDiameter()
      Get impeller diameter.
      Returns:
      impeller outer diameter in mm
    • setImpellerDiameter

      public void setImpellerDiameter(double impellerDiameter)
      Set impeller diameter (override calculated value).
      Parameters:
      impellerDiameter - diameter in mm
    • getShaftDiameter

      public double getShaftDiameter()
      Get shaft diameter.
      Returns:
      shaft diameter in mm
    • setShaftDiameter

      public void setShaftDiameter(double shaftDiameter)
      Set shaft diameter (override calculated value).
      Parameters:
      shaftDiameter - diameter in mm
    • getTipSpeed

      public double getTipSpeed()
      Get impeller tip speed.
      Returns:
      tip speed in m/s
    • getDriverPower

      public double getDriverPower()
      Get required driver power with margin.
      Returns:
      driver power in kW
    • getDesignPressure

      public double getDesignPressure()
      Get design pressure.
      Returns:
      design pressure in bara
    • getDesignTemperature

      public double getDesignTemperature()
      Get design temperature.
      Returns:
      design temperature in C
    • getDriverMargin

      public double getDriverMargin()
      Get driver margin factor.
      Returns:
      driver margin factor
    • getMaxContinuousSpeed

      public double getMaxContinuousSpeed()
      Get maximum continuous speed.
      Returns:
      max continuous speed in rpm
    • getTripSpeed

      public double getTripSpeed()
      Get trip speed.
      Returns:
      trip speed in rpm
    • getFirstCriticalSpeed

      public double getFirstCriticalSpeed()
      Get first lateral critical speed.
      Returns:
      first critical speed in rpm
    • getCasingType

      public CompressorMechanicalDesign.CasingType getCasingType()
      Get casing type.
      Returns:
      casing type
    • setCasingType

      public void setCasingType(CompressorMechanicalDesign.CasingType casingType)
      Set casing type.
      Parameters:
      casingType - casing type
    • getHeadPerStage

      public double getHeadPerStage()
      Get head per stage.
      Returns:
      polytropic head per stage in kJ/kg
    • getBearingSpan

      public double getBearingSpan()
      Get bearing span.
      Returns:
      bearing span in mm
    • getCasingWeight

      public double getCasingWeight()
      Get casing weight.
      Returns:
      casing weight in kg
    • getBundleWeight

      public double getBundleWeight()
      Get bundle (rotor + internals) weight.
      Returns:
      bundle weight in kg
    • getRotorWeight

      public double getRotorWeight()
      Get rotor weight.
      Returns:
      rotor weight in kg
    • getOuterDiameter

      public double getOuterDiameter()

      Getter for the field outerDiameter.

      Overrides:
      getOuterDiameter in class MechanicalDesign
      Returns:
      a double
    • getWallThickness

      public double getWallThickness()

      Getter for the field wallThickness.

      Overrides:
      getWallThickness in class MechanicalDesign
      Returns:
      the wallThickness
    • setWallThickness

      public void setWallThickness(double wallThickness)

      Setter for the field wallThickness.

      Overrides:
      setWallThickness in class MechanicalDesign
      Parameters:
      wallThickness - the wallThickness to set
    • setOuterDiameter

      public void setOuterDiameter(double outerDiameter)

      Setter for the field outerDiameter.

      Overrides:
      setOuterDiameter in class MechanicalDesign
      Parameters:
      outerDiameter - the outerDiameter to set
    • getResponse

      public CompressorMechanicalDesignResponse getResponse()
      Get the mechanical design response object.

      This method returns a MechanicalDesignResponse object that can be further customized or combined with other data before serialization.

      Returns a compressor-specific response with additional fields for staging, driver sizing, and rotordynamic data.

      Overrides:
      getResponse in class MechanicalDesign
      Returns:
      MechanicalDesignResponse object
    • toJson

      public String toJson()
      Export mechanical design data to JSON format.

      This method creates a MechanicalDesignResponse object and serializes it to JSON using Gson. The JSON includes equipment identification, weight breakdown, design conditions, dimensions, and materials information.

      Usage example:

      
      MechanicalDesign mecDesign = separator.getMechanicalDesign();
      mecDesign.calcDesign();
      String json = mecDesign.toJson();
      
      

      Returns JSON with compressor-specific fields.

      Overrides:
      toJson in class MechanicalDesign
      Returns:
      JSON string representation of the mechanical design
    • getSurgeMarginPercent

      public double getSurgeMarginPercent()
      Gets the surge margin requirement.
      Returns:
      surge margin as percentage
    • setSurgeMarginPercent

      public void setSurgeMarginPercent(double margin)
      Sets the surge margin requirement.
      Parameters:
      margin - surge margin as percentage (typically 10-25%)
    • getStonewallMarginPercent

      public double getStonewallMarginPercent()
      Gets the stonewall margin requirement.
      Returns:
      stonewall margin as percentage
    • setStonewallMarginPercent

      public void setStonewallMarginPercent(double margin)
      Sets the stonewall margin requirement.
      Parameters:
      margin - stonewall margin as percentage
    • getTurndownPercent

      public double getTurndownPercent()
      Gets the turndown requirement.
      Returns:
      turndown as percentage of design flow
    • setTurndownPercent

      public void setTurndownPercent(double turndown)
      Sets the turndown requirement.
      Parameters:
      turndown - turndown as percentage of design flow (typically 70-100%)
    • getTargetPolytropicEfficiency

      public double getTargetPolytropicEfficiency()
      Gets the target polytropic efficiency.
      Returns:
      polytropic efficiency as fraction (0-1)
    • setTargetPolytropicEfficiency

      public void setTargetPolytropicEfficiency(double efficiency)
      Sets the target polytropic efficiency.
      Parameters:
      efficiency - polytropic efficiency as fraction (typically 0.75-0.85)
    • getMinPolytropicEfficiency

      public double getMinPolytropicEfficiency()
      Gets the minimum polytropic efficiency.
      Returns:
      minimum polytropic efficiency as fraction
    • setMinPolytropicEfficiency

      public void setMinPolytropicEfficiency(double efficiency)
      Sets the minimum polytropic efficiency.
      Parameters:
      efficiency - minimum polytropic efficiency as fraction
    • getMaxPressureRatioPerStage

      public double getMaxPressureRatioPerStage()
      Gets the maximum pressure ratio per stage.
      Returns:
      max pressure ratio per stage
    • setMaxPressureRatioPerStage

      public void setMaxPressureRatioPerStage(double ratio)
      Sets the maximum pressure ratio per stage.
      Parameters:
      ratio - max pressure ratio per stage (typically 2.5-4.0)
    • getDesignFlowMargin

      public double getDesignFlowMargin()
      Gets the design flow margin.
      Returns:
      design flow margin factor
    • setDesignFlowMargin

      public void setDesignFlowMargin(double margin)
      Sets the design flow margin.
      Parameters:
      margin - design flow margin factor (typically 1.05-1.15)
    • getMaxVibrationMmPerSec

      public double getMaxVibrationMmPerSec()
      Gets the maximum allowable vibration.
      Returns:
      max vibration in mm/s RMS
    • setMaxVibrationMmPerSec

      public void setMaxVibrationMmPerSec(double vibration)
      Sets the maximum allowable vibration.
      Parameters:
      vibration - max vibration in mm/s RMS
    • getMaxDischargeTemperatureC

      public double getMaxDischargeTemperatureC()
      Gets the maximum discharge temperature.
      Returns:
      max discharge temperature in Celsius
    • setMaxDischargeTemperatureC

      public void setMaxDischargeTemperatureC(double tempC)
      Sets the maximum discharge temperature.
      Parameters:
      tempC - max discharge temperature in Celsius
    • getMinSealGasDifferentialPressureBar

      public double getMinSealGasDifferentialPressureBar()
      Gets the minimum seal gas differential pressure.
      Returns:
      min seal gas differential in bar
    • setMinSealGasDifferentialPressureBar

      public void setMinSealGasDifferentialPressureBar(double pressure)
      Sets the minimum seal gas differential pressure.
      Parameters:
      pressure - min seal gas differential in bar
    • getMaxStagesPerCasing

      public int getMaxStagesPerCasing()
      Gets the maximum stages per casing.
      Returns:
      max stages per casing
    • setMaxStagesPerCasing

      public void setMaxStagesPerCasing(int stages)
      Sets the maximum stages per casing.
      Parameters:
      stages - max stages per casing
    • getSealType

      public String getSealType()
      Gets the seal type.
      Returns:
      seal type description
    • setSealType

      public void setSealType(String sealType)
      Sets the seal type.
      Parameters:
      sealType - seal type ("dry_gas", "labyrinth", "oil_film")
    • getBearingType

      public String getBearingType()
      Gets the bearing type.
      Returns:
      bearing type description
    • setBearingType

      public void setBearingType(String bearingType)
      Sets the bearing type.
      Parameters:
      bearingType - bearing type ("tilting_pad", "magnetic", "ball")
    • getMaterialClass

      public String getMaterialClass()
      Gets the material class.
      Returns:
      material class
    • setMaterialClass

      public void setMaterialClass(String materialClass)
      Sets the material class.
      Parameters:
      materialClass - material class for casing and internals
    • isNaceCompliance

      public boolean isNaceCompliance()
      Checks if NACE MR0175 compliance is required.
      Returns:
      true if NACE compliance required
    • setNaceCompliance

      public void setNaceCompliance(boolean naceCompliance)
      Sets NACE MR0175 compliance requirement.
      Parameters:
      naceCompliance - true if NACE compliance required
    • calculateSurgeFlow

      public double calculateSurgeFlow(double designFlowM3hr)
      Calculates the surge flow rate based on design flow and surge margin.
      Parameters:
      designFlowM3hr - design volumetric flow rate in m3/hr
      Returns:
      surge flow rate in m3/hr
    • calculateStonewallFlow

      public double calculateStonewallFlow(double designFlowM3hr)
      Calculates the stonewall flow rate based on design flow and stonewall margin.
      Parameters:
      designFlowM3hr - design volumetric flow rate in m3/hr
      Returns:
      stonewall flow rate in m3/hr
    • calculateTurndownFlow

      public double calculateTurndownFlow(double designFlowM3hr)
      Calculates the minimum turndown flow rate.
      Parameters:
      designFlowM3hr - design volumetric flow rate in m3/hr
      Returns:
      minimum turndown flow rate in m3/hr
    • validateOperatingPoint

      public boolean validateOperatingPoint(double actualFlowM3hr, double surgeFlowM3hr, double stonewallFlowM3hr)
      Validates that design operating point is within acceptable margins.
      Parameters:
      actualFlowM3hr - actual operating flow in m3/hr
      surgeFlowM3hr - calculated surge flow in m3/hr
      stonewallFlowM3hr - calculated stonewall flow in m3/hr
      Returns:
      true if operating point is acceptable
    • loadProcessDesignParameters

      public void loadProcessDesignParameters()
      Loads compressor design parameters from the database based on company standards.
    • validateEfficiency

      public boolean validateEfficiency(double actualEfficiency)
      Validates that the actual polytropic efficiency meets minimum requirements.
      Parameters:
      actualEfficiency - actual polytropic efficiency (0-1)
      Returns:
      true if efficiency is acceptable
    • validateDischargeTemperature

      public boolean validateDischargeTemperature(double actualTemperatureC)
      Validates that the discharge temperature is within acceptable limits.
      Parameters:
      actualTemperatureC - actual discharge temperature in Celsius
      Returns:
      true if temperature is acceptable
    • validatePressureRatioPerStage

      public boolean validatePressureRatioPerStage(double actualPressureRatio)
      Validates that the pressure ratio per stage is within acceptable limits.
      Parameters:
      actualPressureRatio - actual pressure ratio per stage
      Returns:
      true if pressure ratio is acceptable
    • validateVibration

      public boolean validateVibration(double actualVibrationMmS)
      Validates that vibration levels are within acceptable limits.
      Parameters:
      actualVibrationMmS - actual vibration in mm/s RMS
      Returns:
      true if vibration is acceptable
    • validateDesign

      Performs comprehensive validation of compressor design.
      Returns:
      CompressorValidationResult with status and any issues found