Class PumpMechanicalDesign

java.lang.Object
neqsim.process.mechanicaldesign.MechanicalDesign
neqsim.process.mechanicaldesign.pump.PumpMechanicalDesign
All Implemented Interfaces:
Serializable

public class PumpMechanicalDesign extends MechanicalDesign
Mechanical design calculations for centrifugal pumps per API 610.

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:
  • Field Details

    • serialVersionUID

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

      private static final double GRAVITY
      Gravity constant [m/s²].
      See Also:
    • DRIVER_MARGIN_SMALL

      private static final double DRIVER_MARGIN_SMALL
      Driver sizing margin for small pumps (< 22 kW) per API 610.
      See Also:
    • DRIVER_MARGIN_MEDIUM

      private static final double DRIVER_MARGIN_MEDIUM
      Driver sizing margin for medium pumps (22-55 kW) per API 610.
      See Also:
    • DRIVER_MARGIN_LARGE

      private static final double DRIVER_MARGIN_LARGE
      Driver sizing margin for large pumps (> 55 kW) per API 610.
      See Also:
    • DESIGN_PRESSURE_MARGIN

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

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

      private static final double DEFAULT_PUMP_EFFICIENCY
      Typical pump efficiency for estimation when not available.
      See Also:
    • STEEL_DENSITY

      private static final double STEEL_DENSITY
      Steel density [kg/m³].
      See Also:
    • ALLOWABLE_STRESS

      private static final double ALLOWABLE_STRESS
      Allowable stress for carbon steel at ambient [MPa].
      See Also:
    • pumpType

      Pump type classification.
    • sealType

      Seal type.
    • impellerDiameter

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

      private double impellerWidth
      Impeller width [mm].
    • shaftDiameter

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

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

      private double driverMargin
      Driver power margin factor.
    • casingWallThickness

      private double casingWallThickness
      Casing wall thickness [mm].
    • numberOfStages

      private int numberOfStages
      Number of stages.
    • ratedSpeed

      private double ratedSpeed
      Rated speed [rpm].
    • specificSpeed

      private double specificSpeed
      Specific speed (Ns) - dimensionless.
    • suctionSpecificSpeed

      private double suctionSpecificSpeed
      Suction specific speed (Nss) - dimensionless.
    • designPressure

      private double designPressure
      Design pressure [bara].
    • designTemperature

      private double designTemperature
      Design temperature [C].
    • maxAllowableWorkingPressure

      private double maxAllowableWorkingPressure
      Maximum allowable working pressure [bara].
    • bepFlow

      private double bepFlow
      Best efficiency point flow [m³/h].
    • bepHead

      private double bepHead
      Best efficiency point head [m].
    • pumpEfficiency

      private double pumpEfficiency
      Pump efficiency at operating point.
    • npshRequired

      private double npshRequired
      NPSH required [m].
    • npshAvailable

      private double npshAvailable
      NPSH available [m].
    • npshMargin

      private double npshMargin
      NPSH margin (NPSHa / NPSHr).
    • casingWeight

      private double casingWeight
      Casing weight [kg].
    • impellerWeight

      private double impellerWeight
      Impeller weight [kg].
    • shaftWeight

      private double shaftWeight
      Shaft weight [kg].
    • motorWeight

      private double motorWeight
      Motor weight [kg].
    • baseplateWeight

      private double baseplateWeight
      Baseplate weight [kg].
    • sealWeight

      private double sealWeight
      Seal system weight [kg].
    • couplingWeight

      private double couplingWeight
      Coupling weight [kg].
    • suctionNozzleSize

      private double suctionNozzleSize
      Suction nozzle size [inches].
    • dischargeNozzleSize

      private double dischargeNozzleSize
      Discharge nozzle size [inches].
    • minimumFlow

      private double minimumFlow
      Minimum continuous stable flow [m³/h].
    • maximumFlow

      private double maximumFlow
      Maximum allowable flow [m³/h].
  • Constructor Details

    • PumpMechanicalDesign

      public PumpMechanicalDesign(ProcessEquipmentInterface equipment)
      Constructor for PumpMechanicalDesign.
      Parameters:
      equipment - the pump equipment
  • Method Details

    • calcDesign

      public void calcDesign()

      calcDesign.

      Overrides:
      calcDesign in class MechanicalDesign
    • estimateOptimalSpeed

      private double estimateOptimalSpeed(double flowM3h, double headM)
      Estimate optimal pump speed based on flow and head.
      Parameters:
      flowM3h - volume flow rate in m³/h
      headM - 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³/h
      headM - pump head in meters
      speedRpm - 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³/h
      headM - pump head per stage in meters
      speedRpm - 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 kW
      speedRpm - shaft speed in rpm
      efficiency - pump efficiency
    • calculateCasingDesign

      private void calculateCasingDesign(double designPressureBara, double designTemperatureC)
      Calculate casing design parameters.
      Parameters:
      designPressureBara - design pressure in bara
      designTemperatureC - 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 kW
      efficiency - 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³/h
      speedRpm - 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³/h
      designPressureBara - design pressure in bara
    • calculateModuleDimensions

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

      public PumpMechanicalDesign.PumpType getPumpType()
      Get the pump type.
      Returns:
      pump type classification
    • setPumpType

      public void setPumpType(PumpMechanicalDesign.PumpType pumpType)
      Set the pump type.
      Parameters:
      pumpType - pump type classification
    • getSealType

      public PumpMechanicalDesign.SealType getSealType()
      Get the seal type.
      Returns:
      seal type
    • setSealType

      public void setSealType(PumpMechanicalDesign.SealType sealType)
      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

      public void displayResults()

      displayResults.

      Overrides:
      displayResults in class MechanicalDesign
    • getResponse

      public PumpMechanicalDesignResponse 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 pump-specific response with additional fields for hydraulic data, driver sizing, and NPSH requirements.

      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 pump-specific fields.

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