Source code for pyleecan.Methods.Slot.SlotCirc.get_surface_wind

# -*- coding: utf-8 -*-
from numpy import exp

from ....Classes.Segment import Segment
from ....Classes.Arc1 import Arc1
from ....Classes.SurfLine import SurfLine
from ....Methods import NotImplementedYetError


[docs]def get_surface_wind(self, alpha=0, delta=0): """Return the full winding surface Parameters ---------- self : SlotW10 A SlotW10 object alpha : float float number for rotation (Default value = 0) [rad] delta : complex complex number for translation (Default value = 0) Returns ------- surf_wind: Surface Surface corresponding to the Winding Area """ # get the name of the lamination st = self.get_name_lam() # Compute point Rbo = self.get_Rbo() alpha_op = self.comp_angle_opening() R0 = ((self.W0 / 2) ** 2 + self.H0 ** 2) / (2 * self.H0) Z1 = Rbo * exp(-1j * alpha_op / 2) Z2 = Rbo * exp(1j * alpha_op / 2) Ztan1 = Rbo if self.is_outwards(): Ztan2 = (Z1 + Z2) / 2 + self.H0 else: Ztan2 = (Z1 + Z2) / 2 - self.H0 # Create surface curve_list = list() if self.is_outwards(): curve_list.append(Arc1(begin=Z1, end=Z2, radius=-R0, is_trigo_direction=True)) else: curve_list.append(Arc1(begin=Z1, end=Z2, radius=R0, is_trigo_direction=False)) curve_list.append(Arc1(begin=Z2, end=Z1, radius=-Rbo, is_trigo_direction=False)) surf = SurfLine( line_list=curve_list, label="Wind_" + st + "_R0_T0_S0", point_ref=(Ztan1 + Ztan2) / 2, ) # Apply transformation surf.rotate(alpha) surf.translate(delta) return surf