Source code for pyleecan.Methods.Slot.SlotW60.build_geometry_wind
# -*- coding: utf-8 -*-
from ....Methods.Slot.Slot.check import SlotCheckError
from numpy import pi, exp
from ....Classes.Segment import Segment
from ....Classes.SurfLine import SurfLine
[docs]def build_geometry_wind(self, Nrad, Ntan, is_simplified=False, alpha=0, delta=0):
"""Split the slot winding area in several zone
Parameters
----------
self : SlotW60
A SlotW60 object
Nrad : int
Number of radial layer
Ntan : int
Number of tangentiel layer
is_simplified : bool
boolean to specify if the coincident lines are considered as one
or different lines (Default value = False)
alpha : float
Angle for rotation (Default value = 0) [rad]
delta : complex
complex for translation (Default value = 0)
Returns
-------
surf_list: list
List of surface delimiting the winding zone
Raises
-------
S60_WindError
Slot 60 can use only for winding with Nrad=1 and Ntan 2
"""
if Nrad != 1 or Ntan != 2:
raise S60_WindError(
"Slot 60 can use only for winding with Nrad=1 " + "and Ntan 2"
)
self.check()
# get the name of the lamination
st = self.get_name_lam()
[Z1, Z2, Z3, Z4, Z5, Z6, Z7, Z8, Z9, Z10, Z11] = self._comp_point_coordinate()
# Compute the point in the tooth ref
hsp = pi / self.Zs
Z4t = Z4 * exp(1j * hsp)
Z5t = Z5 * exp(1j * hsp)
Zw1t = Z4t - self.H3
Zw2t = Z5t + self.H4
Zw3t = Zw2t + 1j * ((self.W1 - self.W2) / 2 - self.W3)
Zw4t = Zw1t + 1j * ((self.W1 - self.W2) / 2 - self.W3)
# Go back to slot ref
Zw1 = Zw1t * exp(1j * -hsp)
Zw2 = Zw2t * exp(1j * -hsp)
Zw3 = Zw3t * exp(1j * -hsp)
Zw4 = Zw4t * exp(1j * -hsp)
Zw1s = Zw1.conjugate()
Zw2s = Zw2.conjugate()
Zw3s = Zw3.conjugate()
Zw4s = Zw4.conjugate()
Ref1 = (Zw1 + Zw2 + Zw3 + Zw4) / 4
Ref2 = (Zw1s + Zw2s + Zw3s + Zw4s) / 4
# Create the surfaces
surf_list = list()
wind1 = [Segment(Zw3, Zw4)]
wind2 = [Segment(Zw3s, Zw4s)]
if (is_simplified and self.W3 > 0) or not is_simplified:
wind1.append(Segment(Zw4, Zw1))
wind2.append(Segment(Zw4s, Zw1s))
if not is_simplified:
wind1.append(Segment(Zw1, Zw2))
wind2.append(Segment(Zw1s, Zw2s))
if (is_simplified and self.W4 > 0) or not is_simplified:
wind1.append(Segment(Zw2, Zw3))
wind2.append(Segment(Zw2s, Zw3s))
surf_list.append(
SurfLine(line_list=wind1, label="Wind_" + st + "_R0_T0_S0", point_ref=Ref1)
)
surf_list.append(
SurfLine(line_list=wind2, label="Wind_" + st + "_R0_T1_S0", point_ref=Ref2)
)
# Rotate and translate the surfaces
for surf in surf_list:
surf.rotate(alpha)
surf.translate(delta)
return surf_list
[docs]class S60_WindError(SlotCheckError):
"""
Parameters
----------
Returns
-------
Raises
------
winding
"""
pass