Source code for pyleecan.Methods.Output.OutElec.comp_I_mag
from ....Classes.WindingSC import WindingSC
from numpy import array
[docs]def comp_I_mag(self, time, is_stator, phase=None):
"""Compute the current on the given lamination and time vector to use it in Magnetics model
Phase currents are divided by the number of parallel circuits per pole
and per phase to account for actual current in slot conductors
Parameters
----------
self : OutElec
an OutElec object
time : ndarray
Time vector on which to interpolate currents stored in OutElec
is_stator: bool
True if lamination is stator
per_a: int
(Anti-)periodicity factor
Returns
-------
I: ndarray
Current matrix accounting for periodicities [q_pera,len(time)]
"""
# Get lamination
if is_stator:
lam = self.parent.simu.machine.stator
else:
lam = self.parent.simu.machine.rotor
if hasattr(lam, "winding") and lam.winding is not None:
# Get the number of parallel circuit per phase of winding
if hasattr(lam.winding, "Npcpp") and lam.winding.Npcpp is not None:
Npcpp = lam.winding.Npcpp
else:
Npcpp = 1
# Get current DataTime
if is_stator:
I_data = self.get_Is()
else:
I_data = self.Ir
if phase is None:
# Take all phases that are in the I_data Data object
str_phase = "phase"
else:
str_phase = "phase" + str(phase)
# Interpolate stator currents on input time vector
I = (
I_data.get_along(
"time=axis_data",
str_phase,
axis_data={"time": time},
)[I_data.symbol]
/ Npcpp
)
# Add time dimension if Is is calculated only for one time step
if len(I.shape) == 1:
I = I[:, None]
else:
I = None
return I