Source code for RCAIDE.Library.Components.Powertrain.Converters.PMSM_Motor
# RCAIDE/Library/Components/Propulsors/Converters/PMSM_Motor.py
#
#
# Created: Jan 2025, M. Clarke, M. Guidotti
# ----------------------------------------------------------------------------------------------------------------------
# IMPORT
# ----------------------------------------------------------------------------------------------------------------------
# RCAIDE imports
from RCAIDE.Framework.Core import Data
from .Converter import Converter
from RCAIDE.Library.Methods.Powertrain.Converters.Motor.append_motor_conditions import append_motor_conditions
# ----------------------------------------------------------------------------------------------------------------------
# PMSM_Motor
# ----------------------------------------------------------------------------------------------------------------------
[docs]
class PMSM_Motor(Converter):
"""
Permanent Magnet Synchronous Motor (PMSM) Component Class
This class models a PMSM motor for electric propulsion systems. It inherits from the base Converter class
and implements motor-specific attributes and methods.
Attributes
----------
tag : str
Identifier for the motor component, defaults to 'PMSM_motor'
speed_constant : float
Motor speed constant [rpm/V]
stator_inner_diameter : float
Inner diameter of the stator [m]
stator_outer_diameter : float
Outer diameter of the stator [m]
winding_factor : float
Winding factor of the motor [-]
resistance : float
Motor winding resistance [Ω]
motor_stack_length : float
Length of the motor stack [m]
number_of_turns : int
Number of winding turns [-]
length_of_path : float
Length of the magnetic path [m]
mu_0 : float
Permeability of free space [N/A^2]
mu_r : float
Relative permeability of magnetic material [N/A^2]
thermal_conductivity : float
Thermal conductivity of magnetic material [W/m*K]
Delta_T : float
Temperature difference between inner and outer stator surfaces [K]
characteristic_length_of_flow : float
Characteristic length for thermal calculations [m]
thermal_conductivity_fluid : float
Thermal conductivity of cooling fluid [W/m*K]
length_of_conductive_path : float
Length of thermal conductive path [m]
Re_cooling_flow : float
Reynolds number of cooling flow [-]
Re_airgap : float
Reynolds number of airgap flow [-]
Prandtl_number : float
Prandtl number of fluid [-]
height_of_duct : float
Height of cooling duct [m]
width_of_duct : float
Width of cooling duct [m]
hydraulic_diameter_of_duct : float
Hydraulic diameter of cooling duct [m]
length_of_channel : float
Length of cooling channel [m]
volume_flow_rate_of_fluid : float
Volume flow rate of cooling fluid [m^3/s]
density_of_fluid : float
Density of cooling fluid [kg/m^3]
velocity_of_fluid : float
Velocity of cooling fluid [m/s]
Taylor_number : float
Taylor number for flow calculations [-]
axial_gap_to_radius_of_rotor : float
Ratio of axial gap to rotor radius [-]
Conduction_laminar_flow : bool
Flag for laminar conduction flow
Convection_laminar_flow : bool
Flag for laminar convection flow
Notes
-----
The PMSM motor model includes detailed thermal and electromagnetic parameters for accurate
performance modeling. Default values are provided for all parameters but should be updated
based on specific motor designs.
**Major Assumptions**
* Linear magnetic properties
* Uniform temperature distribution in components
* Simplified thermal model
* No saturation effects considered
See Also
--------
RCAIDE.Library.Components.Powertrain.Converters
"""
def __defaults__(self):
"""
"""
self.tag = 'PMSM_motor'
# Input data from Datasheet
self.speed_constant = 6.56 # [rpm/V] speed constant
self.stator_inner_diameter = 0.16 # [m] stator inner diameter
self.stator_outer_diameter = 0.348 # [m] stator outer diameter
self.gearbox = Data()
self.gearbox.gear_ratio = 1.0
# Input data from Literature
self.winding_factor = 0.95 # [-] winding factor
# Input data from Assumptions
self.resistance = 0.002 # [Ω] resistance
self.motor_stack_length = 0.1140 # [m] (It should be around 0.14 m) motor stack length
self.number_of_turns = 80 # [-] number of turns
self.length_of_path = 0.4 # [m] length of the path
self.mu_0 = 1.256637061e-6 # [N/A**2] permeability of free space
self.mu_r = 1005 # [N/A**2] relative permeability of the magnetic material
self.thermal_conductivity = 200 # [W/m*K] thermal conductivity of the magnetic material
self.Delta_T = 10 # [K] temperature difference between the inner and outer surfaces of the stator
self.characteristic_length_of_flow = 0.01 # [m] characteristic length of the flow
self.thermal_conductivity_fluid = 0.026 # [W/m*K] thermal conductivity of the fluid
self.length_of_conductive_path = 0.4 # [m] length of the conductive path
self.Re_cooling_flow = 100000 # [-] Reynolds number of the coolingflow
self.Re_airgap = 100000 # [-] Reynolds number of the flow in the airgap
self.Prandtl_number = 0.708 # [-] Prandtl number of the flow
self.height_of_duct = 0.005 # [m] height of the duct
self.width_of_duct = 0.005 # [m] width of the duct
self.hydraulic_diameter_of_duct = 0.005 # [m] hydraulic diameter of the duct
self.length_of_channel = 0.005 # [m] length of the channel
self.volume_flow_rate_of_fluid = 0.005 # [m**3/s] volume flow rate of the fluid
self.density_of_fluid = 1000 # [kg/m**3] density of the fluid
self.velocity_of_fluid = 0.005 # [m/s] velocity of the fluid
self.Taylor_number = 20 # [-] Taylor number
self.axial_gap_to_radius_of_rotor = 0.01 # [-] ratio of the axial gap to the radius of the rotor
self.inverse_calculation = False
self.Conduction_laminar_flow = True # [-] True if the flow is laminar, False if the flow is turbulent
self.Convection_laminar_flow = True # [-] True if the flow is laminar, False if the flow is turbulent
[docs]
def append_operating_conditions(self,segment,energy_conditions,noise_conditions=None):
append_motor_conditions(self,segment,energy_conditions)
return