femagtools 1.8.17__py3-none-any.whl → 1.8.18__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/airgap.py +5 -1
- femagtools/dxfsl/area.py +35 -23
- femagtools/dxfsl/areabuilder.py +69 -46
- femagtools/dxfsl/converter.py +9 -1
- femagtools/dxfsl/geom.py +233 -56
- femagtools/dxfsl/machine.py +28 -8
- femagtools/dxfsl/symmetry.py +20 -5
- femagtools/femag.py +27 -16
- femagtools/machine/__init__.py +2 -0
- femagtools/machine/effloss.py +10 -4
- femagtools/machine/pm.py +72 -68
- femagtools/machine/sm.py +15 -15
- femagtools/plot/bch.py +3 -1
- femagtools/plot/char.py +5 -16
- femagtools/plot/nc.py +67 -34
- femagtools/shortcircuit.py +10 -3
- femagtools/utils.py +5 -4
- {femagtools-1.8.17.dist-info → femagtools-1.8.18.dist-info}/METADATA +2 -2
- {femagtools-1.8.17.dist-info → femagtools-1.8.18.dist-info}/RECORD +25 -25
- tests/test_machine.py +1 -2
- {femagtools-1.8.17.dist-info → femagtools-1.8.18.dist-info}/WHEEL +0 -0
- {femagtools-1.8.17.dist-info → femagtools-1.8.18.dist-info}/entry_points.txt +0 -0
- {femagtools-1.8.17.dist-info → femagtools-1.8.18.dist-info}/licenses/LICENSE +0 -0
- {femagtools-1.8.17.dist-info → femagtools-1.8.18.dist-info}/top_level.txt +0 -0
femagtools/plot/nc.py
CHANGED
@@ -37,18 +37,19 @@ def spel(isa, superelements=[], with_axis=False, with_wiredir=False, ax=0):
|
|
37
37
|
# draw wire direction
|
38
38
|
if se.subregion and with_wiredir:
|
39
39
|
if se.subregion.curdir != 0:
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
40
|
+
wkey = se.subregion.winding.key
|
41
|
+
if se.subregion.curdir < 0:
|
42
|
+
label = str(se.subregion.curdir*wkey)
|
43
|
+
else:
|
44
|
+
label = '+'+str(se.subregion.curdir*wkey)
|
45
|
+
|
46
|
+
xy = np.array([n.xy
|
47
|
+
for nc in se.nodechains
|
48
|
+
for n in nc.nodes])
|
49
|
+
cx, cy = (np.mean(np.unique(xy[:, 0])),
|
50
|
+
np.mean(np.unique(xy[:, -1])))
|
51
|
+
ax.text(cx, cy, label, rotation=np.arctan2(cy, cx)/np.pi*180-90,
|
52
|
+
horizontalalignment='center', verticalalignment='center')
|
52
53
|
except:
|
53
54
|
pass
|
54
55
|
ax.autoscale(enable=True)
|
@@ -86,7 +87,8 @@ def mesh(isa, with_axis=False, ax=0):
|
|
86
87
|
|
87
88
|
|
88
89
|
def _contour(ax, title, elements, values, label='',
|
89
|
-
cmap=DEFAULT_CMAP, isa=None, alpha=1
|
90
|
+
cmap=DEFAULT_CMAP, isa=None, alpha=1,
|
91
|
+
relminrange=0.05):
|
90
92
|
from matplotlib.patches import Polygon
|
91
93
|
from matplotlib.collections import PatchCollection
|
92
94
|
if ax == 0:
|
@@ -105,7 +107,15 @@ def _contour(ax, title, elements, values, label='',
|
|
105
107
|
patches = np.array([Polygon(xy) for xy in vertices])[valid_values]
|
106
108
|
p = PatchCollection(patches, match_original=False,
|
107
109
|
cmap=cmap, alpha=alpha)
|
108
|
-
|
110
|
+
z = values[valid_values]
|
111
|
+
clim = np.min(z), np.max(z)
|
112
|
+
n = np.max(np.abs(clim))
|
113
|
+
if not np.isclose(n, 0):
|
114
|
+
relrange = (clim[1]-clim[0])/n
|
115
|
+
if relrange < relminrange: # prevent strange color pattern
|
116
|
+
c = (clim[1]+clim[0])/2
|
117
|
+
p.set_clim([(1-relminrange)*c, (1+relminrange)*c])
|
118
|
+
p.set_array(z)
|
109
119
|
ax.add_collection(p)
|
110
120
|
cb = plt.colorbar(p, shrink=0.9)
|
111
121
|
|
@@ -118,7 +128,7 @@ def _contour(ax, title, elements, values, label='',
|
|
118
128
|
ax.axis('off')
|
119
129
|
|
120
130
|
|
121
|
-
def demag(isa, cmap=DEFAULT_CMAP, ax=0):
|
131
|
+
def demag(isa, cmap=DEFAULT_CMAP, relminrange=0.05, ax=0):
|
122
132
|
"""plot demag of NC/I7/ISA7 model
|
123
133
|
Args:
|
124
134
|
isa: Isa7/NC object
|
@@ -126,11 +136,12 @@ def demag(isa, cmap=DEFAULT_CMAP, ax=0):
|
|
126
136
|
emag = [e for e in isa.elements if e.is_magnet()]
|
127
137
|
demag = np.array([e.demagnetization(isa.MAGN_TEMPERATURE) for e in emag])
|
128
138
|
_contour(ax, f'Demagnetization at {isa.MAGN_TEMPERATURE} °C (max -{np.max(demag):.1f} kA/m)',
|
129
|
-
emag, demag, '-H / kA/m', cmap, isa
|
139
|
+
emag, demag, '-H / kA/m', cmap=cmap, isa=isa,
|
140
|
+
relminrange=relminrange)
|
130
141
|
logger.info("Max demagnetization %f", np.max(demag))
|
131
142
|
|
132
143
|
|
133
|
-
def remanence(isa, cmap=DEFAULT_CMAP, ax=0):
|
144
|
+
def remanence(isa, cmap=DEFAULT_CMAP, relminrange=0.05, ax=0):
|
134
145
|
"""plot remanence of NC/I7/ISA7 model
|
135
146
|
Args:
|
136
147
|
isa: Isa7/NC object
|
@@ -139,17 +150,20 @@ def remanence(isa, cmap=DEFAULT_CMAP, ax=0):
|
|
139
150
|
rem = np.linalg.norm([e.remanence(isa.MAGN_TEMPERATURE)
|
140
151
|
for e in emag], axis=1)
|
141
152
|
_contour(ax, f'Remanence at {isa.MAGN_TEMPERATURE} °C (min {np.min(rem):.1f} T)',
|
142
|
-
emag, rem, 'T', cmap, isa)
|
153
|
+
emag, rem, 'T', cmap=cmap, isa=isa, relminrange=relminrange)
|
143
154
|
logger.info("Min remanence %f", np.min(rem))
|
144
155
|
|
145
156
|
|
146
|
-
def demag_pos(isa, pos=-1, icur=-1, ibeta=-1, cmap=DEFAULT_CMAP,
|
157
|
+
def demag_pos(isa, pos=-1, icur=-1, ibeta=-1, cmap=DEFAULT_CMAP,
|
158
|
+
relminrange=0.05, ax=0):
|
147
159
|
"""plot demag of NC/I7/ISA7 model at rotor position
|
148
160
|
Args:
|
149
161
|
isa: Isa7/NC object
|
150
162
|
pos: rotor position in degree (maximum h if -1)
|
151
163
|
icur: cur amplitude index or last index if -1
|
152
164
|
ibeta: beta angle index or last index if -1
|
165
|
+
cmap: colormap
|
166
|
+
relminrange: rel minimum range for colorbar
|
153
167
|
"""
|
154
168
|
emag = [e for e in isa.elements if e.is_magnet()]
|
155
169
|
demag = np.array([isa.demagnetization(e, icur, ibeta)[1]
|
@@ -166,9 +180,12 @@ def demag_pos(isa, pos=-1, icur=-1, ibeta=-1, cmap=DEFAULT_CMAP, ax=0):
|
|
166
180
|
hpol = demag[:, i]
|
167
181
|
hmax = np.max(hpol)
|
168
182
|
hpol[hpol == 0] = np.nan
|
169
|
-
|
170
|
-
f'
|
171
|
-
|
183
|
+
isa.rotate(isa.pos_el_fe_induction[i])
|
184
|
+
_contour(ax, f'Demagnetization at pos. {round(x/np.pi*180, 1):.1f}°, '
|
185
|
+
f'{isa.MAGN_TEMPERATURE} °C (max -{hmax:.1f} kA/m)',
|
186
|
+
emag, hpol, '-H / kA/m', cmap=cmap, isa=isa,
|
187
|
+
relminrange=relminrange)
|
188
|
+
isa.rotate(0)
|
172
189
|
logger.info("Max demagnetization %f kA/m", np.nanmax(hpol))
|
173
190
|
|
174
191
|
|
@@ -185,7 +202,8 @@ def __elements_of_subreg(isa, subreg):
|
|
185
202
|
yield e
|
186
203
|
|
187
204
|
|
188
|
-
def flux_density(isa, subreg=[], cmap=DEFAULT_CMAP,
|
205
|
+
def flux_density(isa, subreg=[], cmap=DEFAULT_CMAP,
|
206
|
+
relminrange=0.05, ax=0):
|
189
207
|
"""plot flux density of NC/I7/ISA7 model
|
190
208
|
|
191
209
|
Args:
|
@@ -193,16 +211,18 @@ def flux_density(isa, subreg=[], cmap=DEFAULT_CMAP, ax=0):
|
|
193
211
|
subreg: list of subregion names (all if empty)
|
194
212
|
icur: cur index or last index if -1
|
195
213
|
ibeta: beta angle index or last index if -1
|
214
|
+
relminrange: rel minimum range for colorbar
|
196
215
|
"""
|
197
216
|
elements = [e for e in __elements_of_subreg(isa, subreg)]
|
198
217
|
fluxd = np.array([np.linalg.norm(e.flux_density()) for e in elements])
|
199
218
|
_contour(ax, f'Flux Density T (max {np.max(fluxd):.1f} T)',
|
200
|
-
elements, fluxd, '', cmap)
|
219
|
+
elements, fluxd, '', cmap=cmap, relminrange=relminrange)
|
201
220
|
logger.info("Max flux dens %f", np.max(fluxd))
|
202
221
|
|
203
222
|
|
204
223
|
def flux_density_eccentricity(isa, subreg=[], icur=-1, ibeta=-1,
|
205
|
-
cmap='plasma_r', ax=0, alpha=0.75
|
224
|
+
cmap='plasma_r', ax=0, alpha=0.75,
|
225
|
+
relminrange=0.05):
|
206
226
|
"""plot eccentricity (axis ratio) of flux density in lamination
|
207
227
|
|
208
228
|
Args:
|
@@ -210,6 +230,7 @@ def flux_density_eccentricity(isa, subreg=[], icur=-1, ibeta=-1,
|
|
210
230
|
subreg: list of subregion names (all if empty)
|
211
231
|
icur: cur amplitude index or last index if -1
|
212
232
|
ibeta: beta angle index or last index if -1
|
233
|
+
relminrange: rel minimum range for colorbar
|
213
234
|
"""
|
214
235
|
from ..utils import fft
|
215
236
|
elements = []
|
@@ -248,10 +269,12 @@ def flux_density_eccentricity(isa, subreg=[], icur=-1, ibeta=-1,
|
|
248
269
|
ecc.append(b/a) #np.sqrt(1-b**2/a**2))
|
249
270
|
|
250
271
|
_contour(ax, '', #'Eccentricity of Flux Density',
|
251
|
-
elements, ecc, 'axis ratio', cmap, alpha=alpha
|
272
|
+
elements, ecc, 'axis ratio', cmap=cmap, alpha=alpha,
|
273
|
+
relminrange=relminrange)
|
252
274
|
|
253
275
|
|
254
|
-
def flux_density_pos(isa, ipos, subreg=[], icur=-1, ibeta=-1, cmap=DEFAULT_CMAP,
|
276
|
+
def flux_density_pos(isa, ipos, subreg=[], icur=-1, ibeta=-1, cmap=DEFAULT_CMAP,
|
277
|
+
relminrange=0.05, ax=0):
|
255
278
|
"""plot flux density at rotor pos for each element of NC/I7/ISA7 model
|
256
279
|
|
257
280
|
Args:
|
@@ -259,7 +282,7 @@ def flux_density_pos(isa, ipos, subreg=[], icur=-1, ibeta=-1, cmap=DEFAULT_CMAP,
|
|
259
282
|
ipos: position index
|
260
283
|
icur: cur index or last index if -1
|
261
284
|
ibeta: beta angle index or last index if -1
|
262
|
-
|
285
|
+
relminrange: rel minimum range for colorbar
|
263
286
|
"""
|
264
287
|
elements = [e for e in __elements_of_subreg(isa, subreg)
|
265
288
|
if e not in isa.airgap_center_elements]
|
@@ -272,7 +295,7 @@ def flux_density_pos(isa, ipos, subreg=[], icur=-1, ibeta=-1, cmap=DEFAULT_CMAP,
|
|
272
295
|
pos = isa.pos_el_fe_induction[ipos]*180/np.pi
|
273
296
|
isa.rotate(isa.pos_el_fe_induction[ipos])
|
274
297
|
_contour(ax, f'Flux Density T at {pos:.1f}° (max {np.max(fluxd):.1f} T)',
|
275
|
-
elements, fluxd, '', cmap)
|
298
|
+
elements, fluxd, '', cmap=cmap, relminrange=relminrange)
|
276
299
|
logger.info("Max flux dens %f", np.max(fluxd))
|
277
300
|
isa.rotate(0)
|
278
301
|
|
@@ -282,6 +305,9 @@ def airgap_flux_density_pos(isa, ipos, icur=-1, ibeta=-1, ax=0):
|
|
282
305
|
|
283
306
|
Args:
|
284
307
|
isa: Isa7/NC object
|
308
|
+
ipos: index of rotor position
|
309
|
+
icur: index of current
|
310
|
+
ibeta: index of beta
|
285
311
|
"""
|
286
312
|
bx = []
|
287
313
|
by = []
|
@@ -300,21 +326,27 @@ def airgap_flux_density_pos(isa, ipos, icur=-1, ibeta=-1, ax=0):
|
|
300
326
|
logger.info("Max flux dens %f", np.max(np.abs(bx)))
|
301
327
|
|
302
328
|
|
303
|
-
def loss_density(isa, subreg=[], cmap=DEFAULT_CMAP, ax=0):
|
329
|
+
def loss_density(isa, subreg=[], cmap=DEFAULT_CMAP, relminrange=0.05, ax=0):
|
304
330
|
"""plot loss density of NC/I7/ISA7 model
|
305
331
|
|
306
332
|
Args:
|
307
333
|
isa: Isa7/NC object
|
334
|
+
subreg: array of subregions (all if empty)
|
335
|
+
cmap: color map
|
336
|
+
relminrange: rel minimum range for colorbar
|
308
337
|
"""
|
309
338
|
elements = [e for e in __elements_of_subreg(isa, subreg)]
|
310
339
|
lossd = np.array([e.loss_density*1e-3 for e in elements])
|
311
|
-
_contour(ax, 'Loss Density kW/m³', elements, lossd, '', cmap
|
340
|
+
_contour(ax, 'Loss Density kW/m³', elements, lossd, '', cmap=cmap,
|
341
|
+
relminrange=relminrange)
|
342
|
+
|
312
343
|
|
313
|
-
def temperature_distribution(isa, ax=0, cmap='plasma'):
|
344
|
+
def temperature_distribution(isa, ax=0, cmap='plasma', relminrange=0.05):
|
314
345
|
"""plot temperature distribution of NC/I7/ISA7 model
|
315
346
|
|
316
347
|
Args:
|
317
348
|
isa: Isa7/NC object
|
349
|
+
relminrange: rel minimum range for colorbar
|
318
350
|
"""
|
319
351
|
temp = []
|
320
352
|
elements = [e for e in isa.elements]
|
@@ -325,7 +357,8 @@ def temperature_distribution(isa, ax=0, cmap='plasma'):
|
|
325
357
|
tmp += n.vpot[-1]
|
326
358
|
ctr = ctr + 1
|
327
359
|
temp.append(tmp/ctr)
|
328
|
-
_contour(ax, 'Temperature in K', elements, temp, '', cmap
|
360
|
+
_contour(ax, 'Temperature in K', elements, temp, '', cmap=cmap,
|
361
|
+
relminrange=relminrange)
|
329
362
|
|
330
363
|
def punchdist(isa, cmap=DEFAULT_CMAP, ax=0):
|
331
364
|
"""plot punching border distances of NC/I7/ISA7 model
|
@@ -334,4 +367,4 @@ def punchdist(isa, cmap=DEFAULT_CMAP, ax=0):
|
|
334
367
|
"""
|
335
368
|
elam, pdist = isa.punchdist()
|
336
369
|
_contour(ax, 'Punching Border Distances / mm)',
|
337
|
-
elam, pdist*1e3, 'mm', cmap, isa)
|
370
|
+
elam, pdist*1e3, 'mm', cmap=cmap, isa=isa)
|
femagtools/shortcircuit.py
CHANGED
@@ -93,6 +93,7 @@ def shortcircuit(femag, machine, bch, simulation, engine=0):
|
|
93
93
|
builder = femagtools.fsl.Builder(femag.templatedirs)
|
94
94
|
fslcmds = (builder.open_model(femag.model) +
|
95
95
|
builder.create_shortcircuit(simulation))
|
96
|
+
# ['save_model("cont")'])
|
96
97
|
fslfile = 'shortcircuit.fsl'
|
97
98
|
(pathlib.Path(femag.workdir)/fslfile).write_text(
|
98
99
|
'\n'.join(fslcmds),
|
@@ -140,6 +141,8 @@ def shortcircuit(femag, machine, bch, simulation, engine=0):
|
|
140
141
|
simulation['i1max'] = 5*bch.machine['i1']
|
141
142
|
logger.info("2phase short circuit simulation i1max = %.0f",
|
142
143
|
simulation['i1max'])
|
144
|
+
if 'magn_temp' not in simulation:
|
145
|
+
simulation['magn_temp'] = bch.magnet.get('Tmag', 20)
|
143
146
|
scdata = shortcircuit_2phase(femag, machine, simulation, engine)
|
144
147
|
|
145
148
|
else:
|
@@ -193,7 +196,7 @@ def shortcircuit_2phase(femag, machine, simulation, engine=0):
|
|
193
196
|
else:
|
194
197
|
simulation.update(flux_sim)
|
195
198
|
simulation['curvec'] = i1vec.tolist()
|
196
|
-
results = femag(machine, simulation)
|
199
|
+
results = femag(machine, simulation, fslfile='2ph_shortcircuit.fsl')
|
197
200
|
class Task:
|
198
201
|
def __init__(self, workdir):
|
199
202
|
self.directory = workdir
|
@@ -362,9 +365,13 @@ def demag(femag, machine, simulation, i1max, phirot, phi, engine=0):
|
|
362
365
|
'phi': phirot,
|
363
366
|
'magntemp': simulation['Tmag'],
|
364
367
|
'curvec': curvec})
|
365
|
-
|
368
|
+
try:
|
369
|
+
del simulation['airgap_induc']
|
370
|
+
except KeyError:
|
371
|
+
pass
|
372
|
+
_ = femag(machine, simulation, fslfile='demag.fsl')
|
366
373
|
|
367
|
-
ptr = np.loadtxt(femag.workdir / "psi-torq-rem.dat")
|
374
|
+
ptr = np.loadtxt(pathlib.Path(femag.workdir) / "psi-torq-rem.dat")
|
368
375
|
i1 = np.concat(([0], np.max(ptr[:,1:4], axis=1)))
|
369
376
|
rr = np.concat(([1], ptr[:,-1]))
|
370
377
|
dmag = {'Hk': simulation['Hk'],
|
femagtools/utils.py
CHANGED
@@ -24,6 +24,8 @@ def fft(pos, y, pmod=0):
|
|
24
24
|
nypos = ~ypos
|
25
25
|
nzc = len(((ypos[:-1] & nypos[1:])
|
26
26
|
| (nypos[:-1] & ypos[1:])).nonzero()[0])
|
27
|
+
if np.isclose(y[0], 0, atol=1e-2):
|
28
|
+
nzc += 1
|
27
29
|
negative_periodic = nzc == 0 or nzc % 2 == 1
|
28
30
|
|
29
31
|
if negative_periodic:
|
@@ -36,13 +38,13 @@ def fft(pos, y, pmod=0):
|
|
36
38
|
|
37
39
|
N = len(yx)
|
38
40
|
# compute DFT from induction (eliminate DC offset)
|
39
|
-
a0 = np.mean(yx)
|
41
|
+
a0 = float(np.mean(yx))
|
40
42
|
Y = np.fft.fft(yx-a0)
|
41
43
|
|
42
44
|
# find the peak (amplitude of base harmonic)
|
43
45
|
i = np.argmax(np.abs(Y[:N//2]))
|
44
46
|
|
45
|
-
a = 2*np.abs(Y[i])/N
|
47
|
+
a = float(2*np.abs(Y[i])/N)
|
46
48
|
freq = np.fft.fftfreq(N, d=360/N)
|
47
49
|
nmax = min(18*ntiles, N//2)
|
48
50
|
T0 = 0
|
@@ -51,10 +53,9 @@ def fft(pos, y, pmod=0):
|
|
51
53
|
npoles = 2*int(360/T0)
|
52
54
|
nmax = min(9*npoles, N//2)
|
53
55
|
|
54
|
-
alfa0 = np.angle(Y[i])
|
56
|
+
alfa0 = float(np.angle(Y[i]))
|
55
57
|
alfa = np.angle(Y[:nmax])
|
56
58
|
|
57
|
-
|
58
59
|
return {'a': a, 'a0': a0, 'T0': T0, 'alfa0': alfa0,
|
59
60
|
'alfa': alfa,
|
60
61
|
'nue': (2*np.abs(Y[:nmax])/N).tolist(),
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: femagtools
|
3
|
-
Version: 1.8.
|
3
|
+
Version: 1.8.18
|
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
|
@@ -38,7 +38,7 @@ Requires-Python: >=3.7
|
|
38
38
|
Description-Content-Type: text/markdown
|
39
39
|
License-File: LICENSE
|
40
40
|
Requires-Dist: numpy
|
41
|
-
Requires-Dist: scipy
|
41
|
+
Requires-Dist: scipy<=1.14.1
|
42
42
|
Requires-Dist: mako
|
43
43
|
Requires-Dist: six
|
44
44
|
Requires-Dist: lmfit
|
@@ -1,5 +1,5 @@
|
|
1
|
-
femagtools/__init__.py,sha256=
|
2
|
-
femagtools/airgap.py,sha256=
|
1
|
+
femagtools/__init__.py,sha256=dnFwrc3_Cq8UXFY0_zaoeyPv_i-P_HnEkfOG-6Hwr4U,1601
|
2
|
+
femagtools/airgap.py,sha256=ROm4uhZjYiO0CxmFnpgiaNY9x3khlO8LBLmp5Yh5RLk,1973
|
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
|
@@ -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=v85KRdG-TAqGXl7QdHZnas8umAovl7gkHfucWfA4BeE,45576
|
19
19
|
femagtools/forcedens.py,sha256=7NNv75Vg9vQ_fy8W4kM2rlSO970zaSmeurhPmdAxsOU,8485
|
20
20
|
femagtools/fsl.py,sha256=JSalCD21wyYnlwwXeZjUfTca80RnYezrLvDcewlUH-Q,37976
|
21
21
|
femagtools/getset.py,sha256=yJ6Em35DeWK7WNZW0qjjS5s7LUkVh5mbgxF59HHm5FM,3017
|
@@ -43,40 +43,40 @@ femagtools/opt.py,sha256=wBU0yh3hZlNti_zfIvtKcPg1EJrnE3I1BqmVxLGWixU,8753
|
|
43
43
|
femagtools/parstudy.py,sha256=eHOcHHZAQMPnYwyQpnX9daZIMKhZZl8aDeEPXBgSS-k,20550
|
44
44
|
femagtools/poc.py,sha256=yPWmpi8Q2g7NmpAi2YV5ezyo0VUj67EK0tcX2wikerw,7207
|
45
45
|
femagtools/semi_fea.py,sha256=WZtYKrzhDruETyuEW2kpiNp9OaA7Hheq3qJiAIYtsjg,3475
|
46
|
-
femagtools/shortcircuit.py,sha256=
|
46
|
+
femagtools/shortcircuit.py,sha256=Yt-DqBAqR5r8xcOgECL-vYUYyJgLlgw0UEmfvfhE15o,14601
|
47
47
|
femagtools/tks.py,sha256=mDi45S5go9-jwALh6rS9RWPoOFBORZm0-XL4ECjSf_8,7531
|
48
48
|
femagtools/ts.py,sha256=yoYjpKrr_0b-tHfsX5azJEBXHUs9PN8P-SMhbjjRhCA,48381
|
49
|
-
femagtools/utils.py,sha256=
|
49
|
+
femagtools/utils.py,sha256=G9U-C8ULcdGq9Ix6VEtDZ9dw7hjJHBjG3Otlka4wmU0,1787
|
50
50
|
femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
|
51
51
|
femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
|
52
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
|
-
femagtools/dxfsl/area.py,sha256=
|
56
|
-
femagtools/dxfsl/areabuilder.py,sha256
|
55
|
+
femagtools/dxfsl/area.py,sha256=MRIta_2V5UhJdbKQa4KbyLJi6eTt86xLcPFTN91jlUk,70652
|
56
|
+
femagtools/dxfsl/areabuilder.py,sha256=-LqJivzrBEs8g825yMnTI0KJZuAVz075Y_iDag2hteA,36947
|
57
57
|
femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
|
58
58
|
femagtools/dxfsl/conv.py,sha256=rAG_r2twWtcZyLKe8L8gYcC-n-JMG-dK1iMmd9yviTQ,12237
|
59
|
-
femagtools/dxfsl/converter.py,sha256=
|
59
|
+
femagtools/dxfsl/converter.py,sha256=M9x4IjWRxamCFtLq5sag7-Lxanpn_7pioaBjsp4BudE,41577
|
60
60
|
femagtools/dxfsl/corner.py,sha256=-XPBcnEau-2-SRHLYzlBqCQGaFfgm_DH2qR1mSaFoAs,1311
|
61
61
|
femagtools/dxfsl/dumprenderer.py,sha256=n4AvInjvGIaC2iKZtQaYXXDyJVSQ3uEOFOLD4-xfKRY,1861
|
62
62
|
femagtools/dxfsl/dxfparser.py,sha256=kyXG0kZfNyOgn96MqBgP8RhOQhppfB5NbyRNNybs1C0,13451
|
63
63
|
femagtools/dxfsl/femparser.py,sha256=O8940Q1Mz8MKng6W8M3s9KfTvhDLJ56tfQWtZEW3xMM,2134
|
64
64
|
femagtools/dxfsl/fslrenderer.py,sha256=QwfR3i20ossNByfAtM7GyTz5yvcR3vnpL2T3-HOeebk,27855
|
65
65
|
femagtools/dxfsl/functions.py,sha256=1RFT2YPR_rTJSKtTqIoO8Z-s_kXKIp95zed83SM0gZg,12784
|
66
|
-
femagtools/dxfsl/geom.py,sha256=
|
66
|
+
femagtools/dxfsl/geom.py,sha256=Y32mfz7M4HYQdMwzrvmUyf86kfLZYtRzC6oHgf8LILs,185782
|
67
67
|
femagtools/dxfsl/journal.py,sha256=r4z52av3k95MjwzypgUJpj8sSAeQoJsS81Uqs1IBLVw,4265
|
68
|
-
femagtools/dxfsl/machine.py,sha256=
|
68
|
+
femagtools/dxfsl/machine.py,sha256=Dlz7NnHFUyiWq8pZiccCULdTPHLitnPW9xUY0hvVcK4,59131
|
69
69
|
femagtools/dxfsl/plotrenderer.py,sha256=q2cORuxJEf1Ws6oCY9c0gF6N3kDrcI6WOz3u5Vl6R_c,13823
|
70
70
|
femagtools/dxfsl/shape.py,sha256=uQqbgXIA2_KP2XRdhCfVfGWjcjwzhJ5t9RhiqR9R98c,61668
|
71
71
|
femagtools/dxfsl/svgparser.py,sha256=RY2TU9MK6gOaNmI6w6RNqcw7H9YGmK-NUwvdylKBcsE,3763
|
72
|
-
femagtools/dxfsl/symmetry.py,sha256=
|
73
|
-
femagtools/machine/__init__.py,sha256=
|
72
|
+
femagtools/dxfsl/symmetry.py,sha256=bGDSZhs6VOS-gp4C9eW0tjyMMec4BVFVZ0NpGXV3H0U,44660
|
73
|
+
femagtools/machine/__init__.py,sha256=V1u-O4vsA7K_ZqBINNl-uD9dcoyBkmh4wkH0czrFkMU,7538
|
74
74
|
femagtools/machine/afpm.py,sha256=_Ei1FMuoC1GiI0z90qnyuxNrefkmeRdtDZKm20glzNY,40711
|
75
|
-
femagtools/machine/effloss.py,sha256=
|
75
|
+
femagtools/machine/effloss.py,sha256=lR-20LeKGgCW77x5vCzGjT9jXvqKmhf2YwbIeeNzqAI,17341
|
76
76
|
femagtools/machine/im.py,sha256=5wYjsEQIiKR62M2M0rA8zmybWQDVjpoazXJPRKyQOvM,40331
|
77
|
-
femagtools/machine/pm.py,sha256=
|
77
|
+
femagtools/machine/pm.py,sha256=1ohA-jP1GES-HIzZ-LD0bmK1LxGGGpcgx5I6wm2m1Eo,70511
|
78
78
|
femagtools/machine/sizing.py,sha256=QO-k-UALmSPFNf8ajJPDnzKtlbkiAhX1DqWCRLr-H9k,32306
|
79
|
-
femagtools/machine/sm.py,sha256=
|
79
|
+
femagtools/machine/sm.py,sha256=pGWWvlm68p8ieNMnGZuyBU5ncfx2Huw7DwRvSyTwHmY,40698
|
80
80
|
femagtools/machine/utils.py,sha256=HRM9UHY0UwuBWyK2dAfwlPuvMkXYBVqHlmEsUIdSNJk,21694
|
81
81
|
femagtools/moo/__init__.py,sha256=zinmWEOrsEz6DmMX0Dbn4t6_1UR-p4bEGqyR1wUQk_Q,175
|
82
82
|
femagtools/moo/algorithm.py,sha256=e-Cgp2rp_hG9DXqWqluzQGNIWvCfthUgLD8O-aVPofA,5763
|
@@ -86,14 +86,14 @@ femagtools/moo/test/AlgorithmTest.py,sha256=KzR1og4bu6NOE61DDKjEMTQdsysmho4LCYmJ
|
|
86
86
|
femagtools/moo/test/PopulationTest.py,sha256=lG9NeWo0xrslfQRa4tgy1Nj23VJMFIlg_vQ9KUBYnRA,5529
|
87
87
|
femagtools/moo/test/ProblemTest.py,sha256=r5XEfY4LPscDb35TxxPd0lbP3nUmL6_G6vrRo1I3RSg,505
|
88
88
|
femagtools/plot/__init__.py,sha256=LFrHy_9L6FxJqhYND2z1534s3ebPXkfXVagFeNA1wWk,978
|
89
|
-
femagtools/plot/bch.py,sha256=
|
90
|
-
femagtools/plot/char.py,sha256=
|
89
|
+
femagtools/plot/bch.py,sha256=bd5HygPdwEfGN6QvqzYw20myCCWSbO9xIEImzbt4d6M,34137
|
90
|
+
femagtools/plot/char.py,sha256=XTRs25EKIrcQhUe_BQPwkYdaT8rnukPVjMOY5afj-08,12346
|
91
91
|
femagtools/plot/fieldlines.py,sha256=_7ykKhnQLeS4fz34pnzovH1gIhcUSKJ3gl1GUgWYix8,1137
|
92
92
|
femagtools/plot/fluxdens.py,sha256=NlexRJ3f_8CgKoWrV82ZIsAXPrLhwj98uOe8_fUks7A,1082
|
93
93
|
femagtools/plot/forcedens.py,sha256=Vloi9czy7qbGXI-Vm7Cow6IfHTsFhCLI1YWduFOR55c,4075
|
94
94
|
femagtools/plot/machine.py,sha256=fVLOZTc19Ru8eXLdtoTeIYsHRWhGLkn_YVZ6qO6KgrE,2654
|
95
95
|
femagtools/plot/mcv.py,sha256=ijZg6KPwZC7sDxEzGEUfVWvDoSEfgcaH-hzQMt7E90I,3671
|
96
|
-
femagtools/plot/nc.py,sha256=
|
96
|
+
femagtools/plot/nc.py,sha256=qNEKgxw9ChImHE1UzntYVJw9vB8-_kbrxiSiP5p_l1w,13080
|
97
97
|
femagtools/plot/phasor.py,sha256=5QG1GkXKVksc8P6Q4thKADf6W1l8rDKeArIHFYvbXlw,4858
|
98
98
|
femagtools/plot/wdg.py,sha256=uTEtpW_xCXueGnkWx8fTQHruBiayw62AVTXkc9vz9iM,10536
|
99
99
|
femagtools/svgfsl/converter.py,sha256=5q4LognshXNTpUWLnU5rtgCfAwZnEuPzqsgyeRYC-VM,3019
|
@@ -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=PH2IXg9ysi0w8N_8YB0IsE3rRj2VE2AYkGortQxFGfQ,2424
|
175
|
-
femagtools-1.8.
|
175
|
+
femagtools-1.8.18.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
|
@@ -194,7 +194,7 @@ tests/test_isa7.py,sha256=GJhRj2nncrUpNTIlM4jvG4kKZS7cK19hhQg9KbM3b5Q,3001
|
|
194
194
|
tests/test_jhb.py,sha256=aDzwr2ZaXlizrPnlLlcI_IT3OpSxuKu-FzBBkIALEDg,824
|
195
195
|
tests/test_job.py,sha256=1tCTPqd2LUeeVNuzC07lsPz4ffr0WAVX_BykyXQ2mZY,981
|
196
196
|
tests/test_losscoeffs.py,sha256=3EKmDFRuvn88z_8r0HxKFdB0lNXNnhEgaFshL8BkDjE,2012
|
197
|
-
tests/test_machine.py,sha256=
|
197
|
+
tests/test_machine.py,sha256=lSAAfi7CXroaj5T7d4szWWMP3f7fLiop8ioXrPO6C-o,12907
|
198
198
|
tests/test_magncurv.py,sha256=wPf1dNACZ1BkqKHSqJxiNi6Dq8JP3QCRBY4ql_0YCyU,2608
|
199
199
|
tests/test_magnet.py,sha256=BUHG_8SEi4d8j6yV9BSzcpYc2-UVMRFv50P_jgTTXoQ,276
|
200
200
|
tests/test_mcv.py,sha256=Vv51WU3WU0AkgcSpyujMdJ2KvSdLNsks5HGtY0pWMOY,4749
|
@@ -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.18.dist-info/METADATA,sha256=U9-02Wrkc6rrxUZbtE0hJcLIL5G885FBxrSfDt0Ng2I,6221
|
226
|
+
femagtools-1.8.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
227
|
+
femagtools-1.8.18.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
|
228
|
+
femagtools-1.8.18.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
|
229
|
+
femagtools-1.8.18.dist-info/RECORD,,
|
tests/test_machine.py
CHANGED
@@ -140,7 +140,6 @@ def test_char_psid_array():
|
|
140
140
|
assert r['beta'][0] == pytest.approx(-38.01, rel=1e-1)
|
141
141
|
assert r['cosphi'][0] == pytest.approx(0.788, rel=1e-1)
|
142
142
|
|
143
|
-
@pytest.mark.skip(reason="fixit: returns currently 0")
|
144
143
|
def test_char_ldd_fieldweakening():
|
145
144
|
m = dict(
|
146
145
|
p=6,
|
@@ -169,7 +168,7 @@ def test_char_ldd_fieldweakening():
|
|
169
168
|
assert r['beta'][0] == pytest.approx(-30.0, rel=1e-1)
|
170
169
|
assert r['cosphi'][0] == pytest.approx(0.729, rel=1e-1)
|
171
170
|
|
172
|
-
@pytest.mark.skip(reason="fixit: returns currently
|
171
|
+
@pytest.mark.skip(reason="fixit: returns currently nan")
|
173
172
|
def test_i1beta_char():
|
174
173
|
m = dict(
|
175
174
|
p=4,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|