2. SPM Rotor Thermal Analyzer
This analyzer determines the temperature distribution of a surface-mounted permanent magnet (SPM) rotor.
2.1. Model Background
The SPM rotor is modeled using a thermal resistance network as shown in the figure. The implementation of the resistances and nodal locations can be found in the source code of the create_resistance_network method of SPM_RotorThermalAnalyzer. This analyzer utilizes the Thermal Resistance Network Analyzer to solve for the temperature distribution in the rotor.
2.1.1. Geometric Dimensions
The required geometric dimensions and operating conditions needed to implement this model are shown in the following figure.
2.1.2. Nodal Locations
The location of the nodes and resistance network used in this analyzer are highlighted in the following figure. It should be noted that the iron losses are injected at node-3, and the magnet losses are injected at node-5. The convection resistance are shown as any resistance going to node-0. The numbering of the nodes corresponds with the index of the T vector returned by the analyzer (i.e. the magnet temperature would be provided by T[5]).
2.2. Inputs from User
The SPM_RotorThermalAnalyzer takes in a SPM_RotorThermalProblem with inputs listed in the following tables.
Variable/key_value name |
Description |
Units |
|---|---|---|
shaft_therm_conductivity |
Shaft Thermal Conductivity |
W/m-k |
core_therm_conductivity |
Rotor Core Thermal Conductivity |
W/m-k |
magnet_therm_conductivity |
Magnet Thermal Conductivity |
W/m-k |
sleeve_therm_conductivity |
Sleeve Thermal Conductivity |
W/m-k |
rotor_hub_therm_conductivity |
Rotor Hub Thermal Conductivity |
W/m-k |
air_therm_conductivity |
Air Thermal Conductivity |
W/m-k |
air_viscosity |
Viscosity of Air |
m^2/s |
air_cp |
Specific Heat Capacity of Air |
kJ/kg |
Variable/key_value name |
Description |
Units |
|---|---|---|
rotor_iron_loss |
Iron losses in rotor back iron |
W |
magnet_loss |
Magnet losses in rotor |
W |
Variable/key_value name |
Description |
Units |
|---|---|---|
r_sh |
Shaft radius |
m |
d_m |
Magnet thickness |
m |
r_ro |
Rotor outer radius |
m |
d_sl |
Sleeve Thickness |
m |
l_st |
Stack length |
m |
l_hub |
Hub thickness |
m |
u_z |
Axial Air Flow Rate |
m/s |
omega |
Rotational Speed |
rad/s |
T_ref |
Air Temperature |
C |
The following code-block demonstrates how to create a SPM_RotorThermalProblem and SPM_RotorThermalAnalyzer.
import numpy as np
from eMach.mach_eval.analyzers.mechanical.rotor_thermal import SPM_RotorThermalProblem,SPM_RotorThermalAnalyzer
# Example Machine Dimensions
r_sh=5E-3 # [m]
d_m=3E-3 # [m]
r_ro=12.5E-3 # [m]
d_ri=r_ro-r_sh - d_m # [m]
d_sl=1E-3 # [m]
l_st=50E-3 # [m]
l_hub=3E-3 # [m]
r_si=r_ro+d_sl+1E-3 # [m]
# Define Material Dictionary
mat_dict= {'shaft_therm_conductivity': 51.9, # W/m-k ,
'core_therm_conductivity': 28, # W/m-k
'magnet_therm_conductivity': 8.95, # W/m-k ,
'sleeve_therm_conductivity': 0.71, # W/m-k,
'air_therm_conductivity' :.02624, #W/m-K
'air_viscosity' :1.562E-5, #m^2/s
'air_cp' :1, #kJ/kg
'rotor_hub_therm_conductivity':205.0} #W/m-K}
# Operating Conditions
T_ref=25 # [C]
omega=120E3*2*np.pi/60 # [rad/s]
losses={'rotor_iron_loss':.001,'magnet_loss':135}
u_z=0
prob=SPM_RotorThermalProblem(mat_dict,r_sh,d_ri,r_ro,d_sl,r_si,l_st,l_hub,T_ref,u_z,losses,omega)
ana=SPM_RotorThermalAnalyzer()
2.3. Outputs to User
The SPM_RotorThermalAnalyzer returns back
Ta list of temperatures for each node (see this figure) defined by the resistance network.
T=ana.analyze(prob)