Class MotorMechanicalDesign

java.lang.Object
neqsim.process.mechanicaldesign.motor.MotorMechanicalDesign
All Implemented Interfaces:
Serializable

public class MotorMechanicalDesign extends Object implements Serializable
Mechanical design of electric motors per IEC 60034, IEEE 841, and NORSOK E-001.

Covers the physical/mechanical aspects of electric motor design:

  • Foundation loads (static + dynamic) per IEC 60034-14
  • Cooling system classification per IEC 60034-6 (IC codes)
  • Bearing selection and L10 life per ISO 281
  • Vibration limits per ISO 10816-3 / IEC 60034-14
  • Noise limits per IEC 60034-9 and NORSOK S-002
  • Enclosure and IP protection per IEC 60034-5
  • Environmental derating per IEC 60034-1 (altitude, temperature)
  • Motor weight and dimensional estimation

This class is designed to work alongside the ElectricalDesign which handles the electrical sizing (power, voltage, current, efficiency class). Together they provide a complete motor specification.

Standards Reference

Applicable standards for motor mechanical design
Standard Scope
IEC 60034-1 Rating and performance
IEC 60034-5 Degrees of protection (IP code)
IEC 60034-6 Methods of cooling (IC code)
IEC 60034-9 Noise limits
IEC 60034-14 Mechanical vibration
IEC 60034-30-1 Efficiency classes (IE1-IE4)
IEEE 841 Petroleum/chemical industry motors
ISO 10816-3 Vibration evaluation (industrial machines)
ISO 281 Rolling bearing life calculation
NORSOK E-001 Electrical systems
NORSOK S-002 Working environment (noise limits)
Version:
1.0
Author:
Even Solbraa
See Also:
  • Field Details

    • serialVersionUID

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

      private static final double[][] NOISE_LIMITS_4P_50HZ
      Sound power limits for small motors in dB(A).
    • VIB_GROUP2_ZONE_AB

      private static final double VIB_GROUP2_ZONE_AB
      Zone A/B boundary for Group 2 (15-300 kW) in mm/s RMS.
      See Also:
    • VIB_GROUP2_ZONE_BC

      private static final double VIB_GROUP2_ZONE_BC
      Zone B/C boundary for Group 2 in mm/s RMS.
      See Also:
    • VIB_GROUP2_ZONE_CD

      private static final double VIB_GROUP2_ZONE_CD
      Zone C/D boundary for Group 2 in mm/s RMS.
      See Also:
    • VIB_GROUP1_ZONE_AB

      private static final double VIB_GROUP1_ZONE_AB
      Zone A/B boundary for Group 1 (above 300 kW) in mm/s RMS.
      See Also:
    • VIB_GROUP1_ZONE_BC

      private static final double VIB_GROUP1_ZONE_BC
      Zone B/C boundary for Group 1 in mm/s RMS.
      See Also:
    • VIB_GROUP1_ZONE_CD

      private static final double VIB_GROUP1_ZONE_CD
      Zone C/D boundary for Group 1 in mm/s RMS.
      See Also:
    • shaftPowerKW

      private double shaftPowerKW
      Shaft power required from the driven equipment in kW.
    • ratedSpeedRPM

      private double ratedSpeedRPM
      Rated speed in RPM.
    • poles

      private int poles
      Number of poles (2, 4, 6, 8).
    • frequencyHz

      private double frequencyHz
      Supply frequency in Hz.
    • ambientTemperatureC

      private double ambientTemperatureC
      Ambient temperature in Celsius.
    • altitudeM

      private double altitudeM
      Installation altitude in meters above sea level.
    • hasVFD

      private boolean hasVFD
      Whether the motor has a VFD.
    • motorStandard

      private String motorStandard
      Motor standard: "IEC" or "NEMA".
    • hazardousZone

      private int hazardousZone
      Hazardous area zone (-1 = non-hazardous, 0, 1, 2).
    • gasGroup

      private String gasGroup
      Gas group for Ex classification (IIA, IIB, IIC).
    • motorWeightKg

      private double motorWeightKg
      Motor weight in kg.
    • staticFoundationLoadKN

      private double staticFoundationLoadKN
      Static foundation load in kN.
    • dynamicFoundationLoadKN

      private double dynamicFoundationLoadKN
      Dynamic foundation load in kN (due to unbalance).
    • totalFoundationLoadKN

      private double totalFoundationLoadKN
      Total foundation load in kN (static + dynamic).
    • foundationWeightRatio

      private double foundationWeightRatio
      Minimum foundation weight ratio (concrete/motor per IEEE 841).
    • requiredFoundationMassKg

      private double requiredFoundationMassKg
      Required foundation mass in kg.
    • foundationType

      private String foundationType
      Foundation type recommendation.
    • vibrationGrade

      private String vibrationGrade
      Vibration grade per IEC 60034-14 (A or B).
    • maxVibrationMmS

      private double maxVibrationMmS
      Maximum vibration velocity in mm/s RMS at bearing housing.
    • vibrationZone

      private String vibrationZone
      Vibration zone per ISO 10816-3 (A, B, C, or D).
    • coolingCode

      private String coolingCode
      IC code per IEC 60034-6.
    • coolingDescription

      private String coolingDescription
      Cooling method description.
    • heatDissipationKW

      private double heatDissipationKW
      Heat dissipation in kW.
    • coolingAirFlowM3s

      private double coolingAirFlowM3s
      Cooling air flow required in m3/s (for fan-cooled).
    • bearingType

      private String bearingType
      Bearing type.
    • deBearingDesignation

      private String deBearingDesignation
      Drive-end bearing designation.
    • ndeBearingDesignation

      private String ndeBearingDesignation
      Non-drive-end bearing designation.
    • bearingL10LifeHours

      private double bearingL10LifeHours
      Calculated L10 bearing life in hours.
    • minBearingLifeHours

      private double minBearingLifeHours
      Minimum L10 bearing life requirement per IEEE 841 (hours).
    • lubricationMethod

      private String lubricationMethod
      Lubrication recommendation.
    • regreaseIntervalHours

      private double regreaseIntervalHours
      Re-greasing interval in hours.
    • soundPowerLevelDbA

      private double soundPowerLevelDbA
      Sound power level in dB(A).
    • soundPressureLevelAt1mDbA

      private double soundPressureLevelAt1mDbA
      Sound pressure level at 1m in dB(A).
    • noiseLimitDbA

      private double noiseLimitDbA
      IEC 60034-9 noise limit in dB(A).
    • noiseWithinLimit

      private boolean noiseWithinLimit
      Whether noise meets IEC 60034-9 limit.
    • noiseWithinNorsokLimit

      private boolean noiseWithinNorsokLimit
      Whether noise meets NORSOK S-002 limit (83 dB(A) at 1m).
    • ipRating

      private String ipRating
      IP protection rating per IEC 60034-5.
    • enclosureType

      private String enclosureType
      Enclosure type description.
    • exMarking

      private String exMarking
      Ex protection marking (empty if non-hazardous).
    • altitudeDeratingFactor

      private double altitudeDeratingFactor
      Altitude derating factor (1.0 = no derating).
    • temperatureDeratingFactor

      private double temperatureDeratingFactor
      Temperature derating factor (1.0 = no derating).
    • combinedDeratingFactor

      private double combinedDeratingFactor
      Combined derating factor.
    • deratedPowerKW

      private double deratedPowerKW
      Derated motor output power in kW.
    • motorLengthMm

      private double motorLengthMm
      Motor length in mm (estimated).
    • motorWidthMm

      private double motorWidthMm
      Motor width in mm (estimated).
    • motorHeightMm

      private double motorHeightMm
      Motor height in mm (estimated).
    • shaftHeightMm

      private double shaftHeightMm
      Shaft height in mm (center of shaft above base).
    • appliedStandards

      private List<String> appliedStandards
      List of applied standards.
    • designNotes

      private List<String> designNotes
      List of design notes/warnings.
  • Constructor Details

    • MotorMechanicalDesign

      public MotorMechanicalDesign()
      Default constructor.
    • MotorMechanicalDesign

      public MotorMechanicalDesign(double shaftPowerKW)
      Constructor with shaft power.
      Parameters:
      shaftPowerKW - required shaft power in kW
    • MotorMechanicalDesign

      public MotorMechanicalDesign(ElectricalDesign electricalDesign)
      Construct from an existing ElectricalDesign (reads motor data).
      Parameters:
      electricalDesign - the electrical design to read motor params from
  • Method Details

    • calcDesign

      public void calcDesign()
      Run all mechanical design calculations.

      Calculates foundation loads, vibration limits, cooling requirements, bearing selection, noise assessment, enclosure selection, and environmental derating.

    • calcDerating

      private void calcDerating()
      Calculate environmental derating per IEC 60034-1.

      Standard rating is for ambient max 40 deg C at altitudes up to 1000m. Above these limits, the motor output must be derated.

    • calcMotorDimensions

      private void calcMotorDimensions()
      Estimate motor dimensions and weight based on rated power.

      Approximations based on IEC frame sizes with TEFC enclosure.

    • calcFoundation

      private void calcFoundation()
      Calculate foundation loads per IEC 60034-14 and IEEE 841.
    • calcCooling

      private void calcCooling()
      Calculate cooling requirements per IEC 60034-6.
    • calcBearings

      private void calcBearings()
      Calculate bearing selection and L10 life per ISO 281.
    • estimateBallBearing

      private String estimateBallBearing(double powerKW, boolean isDriveEnd)
      Estimate ball bearing designation based on motor power.
      Parameters:
      powerKW - motor power in kW
      isDriveEnd - true for drive end, false for non-drive end
      Returns:
      bearing designation string
    • estimateRollerBearing

      private String estimateRollerBearing(double powerKW)
      Estimate roller bearing designation for NDE.
      Parameters:
      powerKW - motor power in kW
      Returns:
      bearing designation string
    • estimateDynamicLoadRating

      private double estimateDynamicLoadRating(double powerKW)
      Estimate bearing dynamic load rating in N.
      Parameters:
      powerKW - motor power in kW
      Returns:
      dynamic load rating in N
    • calcVibration

      private void calcVibration()
      Calculate vibration limits per IEC 60034-14 and ISO 10816-3.
    • calcNoise

      private void calcNoise()
      Calculate noise levels per IEC 60034-9 and check NORSOK S-002.
    • calcEnclosure

      private void calcEnclosure()
      Determine enclosure and protection rating.
    • toJson

      public String toJson()
      Generate comprehensive JSON report of motor mechanical design.
      Returns:
      JSON string with all design data
    • toMap

      public Map<String,Object> toMap()
      Convert all design data to a map for report generation.
      Returns:
      ordered map of all design parameters
    • getShaftPowerKW

      public double getShaftPowerKW()
      Gets the shaft power in kW.
      Returns:
      shaft power in kW
    • setShaftPowerKW

      public void setShaftPowerKW(double shaftPowerKW)
      Sets the shaft power in kW.
      Parameters:
      shaftPowerKW - shaft power in kW
    • getRatedSpeedRPM

      public double getRatedSpeedRPM()
      Gets the rated speed.
      Returns:
      speed in RPM
    • setRatedSpeedRPM

      public void setRatedSpeedRPM(double ratedSpeedRPM)
      Sets the rated speed.
      Parameters:
      ratedSpeedRPM - speed in RPM
    • getPoles

      public int getPoles()
      Gets the number of poles.
      Returns:
      number of poles
    • setPoles

      public void setPoles(int poles)
      Sets the number of poles.
      Parameters:
      poles - number of poles (2, 4, 6, 8)
    • setAmbientTemperatureC

      public void setAmbientTemperatureC(double ambientTemperatureC)
      Sets the ambient temperature in Celsius.
      Parameters:
      ambientTemperatureC - ambient temperature in Celsius
    • getAmbientTemperatureC

      public double getAmbientTemperatureC()
      Gets the ambient temperature in Celsius.
      Returns:
      ambient temperature in Celsius
    • setAltitudeM

      public void setAltitudeM(double altitudeM)
      Sets the installation altitude above sea level.
      Parameters:
      altitudeM - altitude in meters
    • getAltitudeM

      public double getAltitudeM()
      Gets the installation altitude.
      Returns:
      altitude in meters
    • setHasVFD

      public void setHasVFD(boolean hasVFD)
      Sets whether the motor uses a VFD.
      Parameters:
      hasVFD - true if VFD is used
    • isHasVFD

      public boolean isHasVFD()
      Checks if motor has a VFD.
      Returns:
      true if VFD is used
    • setMotorStandard

      public void setMotorStandard(String motorStandard)
      Sets the motor standard.
      Parameters:
      motorStandard - "IEC" or "NEMA"
    • getMotorStandard

      public String getMotorStandard()
      Gets the motor standard.
      Returns:
      motor standard
    • setHazardousZone

      public void setHazardousZone(int hazardousZone)
      Sets the hazardous area zone.
      Parameters:
      hazardousZone - zone (-1=safe, 0, 1, or 2)
    • setGasGroup

      public void setGasGroup(String gasGroup)
      Sets the gas group for Ex classification.
      Parameters:
      gasGroup - gas group (IIA, IIB, or IIC)
    • getMotorWeightKg

      public double getMotorWeightKg()
      Gets the motor weight.
      Returns:
      motor weight in kg
    • getTotalFoundationLoadKN

      public double getTotalFoundationLoadKN()
      Gets the total foundation load.
      Returns:
      total foundation load in kN
    • getRequiredFoundationMassKg

      public double getRequiredFoundationMassKg()
      Gets the required foundation mass.
      Returns:
      foundation mass in kg
    • getFoundationType

      public String getFoundationType()
      Gets the foundation type recommendation.
      Returns:
      foundation type
    • getVibrationZone

      public String getVibrationZone()
      Gets the vibration zone per ISO 10816-3.
      Returns:
      vibration zone (A, B, C, or D)
    • getMaxVibrationMmS

      public double getMaxVibrationMmS()
      Gets the maximum vibration in mm/s RMS.
      Returns:
      maximum vibration in mm/s
    • getCoolingCode

      public String getCoolingCode()
      Gets the cooling code per IEC 60034-6.
      Returns:
      IC code
    • getHeatDissipationKW

      public double getHeatDissipationKW()
      Gets the heat dissipation.
      Returns:
      heat dissipation in kW
    • getBearingL10LifeHours

      public double getBearingL10LifeHours()
      Gets the bearing L10 life.
      Returns:
      bearing life in hours
    • getSoundPressureLevelAt1mDbA

      public double getSoundPressureLevelAt1mDbA()
      Gets the sound pressure level at 1m.
      Returns:
      SPL at 1m in dB(A)
    • isNoiseWithinNorsokLimit

      public boolean isNoiseWithinNorsokLimit()
      Checks if noise is within NORSOK S-002 limit.
      Returns:
      true if within limit
    • getIpRating

      public String getIpRating()
      Gets the IP protection rating.
      Returns:
      IP rating string
    • getExMarking

      public String getExMarking()
      Gets the Ex marking.
      Returns:
      Ex marking string, empty if non-hazardous
    • getCombinedDeratingFactor

      public double getCombinedDeratingFactor()
      Gets the combined derating factor.
      Returns:
      combined derating factor (0-1)
    • getDeratedPowerKW

      public double getDeratedPowerKW()
      Gets the derated power.
      Returns:
      derated power in kW
    • getAppliedStandards

      public List<String> getAppliedStandards()
      Gets the list of applied standards.
      Returns:
      list of standards
    • getDesignNotes

      public List<String> getDesignNotes()
      Gets the list of design notes and warnings.
      Returns:
      list of notes
    • setFrequencyHz

      public void setFrequencyHz(double frequencyHz)
      Sets the frequency in Hz.
      Parameters:
      frequencyHz - frequency in Hz
    • setFoundationWeightRatio

      public void setFoundationWeightRatio(double ratio)
      Sets the foundation weight ratio.
      Parameters:
      ratio - foundation/motor weight ratio (default 3.0 per IEEE 841)
    • getBearingType

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

      public String getEnclosureType()
      Gets the enclosure type.
      Returns:
      enclosure type description
    • getCoolingDescription

      public String getCoolingDescription()
      Gets the cooling description.
      Returns:
      cooling description
    • getSoundPowerLevelDbA

      public double getSoundPowerLevelDbA()
      Gets the sound power level in dB(A).
      Returns:
      sound power level in dB(A)