diff --git a/machine_design/designs/computation.py b/machine_design/designs/computation.py index 4e57fbe..fb35eea 100644 --- a/machine_design/designs/computation.py +++ b/machine_design/designs/computation.py @@ -3,6 +3,7 @@ from ansys.aedt.core import Maxwell2d from machine_design.generic.compute_initpos import compute_initpos +from machine_design.generic.winding import phase_groups from .geometry import GeometryBase from .reserved_variables import check_no_reserved_variable_names @@ -44,11 +45,16 @@ def set_variables(self, m2d: Maxwell2d, *args): ... def extract_results(self, solutions): ... def set_initpos(self) -> None: - Q = int(self.geometry.geom_params["SlotNumber"]) - p = self.geometry.PolePairs - self.InitPos = compute_initpos(Q, p, self.phases, belt_offset=self.belt_offset) + g = self.geometry + Q = int(g.geom_params["SlotNumber"]) + self.InitPos = compute_initpos(Q, g.PolePairs, g.n_phases, belt_offset=g.belt_offset) self.oper_params["InitPos"] = f"{self.InitPos}deg" + def compute_phase_groups(self): + g = self.geometry + Q = int(g.geom_params["SlotNumber"]) + return phase_groups(Q, g.PolePairs, g.n_phases, belt_offset=g.belt_offset) + def push_variables(self, m2d: Maxwell2d) -> None: for k, v in self.oper_params.items(): m2d[k] = v diff --git a/motors/synrm_3f_36s.py b/motors/synrm_3f_36s.py index 812a051..7af04f8 100644 --- a/motors/synrm_3f_36s.py +++ b/motors/synrm_3f_36s.py @@ -48,6 +48,8 @@ def set_winds_params(self): def set_mod_params(self): self.PolePairs = 2 + self.n_phases = 3 + self.belt_offset = 0 self.mod_params = { "Poles": f"2*{self.PolePairs}", "ModelLength": "85mm", @@ -172,8 +174,6 @@ def _assign_stator_mesh(self, m2d: Maxwell2d, stator_id, id_coils) -> None: class Computation(ComputationBase): def set_oper_params(self): - self.phases = 3 - self.belt_offset = 0 f = 50 # [Hz] RotSpeed = 60 * f / self.geometry.PolePairs # [rpm] w = 2 * np.pi * f diff --git a/motors/synrm_3f_60s.py b/motors/synrm_3f_60s.py index 65c0189..3c748a6 100644 --- a/motors/synrm_3f_60s.py +++ b/motors/synrm_3f_60s.py @@ -3,8 +3,6 @@ import numpy as np from ansys.aedt.core import Maxwell2d -from machine_design.generic.winding import phase_groups - from .synrm_3f_36s import Computation as BaseComputation from .synrm_3f_36s import Geometry as BaseGeometry @@ -37,10 +35,7 @@ def assign_stator_coils(self, m2d: Maxwell2d) -> None: I_B = "Im * cos(w*Time-120deg+epsI)" I_C = "Im * cos(w*Time-240deg+epsI)" - Q = int(self.geometry.geom_params["SlotNumber"]) - p = self.geometry.PolePairs - # belt_offset=0 reproduces the legacy 3-phase(36-slot) base winding. - groups = phase_groups(Q, p, 3, belt_offset=0) + groups = self.compute_phase_groups() for group in groups: for coil_name, polarity in group: diff --git a/motors/synrm_5f_40s.py b/motors/synrm_5f_40s.py index d22601a..0c5e402 100644 --- a/motors/synrm_5f_40s.py +++ b/motors/synrm_5f_40s.py @@ -28,11 +28,14 @@ def set_winds_params(self): super().set_winds_params() self.wind_params["Nc"] = "113" + def set_mod_params(self): + super().set_mod_params() + self.n_phases = 5 + self.belt_offset = 1 + class Computation(ComputationBase): def set_oper_params(self): - self.phases = 5 - self.belt_offset = 1 f = 50 # [Hz] RotSpeed = 60 * f / self.geometry.PolePairs # [rpm] w = 2 * np.pi * f diff --git a/motors/synrm_5f_60s.py b/motors/synrm_5f_60s.py index 8e6fe46..dad4504 100644 --- a/motors/synrm_5f_60s.py +++ b/motors/synrm_5f_60s.py @@ -7,8 +7,6 @@ import numpy as np from ansys.aedt.core import Maxwell2d -from machine_design.generic.winding import phase_groups - from .synrm_5f_40s import Computation as BaseComputation from .synrm_5f_40s import Geometry as BaseGeometry @@ -43,10 +41,7 @@ def assign_stator_coils(self, m2d: Maxwell2d) -> None: I_D = "Im1*cos(w*Time-216deg+epsI1-pi) + Im3*cos(3*(w*Time-216deg)+epsI3-pi)" I_E = "Im1*cos(w*Time-288deg+epsI1-pi) + Im3*cos(3*(w*Time-288deg)+epsI3-pi)" - Q = int(self.geometry.geom_params["SlotNumber"]) - p = self.geometry.PolePairs - # belt_offset=1 reproduces the 5-phase(40-slot) base winding. - groups = phase_groups(Q, p, 5, belt_offset=1) + groups = self.compute_phase_groups() for group in groups: for coil_name, polarity in group: