Source code for pyleecan.Methods.Machine.Winding.comp_winding_factor

# -*- coding: utf-8 -*-
from numpy import abs, exp, pi, sum, array, linspace
from ....Methods.Machine.Winding import WindingError


[docs]def comp_winding_factor(self, Harmonics=[1]): """Compute the winding factor of phase 1 (asuming symmetry) Parameters ---------- self : Winding A: Winding object Harmonics : list of floats list of harmonics to calculate the winding factor Returns ------- xi: numpy.ndarray winding factor Raises ------ """ if self.parent is None: raise WindingError("ERROR: The Winding object must be in a Lamination object.") if self.parent.slot is None: raise WindingError( "ERROR: The Winding object must be in a Lamination object with Slot." ) Zs = self.parent.slot.Zs assert Zs > 0, "Zs must be >0" assert Zs % 1 == 0, "Zs must be an integer" wind_mat = self.get_connection_mat(Zs) p = self.p # slot electrical angle slot_ang = linspace(0, Zs, num=Zs, endpoint=False) * 2 * pi / Zs * p phase = 0 wind_ph1 = sum(wind_mat[:, :, :, phase], (0, 1)) wind_ref = sum(abs(wind_mat[:, :, :, phase])) xi = list() for harm in Harmonics: xi.append(abs(sum(exp(1j * slot_ang * harm) * wind_ph1)) / wind_ref) xi = array(xi) return xi