Source code for pyleecan.Methods.Slot.SlotW23.build_geometry_active
from numpy import angle, exp, linspace, zeros
from ....Classes.Arc2 import Arc2
from ....Classes.Segment import Segment
from ....Classes.SurfLine import SurfLine
from ....Functions.labels import WIND_LAB, DRAW_PROP_LAB
[docs]def build_geometry_active(self, Nrad, Ntan, alpha=0, delta=0):
"""Split the slot winding area in several zone
Parameters
----------
self : SlotW23
A SlotW23 object
Nrad : int
Number of radial layer
Ntan : int
Number of tangentiel layer
alpha : float
Angle for rotation (Default value = 0) [rad]
delta : Complex
complex for translation (Default value = 0)
Returns
-------
surf_list:
List of surface delimiting the winding zone
"""
# get the name of the lamination
lam_label = self.parent.get_label()
point_dict = self._comp_point_coordinate()
Z3 = point_dict["Z3"]
Z4 = point_dict["Z4"]
Z5 = point_dict["Z5"]
Z6 = point_dict["Z6"]
X = linspace(Z3, Z4, Nrad + 1)
# Nrad+1 and Ntan+1 because 3 points => 2 zones
Z = zeros((Nrad + 1, Ntan + 1), dtype=complex)
for ii in range(Nrad + 1):
Z[ii][:] = linspace(X[ii], X[ii].conjugate(), Ntan + 1)
# The bottom and top are Arc and not a line
Z[0][:] = abs(Z3) * exp(1j * linspace(angle(Z3), angle(Z6), Ntan + 1))
Z[Nrad][:] = abs(Z4) * exp(1j * linspace(angle(Z4), angle(Z5), Ntan + 1))
assert abs(Z[0][0] - Z3) < 1e-6
assert abs(Z[Nrad][0] - Z4) < 1e-6
assert abs(Z[0][Ntan] - Z6) < 1e-6
assert abs(Z[Nrad][Ntan] - Z5) < 1e-6
Zc = 0 # Center of the machine
# We go thought the zone by Rad then Tan, starting by (0,0)
surf_list = list()
for jj in range(Ntan): # jj from 0 to Ntan-1
for ii in range(Nrad): # ii from 0 to Nrad-1
Z1 = Z[ii][jj]
Z2 = Z[ii][jj + 1]
Z3 = Z[ii + 1][jj + 1]
Z4 = Z[ii + 1][jj]
point_ref = (Z1 + Z2 + Z3 + Z4) / 4
# With one zone the order would be [Z6,Z3,Z4,Z5]
curve_list = list()
curve_list.append(Segment(Z1, Z2))
curve_list.append(
Segment(
Z2,
Z3,
prop_dict={DRAW_PROP_LAB: False},
)
)
if ii == Nrad - 1: # Top zone
curve_list.append(
Arc2(
Z3,
Zc,
angle(Z4) - angle(Z3),
prop_dict={DRAW_PROP_LAB: False},
)
)
else:
curve_list.append(
Segment(
Z3,
Z4,
prop_dict={DRAW_PROP_LAB: False},
)
)
curve_list.append(
Segment(
Z4,
Z1,
prop_dict={DRAW_PROP_LAB: jj != 0},
)
)
surface = SurfLine(
line_list=curve_list,
label=lam_label
+ "_"
+ WIND_LAB
+ "_R"
+ str(ii)
+ "-T"
+ str(jj)
+ "-S0",
point_ref=point_ref,
)
surf_list.append(surface)
for surf in surf_list:
surf.rotate(alpha)
surf.translate(delta)
return surf_list