mach_eval.analyzers.mechanical package

thermal_network module

class mach_eval.analyzers.mechanical.thermal_network.Material(k: float, cp: float = 0.0, mu: float = 0.0)

Bases: object

Class holding material parameters.

k

Thermal conductivity [W/m-K]

cp

cp value of fluid []

mu

Viscosity of fluid []

class mach_eval.analyzers.mechanical.thermal_network.Resistance(Material: Material, Node1: int, Node2: int)

Bases: object

Base class for thermal resisance

Material

Material object holding material properties

Node1

First node connected to resistance

Node2

Second node connected to resistance

resistance_value

Thermal resistance [K/W]

property resistance_value
class mach_eval.analyzers.mechanical.thermal_network.ThermalNetworkAnalyzer

Bases: object

Thermal Resistance Network Analyzer.

analyze(problem: ThermalNetworkProblem)

Analyze imported resistance network problem

Parameters:

problem – ThermalNetworkProblem object to be analyzed

Returns:

Temperature distribution at each node in system

Return type:

T

class mach_eval.analyzers.mechanical.thermal_network.ThermalNetworkProblem(res: List[Resistance], Q_dot: List[float], T_ref: List[List[int, float]], N_nodes: int)

Bases: object

Problem class from Thermal Resistance Network Analyzer.

res

List of Resistance objects

Q_dot

List of Thermal sources at nodal locations

T_ref

List of [ref_node,ref_temp]

N_nodes

Number of Nodes in system

class mach_eval.analyzers.mechanical.thermal_network.air_gap_conv(Material: Material, Node1: int, Node2: int, omega: float, R_r: float, R_s: float, u_z: float, A: float)

Bases: Resistance

Air gap convection thermal resistance

Material

Material object holding material properties

Node1

First node connected to resistance

Node2

Second node connected to resistance

resistance_value

Thermal resistance [K/W]

omega

rotational speed [rad/s]

R_r

Rotor outer radius [m]

R_s

Stator inner radius [m]

u_z

Axial airflow speed [m/s]

A

Cross sectional area [m^2]

h

Convection Coeff [W/m^2-K]

property h
property resistance_value
class mach_eval.analyzers.mechanical.thermal_network.conv(Material: Material, Node1: int, Node2: int, h: float, A: float)

Bases: Resistance

Air gap convection thermal resistance

Material

Material object holding material properties

Node1

First node connected to resistance

Node2

Second node connected to resistance

resistance_value

Thermal resistance [K/W]

A

Cross sectional area [m^2]

h

Convection Coeff [W/m^2-K]

property h
property resistance_value
class mach_eval.analyzers.mechanical.thermal_network.cylind_wall(Material: Material, Node1: int, Node2: int, R1: float, R2: float, H: float)

Bases: Resistance

Cylindrical wall thermal resistance.

Material

Material object holding material properties

Node1

First node connected to resistance

Node2

Second node connected to resistance

resistance_value

Thermal resistance [K/W]

R1

Radial position of node-1 [m]

R2

Radial position of node-2 [m]

H

Height of wall [m]

property resistance_value
class mach_eval.analyzers.mechanical.thermal_network.hub_conv(Material: Material, Node1: int, Node2: int, omega: float, A: float)

Bases: Resistance

Hub convection thermal resistance

Material

Material object holding material properties

Node1

First node connected to resistance

Node2

Second node connected to resistance

resistance_value

Thermal resistance [K/W]

omega

rotational speed [rad/s]

A

Cross sectional area [m^2]

h

Convection Coeff [W/m^2-K]

property h
property resistance_value
class mach_eval.analyzers.mechanical.thermal_network.plane_wall(Material: Material, Node1: int, Node2: int, L: float, A: float)

Bases: Resistance

Plane wall thermal resistance.

Material

Material object holding material properties

Node1

First node connected to resistance

Node2

Second node connected to resistance

resistance_value

Thermal resistance [K/W]

L1

Position of node-1 [m]

L2

Position of node-2 [m]

A

Cross sectional area [m^2]

property resistance_value
class mach_eval.analyzers.mechanical.thermal_network.shaft_conv(Material: Material, Node1: int, Node2: int, omega: float, R: float, A: float, u_z: float)

Bases: Resistance

Shaft convection thermal resistance

Material

Material object holding material properties

Node1

First node connected to resistance

Node2

Second node connected to resistance

resistance_value

Thermal resistance [K/W]

omega

rotational speed [rad/s]

R

Shaft outer radius [m]

u_z

Axial airflow speed [m/s]

A

Cross sectional area [m^2]

h

Convection Coeff [W/m^2-K]

Re

Reynolds number []

Pr

Prandlt number []

Nu

Nusselt number []

property Nu
property Pr
property Re
property h
property resistance_value

rotor_thermal module

class mach_eval.analyzers.mechanical.rotor_thermal.AirflowAnalyzer

Bases: object

Analyzer to calculate required airflow in SPM machine

analyze(problem: AirflowProblem)

Analyzes input problem to calculate required airflow to cool rotor

Parameters:

problem (AirflowProblem) – input problem

Returns:

dictionary with analyzer solution

Return type:

results (dict)

class mach_eval.analyzers.mechanical.rotor_thermal.AirflowProblem(r_sh: float, d_ri: float, r_ro: float, d_sl: float, r_si: float, l_st: float, l_hub: float, T_ref: float, losses: dict, omega: float, max_temp: float, mat_dict: dict)

Bases: object

Problem class for AirflowAnalyzer

mat_dict

Material Dictionary

Type:

dict

r_sh

Shaft radius [m]

Type:

float

d_ri

Back iron thickness [m]

Type:

float

r_ro

Outer rotor radius [m]

Type:

float

d_sl

Sleeve Thickness [m]

Type:

float

r_si

Stator Inner radius [m]

Type:

float

l_st

Stack length [m]

Type:

float

l_hub

hub thickness [m]

Type:

float

T_ref

Air Temperature [C]

Type:

float

losses

Loss dictionary [W]

Type:

dict

omega

Rotational Speed [rad/s]

Type:

float

max_temp

Max rotor magnet temperature [K]

Type:

float

therm_prob

Thermal problem to solve

Type:

Problem

therm_ana

Analyzer to solve problem

Type:

Analzyer

cost(u_z)

Returns airflow rate as cost function

magnet_temp(u_z)

Calculate magnet temperature from airflow rate

Parameters:

u_z (float) – Axial airflow rate [m/s]

Returns:

Magnet Temperature

Return type:

T[5] (float)

class mach_eval.analyzers.mechanical.rotor_thermal.SPM_RotorThermalAnalyzer

Bases: object

Analyzer for rotor thermal problem

base_ana

Thermal Network Analyzer

Type:

tb.ThermalNetworkAnalyzer

analyze(problem: SPM_RotorThermalProblem)

Analyzes input problem for temperature distribution

Parameters:

problem (SPM_RotorThermalProblem) – input problem

Returns:

Temperature distribuiton in rotor

Return type:

T (List)

create_resistance_network(problem)
class mach_eval.analyzers.mechanical.rotor_thermal.SPM_RotorThermalProblem(mat_dict: dict, r_sh: float, d_ri: float, r_ro: float, d_sl: float, r_si: float, l_st: float, l_hub: float, T_ref: float, u_z: float, losses: dict, omega: float)

Bases: object

Problem class for rotor thermal analyzer

mat_dict

Material Dictionary

Type:

dict

r_sh

Shaft radius [m]

Type:

float

d_ri

Back iron thickness [m]

Type:

float

r_ro

Outer rotor radius [m]

Type:

float

d_sl

Sleeve Thickness [m]

Type:

float

r_si

Stator Inner radius [m]

Type:

float

l_st

Stack length [m]

Type:

float

l_hub

hub thickness [m]

Type:

float

T_ref

Air Temperature [C]

Type:

float

u_z

Axial air flow speed [m/s]

Type:

float

losses

Loss dictionary [W]

Type:

dict

omega

Rotational Speed [rad/s]

Type:

float

R_1

Shaft radius [m]

Type:

float

R_2

Back iron radius [m]

Type:

float

R_3

Outer rotor Radius [m]

Type:

float

R_4

Outer sleeve radius [m]

Type:

float

windage_loss module

class mach_eval.analyzers.mechanical.windage_loss.WindageLossAnalyzer

Bases: object

Windage loss analyzer

analyze()

Calculates total windage loss in machine.

Parameters:

problem – problem class

Returns:

Total windage loss on rotor

Return type:

windage_loss_total

class mach_eval.analyzers.mechanical.windage_loss.WindageLossProblem(Omega, R_ro, stack_length, R_st, u_z, T_air=25)

Bases: object

Problem analyzer for windage anlyzer .. attribute:: Omega

rotational speed [rad/s]

R_ro

outer rotor radius [m]

stack_length

stack length [m]

R_st

inner stator radius [m]

air_gap

airgap length [m]

u_z

axial air flow speed [m/s]

T_air

Air temperature

thermal_stator module

class mach_eval.analyzers.mechanical.thermal_stator.StatorThermalAnalyzer

Bases: object

“Stator Thermal Analyzer calculates coil temperatures

analyze(problem)

calculates coil temperature from problem class.

Parameters:

problem (StatorThermalProblem) – Problem Object

Returns:

Dict of coil and stator yoke temperature

Return type:

results

class mach_eval.analyzers.mechanical.thermal_stator.StatorThermalProblem(g_sy: float, g_th: float, w_tooth: float, l_st: float, alpha_q: float, r_si: float, r_so: float, r_sy: float, k_ins: float, w_ins: float, k_fe: float, h: float, alpha_slot: float, Q_coil: float, h_slot: float, T_ref: float)

Bases: object

Problem class utilized by the stator thermal analyzer

g_sy

Volumetric Heating of stator yoke [W/m^3]

g_th

Volumetric Heating of stator tooth [W/m^3]

w_tooth

Width of stator tooth [m]

l_st

Stack length [m]

l_tooth

Length of stator tooth [m]

alpha_q

slot span 2pi/Q [rad]

r_si

Inner stator radius [m]

r_so

Outer stator radius [m]

r_sy

Radius of inner stator yoke [m]

k_ins

Thermal conductivity of insulation paper [W/m-K]

w_ins

Thickness of Insulation paper [m]

k_fe

Thermal conductivty of stator iron [W/m-K]

h

Convection rate on exterior of stator [W/m^2-K]

alpha_slot

Angle of back of slot on stator yoke [rad]

T_coil_max

Maximum coil temperature [K]

r_si

Inner stator radius [m]

Q_coil

Resistive coil losses [W]

h_slot

Inslot convection rate [W/m^2-K]

T_ref

Refrence temperature

rotor_structural module

class mach_eval.analyzers.mechanical.rotor_structural.Material_Isotropic(Density, ElasticMod, PoissonRatio, alpha)

Bases: object

property C1
property C2
property C3
property Del
property h
property zeta_r
property zeta_t
property zeta_u
class mach_eval.analyzers.mechanical.rotor_structural.Material_Transverse_Isotropic(Density, ElasticMod_Thread, ElasticMod_Plane, PoissonRatio_tp, PoissonRatio_p, alpha_r, alpha_t)

Bases: object

property C1
property C2
property C3
property Del
property Nu_pt
property h
property zeta_r
property zeta_t
property zeta_u
class mach_eval.analyzers.mechanical.rotor_structural.RotorComponent(MaterialObject, InnerRadius, OuterRadius)

Bases: object

property Beta
set_MaxRadialStress(sigmaMax)
set_MaxTanStress(sigmaMax)
set_delta_sl(Dr)
set_th(th)
class mach_eval.analyzers.mechanical.rotor_structural.SPM_RotorSleeveAnalyzer(stress_limits: List[float, float, float, float])

Bases: object

Analyzer for designing a rotor sleeve

stress_limits

list of limits for critical stresses

analyze(problem: SPM_RotorSleeveProblem)

analyzes input problem to design optimal rotor sleeve

Parameters:

problem (SPM_RotorSleeveProblem) – input problem

Returns:

solution from design problem

Return type:

sol

cost(x)

returns sleeve thickness

Parameters:

x – tuple of sleeve thickness and undersize

Returns:

sleeve thickness

Return type:

x[0]

class mach_eval.analyzers.mechanical.rotor_structural.SPM_RotorSleeveProblem(r_sh: float, d_m: float, r_ro: float, deltaT: float, mat_dict: dict, N: float, problem_class=<class 'mach_eval.analyzers.mechanical.rotor_structural.SPM_RotorStructuralProblem'>, analyzer_class=<class 'mach_eval.analyzers.mechanical.rotor_structural.SPM_RotorStructuralAnalyzer'>)

Bases: object

rad_magnet(x)

Calculate P_pm for given sleeve design

rad_sleeve(x)

Calculate P_sl for given sleeve design

tan_magnet(x)

Calculate sigma_t_pm_max for given sleeve design

tan_sleeve(x)

Calculate sigma_t_sl_max for given sleeve design

class mach_eval.analyzers.mechanical.rotor_structural.SPM_RotorStructuralAnalyzer

Bases: object

DetermineCoeff(sh: RotorComponent, rc, pm, sl, deltaT, omega)

Deterimine coeffiecents for calculating stresses

Parameters:
  • sh (RotorComponent) – Shaft RotorComponent object.

  • rc (RotorComponent) – Rotor core RotorComponent object.

  • pm (RotorComponent) – Magnets RotorComponent object.

  • sl (RotorComponent) – Sleeve RotorComponent object.

  • deltaT (float) – Temperature rise in deg C.

  • omega (float) – rotational speed in rad/s.

Returns:

numpy array of stress coeffiecents.

Return type:

A (np.Array)

analyze(problem: SPM_RotorStructuralProblem) Tuple[Sigma, Sigma, Sigma, Sigma]

Analyze structural problem

Parameters:

problem (SPM_RotorStructuralProblem) – problem for analyzer.

Returns:

Sigma objects

Return type:

results ([‘Sigma’,’Sigma’,’Sigma’,’Sigma’])

class mach_eval.analyzers.mechanical.rotor_structural.SPM_RotorStructuralProblem(r_sh: float, d_m: float, r_ro: float, d_sl: float, delta_sl: float, deltaT: float, N: float, mat_dict: dict)

Bases: object

Problem class for SPM_RotorStructuralAnalyzer.

sh

Shaft RotorComponent object.

Type:

RotorComponent

rc

Rotor core RotorComponent object.

Type:

RotorComponent

pm

Magnets RotorComponent object.

Type:

RotorComponent

sl

Sleeve RotorComponent object.

Type:

RotorComponent

deltaT

Temperature rise in deg C.

Type:

float

omega

rotational speed in rad/s.

Type:

float

class mach_eval.analyzers.mechanical.rotor_structural.Sigma(rotorComponent, A, omega, deltaT)

Bases: object

radial(R)

Radial Stress at radius R.

Parameters:

R (float) – location to evaluate stress.

tangential(R)

Tangential Stress at radius R

Parameters:

R (float) – location to evaluate stress.