femagtools 1.8.17__py3-none-any.whl → 1.8.19__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/bch.py +23 -6
- femagtools/dxfsl/area.py +35 -23
- femagtools/dxfsl/areabuilder.py +97 -58
- femagtools/dxfsl/converter.py +11 -1
- femagtools/dxfsl/fslrenderer.py +3 -0
- femagtools/dxfsl/geom.py +265 -63
- femagtools/dxfsl/machine.py +128 -9
- femagtools/dxfsl/symmetry.py +20 -5
- femagtools/femag.py +27 -16
- femagtools/isa7.py +25 -22
- femagtools/machine/__init__.py +3 -1
- femagtools/machine/effloss.py +18 -4
- femagtools/machine/pm.py +88 -74
- femagtools/machine/sm.py +32 -21
- femagtools/mcv.py +4 -1
- femagtools/plot/bch.py +3 -1
- femagtools/plot/char.py +5 -16
- femagtools/plot/nc.py +67 -34
- femagtools/shortcircuit.py +18 -10
- femagtools/templates/psi-torq-rem.mako +4 -4
- femagtools/templates/statorKS1.mako +43 -0
- femagtools/utils.py +5 -4
- {femagtools-1.8.17.dist-info → femagtools-1.8.19.dist-info}/METADATA +2 -2
- {femagtools-1.8.17.dist-info → femagtools-1.8.19.dist-info}/RECORD +31 -30
- tests/test_machine.py +1 -2
- {femagtools-1.8.17.dist-info → femagtools-1.8.19.dist-info}/WHEEL +0 -0
- {femagtools-1.8.17.dist-info → femagtools-1.8.19.dist-info}/entry_points.txt +0 -0
- {femagtools-1.8.17.dist-info → femagtools-1.8.19.dist-info}/licenses/LICENSE +0 -0
- {femagtools-1.8.17.dist-info → femagtools-1.8.19.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),
|
@@ -107,11 +108,11 @@ def shortcircuit(femag, machine, bch, simulation, engine=0):
|
|
107
108
|
bchsc.scData['demag'] = bchsc.demag
|
108
109
|
if simulation.get('sim_demagn', 0):
|
109
110
|
dd = {'displ': [d['displ']
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
111
|
+
for d in bchsc.demag if 'displ' in d],
|
112
|
+
'H_max': [d['H_max']
|
113
|
+
for d in bchsc.demag if 'H_max' in d],
|
114
|
+
'H_av': [d['H_av']
|
115
|
+
for d in bchsc.demag if 'H_av' in d]}
|
115
116
|
x1 = bchsc.demag[0]['current_1']
|
116
117
|
x2 = bchsc.demag[0]['current_2']
|
117
118
|
def func(phi):
|
@@ -120,6 +121,7 @@ def shortcircuit(femag, machine, bch, simulation, engine=0):
|
|
120
121
|
i1max = x1/np.cos(phi)
|
121
122
|
|
122
123
|
phirot = dd['displ'][0]/180*np.pi
|
124
|
+
logger.info("i1max %g phi %g phirot %g", i1max, phi, phirot)
|
123
125
|
bchsc.scData['demag'] = demag(
|
124
126
|
femag, machine, simulation,
|
125
127
|
i1max, phirot, phi, engine)
|
@@ -140,6 +142,8 @@ def shortcircuit(femag, machine, bch, simulation, engine=0):
|
|
140
142
|
simulation['i1max'] = 5*bch.machine['i1']
|
141
143
|
logger.info("2phase short circuit simulation i1max = %.0f",
|
142
144
|
simulation['i1max'])
|
145
|
+
if 'magn_temp' not in simulation:
|
146
|
+
simulation['magn_temp'] = bch.magnet.get('Tmag', 20)
|
143
147
|
scdata = shortcircuit_2phase(femag, machine, simulation, engine)
|
144
148
|
|
145
149
|
else:
|
@@ -193,7 +197,7 @@ def shortcircuit_2phase(femag, machine, simulation, engine=0):
|
|
193
197
|
else:
|
194
198
|
simulation.update(flux_sim)
|
195
199
|
simulation['curvec'] = i1vec.tolist()
|
196
|
-
results = femag(machine, simulation)
|
200
|
+
results = femag(machine, simulation, fslfile='2ph_shortcircuit.fsl')
|
197
201
|
class Task:
|
198
202
|
def __init__(self, workdir):
|
199
203
|
self.directory = workdir
|
@@ -316,7 +320,7 @@ def shortcircuit_2phase(femag, machine, simulation, engine=0):
|
|
316
320
|
# rotor position at maximum current:
|
317
321
|
trot = min(iav[0], iap[0])
|
318
322
|
phirot = wm*trot + phi0
|
319
|
-
logger.
|
323
|
+
logger.debug("phirot %.1f", phirot)
|
320
324
|
|
321
325
|
scData = {
|
322
326
|
'ia': ia.tolist(),
|
@@ -342,7 +346,7 @@ def demag(femag, machine, simulation, i1max, phirot, phi, engine=0):
|
|
342
346
|
"""demag simulation using psi-torq-rem-rot"""
|
343
347
|
logger.info("Demagnetization processing")
|
344
348
|
i1min = simulation.get('i1min', abs(i1max/3))
|
345
|
-
num_steps = 7
|
349
|
+
num_steps = simulation.get('num_demag_cur_steps', 7)
|
346
350
|
b = (i1min-abs(i1max))/np.log(i1min/abs(i1max))
|
347
351
|
a = abs(i1max)/b
|
348
352
|
xtab = np.linspace(i1min/abs(i1max),
|
@@ -362,9 +366,13 @@ def demag(femag, machine, simulation, i1max, phirot, phi, engine=0):
|
|
362
366
|
'phi': phirot,
|
363
367
|
'magntemp': simulation['Tmag'],
|
364
368
|
'curvec': curvec})
|
365
|
-
|
369
|
+
try:
|
370
|
+
del simulation['airgap_induc']
|
371
|
+
except KeyError:
|
372
|
+
pass
|
373
|
+
_ = femag(machine, simulation, fslfile='demag.fsl')
|
366
374
|
|
367
|
-
ptr = np.loadtxt(femag.workdir / "psi-torq-rem.dat")
|
375
|
+
ptr = np.loadtxt(pathlib.Path(femag.workdir) / "psi-torq-rem.dat")
|
368
376
|
i1 = np.concat(([0], np.max(ptr[:,1:4], axis=1)))
|
369
377
|
rr = np.concat(([1], ptr[:,-1]))
|
370
378
|
dmag = {'Hk': simulation['Hk'],
|
@@ -82,14 +82,14 @@ rotate({
|
|
82
82
|
mode = "save" -- save initial model state
|
83
83
|
})
|
84
84
|
|
85
|
+
rotate({angle=phi, mode="absolute"})
|
86
|
+
|
85
87
|
file_psi = io.open("psi-torq-rem.dat","w")
|
86
88
|
for i=1, #curvec do
|
87
|
-
print(string.format(" current: %d/%d %g, %g, %g\n",
|
88
|
-
i, #curvec, curvec[i][1], curvec[i][2], curvec[i][3]))
|
89
|
-
|
90
|
-
rotate({angle=phi, mode="absolute"})
|
91
89
|
psi, tq, rr = calc_flux_torq_rem(curvec[i])
|
92
90
|
|
91
|
+
print(string.format(" current: %d/%d %g, %g, %g torque %g rr %g\n",
|
92
|
+
i, #curvec, curvec[i][1], curvec[i][2], curvec[i][3], tq, rr))
|
93
93
|
file_psi:write(string.format("%g ", phi))
|
94
94
|
for k=1, 3 do
|
95
95
|
file_psi:write(string.format("%g ", curvec[i][k]))
|
@@ -0,0 +1,43 @@
|
|
1
|
+
|
2
|
+
m.yoke_diam = dy1
|
3
|
+
m.inside_diam = da1
|
4
|
+
|
5
|
+
m.wdg_location = -1 -- for gen_windings
|
6
|
+
|
7
|
+
m.slot_angle = ${model['slot_angle']*1e3}
|
8
|
+
m.slot_height = ${model['slot_height']*1e3}
|
9
|
+
m.slot_h1 = ${model['slot_h1']*1e3}
|
10
|
+
m.slot_h2 = ${model['slot_h2']*1e3}
|
11
|
+
m.slot_bk = ${model['slot_bk']*1e3}
|
12
|
+
m.slot_width = ${model['slot_width']*1e3}
|
13
|
+
m.slot_r1 = ${model['slot_r1']*1e3}
|
14
|
+
m.slot_r2 = ${model['slot_r2']*1e3}
|
15
|
+
m.middle_line = ${model.get('middle_line',0)}
|
16
|
+
m.tooth_width = ${model.get('tooth_width',0)*1e3}
|
17
|
+
m.slot_topwidth = ${model.get('slot_topwidth',0)*1e3}
|
18
|
+
|
19
|
+
m.zeroangl = ${model.get('zeroangle',0)}
|
20
|
+
m.rlength = ${model.get('rlength',1)*100}
|
21
|
+
|
22
|
+
% if model.get('ac_loss', False):
|
23
|
+
m.ac_loss = ${model.get('ac_loss', 6)}
|
24
|
+
% endif
|
25
|
+
m.mcvkey_yoke = mcvkey_yoke
|
26
|
+
|
27
|
+
pre_models("STATOR_KS1")
|
28
|
+
|
29
|
+
if mcvkey_teeth ~= nil then
|
30
|
+
if m.inside_diam > m.yoke_diam then
|
31
|
+
r = (m.inside_diam - m.slot_height)/2
|
32
|
+
else
|
33
|
+
r = (m.inside_diam + m.slot_height)/2
|
34
|
+
end
|
35
|
+
x0, y0 = pr2c(r, 2*math.pi/m.tot_num_slot + m.zeroangl/180*math.pi)
|
36
|
+
def_mat_fm_nlin(x0, y0, "blue", mcvkey_teeth, m.rlength)
|
37
|
+
end
|
38
|
+
|
39
|
+
%if model.get('thcond', 0) and model.get('thcap', 0):
|
40
|
+
stator_thcond = ${model.get('thcond', 24)}
|
41
|
+
stator_thcap = ${model.get('thcap', 480)}
|
42
|
+
stator_density = ${model.get('density', 7700)}
|
43
|
+
%endif
|
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.19
|
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,9 +1,9 @@
|
|
1
|
-
femagtools/__init__.py,sha256=
|
2
|
-
femagtools/airgap.py,sha256=
|
1
|
+
femagtools/__init__.py,sha256=k1SL4nzTdLCU7dFO7Qd0V59z23xi1pUBL0lTp770Lho,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
|
6
|
-
femagtools/bch.py,sha256=
|
6
|
+
femagtools/bch.py,sha256=RHdQreeO2KuJaAVTXy2OUOgPGyHMtLlnKqYjPnZJRuY,76757
|
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=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
|
@@ -24,13 +24,13 @@ femagtools/google.py,sha256=ugRyHY1zBjHR4aNfbA7GeF-ZU_NgleuVTZaWpi_XLT4,17144
|
|
24
24
|
femagtools/grid.py,sha256=s7LfKKLm2H4-cza2kSEANq6vwxq10Su3TJl3kHShHRA,1561
|
25
25
|
femagtools/heat_source_network.py,sha256=dz3nTK084SR2fyy1167wlpBlGrzv54OqCCGKPNWqpsU,16836
|
26
26
|
femagtools/hxy.py,sha256=PkiZ_-CRhtvtpkmLAP8iMtwvzh7CjKGGcAbOhFb4Nls,6275
|
27
|
-
femagtools/isa7.py,sha256=
|
27
|
+
femagtools/isa7.py,sha256=_bJzDLDTAt6qiXks5UF-xdTuuSjMebmSPiQvB6KJzdE,68552
|
28
28
|
femagtools/jhb.py,sha256=stJxkmzHpfUIBVcFw7jWbV5KN9_EFqzOCgacyhUqWvM,1779
|
29
29
|
femagtools/job.py,sha256=sh4yk8RVEFai7YDBMsVg19p9xEd6_sfyNX5WQSY7HEY,11726
|
30
30
|
femagtools/leakinduc.py,sha256=4IGZaV8S1ZG6L3hgZsCXqMsMNRH4F88l9EsvUjSXDSE,999
|
31
31
|
femagtools/losscoeffs.py,sha256=7B29VdEsmv8HSP749X3QBb_E-XN6Z9dvNleKiRLWaMI,7721
|
32
32
|
femagtools/magnet.py,sha256=Nuk060bT4Wa3lX74HdefqTTtUxLaERDSBYTTpbi6KP4,1093
|
33
|
-
femagtools/mcv.py,sha256=
|
33
|
+
femagtools/mcv.py,sha256=ICXXbF5KGUsi91HktYuxzKcII-i96aBXkJzNtwkLy1Q,48740
|
34
34
|
femagtools/me.py,sha256=z6RJkvSbgMmorCQTxKvq44uIYKh82uYYExjkNePJCmE,1813
|
35
35
|
femagtools/model.py,sha256=dk9x-iqRzgOTdTCeU_ynUZGb1bt4FvU1ZGMPXytMbUg,17965
|
36
36
|
femagtools/moproblem.py,sha256=kOP8pRdD8YXz28_M2WKnFgl3eeJ7tqg49ohoazsmUOg,2825
|
@@ -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=9wulzRQamfgbRdjH90eukqjuxOgO6UU2m97W7LkGFP8,14734
|
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=ccRBlD3IeZOW5oiu23ROhtfnpx1LpjQ_E7MbV_HoArU,70646
|
56
|
+
femagtools/dxfsl/areabuilder.py,sha256=H416_u2796F8nJwqa6EI2gCw-5Ay7cCpRRz3_39u42k,37916
|
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=LCzKF9dAKywJcjCPCavSM2jxilyO6R_kDMdctF4KRJE,41695
|
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
|
-
femagtools/dxfsl/fslrenderer.py,sha256=
|
64
|
+
femagtools/dxfsl/fslrenderer.py,sha256=L8qymxhrxDvNg9LLwAQgDXM1EU3yA1L3BoYpkenECEs,28005
|
65
65
|
femagtools/dxfsl/functions.py,sha256=1RFT2YPR_rTJSKtTqIoO8Z-s_kXKIp95zed83SM0gZg,12784
|
66
|
-
femagtools/dxfsl/geom.py,sha256=
|
66
|
+
femagtools/dxfsl/geom.py,sha256=d-HU4yV6j9RA8PeIvesMDvXBc4xIrKXphmBI2e3_QxA,186927
|
67
67
|
femagtools/dxfsl/journal.py,sha256=r4z52av3k95MjwzypgUJpj8sSAeQoJsS81Uqs1IBLVw,4265
|
68
|
-
femagtools/dxfsl/machine.py,sha256=
|
68
|
+
femagtools/dxfsl/machine.py,sha256=wtUqLAmq4Imd6uoPwrhZ5h0MCku3Mihrpqx7QycFYng,63062
|
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=RjJdy1J_9-_FEvdqdBtIjGjqF93NRzDfU5VS-z_6ARI,7557
|
74
74
|
femagtools/machine/afpm.py,sha256=_Ei1FMuoC1GiI0z90qnyuxNrefkmeRdtDZKm20glzNY,40711
|
75
|
-
femagtools/machine/effloss.py,sha256=
|
75
|
+
femagtools/machine/effloss.py,sha256=jNgo9OGOnLRoZ6Mw2Lf8xOpAQWOBxX5HH4F-WzPOW0A,17687
|
76
76
|
femagtools/machine/im.py,sha256=5wYjsEQIiKR62M2M0rA8zmybWQDVjpoazXJPRKyQOvM,40331
|
77
|
-
femagtools/machine/pm.py,sha256=
|
77
|
+
femagtools/machine/pm.py,sha256=fKKNsnUQkO9_zz3-SC9u9OCjw3hw7Lj4FImB4ZlHrWQ,71040
|
78
78
|
femagtools/machine/sizing.py,sha256=QO-k-UALmSPFNf8ajJPDnzKtlbkiAhX1DqWCRLr-H9k,32306
|
79
|
-
femagtools/machine/sm.py,sha256=
|
79
|
+
femagtools/machine/sm.py,sha256=SwidHYI-BEGiZQMm9rYTnIuqJN121RgIQ9QetYl3fic,41066
|
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
|
@@ -151,7 +151,7 @@ femagtools/templates/pm_sym_loss.mako,sha256=FNAvi_gmTXsGylrpi7lLKPoOOcNCV1mG6rc
|
|
151
151
|
femagtools/templates/prepare_thermal.mako,sha256=V3W6BGW7gjY8Lg2qzvGDi8rxx3JvPzrWoABDvHKyq54,9539
|
152
152
|
femagtools/templates/psd_psq_fast.mako,sha256=IOZx04JhVleAAbBOPWk9gEwDyT28z0zkF9tyEBteRPU,1428
|
153
153
|
femagtools/templates/psi-torq-rem-rot.mako,sha256=A1KOsYNSJhIJfumF-egnU-HUfNMPeX-XSPL_WsoE1Cw,3579
|
154
|
-
femagtools/templates/psi-torq-rem.mako,sha256=
|
154
|
+
femagtools/templates/psi-torq-rem.mako,sha256=2HnPoipTeb9I69ysvgidwdHR0DxBKPxr2W0YJEmwXoU,3121
|
155
155
|
femagtools/templates/psi-torq-rot.mako,sha256=_iT-IbgeC28wQzMVfi7uIN0cfp5pZ6d1mpLsoQrMx2c,2646
|
156
156
|
femagtools/templates/ring.mako,sha256=Cuc_FuCPWZM-g3TxHqzTdjknYEJSUgP-y64gp8pekDI,643
|
157
157
|
femagtools/templates/rot_hsm.mako,sha256=eh50TbpWNUALK9_7wOOJ7KPewHos7JExAfMACbPlXYc,973
|
@@ -166,13 +166,14 @@ femagtools/templates/stator2.mako,sha256=7Ae9sfaX7H4ummL6-g8iG42ArUvl6J809TW2tOd
|
|
166
166
|
femagtools/templates/stator3Linear.mako,sha256=pNe3C1wT0W2C0qePo3sEyebW1z_dpTuJzg0r5kf3JQY,760
|
167
167
|
femagtools/templates/stator4.mako,sha256=Jq8pfIuOmmpyGOL1z2aQZfbwMS5-Zyn6OGJ51LCBVKs,1179
|
168
168
|
femagtools/templates/statorBG.mako,sha256=fh0cVOZVWyLojlGxWJoFz2pvdL6Yxy4xzhY-Joc2xeg,893
|
169
|
+
femagtools/templates/statorKS1.mako,sha256=uqisqazTzopmhjUR8O660yIfsexqxj4ISHaNZIdwTSo,1285
|
169
170
|
femagtools/templates/statorRing.mako,sha256=_X8t9oAD_6SZ_MlLc450SkN4C6pH4dG5LS09D8bv9SE,2071
|
170
171
|
femagtools/templates/statorRotor3.mako,sha256=6ycHlkSnk-TKFdoxiOqjpr6Pk0l634w3_O94vvRP4BI,4357
|
171
172
|
femagtools/templates/stator_msh.mako,sha256=Neze1ielMCk7TrARyhOra91fFQVT8Phsgk2Omt_aMG8,1799
|
172
173
|
femagtools/templates/therm-dynamic.mako,sha256=pEz7jrUpopK1-RqgulNnrkSaCZDjfLelsVo6cBqmpac,3142
|
173
174
|
femagtools/templates/therm_static.mako,sha256=ulevp4AP-kZ1_qdScPMaX9tLqvvP0t9lFflWTXgUxaE,1310
|
174
175
|
femagtools/templates/torq_calc.mako,sha256=PH2IXg9ysi0w8N_8YB0IsE3rRj2VE2AYkGortQxFGfQ,2424
|
175
|
-
femagtools-1.8.
|
176
|
+
femagtools-1.8.19.dist-info/licenses/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
|
176
177
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
177
178
|
tests/test_afpm.py,sha256=ge5CXnVQ7E5gVViTI9hQOC0hHetBci18pY9prbUCAqU,16849
|
178
179
|
tests/test_airgap_induction.py,sha256=cmpy1og59oWEyCO4oF_zDuc1DUwCbdeebNL1ujpZza4,1065
|
@@ -194,7 +195,7 @@ tests/test_isa7.py,sha256=GJhRj2nncrUpNTIlM4jvG4kKZS7cK19hhQg9KbM3b5Q,3001
|
|
194
195
|
tests/test_jhb.py,sha256=aDzwr2ZaXlizrPnlLlcI_IT3OpSxuKu-FzBBkIALEDg,824
|
195
196
|
tests/test_job.py,sha256=1tCTPqd2LUeeVNuzC07lsPz4ffr0WAVX_BykyXQ2mZY,981
|
196
197
|
tests/test_losscoeffs.py,sha256=3EKmDFRuvn88z_8r0HxKFdB0lNXNnhEgaFshL8BkDjE,2012
|
197
|
-
tests/test_machine.py,sha256=
|
198
|
+
tests/test_machine.py,sha256=lSAAfi7CXroaj5T7d4szWWMP3f7fLiop8ioXrPO6C-o,12907
|
198
199
|
tests/test_magncurv.py,sha256=wPf1dNACZ1BkqKHSqJxiNi6Dq8JP3QCRBY4ql_0YCyU,2608
|
199
200
|
tests/test_magnet.py,sha256=BUHG_8SEi4d8j6yV9BSzcpYc2-UVMRFv50P_jgTTXoQ,276
|
200
201
|
tests/test_mcv.py,sha256=Vv51WU3WU0AkgcSpyujMdJ2KvSdLNsks5HGtY0pWMOY,4749
|
@@ -222,8 +223,8 @@ tests/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
222
223
|
tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
|
223
224
|
tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
|
224
225
|
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.
|
226
|
+
femagtools-1.8.19.dist-info/METADATA,sha256=t50AFbbiCAWPpTQ6fp1FO25ZkCOY1QJMUtN-WX2Lyu0,6221
|
227
|
+
femagtools-1.8.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
228
|
+
femagtools-1.8.19.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
|
229
|
+
femagtools-1.8.19.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
|
230
|
+
femagtools-1.8.19.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
|