Class PumpMechanicalDesign
- All Implemented Interfaces:
Serializable
This class provides sizing and design calculations for centrifugal pumps based on API 610 (Centrifugal Pumps for Petroleum, Petrochemical and Natural Gas Industries) and Hydraulic Institute standards. Calculations include:
- Impeller diameter sizing based on head and flow requirements
- Shaft sizing for torque transmission
- Casing design for pressure containment
- Driver (motor) sizing with appropriate margins
- NPSH analysis and cavitation risk assessment
- Seal system requirements
- Baseplate and foundation requirements
- Module footprint and weight estimation
References:
- API 610 - Centrifugal Pumps for Petroleum, Petrochemical and Natural Gas Industries
- API 674 - Positive Displacement Pumps - Reciprocating
- API 675 - Positive Displacement Pumps - Controlled Volume Metering
- Hydraulic Institute Standards
- Version:
- 1.0
- Author:
- NeqSim Development Team
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumPump type classification per API 610.static enumSeal type classification. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final doubleAllowable stress for carbon steel at ambient [MPa].private doubleBaseplate weight [kg].private doubleBest efficiency point flow [m³/h].private doubleBest efficiency point head [m].private doubleCasing wall thickness [mm].private doubleCasing weight [kg].private doubleCoupling weight [kg].private static final doubleTypical pump efficiency for estimation when not available.private static final doubleDesign pressure margin factor.private static final doubleDesign temperature margin [C].private doubleDesign pressure [bara].private doubleDesign temperature [C].private doubleDischarge nozzle size [inches].private static final doubleDriver sizing margin for large pumps (> 55 kW) per API 610.private static final doubleDriver sizing margin for medium pumps (22-55 kW) per API 610.private static final doubleDriver sizing margin for small pumps (< 22 kW) per API 610.private doubleDriver power margin factor.private doubleRequired driver power [kW].private static final doubleGravity constant [m/s²].private doubleImpeller outer diameter [mm].private doubleImpeller weight [kg].private doubleImpeller width [mm].private doubleMaximum allowable working pressure [bara].private doubleMaximum allowable flow [m³/h].private doubleMinimum continuous stable flow [m³/h].private doubleMotor weight [kg].private doubleNPSH available [m].private doubleNPSH margin (NPSHa / NPSHr).private doubleNPSH required [m].private intNumber of stages.private doublePump efficiency at operating point.private PumpMechanicalDesign.PumpTypePump type classification.private doubleRated speed [rpm].private PumpMechanicalDesign.SealTypeSeal type.private doubleSeal system weight [kg].private static final longSerialization version UID.private doubleShaft diameter at impeller [mm].private doubleShaft weight [kg].private doubleSpecific speed (Ns) - dimensionless.private static final doubleSteel density [kg/m³].private doubleSuction nozzle size [inches].private doubleSuction specific speed (Nss) - dimensionless.Fields inherited from class MechanicalDesign
costEstimate, designStandard, innerDiameter, maxDesignDuty, maxDesignGassVolumeFlow, maxDesignOilVolumeFlow, maxDesignPower, maxDesignVolumeFlow, maxDesignWaterVolumeFlow, minDesignDuty, minDesignGassVolumeFLow, minDesignOilFLow, minDesignPower, minDesignVolumeFLow, minDesignWaterVolumeFLow, moduleHeight, moduleLength, moduleWidth, outerDiameter, tantanLength, wallThickness, weightElectroInstrument, weightNozzle, weightPiping, weightStructualSteel, weightVessel, weigthInternals, weigthVesselShell -
Constructor Summary
ConstructorsConstructorDescriptionPumpMechanicalDesign(ProcessEquipmentInterface equipment) Constructor for PumpMechanicalDesign. -
Method Summary
Modifier and TypeMethodDescriptionvoidcalcDesign.private voidcalculateCasingDesign(double designPressureBara, double designTemperatureC) Calculate casing design parameters.private voidcalculateDriverSizing(double hydraulicPowerKW, double efficiency) Calculate driver sizing with appropriate margins per API 610.private voidcalculateImpellerSizing(double flowM3h, double headM, double speedRpm) Calculate impeller diameter and geometry.private voidCalculate module dimensions for plot plan.private voidcalculateNozzleSizes(double flowM3h) Calculate nozzle sizes based on flow rate and velocity limits.private voidcalculateShaftSizing(double powerKW, double speedRpm, double efficiency) Calculate shaft diameter for torque transmission.private voidcalculateSpecificSpeeds(double flowM3h, double headM, double speedRpm) Calculate specific speeds for pump classification.private voidcalculateWeights(double flowM3h, double designPressureBara) Calculate pump component weights.voiddisplayResults.private voidestimateNpshRequired(double flowM3h, double speedRpm) Estimate NPSH required based on suction specific speed correlation.private doubleestimateOptimalSpeed(double flowM3h, double headM) Estimate optimal pump speed based on flow and head.doubleGet the baseplate weight.doubleGet the casing weight.doubleGet the design pressure.doubleGet the design temperature.doubleGet the discharge nozzle size.doubleGet the required driver power.doubleGet the impeller diameter.doubleGet the maximum allowable flow.doubleGet the minimum continuous stable flow.doubleGet the motor weight.doubleGet the NPSH required.intGet the number of stages.Get the pump type.doubleGet the rated speed.Get the mechanical design response object.Get the seal type.doubleGet the shaft diameter.doubleGet the specific speed.doubleGet the suction nozzle size.doubleGet the suction specific speed.private voidSelect pump type based on specific speed and application.voidsetPumpType(PumpMechanicalDesign.PumpType pumpType) Set the pump type.voidsetSealType(PumpMechanicalDesign.SealType sealType) Set the seal type.toJson()Export mechanical design data to JSON format.Methods inherited from class MechanicalDesign
addDesignDataSource, equals, getApplicableStandards, getCompanySpecificDesignStandards, getConstrutionMaterial, getCorrosionAllowance, getCostEstimate, getDefaultLiquidDensity, getDefaultLiquidViscosity, getDesignCorrosionAllowance, getDesignDataSources, getDesignJointEfficiency, getDesignLimitData, getDesignMaxPressureLimit, getDesignMaxTemperatureLimit, getDesignMinPressureLimit, getDesignMinTemperatureLimit, getDesignStandard, getInnerDiameter, getJointEfficiency, getLastMarginResult, getMaterialDesignStandard, getMaterialPipeDesignStandard, getMaxAllowableStress, getMaxDesignGassVolumeFlow, getMaxDesignOilVolumeFlow, getMaxDesignPressure, getMaxDesignVolumeFlow, getMaxDesignWaterVolumeFlow, getMaxOperationPressure, getMaxOperationTemperature, getMinDesignGassVolumeFLow, getMinDesignOilFLow, getMinDesignPressure, getMinDesignVolumeFLow, getMinDesignWaterVolumeFLow, getMinOperationPressure, getMinOperationTemperature, getModuleHeight, getModuleLength, getModuleWidth, getOuterDiameter, getPressureMarginFactor, getProcessEquipment, getRecommendedStandards, getTantanLength, getTensileStrength, getVolumeTotal, getWallThickness, getWeightElectroInstrument, getWeightNozzle, getWeightPiping, getWeightStructualSteel, getWeightTotal, getWeightVessel, getWeigthInternals, getWeigthVesselShell, hasDesignStandard, hashCode, initMechanicalDesign, isHasSetCompanySpecificDesignStandards, readDesignSpecifications, setCompanySpecificDesignStandards, setConstrutionMaterial, setCorrosionAllowance, setDefaultLiquidDensity, setDefaultLiquidViscosity, setDesign, setDesignDataSource, setDesignDataSources, setDesignStandard, setDesignStandard, setDesignStandard, setDesignStandard, setDesignStandards, setHasSetCompanySpecificDesignStandards, setInnerDiameter, setJointEfficiency, setMaterialDesignStandard, setMaterialPipeDesignStandard, setMaxDesignDuty, setMaxDesignGassVolumeFlow, setMaxDesignOilVolumeFlow, setMaxDesignPower, setMaxDesignVolumeFlow, setMaxDesignWaterVolumeFlow, setMaxOperationPressure, setMaxOperationTemperature, setMinDesignDuty, setMinDesignGassVolumeFLow, setMinDesignOilFLow, setMinDesignPower, setMinDesignVolumeFLow, setMinDesignWaterVolumeFLow, setMinOperationPressure, setMinOperationTemperature, setModuleHeight, setModuleLength, setModuleWidth, setOuterDiameter, setPressureMarginFactor, setProcessEquipment, setTantanLength, setTensileStrength, setWallThickness, setWeightElectroInstrument, setWeightNozzle, setWeightPiping, setWeightStructualSteel, setWeightTotal, setWeightVessel, setWeigthInternals, setWeigthVesselShell, toCompactJson, validateOperatingEnvelope, validateOperatingEnvelope
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
GRAVITY
private static final double GRAVITYGravity constant [m/s²].- See Also:
-
DRIVER_MARGIN_SMALL
private static final double DRIVER_MARGIN_SMALLDriver sizing margin for small pumps (< 22 kW) per API 610.- See Also:
-
DRIVER_MARGIN_MEDIUM
private static final double DRIVER_MARGIN_MEDIUMDriver sizing margin for medium pumps (22-55 kW) per API 610.- See Also:
-
DRIVER_MARGIN_LARGE
private static final double DRIVER_MARGIN_LARGEDriver sizing margin for large pumps (> 55 kW) per API 610.- See Also:
-
DESIGN_PRESSURE_MARGIN
private static final double DESIGN_PRESSURE_MARGINDesign pressure margin factor.- See Also:
-
DESIGN_TEMPERATURE_MARGIN
private static final double DESIGN_TEMPERATURE_MARGINDesign temperature margin [C].- See Also:
-
DEFAULT_PUMP_EFFICIENCY
private static final double DEFAULT_PUMP_EFFICIENCYTypical pump efficiency for estimation when not available.- See Also:
-
STEEL_DENSITY
private static final double STEEL_DENSITYSteel density [kg/m³].- See Also:
-
ALLOWABLE_STRESS
private static final double ALLOWABLE_STRESSAllowable stress for carbon steel at ambient [MPa].- See Also:
-
pumpType
Pump type classification. -
sealType
Seal type. -
impellerDiameter
private double impellerDiameterImpeller outer diameter [mm]. -
impellerWidth
private double impellerWidthImpeller width [mm]. -
shaftDiameter
private double shaftDiameterShaft diameter at impeller [mm]. -
driverPower
private double driverPowerRequired driver power [kW]. -
driverMargin
private double driverMarginDriver power margin factor. -
casingWallThickness
private double casingWallThicknessCasing wall thickness [mm]. -
numberOfStages
private int numberOfStagesNumber of stages. -
ratedSpeed
private double ratedSpeedRated speed [rpm]. -
specificSpeed
private double specificSpeedSpecific speed (Ns) - dimensionless. -
suctionSpecificSpeed
private double suctionSpecificSpeedSuction specific speed (Nss) - dimensionless. -
designPressure
private double designPressureDesign pressure [bara]. -
designTemperature
private double designTemperatureDesign temperature [C]. -
maxAllowableWorkingPressure
private double maxAllowableWorkingPressureMaximum allowable working pressure [bara]. -
bepFlow
private double bepFlowBest efficiency point flow [m³/h]. -
bepHead
private double bepHeadBest efficiency point head [m]. -
pumpEfficiency
private double pumpEfficiencyPump efficiency at operating point. -
npshRequired
private double npshRequiredNPSH required [m]. -
npshAvailable
private double npshAvailableNPSH available [m]. -
npshMargin
private double npshMarginNPSH margin (NPSHa / NPSHr). -
casingWeight
private double casingWeightCasing weight [kg]. -
impellerWeight
private double impellerWeightImpeller weight [kg]. -
shaftWeight
private double shaftWeightShaft weight [kg]. -
motorWeight
private double motorWeightMotor weight [kg]. -
baseplateWeight
private double baseplateWeightBaseplate weight [kg]. -
sealWeight
private double sealWeightSeal system weight [kg]. -
couplingWeight
private double couplingWeightCoupling weight [kg]. -
suctionNozzleSize
private double suctionNozzleSizeSuction nozzle size [inches]. -
dischargeNozzleSize
private double dischargeNozzleSizeDischarge nozzle size [inches]. -
minimumFlow
private double minimumFlowMinimum continuous stable flow [m³/h]. -
maximumFlow
private double maximumFlowMaximum allowable flow [m³/h].
-
-
Constructor Details
-
PumpMechanicalDesign
Constructor for PumpMechanicalDesign.- Parameters:
equipment- the pump equipment
-
-
Method Details
-
calcDesign
-
estimateOptimalSpeed
private double estimateOptimalSpeed(double flowM3h, double headM) Estimate optimal pump speed based on flow and head.- Parameters:
flowM3h- volume flow rate in m³/hheadM- pump head in meters- Returns:
- estimated optimal speed in rpm
-
calculateSpecificSpeeds
private void calculateSpecificSpeeds(double flowM3h, double headM, double speedRpm) Calculate specific speeds for pump classification.- Parameters:
flowM3h- volume flow rate in m³/hheadM- pump head in metersspeedRpm- pump speed in rpm
-
selectPumpType
private void selectPumpType()Select pump type based on specific speed and application. -
calculateImpellerSizing
private void calculateImpellerSizing(double flowM3h, double headM, double speedRpm) Calculate impeller diameter and geometry.- Parameters:
flowM3h- volume flow rate in m³/hheadM- pump head per stage in metersspeedRpm- pump speed in rpm
-
calculateShaftSizing
private void calculateShaftSizing(double powerKW, double speedRpm, double efficiency) Calculate shaft diameter for torque transmission.- Parameters:
powerKW- shaft power in kWspeedRpm- shaft speed in rpmefficiency- pump efficiency
-
calculateCasingDesign
private void calculateCasingDesign(double designPressureBara, double designTemperatureC) Calculate casing design parameters.- Parameters:
designPressureBara- design pressure in baradesignTemperatureC- design temperature in °C
-
calculateDriverSizing
private void calculateDriverSizing(double hydraulicPowerKW, double efficiency) Calculate driver sizing with appropriate margins per API 610.- Parameters:
hydraulicPowerKW- hydraulic power in kWefficiency- pump efficiency
-
estimateNpshRequired
private void estimateNpshRequired(double flowM3h, double speedRpm) Estimate NPSH required based on suction specific speed correlation.- Parameters:
flowM3h- volume flow rate in m³/hspeedRpm- pump speed in rpm
-
calculateNozzleSizes
private void calculateNozzleSizes(double flowM3h) Calculate nozzle sizes based on flow rate and velocity limits.- Parameters:
flowM3h- volume flow rate in m³/h
-
calculateWeights
private void calculateWeights(double flowM3h, double designPressureBara) Calculate pump component weights.- Parameters:
flowM3h- volume flow rate in m³/hdesignPressureBara- design pressure in bara
-
calculateModuleDimensions
private void calculateModuleDimensions()Calculate module dimensions for plot plan. -
getPumpType
Get the pump type.- Returns:
- pump type classification
-
setPumpType
Set the pump type.- Parameters:
pumpType- pump type classification
-
getSealType
-
setSealType
Set the seal type.- Parameters:
sealType- seal type
-
getImpellerDiameter
public double getImpellerDiameter()Get the impeller diameter.- Returns:
- impeller diameter in mm
-
getShaftDiameter
public double getShaftDiameter()Get the shaft diameter.- Returns:
- shaft diameter in mm
-
getDriverPower
public double getDriverPower()Get the required driver power.- Returns:
- driver power in kW
-
getDesignPressure
public double getDesignPressure()Get the design pressure.- Returns:
- design pressure in bara
-
getDesignTemperature
public double getDesignTemperature()Get the design temperature.- Returns:
- design temperature in °C
-
getSpecificSpeed
public double getSpecificSpeed()Get the specific speed.- Returns:
- dimensionless specific speed (metric)
-
getSuctionSpecificSpeed
public double getSuctionSpecificSpeed()Get the suction specific speed.- Returns:
- dimensionless suction specific speed
-
getNumberOfStages
public int getNumberOfStages()Get the number of stages.- Returns:
- number of pump stages
-
getRatedSpeed
public double getRatedSpeed()Get the rated speed.- Returns:
- rated speed in rpm
-
getNpshRequired
public double getNpshRequired()Get the NPSH required.- Returns:
- NPSH required in meters
-
getCasingWeight
public double getCasingWeight()Get the casing weight.- Returns:
- casing weight in kg
-
getMotorWeight
public double getMotorWeight()Get the motor weight.- Returns:
- motor weight in kg
-
getBaseplateWeight
public double getBaseplateWeight()Get the baseplate weight.- Returns:
- baseplate weight in kg
-
getSuctionNozzleSize
public double getSuctionNozzleSize()Get the suction nozzle size.- Returns:
- suction nozzle size in inches
-
getDischargeNozzleSize
public double getDischargeNozzleSize()Get the discharge nozzle size.- Returns:
- discharge nozzle size in inches
-
getMinimumFlow
public double getMinimumFlow()Get the minimum continuous stable flow.- Returns:
- minimum flow in m³/h
-
getMaximumFlow
public double getMaximumFlow()Get the maximum allowable flow.- Returns:
- maximum flow in m³/h
-
displayResults
-
getResponse
Get the mechanical design response object.This method returns a
MechanicalDesignResponseobject that can be further customized or combined with other data before serialization.Returns a pump-specific response with additional fields for hydraulic data, driver sizing, and NPSH requirements.
- Overrides:
getResponsein classMechanicalDesign- Returns:
- MechanicalDesignResponse object
-
toJson
Export mechanical design data to JSON format.This method creates a
MechanicalDesignResponseobject 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 pump-specific fields.
- Overrides:
toJsonin classMechanicalDesign- Returns:
- JSON string representation of the mechanical design
-