femagtools 1.8.14__py3-none-any.whl → 1.8.15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- femagtools/__init__.py +1 -1
- femagtools/bch.py +6 -4
- femagtools/femag.py +6 -1
- femagtools/machine/afpm.py +12 -2
- femagtools/machine/effloss.py +1 -1
- femagtools/plot/wdg.py +26 -5
- femagtools/windings.py +32 -14
- {femagtools-1.8.14.dist-info → femagtools-1.8.15.dist-info}/METADATA +1 -1
- {femagtools-1.8.14.dist-info → femagtools-1.8.15.dist-info}/RECORD +14 -14
- {femagtools-1.8.14.dist-info → femagtools-1.8.15.dist-info}/WHEEL +1 -1
- tests/test_windings.py +11 -0
- {femagtools-1.8.14.dist-info → femagtools-1.8.15.dist-info}/entry_points.txt +0 -0
- {femagtools-1.8.14.dist-info → femagtools-1.8.15.dist-info}/licenses/LICENSE +0 -0
- {femagtools-1.8.14.dist-info → femagtools-1.8.15.dist-info}/top_level.txt +0 -0
femagtools/__init__.py
CHANGED
femagtools/bch.py
CHANGED
@@ -420,6 +420,11 @@ class Reader:
|
|
420
420
|
self.windings[w[0]]['N'].append(w[2])
|
421
421
|
self.windings[w[0]]['R'].append(w[3]/1e3)
|
422
422
|
self.windings[w[0]]['PHI'].append(w[4])
|
423
|
+
# check if external rotor
|
424
|
+
if hasattr(self, "machine"):
|
425
|
+
if "fc_radius" in self.machine:
|
426
|
+
if np.mean(self.windings[1]["R"]) < self.machine["fc_radius"]:
|
427
|
+
self.external_rotor = True
|
423
428
|
|
424
429
|
def __read_winding_factors(self, content):
|
425
430
|
"read winding factors section"
|
@@ -1202,10 +1207,7 @@ class Reader:
|
|
1202
1207
|
m = []
|
1203
1208
|
subregs = [name.split()[-1]
|
1204
1209
|
for name in content[2].split('\t') if name][2:]
|
1205
|
-
|
1206
|
-
if 'Iron' in subregs and \
|
1207
|
-
'Rotor' in subregs:
|
1208
|
-
self.external_rotor = True
|
1210
|
+
|
1209
1211
|
logger.info("Stator Subregions: %s", subregs)
|
1210
1212
|
speed = float(content[0].split()[-1])/60.
|
1211
1213
|
logger.info('losses for speed %f', speed)
|
femagtools/femag.py
CHANGED
@@ -153,7 +153,7 @@ class BaseFemag(object):
|
|
153
153
|
dest = dir if dir else self.workdir
|
154
154
|
if isinstance(feloss, (int, float)):
|
155
155
|
try:
|
156
|
-
feloss = {1: 'jordan', 11: 'bertotti'}[int(feloss)]
|
156
|
+
feloss = {1: 'jordan', 2: "steinmetz", 10:"modified steinmetz", 11: 'bertotti'}[int(feloss)]
|
157
157
|
except KeyError:
|
158
158
|
feloss = ''
|
159
159
|
return [self.magnetizingCurves.writefile(m[0], dest,
|
@@ -188,6 +188,11 @@ class BaseFemag(object):
|
|
188
188
|
recsin = simulation.get('recsin', '')
|
189
189
|
feloss = simulation.get('calc_fe_loss', '')
|
190
190
|
self.copy_magnetizing_curves(self.model, recsin=recsin, feloss=feloss)
|
191
|
+
|
192
|
+
if feloss and \
|
193
|
+
int(feloss) in (1, 2):
|
194
|
+
simulation["calc_fe_loss"] = 1
|
195
|
+
|
191
196
|
try:
|
192
197
|
if 'wdgdef' in self.model.winding:
|
193
198
|
self.model.winding['wdgfile'] = self.create_wdg_def(
|
femagtools/machine/afpm.py
CHANGED
@@ -213,6 +213,9 @@ def parident(workdir, engine, temp, machine,
|
|
213
213
|
if np.isscalar(machine['magnet'][slotmodel]['rel_magn_width']):
|
214
214
|
num_slices = kwargs.get('num_slices', 3)
|
215
215
|
rmagw = num_slices*[machine['magnet'][slotmodel]['rel_magn_width']]
|
216
|
+
elif len(machine['magnet'][slotmodel]['rel_magn_width']) == 1:
|
217
|
+
num_slices = kwargs.get('num_slices', 3)
|
218
|
+
rmagw = num_slices*machine['magnet'][slotmodel]['rel_magn_width']
|
216
219
|
else:
|
217
220
|
rmagw = machine['magnet'][slotmodel]['rel_magn_width']
|
218
221
|
num_slices = len(rmagw)
|
@@ -543,13 +546,18 @@ def process(lfe, pole_width, machine, bch):
|
|
543
546
|
nsegx = machine['magnet'].get('num_segments', 1)
|
544
547
|
if type(nsegx) == int:
|
545
548
|
nsegx = [nsegx]*len(bch)
|
549
|
+
elif len(nsegx) == 1 and len(nsegx) < len(bch):
|
550
|
+
nsegx = nsegx*len(bch)
|
551
|
+
else:
|
552
|
+
pass
|
546
553
|
for nx, b in zip(nsegx, bch):
|
547
554
|
pm = b['losses'][0]['magnet_data']
|
548
555
|
magloss = ecloss.MagnLoss(magnet_data=[pm])
|
549
556
|
ml = magloss.calc_losses_ialh2(nsegx=nx)
|
550
|
-
b[
|
557
|
+
b["losses"][-1].update({k: ml[0]})
|
551
558
|
else:
|
552
559
|
k = 'magnetJ'
|
560
|
+
|
553
561
|
if len(pole_width) > 1:
|
554
562
|
maglosses = _integrate1d(radius, scale_factor*np.array(
|
555
563
|
[b['losses'][-1][k]/lz
|
@@ -1025,7 +1033,9 @@ class AFPM:
|
|
1025
1033
|
machine['magnet'][slotmodel]['rel_magn_width'])
|
1026
1034
|
if np.isscalar(machine['magnet'][slotmodel]['rel_magn_width']):
|
1027
1035
|
rmagw = num_slices*[machine['magnet'][slotmodel]['rel_magn_width']]
|
1028
|
-
|
1036
|
+
elif len(machine['magnet'][slotmodel]['rel_magn_width']) == 1:
|
1037
|
+
rmagw = num_slices*machine['magnet'][slotmodel]['rel_magn_width']
|
1038
|
+
else:
|
1029
1039
|
rmagw = machine['magnet'][slotmodel]['rel_magn_width']
|
1030
1040
|
num_slices = len(rmagw)
|
1031
1041
|
|
femagtools/machine/effloss.py
CHANGED
@@ -370,7 +370,7 @@ def efficiency_losses_map(eecpars, u1, T, temp, n, npoints=(60, 40),
|
|
370
370
|
plfe1 = m.kpfe*m.iqd_plfe1(*iqd, f1)
|
371
371
|
plfe2 = m.kpfe*m.iqd_plfe2(*iqd, f1)
|
372
372
|
plmag = np.zeros_like(plfe2)
|
373
|
-
plcu1 = m.iqd_plcu1(iqd[0], iqd[1],
|
373
|
+
plcu1 = m.iqd_plcu1(iqd[0], iqd[1], f1)
|
374
374
|
try:
|
375
375
|
plcu1_dc = m.iqd_plcu1(iqd[0], iqd[1],
|
376
376
|
np.array([0.0 for i in f1])).tolist()
|
femagtools/plot/wdg.py
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
"""
|
8
8
|
import numpy as np
|
9
9
|
import matplotlib.pyplot as plt
|
10
|
+
import logging
|
10
11
|
|
11
12
|
|
12
13
|
def currdist(wdg, title='', k='all', phi=0, ax=0):
|
@@ -81,13 +82,13 @@ def mmf_fft(f, title='', mmfmin=1e-2, ax=0):
|
|
81
82
|
pass
|
82
83
|
|
83
84
|
|
84
|
-
def zoneplan(wdg, write_title=True,
|
85
|
+
def zoneplan(wdg, write_title=True, ax=0, max_slots=0):
|
85
86
|
"""plot zone plan of winding wdg"""
|
86
87
|
from matplotlib.patches import Rectangle
|
87
88
|
upper, lower = wdg.zoneplan()
|
88
89
|
Qb = len([n for l in upper for n in l])
|
89
90
|
if max_slots:
|
90
|
-
Qb = max_slots
|
91
|
+
Qb = min(max_slots, Qb)
|
91
92
|
from femagtools.windings import coil_color
|
92
93
|
h = 0.5
|
93
94
|
w = 1
|
@@ -171,7 +172,7 @@ def winding_factors(wdg, n=8, ax=0):
|
|
171
172
|
pass
|
172
173
|
|
173
174
|
|
174
|
-
def winding(wdg, ax=0):
|
175
|
+
def winding(wdg, ax=0, max_slots=0):
|
175
176
|
"""plot coils of windings wdg"""
|
176
177
|
from matplotlib.patches import Rectangle
|
177
178
|
from matplotlib.lines import Line2D
|
@@ -186,12 +187,16 @@ def winding(wdg, ax=0):
|
|
186
187
|
if ax == 0:
|
187
188
|
ax = plt.gca()
|
188
189
|
z = wdg.zoneplan()
|
190
|
+
z0 = z[0] if len(z[0]) >= len(z[1]) else z[1]
|
191
|
+
Qb = sum([len(l) for l in z0])
|
192
|
+
if max_slots:
|
193
|
+
Qb = min(max_slots, Qb)
|
189
194
|
xoff = 0
|
190
195
|
if z[-1]:
|
191
196
|
xoff = 0.75
|
192
197
|
yd = dslot*wdg.yd
|
193
198
|
mh = 2*coil_height/yd
|
194
|
-
slots = sorted([abs(n) for m in z[0] for n in m])
|
199
|
+
slots = sorted([abs(n) for m in z[0] for n in m])[:Qb]
|
195
200
|
smax = slots[-1]*dslot
|
196
201
|
for n in slots: # draw slots and lamination
|
197
202
|
x = n*dslot
|
@@ -204,6 +209,15 @@ def winding(wdg, ax=0):
|
|
204
209
|
backgroundcolor="white",
|
205
210
|
bbox=dict(boxstyle='circle,pad=0', fc="white", lw=0))
|
206
211
|
|
212
|
+
# colors in slots
|
213
|
+
csl = [['']*(Qb+1), ['']*(Qb+1)]
|
214
|
+
for i, layer in enumerate(z):
|
215
|
+
for m, mslots in enumerate(layer):
|
216
|
+
for k in mslots:
|
217
|
+
if abs(k) > Qb:
|
218
|
+
continue
|
219
|
+
csl[i][abs(k)-1] = coil_color[m]
|
220
|
+
|
207
221
|
nl = 2 if z[1] else 1
|
208
222
|
line_thickness = [0.6, 1.2]
|
209
223
|
for i, layer in enumerate(z):
|
@@ -213,8 +227,9 @@ def winding(wdg, ax=0):
|
|
213
227
|
d = 1
|
214
228
|
for m, mslots in enumerate(layer):
|
215
229
|
for k in mslots:
|
230
|
+
if abs(k) > Qb:
|
231
|
+
continue
|
216
232
|
x = abs(k) * dslot + b
|
217
|
-
kcoil = (abs(k)-1)//wdg.yd
|
218
233
|
xpoints = []
|
219
234
|
ypoints = []
|
220
235
|
if nl == 2:
|
@@ -224,6 +239,12 @@ def winding(wdg, ax=0):
|
|
224
239
|
d = 1 if i == 1 else 0
|
225
240
|
else:
|
226
241
|
d = 0 if k > 0 else 1
|
242
|
+
if abs(k) > 1:
|
243
|
+
if csl[0][abs(k)-2] == coil_color[m]:
|
244
|
+
d = 1
|
245
|
+
csl[0][abs(k)-1] = ''
|
246
|
+
else:
|
247
|
+
d = 0
|
227
248
|
|
228
249
|
if direction[d] == 'right':
|
229
250
|
# first layer, positive dir or neg. dir and 2-layers:
|
femagtools/windings.py
CHANGED
@@ -12,6 +12,12 @@
|
|
12
12
|
Number of coils per phase: c = Q * l/2/m
|
13
13
|
Number of parallel circuits (coil groups): g
|
14
14
|
Number of turns per phase: w1 = Q * n * l/2/m/g
|
15
|
+
|
16
|
+
Refs:
|
17
|
+
odd number of phases
|
18
|
+
doi:10.1007/s00502-021-00873-6
|
19
|
+
even number of phases
|
20
|
+
doi:10.1049/iet-epa.2020.0553
|
15
21
|
"""
|
16
22
|
import numpy as np
|
17
23
|
import femagtools.bch
|
@@ -131,8 +137,6 @@ def end_wdg_length_hairpins(wire_h, wire_w, wire_th, wire_gap,
|
|
131
137
|
|
132
138
|
|
133
139
|
class Winding(object):
|
134
|
-
# TODO: raise ValueError "Unbalanced winding" if Q % (m * gcd(Q, p)) != 0
|
135
|
-
|
136
140
|
def __init__(self, arg):
|
137
141
|
"""create winding either from bch winding section or winding dict()
|
138
142
|
|
@@ -199,15 +203,29 @@ class Winding(object):
|
|
199
203
|
coilwidth = self.yd
|
200
204
|
|
201
205
|
self.yd = coilwidth
|
206
|
+
if self.m % 2: # odd number of phases
|
207
|
+
q1, q2, Yk, Qb = q1q2yk(self.Q, self.p, self.m, self.l)
|
208
|
+
j = 2 if layers == 1 else 1
|
209
|
+
k1 = [(q1 + q2)*i for i in range(self.m)]
|
210
|
+
k2 = (q1*(self.m+1) + q2*(self.m-1))//2
|
211
|
+
pos = [[(j*Yk*(k + n)) % Qb
|
212
|
+
for n in range(q1)] for k in k1]
|
213
|
+
neg = [[j*Yk*(k + n + k2) % Qb
|
214
|
+
for n in range(q2)] for k in k1]
|
215
|
+
else: # even number of phases
|
216
|
+
if np.mod(self.Q, 4/self.l*self.m*np.gcd(self.Q, self.p)):
|
217
|
+
raise ValueError(
|
218
|
+
f"Unbalanced winding: Q={self.Q}, p={self.p}, m={self.m}")
|
219
|
+
t = np.gcd(self.Q, self.p)
|
220
|
+
Qb = self.Q//t
|
221
|
+
seq = np.array([i for j in range(Qb)
|
222
|
+
for i in range(Qb) if (j*self.p//t - i) % Qb == 0])
|
223
|
+
if self.l == 1:
|
224
|
+
seq = seq[::2]
|
225
|
+
seq = np.array(seq).reshape((-1, 6))
|
226
|
+
pos = seq[::2].T
|
227
|
+
neg = seq[1::2].T
|
202
228
|
|
203
|
-
q1, q2, Yk, Qb = q1q2yk(self.Q, self.p, self.m, self.l)
|
204
|
-
j = 2 if layers == 1 else 1
|
205
|
-
k1 = [(q1 + q2)*i for i in range(self.m)]
|
206
|
-
k2 = (q1*(self.m+1) + q2*(self.m-1))//2
|
207
|
-
pos = [[(j*Yk*(k + n)) % Qb
|
208
|
-
for n in range(q1)] for k in k1]
|
209
|
-
neg = [[j*Yk*(k + n + k2) % Qb
|
210
|
-
for n in range(q2)] for k in k1]
|
211
229
|
if self.l > 1:
|
212
230
|
slots = [sorted([(k, 1, 1)
|
213
231
|
for k in p] + [(k, -1, 1)
|
@@ -495,16 +513,16 @@ class Winding(object):
|
|
495
513
|
if not is_upper(r, s*taus - (x-taus/2))]
|
496
514
|
for key in self.windings]
|
497
515
|
|
498
|
-
z = ([[d*s for s, d in zip(u, ud)] for u, ud in zip(upper, udirs)],
|
499
|
-
[[d*s for s, d in zip(l, ld)] for l, ld in zip(lower, ldirs)])
|
516
|
+
z = ([[int(d*s) for s, d in zip(u, ud)] for u, ud in zip(upper, udirs)],
|
517
|
+
[[int(d*s) for s, d in zip(l, ld)] for l, ld in zip(lower, ldirs)])
|
500
518
|
# complete if not basic winding:
|
501
519
|
Qb = self.Q//num_basic_windings(self.Q, self.p, self.l)
|
502
520
|
|
503
521
|
if not np.asarray(upper).size or not np.asarray(lower).size:
|
504
522
|
layers = 1
|
505
523
|
if layers == 1 and z[1]:
|
506
|
-
z = ([[d*s for s, d in zip(l, ld)] for l, ld in zip(lower, ldirs)],
|
507
|
-
[[d*s for s, d in zip(u, ud)] for u, ud in zip(upper, udirs)])
|
524
|
+
z = ([[int(d*s) for s, d in zip(l, ld)] for l, ld in zip(lower, ldirs)],
|
525
|
+
[[int(d*s) for s, d in zip(u, ud)] for u, ud in zip(upper, udirs)])
|
508
526
|
|
509
527
|
if max([abs(n) for m in z[0] for n in m]) < Qb:
|
510
528
|
return [[k + [-n+Qb//2 if n < 0 else -(n+Qb//2) for n in k]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: femagtools
|
3
|
-
Version: 1.8.
|
3
|
+
Version: 1.8.15
|
4
4
|
Summary: Python API for FEMAG
|
5
5
|
Author-email: Ronald Tanner <tar@semafor.ch>, Dapu Zhang <dzhang@gtisoft.com>, Beat Holm <hob@semafor.ch>, Günther Amsler <amg@semafor.ch>, Nicolas Mauchle <mau@semafor.ch>
|
6
6
|
License: Copyright (c) 2016-2023, Semafor Informatik & Energie AG, Basel
|
@@ -1,9 +1,9 @@
|
|
1
|
-
femagtools/__init__.py,sha256=
|
1
|
+
femagtools/__init__.py,sha256=qICbWqrJVPMO4pvagU-k07Q0dkOXxLyKxNhgp6aGXYQ,1601
|
2
2
|
femagtools/airgap.py,sha256=hELJXe52yUw82JwZ1tGUXUtRhMG2_WSUBVeGkTZSAM8,1900
|
3
3
|
femagtools/amazon.py,sha256=O1ICuv21XDAJi1qK1Sigs2TdS6hDZP19OzvmE2t76wU,12069
|
4
4
|
femagtools/amela.py,sha256=2q-Xsj6i6nQ3iKheBR1vQ4FulJfF1i-L8w3a3U8GYWo,4362
|
5
5
|
femagtools/asm.py,sha256=CiL0KWaF4P7O6-VwmGLdva_icwmPrPiI-TFQ19XYTKk,7660
|
6
|
-
femagtools/bch.py,sha256=
|
6
|
+
femagtools/bch.py,sha256=e6kKyp4iaGb-GPMxwq5LgcyA0GQxteRJDfZsLZVfLyw,75732
|
7
7
|
femagtools/bchxml.py,sha256=KrRjAdrUPZXmiWvonu9HhpG_NvImMBpiXWTL4iSr4kE,3142
|
8
8
|
femagtools/condor.py,sha256=J8z9iBdvrGu3I1eFNoyKV8AXzRoTEPGLSak6cXUQxAM,10766
|
9
9
|
femagtools/conductor.py,sha256=rXO7c7Qh_s7JpgILmLd4IbG64vP6Eh143YF9u25Mdwg,1076
|
@@ -15,7 +15,7 @@ femagtools/dakotaout.py,sha256=6nn0PXsB40mPKiQLenqAtHy0KXCO7kvqqQ-aD2JhQvw,5573
|
|
15
15
|
femagtools/docker.py,sha256=XDVmLBB0z4sZZpcrx7Wbm84xl4ksj7aqn5-ZOPxdxm4,7460
|
16
16
|
femagtools/ecloss.py,sha256=3qwfb_9qpWw99asUDcQgdbP51VGXp4MlLQZDhywWHEk,35051
|
17
17
|
femagtools/erg.py,sha256=IXKq76P9qLt_ssNOP78v8Qizk3J2Zg80yaKDSjzwoJE,1224
|
18
|
-
femagtools/femag.py,sha256=
|
18
|
+
femagtools/femag.py,sha256=rJ_n1Fvu8RcL-6LTH5o-lvV8pP0kpsqmx6RggsiJMhU,45013
|
19
19
|
femagtools/forcedens.py,sha256=7NNv75Vg9vQ_fy8W4kM2rlSO970zaSmeurhPmdAxsOU,8485
|
20
20
|
femagtools/fsl.py,sha256=AWyc7mIgUL2tjqw_kmK22y-gZXhTzOccyhjJLwCqKcg,37736
|
21
21
|
femagtools/getset.py,sha256=yJ6Em35DeWK7WNZW0qjjS5s7LUkVh5mbgxF59HHm5FM,3017
|
@@ -49,7 +49,7 @@ femagtools/ts.py,sha256=yoYjpKrr_0b-tHfsX5azJEBXHUs9PN8P-SMhbjjRhCA,48381
|
|
49
49
|
femagtools/utils.py,sha256=yZYgAKHsvK7QyY2-ijE3gSzXlE3vfuhD5dx7myyw434,1703
|
50
50
|
femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
|
51
51
|
femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
|
52
|
-
femagtools/windings.py,sha256=
|
52
|
+
femagtools/windings.py,sha256=eGRoDbi9yruiWHqZysamBLPJefw8IQX3Lq4KpG4oIKo,28216
|
53
53
|
femagtools/zmq.py,sha256=62x5VRk0TMNER0-EZ8E28IdLKzsttlbxy1U_3wocNLc,9618
|
54
54
|
femagtools/dxfsl/__init__.py,sha256=MywcCdpKPKs4qJBJJgeDsikJFJ2P48dbTuNk303f5pM,76
|
55
55
|
femagtools/dxfsl/area.py,sha256=CpTMRBF8_AJmJMkkn-LgRv27U5xJ5Ohhd2ppRvESPNU,69757
|
@@ -71,8 +71,8 @@ femagtools/dxfsl/shape.py,sha256=uQqbgXIA2_KP2XRdhCfVfGWjcjwzhJ5t9RhiqR9R98c,616
|
|
71
71
|
femagtools/dxfsl/svgparser.py,sha256=RY2TU9MK6gOaNmI6w6RNqcw7H9YGmK-NUwvdylKBcsE,3763
|
72
72
|
femagtools/dxfsl/symmetry.py,sha256=dXfZVIqT49nbMirY5YVaRPi8kNB8reaiq-eIbhw1Z54,43936
|
73
73
|
femagtools/machine/__init__.py,sha256=xDY9QSUVL2Y17I4fq-nXsb5uMHCIxnCmGVIiL0fZZYE,7447
|
74
|
-
femagtools/machine/afpm.py,sha256=
|
75
|
-
femagtools/machine/effloss.py,sha256=
|
74
|
+
femagtools/machine/afpm.py,sha256=_Ei1FMuoC1GiI0z90qnyuxNrefkmeRdtDZKm20glzNY,40711
|
75
|
+
femagtools/machine/effloss.py,sha256=Mf_C6rFrVn5ku-3IJnyD07XfccHAcTk4wVotCzLKoiQ,16423
|
76
76
|
femagtools/machine/im.py,sha256=UeN1e0JTwsbaFjGhJFBmhwRDlgckNNf8_A69YmG6ABE,39545
|
77
77
|
femagtools/machine/pm.py,sha256=hXG71o2TqTxqy-FRy1WoeSOT-KysOGeZlCCnaLfISuE,70026
|
78
78
|
femagtools/machine/sizing.py,sha256=QO-k-UALmSPFNf8ajJPDnzKtlbkiAhX1DqWCRLr-H9k,32306
|
@@ -95,7 +95,7 @@ femagtools/plot/machine.py,sha256=fVLOZTc19Ru8eXLdtoTeIYsHRWhGLkn_YVZ6qO6KgrE,26
|
|
95
95
|
femagtools/plot/mcv.py,sha256=ijZg6KPwZC7sDxEzGEUfVWvDoSEfgcaH-hzQMt7E90I,3671
|
96
96
|
femagtools/plot/nc.py,sha256=E7_7WNG3MNrV4QPJJqng1nfuXf3ZbjAGeonthqQlMss,11349
|
97
97
|
femagtools/plot/phasor.py,sha256=5QG1GkXKVksc8P6Q4thKADf6W1l8rDKeArIHFYvbXlw,4858
|
98
|
-
femagtools/plot/wdg.py,sha256=
|
98
|
+
femagtools/plot/wdg.py,sha256=uTEtpW_xCXueGnkWx8fTQHruBiayw62AVTXkc9vz9iM,10536
|
99
99
|
femagtools/svgfsl/converter.py,sha256=5q4LognshXNTpUWLnU5rtgCfAwZnEuPzqsgyeRYC-VM,3019
|
100
100
|
femagtools/templates/FE-losses.mako,sha256=cfDlO11vWovz2muPLg9X2rgeHD9Ihaz8PRiz63MRr88,819
|
101
101
|
femagtools/templates/afm_rotor.mako,sha256=4yoEA4fOq9FRcwxOMRw1oX4Bs_jcrtyHOY6kHPYJ5MY,3175
|
@@ -172,7 +172,7 @@ femagtools/templates/stator_msh.mako,sha256=Neze1ielMCk7TrARyhOra91fFQVT8Phsgk2O
|
|
172
172
|
femagtools/templates/therm-dynamic.mako,sha256=pEz7jrUpopK1-RqgulNnrkSaCZDjfLelsVo6cBqmpac,3142
|
173
173
|
femagtools/templates/therm_static.mako,sha256=ulevp4AP-kZ1_qdScPMaX9tLqvvP0t9lFflWTXgUxaE,1310
|
174
174
|
femagtools/templates/torq_calc.mako,sha256=et6O9ZEkPMOYcaJVpYtH2u3aoU0iyhRCPkfN4ZLdjxA,2353
|
175
|
-
femagtools-1.8.
|
175
|
+
femagtools-1.8.15.dist-info/licenses/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
|
176
176
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
177
177
|
tests/test_afpm.py,sha256=ge5CXnVQ7E5gVViTI9hQOC0hHetBci18pY9prbUCAqU,16849
|
178
178
|
tests/test_airgap_induction.py,sha256=cmpy1og59oWEyCO4oF_zDuc1DUwCbdeebNL1ujpZza4,1065
|
@@ -211,7 +211,7 @@ tests/test_tksreader.py,sha256=8QtPAzxPJbkpxd1Nw2I7ggaTaKaL4WY55JJBHkZAzus,766
|
|
211
211
|
tests/test_ts.py,sha256=tR2x5cKU9gw2fUprzaPgPbCvmDOHDO36JUPCCoTlY7Y,1833
|
212
212
|
tests/test_vbfreader.py,sha256=-6oAhLJDb7K3Ui5O1mtHvbskawEfgyIH-Of5n-8u-fc,832
|
213
213
|
tests/test_vtu.py,sha256=pGpHuAcaCk5zDYTBBp_akOEenZOpq-IzGl_kaMtodyA,1469
|
214
|
-
tests/test_windings.py,sha256=
|
214
|
+
tests/test_windings.py,sha256=WKFabGC6-TpCnxXL9U91J84INK_ntkMMU1FZRuE7m6k,6142
|
215
215
|
tests/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
216
216
|
tests/engines/test_amazon.py,sha256=4uy36NIo0epi3CgjUm8vl4snLpr4NRvUoWi6Zew_zcE,2014
|
217
217
|
tests/engines/test_config.py,sha256=_I1Z5RuubgnOGQeZHjAsCsovt0WEMH0o4ILz032l_Bc,663
|
@@ -222,8 +222,8 @@ tests/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
222
222
|
tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
|
223
223
|
tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
|
224
224
|
tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
|
225
|
-
femagtools-1.8.
|
226
|
-
femagtools-1.8.
|
227
|
-
femagtools-1.8.
|
228
|
-
femagtools-1.8.
|
229
|
-
femagtools-1.8.
|
225
|
+
femagtools-1.8.15.dist-info/METADATA,sha256=tFQ51rVZ5aZLm_-o116EK8gTaOuPU3xOo2Km76rTi_k,6213
|
226
|
+
femagtools-1.8.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
227
|
+
femagtools-1.8.15.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
|
228
|
+
femagtools-1.8.15.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
|
229
|
+
femagtools-1.8.15.dist-info/RECORD,,
|
tests/test_windings.py
CHANGED
@@ -163,3 +163,14 @@ def test_zoneplan():
|
|
163
163
|
w = femagtools.windings.Winding(
|
164
164
|
{'Q': 60, 'p': 32, 'm': 3, 'l': 1})
|
165
165
|
assert [1, -2, 3, -4, 5, -6, -17, 18, -19, 20] == w.zoneplan()[0][0]
|
166
|
+
|
167
|
+
def test_zoneplan_6phase():
|
168
|
+
w = femagtools.windings.Winding(
|
169
|
+
{'Q': 24, 'p': 11, 'm': 6, 'l': 1})
|
170
|
+
assert [
|
171
|
+
[1, -2, -13, 14],
|
172
|
+
[-11, 12, 23, -24],
|
173
|
+
[-9, 10, 21, -22],
|
174
|
+
[-7, 8, 19, -20],
|
175
|
+
[-5, 6, 17, -18],
|
176
|
+
[-3, 4, 15, -16]] == w.zoneplan()[0]
|
File without changes
|
File without changes
|
File without changes
|