femagtools 1.8.11__py3-none-any.whl → 1.8.12__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/fsl.py +1 -1
- femagtools/parstudy.py +8 -2
- femagtools/plot/bch.py +26 -10
- femagtools/shortcircuit.py +46 -48
- femagtools/templates/psi-torq-rem.mako +112 -0
- femagtools/templates/psi-torq-rot.mako +7 -0
- {femagtools-1.8.11.dist-info → femagtools-1.8.12.dist-info}/METADATA +1 -1
- {femagtools-1.8.11.dist-info → femagtools-1.8.12.dist-info}/RECORD +13 -12
- {femagtools-1.8.11.dist-info → femagtools-1.8.12.dist-info}/WHEEL +1 -1
- {femagtools-1.8.11.dist-info → femagtools-1.8.12.dist-info}/LICENSE +0 -0
- {femagtools-1.8.11.dist-info → femagtools-1.8.12.dist-info}/entry_points.txt +0 -0
- {femagtools-1.8.11.dist-info → femagtools-1.8.12.dist-info}/top_level.txt +0 -0
femagtools/__init__.py
CHANGED
femagtools/fsl.py
CHANGED
femagtools/parstudy.py
CHANGED
@@ -190,7 +190,10 @@ class ParameterStudy(object):
|
|
190
190
|
simulation['range_phi'] = 720/model.get('poles')
|
191
191
|
except AttributeError: # if dxf or pure fsl model
|
192
192
|
simulation['range_phi'] = 0.0
|
193
|
-
|
193
|
+
try:
|
194
|
+
simulation.update(model.winding)
|
195
|
+
except AttributeError:
|
196
|
+
pass
|
194
197
|
fea = femagtools.model.FeaModel(simulation)
|
195
198
|
|
196
199
|
prob = femagtools.moproblem.FemagMoProblem(decision_vars,
|
@@ -229,7 +232,10 @@ class ParameterStudy(object):
|
|
229
232
|
fea.poc.pole_pitch = 2*360/model.get('poles')
|
230
233
|
fea.pocfilename = fea.poc.filename()
|
231
234
|
if not hasattr(fea, 'pocfilename'):
|
232
|
-
|
235
|
+
try:
|
236
|
+
fea.pocfilename = f"{model.name}_{model.get('poles')}p.poc"
|
237
|
+
except AttributeError:
|
238
|
+
logger.warning("Missing number of poles")
|
233
239
|
elapsedTime = 0
|
234
240
|
self.bchmapper_data = [] # clear bch data
|
235
241
|
# split x value (par_range) array in handy chunks:
|
femagtools/plot/bch.py
CHANGED
@@ -527,20 +527,36 @@ def demagnetization(demag, ax=0):
|
|
527
527
|
i1 = [scale*x for x in demag['i1']]
|
528
528
|
ax.plot(i1, demag['rr'], 'o', color='C0')
|
529
529
|
ax.plot(i1, demag['rr'], color='C0')
|
530
|
-
rrmin = 0.6
|
530
|
+
rrmin = min(0.6, np.min(demag['rr']))
|
531
|
+
|
532
|
+
Imax = scale*abs(demag['i1max'])
|
533
|
+
demaglabels = [f'Imax = {Imax:.1f} {unit}']
|
531
534
|
if demag.get('i1c', 0):
|
532
535
|
Icrit = scale*demag['i1c']
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
536
|
+
ax.plot([Icrit, Icrit], [rrmin, 1], 'r:')
|
537
|
+
ax.text(Icrit, rrmin+0.15, 'Icrit', fontfamily='monospace',
|
538
|
+
rotation=90, size='large', ha='right', va='bottom')
|
539
|
+
demaglabels.append(f'Icrit = {Icrit:.1f} {unit}')
|
540
|
+
|
541
|
+
ax.plot([Imax, Imax], [rrmin, 1], 'g:')
|
542
|
+
ax.text(Imax, rrmin+0.05, 'Imax', fontfamily='monospace',
|
543
|
+
rotation=90, size='large', ha='right', va='bottom')
|
544
|
+
|
545
|
+
Hk = demag['Hk']
|
546
|
+
Tmag = demag['Tmag']
|
547
|
+
demaglabels += [f'Hk = {Hk:.1f} kA/m',
|
548
|
+
f'Tmag = {Tmag:.1f} °C']
|
549
|
+
|
550
|
+
ax.text(0, rrmin+0.05,
|
551
|
+
'\n'.join(demaglabels),
|
552
|
+
fontfamily='monospace',
|
553
|
+
ha='left', va='bottom', size='large',
|
542
554
|
bbox={'facecolor': 'white',
|
543
555
|
'edgecolor': 'white'})
|
556
|
+
|
557
|
+
#ax.annotate('Imax', xy=(Imax, demag['rr_i1max']), ha='center', va='bottom',
|
558
|
+
# xytext=(Imax, demag['rr_i1max']-0.1), rotation=90,
|
559
|
+
# arrowprops=dict(facecolor='green', edgecolor='green', shrink=0.05))
|
544
560
|
ax.set_ylim([rrmin, 1.01])
|
545
561
|
ax.set_ylabel('Rel. Remanence')
|
546
562
|
ax.set_xlabel(f'Phase Current / {unit}')
|
femagtools/shortcircuit.py
CHANGED
@@ -106,16 +106,19 @@ def shortcircuit(femag, machine, bch, simulation, engine=0):
|
|
106
106
|
encoding='latin1', errors='ignore'))
|
107
107
|
bchsc.scData['demag'] = bchsc.demag
|
108
108
|
if simulation.get('sim_demagn', 0):
|
109
|
-
|
109
|
+
dd = {'displ': [d['displ']
|
110
110
|
for d in bchsc.demag if 'displ' in d],
|
111
111
|
'H_max': [d['H_max']
|
112
112
|
for d in bchsc.demag if 'H_max' in d],
|
113
113
|
'H_av': [d['H_av']
|
114
114
|
for d in bchsc.demag if 'H_av' in d]}
|
115
|
-
|
115
|
+
i1max = bchsc.scData['iks']
|
116
|
+
if dd['displ']:
|
117
|
+
phi = dd['displ'][0]/180*np.pi
|
116
118
|
bchsc.scData['demag'] = demag(
|
117
|
-
femag, machine, simulation,
|
118
|
-
|
119
|
+
femag, machine, simulation,
|
120
|
+
i1max, phi, engine)
|
121
|
+
bchsc.scData['demag'].update(dd)
|
119
122
|
scdata = bchsc.scData
|
120
123
|
#for w in bch.flux:
|
121
124
|
# try:
|
@@ -129,7 +132,7 @@ def shortcircuit(femag, machine, bch, simulation, engine=0):
|
|
129
132
|
if simulation.get('sc_type', 3) == 2:
|
130
133
|
if 'i1max' not in simulation:
|
131
134
|
# just a wild guess
|
132
|
-
simulation['i1max'] =
|
135
|
+
simulation['i1max'] = 5*bch.machine['i1']
|
133
136
|
logger.info("2phase short circuit simulation i1max = %.0f",
|
134
137
|
simulation['i1max'])
|
135
138
|
scdata = shortcircuit_2phase(femag, machine, simulation, engine)
|
@@ -161,12 +164,13 @@ def shortcircuit_2phase(femag, machine, simulation, engine=0):
|
|
161
164
|
num_cur_steps = 4
|
162
165
|
i1 = np.linspace(0, i1max, num_cur_steps)
|
163
166
|
i1vec = np.concat((-i1[::-1], i1[1:]))
|
164
|
-
num_par_wdgs = machine['winding'].get('num_par_wdgs', 1)
|
165
167
|
flux_sim = {
|
166
168
|
'calculationMode': 'psi-torq-rot',
|
167
169
|
'i1max': i1max,
|
168
170
|
'curvec': [],
|
169
|
-
'
|
171
|
+
'magntemp': simulation['magn_temp'],
|
172
|
+
'fc_radius': simulation['fc_radius'],
|
173
|
+
'num_par_wdgs': simulation['num_par_wdgs']}
|
170
174
|
|
171
175
|
if engine:
|
172
176
|
parstudy = _parstudy_list(femag, sc_result_func)
|
@@ -304,6 +308,11 @@ def shortcircuit_2phase(femag, machine, simulation, engine=0):
|
|
304
308
|
logger.info("Torque %.1f %.1f %.1f (dphi %.4f)",
|
305
309
|
tp[1], tv[1], tc[1], dphi)
|
306
310
|
|
311
|
+
# rotor position at maximum current:
|
312
|
+
trot = min(iav[0], iap[0])
|
313
|
+
phi = wm*trot + phi0
|
314
|
+
logger.info("phi %.1f")
|
315
|
+
|
307
316
|
scData = {
|
308
317
|
'ia': ia.tolist(),
|
309
318
|
'ib': (-ia).tolist(),
|
@@ -316,63 +325,52 @@ def shortcircuit_2phase(femag, machine, simulation, engine=0):
|
|
316
325
|
'iks': iap[1] if iap[1] > abs(iav[1]) else iav[1],
|
317
326
|
'tks': tp[1] if tp[1] > abs(tv[1]) else tv[1]
|
318
327
|
}
|
319
|
-
scData['peakWindingCurrents'] = [scData['iks'],
|
320
|
-
-scData['iks'], 0]
|
328
|
+
scData['peakWindingCurrents'] = [float(scData['iks']),
|
329
|
+
-float(scData['iks']), 0]
|
321
330
|
if simulation.get('sim_demagn', 0):
|
322
|
-
|
331
|
+
i1max = iap[1] if iap[1] > abs(iav[1]) else iav[1]
|
332
|
+
scData['demag'] = demag(femag, machine, simulation,
|
333
|
+
i1max, phi, engine)
|
323
334
|
return scData
|
324
335
|
|
325
|
-
def
|
326
|
-
basedir = pathlib.Path(task.directory)
|
327
|
-
i1rr = []
|
328
|
-
for f in sorted(basedir.glob('psi-torq-rem-rot-*.dat')):
|
329
|
-
ptr = np.loadtxt(f)
|
330
|
-
i1rr.append((np.max(ptr.T[1:4]), np.min(ptr.T[-1])))
|
331
|
-
return i1rr
|
332
|
-
|
333
|
-
def demag(femag, machine, simulation, engine=0):
|
336
|
+
def demag(femag, machine, simulation, i1max, phi, engine=0):
|
334
337
|
"""demag simulation using psi-torq-rem-rot"""
|
335
338
|
logger.info("Demagnetization processing")
|
336
|
-
|
337
|
-
i1min = simulation.get('i1min', i1max/4)
|
339
|
+
i1min = simulation.get('i1min', abs(i1max/3))
|
338
340
|
num_steps = 7
|
339
|
-
b = (i1min-i1max)/np.log(i1min/i1max)
|
340
|
-
a = i1max/b
|
341
|
-
|
342
|
-
|
343
|
-
|
341
|
+
b = (i1min-abs(i1max))/np.log(i1min/abs(i1max))
|
342
|
+
a = abs(i1max)/b
|
343
|
+
xtab = np.linspace(i1min/abs(i1max),
|
344
|
+
1+2*(1-i1min/abs(i1max))/(num_steps-1), num_steps+2)
|
345
|
+
i1tab = b*(a+np.log(xtab))
|
344
346
|
|
345
347
|
if simulation.get('sc_type', 3) == 3:
|
346
348
|
curvec = [[-a/2, a, -a/2] for a in i1tab]
|
347
349
|
else:
|
348
|
-
|
350
|
+
if i1max > 0:
|
351
|
+
curvec = [[a, -a, 0] for a in i1tab]
|
352
|
+
else:
|
353
|
+
curvec = [[-a, a, 0] for a in i1tab]
|
349
354
|
simulation.update({
|
350
|
-
'calculationMode': 'psi-torq-rem
|
355
|
+
'calculationMode': 'psi-torq-rem',
|
356
|
+
'phi': phi,
|
357
|
+
'magntemp': simulation['Tmag'],
|
351
358
|
'curvec': curvec})
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
}
|
358
|
-
results = parstudy(parvardef, machine, simulation, engine)
|
359
|
-
i1rr = np.vstack(
|
360
|
-
((0, 1),
|
361
|
-
np.array(results['f']).reshape((-1, 2))))
|
362
|
-
else:
|
363
|
-
class Task:
|
364
|
-
def __init__(self, workdir):
|
365
|
-
self.directory = workdir
|
366
|
-
_ = femag(machine, simulation)
|
367
|
-
i1rr = np.vstack(
|
368
|
-
[(0, 1), dm_result_func(Task(femag.workdir))])
|
369
|
-
i1, rr = np.array(i1rr).T
|
359
|
+
_ = femag(machine, simulation)
|
360
|
+
|
361
|
+
ptr = np.loadtxt(femag.workdir / "psi-torq-rem.dat")
|
362
|
+
i1 = np.concat(([0], np.max(ptr[:,1:4], axis=1)))
|
363
|
+
rr = np.concat(([1], ptr[:,-1]))
|
370
364
|
dmag = {'Hk': simulation['Hk'],
|
371
365
|
'Tmag': simulation['Tmag'],
|
372
366
|
'i1': i1.tolist(),
|
367
|
+
'i1max': float(np.abs(i1max)),
|
373
368
|
'rr': rr.tolist()}
|
374
369
|
# critical current
|
375
370
|
if np.min(rr) < 0.99:
|
376
|
-
k = np.where(rr
|
377
|
-
dmag['i1c'] = i1[k]
|
371
|
+
k = np.where(np.diff(dmag['rr'])<-1e-3)[0][0]+1
|
372
|
+
dmag['i1c'] = float(i1[k])
|
373
|
+
if abs(i1max) < i1[-1]:
|
374
|
+
rrf = make_interp_spline(i1, rr)
|
375
|
+
dmag['rr_i1max'] = float(rrf(abs(i1max)))
|
378
376
|
return dmag
|
@@ -0,0 +1,112 @@
|
|
1
|
+
-- calculate flux linkages, torque, and rel remanence (magstatic mode)
|
2
|
+
--
|
3
|
+
-- model:
|
4
|
+
-- Hk (kA/m) knee point field strength
|
5
|
+
-- curvec (A) phase current amplitude samples (list of [ía, ib, ic])
|
6
|
+
-- num_par_wdgs (number of parallel winding groups, default 1)
|
7
|
+
-- fc_radius (m) radius of airgap center
|
8
|
+
--
|
9
|
+
-- creates file psi-torq-rem.dat in current directory with columns:
|
10
|
+
-- displ curr1 curr2 curr3 psi1 psi2 psi3 torq rrem
|
11
|
+
|
12
|
+
<%include file="magnet-data.mako"/>
|
13
|
+
|
14
|
+
function dmg(ek, Br, alfam, murm, Bd, Bq, Hd, Hq, alfahm, Hk)
|
15
|
+
if Hd < Hk then
|
16
|
+
muem = murm*4*math.pi*1e-7
|
17
|
+
Brn = Bd - Hk*1e3*muem
|
18
|
+
if Br < 1e-5 then
|
19
|
+
Brn = 1e-5
|
20
|
+
end
|
21
|
+
return Brn, alfam, 1
|
22
|
+
end
|
23
|
+
return Br, alfam, 1
|
24
|
+
end
|
25
|
+
|
26
|
+
function calc_flux_torq_rem(curvec)
|
27
|
+
for k=1,3 do
|
28
|
+
def_curr_wdg(k, curvec[k]/a, 0)
|
29
|
+
end
|
30
|
+
|
31
|
+
dRR = 0
|
32
|
+
RR = 0
|
33
|
+
maxit=m.num_nonl_it
|
34
|
+
maxcop=m.error_perm -- err_perm in %
|
35
|
+
permode='restore'
|
36
|
+
repeat
|
37
|
+
calc_field_single({
|
38
|
+
maxit=maxit, maxcop=maxcop, -- err_perm in %
|
39
|
+
permode=permode})
|
40
|
+
if(maxit > 1) then
|
41
|
+
maxit = 1
|
42
|
+
permode='actual'
|
43
|
+
maxcop = 0.05
|
44
|
+
end
|
45
|
+
stat, RR, dRR = calc_demag(5, Hk)
|
46
|
+
--printf("%g %g", RR, dRR)
|
47
|
+
until math.abs(dRR) < 1e-5
|
48
|
+
|
49
|
+
psi = {}
|
50
|
+
for k=1,3 do
|
51
|
+
psir, psii = flux_winding_wk(k)
|
52
|
+
psi[k] = {ksym*psir/a*m.arm_length, ksym*psii/a*m.arm_length}
|
53
|
+
end
|
54
|
+
|
55
|
+
fr, ft, tq, fx, fy = force_torque()
|
56
|
+
|
57
|
+
return psi, tq, RR
|
58
|
+
end
|
59
|
+
%if model.get('fc_radius', 0):
|
60
|
+
if m.fc_radius == nil then
|
61
|
+
m.fc_radius = ${model['fc_radius']*1e3}
|
62
|
+
end
|
63
|
+
%endif
|
64
|
+
%if type(model.get('curvec')[0]) is list:
|
65
|
+
curvec = {${','.join(['{'+','.join([str(x) for x in y])+'}' for y in model['curvec']])}} -- A
|
66
|
+
%else:
|
67
|
+
curvec = {{${','.join([str(x) for x in model['curvec']])}}} -- A
|
68
|
+
%endif
|
69
|
+
a=${model.get('num_par_wdgs', 1)} -- parallel branches
|
70
|
+
|
71
|
+
ksym = m.num_poles/m.npols_gen
|
72
|
+
|
73
|
+
-- HcB = Brem*tempcoefbr*(magn_temp-20)+1)/muerel/12.565e-7
|
74
|
+
-- Hcmin = HcJ*tempcoefhc*(magn_temp-20.0)+1)/HcB*1e2 -- limit of demagnetization in
|
75
|
+
Hk = ${model.get('Hk', -999)}
|
76
|
+
|
77
|
+
phi = ${model.get('phi', 0)}*180/math.pi
|
78
|
+
-- initialize rotate
|
79
|
+
rotate({
|
80
|
+
airgap = m.fc_radius, -- air gap radius
|
81
|
+
region = "inside", -- region to rotate
|
82
|
+
mode = "save" -- save initial model state
|
83
|
+
})
|
84
|
+
|
85
|
+
file_psi = io.open("psi-torq-rem.dat","w")
|
86
|
+
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
|
+
psi, tq, rr = calc_flux_torq_rem(curvec[i])
|
92
|
+
|
93
|
+
file_psi:write(string.format("%g ", phi))
|
94
|
+
for k=1, 3 do
|
95
|
+
file_psi:write(string.format("%g ", curvec[i][k]))
|
96
|
+
end
|
97
|
+
for k=1, 3 do
|
98
|
+
file_psi:write(string.format("%g ", psi[k][1]))
|
99
|
+
end
|
100
|
+
file_psi:write(string.format("%g ", tq))
|
101
|
+
file_psi:write(string.format("%g ", rr))
|
102
|
+
file_psi:write("\n")
|
103
|
+
|
104
|
+
% if model.get('plots', []):
|
105
|
+
if i == #curvec-2 then
|
106
|
+
<%include file="plots.mako"/>
|
107
|
+
end
|
108
|
+
% endif
|
109
|
+
end
|
110
|
+
|
111
|
+
rotate({mode = "reset"}) -- restore the initial state (discard any changes)
|
112
|
+
file_psi:close()
|
@@ -7,6 +7,8 @@
|
|
7
7
|
-- creates file psi-torq-rot.dat in current directory with columns:
|
8
8
|
-- displ curr1 curr2 curr3 psi1 psi2 psi3 torq
|
9
9
|
--
|
10
|
+
<%include file="magnet-data.mako"/>
|
11
|
+
|
10
12
|
function gcd(a, b)
|
11
13
|
return b==0 and a or gcd(b,a%b)
|
12
14
|
end
|
@@ -69,6 +71,11 @@ dphi = 360//gcd(Q1, p)/nrot
|
|
69
71
|
print(string.format(" rotation steps: %d current steps: %d\n", nrot, #curvec))
|
70
72
|
|
71
73
|
phi = 0
|
74
|
+
%if model.get('fc_radius', 0):
|
75
|
+
if m.fc_radius == nil then
|
76
|
+
m.fc_radius = ${model['fc_radius']*1e3}
|
77
|
+
end
|
78
|
+
%endif
|
72
79
|
-- initialize rotate
|
73
80
|
rotate({
|
74
81
|
airgap = m.fc_radius, -- air gap radius
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: femagtools
|
3
|
-
Version: 1.8.
|
3
|
+
Version: 1.8.12
|
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,4 +1,4 @@
|
|
1
|
-
femagtools/__init__.py,sha256=
|
1
|
+
femagtools/__init__.py,sha256=wRK12H26MLJW_1cDk2ngqCP1fJGYZOWzt-2ugf0c9ao,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
|
@@ -17,7 +17,7 @@ femagtools/ecloss.py,sha256=nES8mtXNFitmxDvKL5o39hZl6qu-HfR6kUh9eBA9zxQ,34660
|
|
17
17
|
femagtools/erg.py,sha256=IXKq76P9qLt_ssNOP78v8Qizk3J2Zg80yaKDSjzwoJE,1224
|
18
18
|
femagtools/femag.py,sha256=ScrZ9gbWQIy4eIhF0Wmi41lSFm7-WRtiLcJOvkITcHo,44864
|
19
19
|
femagtools/forcedens.py,sha256=7NNv75Vg9vQ_fy8W4kM2rlSO970zaSmeurhPmdAxsOU,8485
|
20
|
-
femagtools/fsl.py,sha256=
|
20
|
+
femagtools/fsl.py,sha256=J1V1Kr-PZpWbLegYMAvgfUabj1WZOji_-JR9mlf23gg,37043
|
21
21
|
femagtools/getset.py,sha256=yJ6Em35DeWK7WNZW0qjjS5s7LUkVh5mbgxF59HHm5FM,3017
|
22
22
|
femagtools/gmsh.py,sha256=IKhNiviIBji4cMxAhxaYXNqBRMNAPSKsBGdnGyxkyQw,3903
|
23
23
|
femagtools/google.py,sha256=ugRyHY1zBjHR4aNfbA7GeF-ZU_NgleuVTZaWpi_XLT4,17144
|
@@ -40,10 +40,10 @@ femagtools/nc.py,sha256=sKfFaeT8hPVUCb1axPIwfUVxuUsnrHygdfqiHv7G_YA,15216
|
|
40
40
|
femagtools/netlist.py,sha256=CSCl8setLZ_L8DCnNWaNA3-wLe1yo-fmzARZoVvYfaA,2052
|
41
41
|
femagtools/ntib.py,sha256=76g1ZO3Fq_kN-HTMBvaKvJmMMlJMyEPFeNAcJPq3w7Y,3099
|
42
42
|
femagtools/opt.py,sha256=wBU0yh3hZlNti_zfIvtKcPg1EJrnE3I1BqmVxLGWixU,8753
|
43
|
-
femagtools/parstudy.py,sha256=
|
43
|
+
femagtools/parstudy.py,sha256=kYUUX7wGggt5FEkH2jChl_BhAmKqBACCFYF_LN5mHeA,20045
|
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=B1gfxItKLv2qDgdHQkDWaSAAHsNwXdDD7Hu8mysIekY,14001
|
47
47
|
femagtools/tks.py,sha256=mDi45S5go9-jwALh6rS9RWPoOFBORZm0-XL4ECjSf_8,7531
|
48
48
|
femagtools/ts.py,sha256=x9aCMVASjdBZuyI2pJGMyi1dveGFd_pWQ20cZ-l_moc,47216
|
49
49
|
femagtools/utils.py,sha256=dJkQ5xsoVMzSEB5-2hEiwe2of9mLmsDo8nkrnSN-gPE,1643
|
@@ -86,7 +86,7 @@ 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=
|
89
|
+
femagtools/plot/bch.py,sha256=c2zSrtUyQWeKoxcJPGsuNvQ59veyXlvD-Fu4UBdmAyU,34078
|
90
90
|
femagtools/plot/char.py,sha256=xv4cNOTorK-fy7eUFhmyR-013TFI2A2999xXKgL2AnA,12469
|
91
91
|
femagtools/plot/fieldlines.py,sha256=_7ykKhnQLeS4fz34pnzovH1gIhcUSKJ3gl1GUgWYix8,1137
|
92
92
|
femagtools/plot/fluxdens.py,sha256=NlexRJ3f_8CgKoWrV82ZIsAXPrLhwj98uOe8_fUks7A,1082
|
@@ -151,7 +151,8 @@ 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-
|
154
|
+
femagtools/templates/psi-torq-rem.mako,sha256=N9AcWV0_c2jvZCr-LOW6QqDC7QIbZ-cVZ2fQ_Jw61KA,3099
|
155
|
+
femagtools/templates/psi-torq-rot.mako,sha256=_iT-IbgeC28wQzMVfi7uIN0cfp5pZ6d1mpLsoQrMx2c,2646
|
155
156
|
femagtools/templates/ring.mako,sha256=Cuc_FuCPWZM-g3TxHqzTdjknYEJSUgP-y64gp8pekDI,643
|
156
157
|
femagtools/templates/rot_hsm.mako,sha256=eh50TbpWNUALK9_7wOOJ7KPewHos7JExAfMACbPlXYc,973
|
157
158
|
femagtools/templates/rotorAsyn.mako,sha256=r_gce0oic24nPdI7BmERM1sokXpC5vvm8Sm0TIPb2zI,2280
|
@@ -220,9 +221,9 @@ tests/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
220
221
|
tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
|
221
222
|
tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
|
222
223
|
tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
|
223
|
-
femagtools-1.8.
|
224
|
-
femagtools-1.8.
|
225
|
-
femagtools-1.8.
|
226
|
-
femagtools-1.8.
|
227
|
-
femagtools-1.8.
|
228
|
-
femagtools-1.8.
|
224
|
+
femagtools-1.8.12.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
|
225
|
+
femagtools-1.8.12.dist-info/METADATA,sha256=Y7Cxd_Wdj5H25nX8oaFX9ZWBxCvupQPDWKZTnJc-nGM,6191
|
226
|
+
femagtools-1.8.12.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
|
227
|
+
femagtools-1.8.12.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
|
228
|
+
femagtools-1.8.12.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
|
229
|
+
femagtools-1.8.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|