Source code for pyleecan.Methods.Machine.WindingSC.comp_connection_mat
# -*- coding: utf-8 -*-
from numpy import zeros
from ....Methods.Machine.Winding import WindingError
from ....Functions.Winding.reverse_wind_mat import reverse_wind_mat
from ....Functions.Winding.shift_wind_mat import shift_wind_mat
# TODO: update docstring -> there should not be elementary circuits since
# every bar could have its own unique current
[docs]def comp_connection_mat(self, Zs=None, p=None):
"""Compute the Winding Matrix (for winding type 10)
type 10 : Squirrel cage Winding (elementary circuit loop involving bar n°1
and bar n°Zr for alphar0_rad=0) (Nlay_rad=Nlay_tan=1)
Parameters
----------
self : Winding
A: Winding object
Zs : int
Number of Slot (Integer >0)
p : int
Number of pole pairs (Integer >0)
Returns
-------
numpy.ndarray
Winding Matrix (Nlay_rad, Nlay_tan, Zs, qs)
Raises
------
WindingT10DefQsError
qs must be equal to Zs
"""
if Zs is None:
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
if p is None:
if self.parent is None:
raise WindingError(
"ERROR: The Winding object must be in a Lamination object."
)
p = self.parent.get_pole_pair_number()
assert Zs > 0, "Zs must be >0"
assert Zs % 1 == 0, "Zs must be an integer"
if self.qs != Zs:
raise WindingT10DefQsError(
"wrong winding definition, you must have " "qs = Zs !"
)
wind_mat = zeros((1, 1, Zs, self.qs))
for ii in range(Zs):
# phase n°ii
# wind_mat[0, 0, ii, ii] = -1 # there are only positive 'windings' for now
# wind_mat[0, 0, (ii - 1) % Zs, ii] = 1
wind_mat[0, 0, ii, ii] = 1
# Set default values
if self.is_reverse_wind is None:
self.is_reverse_wind = False
if self.Nslot_shift_wind is None:
self.Nslot_shift_wind = 0
# Apply the transformations
if self.is_reverse_wind:
wind_mat = reverse_wind_mat(wind_mat)
if self.Nslot_shift_wind != 0:
wind_mat = shift_wind_mat(wind_mat, self.Nslot_shift_wind)
return wind_mat
[docs]class WindingT10DefQsError(WindingError):
""" """
pass