femagtools 1.8.16__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/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
- 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])), np.mean(np.unique(xy[:, -1]))
50
- ax.text(cx, cy, label, rotation=np.arctan2(cy, cx)/np.pi*180-90,
51
- horizontalalignment='center', verticalalignment='center')
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
- p.set_array(np.asarray(values)[valid_values])
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, ax=0):
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
- _contour(ax, f'Demagnetization at pos. {round(x/np.pi*180):.1f}°, '
170
- f'{isa.MAGN_TEMPERATURE} °C (max -{hmax:.1f} kA/m)',
171
- emag, hpol, '-H / kA/m', cmap, isa)
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, ax=0):
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, ax=0):
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)
@@ -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
- _ = femag(machine, simulation)
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.16
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=yW5kIvW8xbIRiQDkTT8Is4UgEjOhkX7Vqoytu45rvFc,1601
2
- femagtools/airgap.py,sha256=hELJXe52yUw82JwZ1tGUXUtRhMG2_WSUBVeGkTZSAM8,1900
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=rJ_n1Fvu8RcL-6LTH5o-lvV8pP0kpsqmx6RggsiJMhU,45013
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=ZugEzPnofsVb2ZLInEbjkjwEVzLL1dNTJtqSueaHc8A,14301
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=yZYgAKHsvK7QyY2-ijE3gSzXlE3vfuhD5dx7myyw434,1703
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=CpTMRBF8_AJmJMkkn-LgRv27U5xJ5Ohhd2ppRvESPNU,69757
56
- femagtools/dxfsl/areabuilder.py,sha256=6dfWryYjXzGIVDOsX2zb1VKIhUzmpL43XhF-wtdesAg,35882
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=PQ92kyRIxKWdrlVpNSvIq_Ska-RDMC26RVM1rluPVk0,40826
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
- femagtools/dxfsl/fslrenderer.py,sha256=gaHBJwqPt7fVz-fyphCb-xppmIFvu72zBpeB18eAvko,27826
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=bUa_5103OdNJTzEexYYPvMs9Kx1BSNbvWL9ekETWmI4,178082
66
+ femagtools/dxfsl/geom.py,sha256=Y32mfz7M4HYQdMwzrvmUyf86kfLZYtRzC6oHgf8LILs,185782
67
67
  femagtools/dxfsl/journal.py,sha256=r4z52av3k95MjwzypgUJpj8sSAeQoJsS81Uqs1IBLVw,4265
68
- femagtools/dxfsl/machine.py,sha256=_GmGQdrH7yCkRdCCdkm4yALHS1Gwof77zJOZbWtgRPo,57990
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=dXfZVIqT49nbMirY5YVaRPi8kNB8reaiq-eIbhw1Z54,43936
73
- femagtools/machine/__init__.py,sha256=xDY9QSUVL2Y17I4fq-nXsb5uMHCIxnCmGVIiL0fZZYE,7447
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=meQ3bsAORtmn1nMEUfJSiu4YsyfDE5PHc-YNaxnstU4,17093
75
+ femagtools/machine/effloss.py,sha256=lR-20LeKGgCW77x5vCzGjT9jXvqKmhf2YwbIeeNzqAI,17341
76
76
  femagtools/machine/im.py,sha256=5wYjsEQIiKR62M2M0rA8zmybWQDVjpoazXJPRKyQOvM,40331
77
- femagtools/machine/pm.py,sha256=hXG71o2TqTxqy-FRy1WoeSOT-KysOGeZlCCnaLfISuE,70026
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=qZfCIbm02ELH-RsenzqvjZuqRZ-U7OXQq85iOfZphwo,40671
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=EhW_YRgMZU4K1Az_XAK1XGG0JAtrDwmwZ6SHdvPi4-c,34085
90
- femagtools/plot/char.py,sha256=8eA1sEt-xKAqOZNlB6tx33DNXVsO3N7ius5KcV9lSv4,12771
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=OWmO8-WF303z5-zeBGkNJ8N09RJvH7sEYgOuK3LJaR8,11630
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.16.dist-info/licenses/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
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=BBaeypcFCpGZfJM52_rUIrA3uu17n4_IT1Y05W_caSA,12960
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.16.dist-info/METADATA,sha256=H9y1DOCVUWBJhZgyHDJa1Vqt9r7xHZg9rZUiWXUxEoQ,6213
226
- femagtools-1.8.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
227
- femagtools-1.8.16.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
228
- femagtools-1.8.16.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
229
- femagtools-1.8.16.dist-info/RECORD,,
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 0")
171
+ @pytest.mark.skip(reason="fixit: returns currently nan")
173
172
  def test_i1beta_char():
174
173
  m = dict(
175
174
  p=4,