femagtools 1.8.7__py3-none-any.whl → 1.8.8__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 +2 -2
- femagtools/amela.py +18 -286
- femagtools/ecloss.py +121 -105
- femagtools/femag.py +5 -3
- femagtools/fsl.py +5 -5
- femagtools/isa7.py +134 -14
- femagtools/leakinduc.py +63 -0
- femagtools/machine/afpm.py +125 -56
- femagtools/machine/effloss.py +13 -1
- femagtools/mcv.py +26 -17
- femagtools/nc.py +16 -14
- femagtools/templates/psi-torq-rot.mako +98 -0
- femagtools/tks.py +1 -1
- femagtools/windings.py +65 -0
- {femagtools-1.8.7.dist-info → femagtools-1.8.8.dist-info}/METADATA +1 -1
- {femagtools-1.8.7.dist-info → femagtools-1.8.8.dist-info}/RECORD +24 -22
- {femagtools-1.8.7.dist-info → femagtools-1.8.8.dist-info}/WHEEL +1 -1
- tests/test_afpm.py +2 -2
- tests/test_amela.py +1 -3
- tests/test_fsl.py +4 -4
- tests/test_nc.py +1 -2
- {femagtools-1.8.7.dist-info → femagtools-1.8.8.dist-info}/LICENSE +0 -0
- {femagtools-1.8.7.dist-info → femagtools-1.8.8.dist-info}/entry_points.txt +0 -0
- {femagtools-1.8.7.dist-info → femagtools-1.8.8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,98 @@
|
|
1
|
+
-- calculate flux linkages and torque (magstatic mode)
|
2
|
+
--
|
3
|
+
-- model:
|
4
|
+
-- curvec (A) current samples (amplitudes)
|
5
|
+
-- num_par_wdgs (number of parallel winding groups, default 1)
|
6
|
+
--
|
7
|
+
-- creates file psi-torq-rot.dat in current directory with columns:
|
8
|
+
-- displ curr1 curr2 curr3 psi1 psi2 psi3 torq
|
9
|
+
--
|
10
|
+
function gcd(a, b)
|
11
|
+
return b==0 and a or gcd(b,a%b)
|
12
|
+
end
|
13
|
+
|
14
|
+
function calc_flux_torq(phi, curvec)
|
15
|
+
psivec={}
|
16
|
+
tqvec={}
|
17
|
+
for i=1, #curvec do
|
18
|
+
for k=1,3 do
|
19
|
+
def_curr_wdg(k, curvec[i][k], 0)
|
20
|
+
end
|
21
|
+
|
22
|
+
calc_field_single({
|
23
|
+
maxit=m.num_nonl_it, maxcop=m.error_perm, -- err_perm in %
|
24
|
+
permode='restore'})
|
25
|
+
psi = {}
|
26
|
+
for k=1,3 do
|
27
|
+
psir, psii = flux_winding_wk(k)
|
28
|
+
psi[k] = {ksym*psir/a*m.arm_length, ksym*psii/a*m.arm_length}
|
29
|
+
end
|
30
|
+
|
31
|
+
fr, ft, tq, fx, fy = force_torque()
|
32
|
+
tqvec[i] = tq
|
33
|
+
psivec[i] = psi
|
34
|
+
end
|
35
|
+
return psivec, tqvec
|
36
|
+
end
|
37
|
+
|
38
|
+
%if type(model['curvec']) is list:
|
39
|
+
curamp = {${','.join([str(x) for x in model['curvec']])}} -- A
|
40
|
+
% else:
|
41
|
+
curamp = {${model['curvec']}} -- A
|
42
|
+
% endif
|
43
|
+
a=${model.get('num_par_wdgs', 1)} -- parallel branches
|
44
|
+
|
45
|
+
curvec = {}
|
46
|
+
for i=1, #curamp do
|
47
|
+
amp = curamp[i]/a
|
48
|
+
curvec[i] = {amp, -amp, 0}
|
49
|
+
end
|
50
|
+
|
51
|
+
ksym = m.num_poles/m.npols_gen
|
52
|
+
|
53
|
+
if num_agnodes ~= nil then
|
54
|
+
dphi = 360/num_agnodes -- ndst[2] -- deg
|
55
|
+
else
|
56
|
+
post_models("nodedistance", "ndst" )
|
57
|
+
dphi = ndst[2] -- deg
|
58
|
+
end
|
59
|
+
nodes = math.floor(360/m.num_poles/dphi+0.5)
|
60
|
+
printf("Nodes in airgap total %g, Nodes per pole: %d", 360/dphi, nodes)
|
61
|
+
-- find a valid number of steps for a rotation:
|
62
|
+
nrot = nodes
|
63
|
+
while( nrot%2) == 0 do
|
64
|
+
nrot = nrot//2
|
65
|
+
end
|
66
|
+
Q1 = get_dev_data("num_slots")
|
67
|
+
p = m.num_poles//2
|
68
|
+
dphi = 360//gcd(Q1, p)/nrot
|
69
|
+
print(string.format(" rotation steps: %d current steps: %d\n", nrot, #curvec))
|
70
|
+
|
71
|
+
phi = 0
|
72
|
+
-- initialize rotate
|
73
|
+
rotate({
|
74
|
+
airgap = m.fc_radius, -- air gap radius
|
75
|
+
region = "inside", -- region to rotate
|
76
|
+
mode = "save" -- save initial model state
|
77
|
+
})
|
78
|
+
|
79
|
+
file_psi = io.open("psi-torq-rot.dat","w")
|
80
|
+
for n=1,nrot+1 do
|
81
|
+
psi, tq = calc_flux_torq(phi, curvec)
|
82
|
+
for i=1, #curvec do
|
83
|
+
file_psi:write(string.format("%g ", phi))
|
84
|
+
for k=1, 3 do
|
85
|
+
file_psi:write(string.format("%g ", a*curvec[i][k]))
|
86
|
+
end
|
87
|
+
for k=1, 3 do
|
88
|
+
file_psi:write(string.format("%g ", psi[i][k][1]))
|
89
|
+
end
|
90
|
+
file_psi:write(string.format("%g ", tq[i]))
|
91
|
+
file_psi:write("\n")
|
92
|
+
end
|
93
|
+
|
94
|
+
phi = n*dphi
|
95
|
+
rotate({angle=phi, mode="absolute"})
|
96
|
+
end
|
97
|
+
rotate({mode = "reset"}) -- restore the initial state (discard any changes)
|
98
|
+
file_psi:close()
|
femagtools/tks.py
CHANGED
femagtools/windings.py
CHANGED
@@ -46,6 +46,71 @@ def q1q2yk(Q, p, m, l=1):
|
|
46
46
|
Yk = (n*qbb + 1)//pb
|
47
47
|
return q1, q2, Yk, Qb
|
48
48
|
|
49
|
+
def end_wdg_length_round_wires(layers, Rp, Rb, r_wire, h, coil_span, Q, bore_diam, slot_h1, slot_height):
|
50
|
+
'''return length of a single winding head for 1 coil turn.
|
51
|
+
Multiply by 2 to get length for both winding heads'''
|
52
|
+
if layers == 2:
|
53
|
+
R_inner_lyr = bore_diam/2 + slot_h1 + slot_height/4
|
54
|
+
R_outer_lyr = bore_diam/2 + slot_h1 + 3*slot_height/4
|
55
|
+
elif layers == 1:
|
56
|
+
R_inner_lyr = bore_diam/2 + slot_h1 + slot_height/2
|
57
|
+
R_outer_lyr = bore_diam/2 + slot_h1 + slot_height/2
|
58
|
+
else:
|
59
|
+
raise ValueError("Round wire windings can only have 1 or 2 layers")
|
60
|
+
|
61
|
+
if Rb < 2*r_wire:
|
62
|
+
Rb = 2*r_wire
|
63
|
+
if Rp < R_outer_lyr + 2*(Rb + r_wire):
|
64
|
+
Rp = R_outer_lyr + 2*(Rb + r_wire) + 1e-5
|
65
|
+
if h < 2*(Rb + r_wire):
|
66
|
+
h = 2*(Rb + r_wire) + 0.002
|
67
|
+
|
68
|
+
l = np.pi*coil_span/Q * (Rp + R_inner_lyr)
|
69
|
+
z = Rp - R_outer_lyr - 2*(Rb + r_wire)
|
70
|
+
l_ew = 2*h + l + z + (Rb + r_wire)*(np.pi - 2)
|
71
|
+
return l_ew, h, Rp, Rb
|
72
|
+
|
73
|
+
def end_wdg_hairpin_check(alpha, h, dmin, l_h, wire_w, tooth_wmin):
|
74
|
+
alpha = alpha*np.pi/180 # ensure alpha is in radians
|
75
|
+
if alpha == 0 and h == 0: # end wdg parameters not set
|
76
|
+
alpha = np.arcsin((dmin + wire_w)/(tooth_wmin + wire_w))
|
77
|
+
h = np.tan(alpha)*l_h/2
|
78
|
+
elif alpha == 0 and h > 0: # imposed end wdg height
|
79
|
+
alpha = np.arctan(h/l_h)
|
80
|
+
dmin = np.sin(alpha)*(tooth_wmin + wire_w) - wire_w
|
81
|
+
if dmin < 0.0015: # imposed end wdg height is not feasible - calculate min end wdg parameters
|
82
|
+
dmin = 0.0015
|
83
|
+
alpha = np.arcsin((dmin + wire_w)/(tooth_wmin + wire_w))
|
84
|
+
h = np.tan(alpha)*l_h/2
|
85
|
+
elif alpha > 0: # imposed end wdg angle
|
86
|
+
dmin = np.sin(alpha)*(tooth_wmin + wire_w) - wire_w
|
87
|
+
if dmin < 0.0015: # imposed end wdg angle is not feasible - calculate min end wdg parameters
|
88
|
+
dmin = 0.0015
|
89
|
+
alpha = np.arcsin((dmin + wire_w)/(tooth_wmin + wire_w))
|
90
|
+
h = np.tan(alpha)*l_h/2
|
91
|
+
return h, alpha, dmin
|
92
|
+
|
93
|
+
def end_wdg_length_hairpins(wire_h, wire_w, wire_th, wire_gap,
|
94
|
+
layers, coil_pitch, Q, bore_diam, slot_h, slot_w,
|
95
|
+
h_bent=0, h_welded=0, h_conn=0.005, alpha_bent=0, alpha_welded=0, dmin=0.0015): # needs to be validated
|
96
|
+
'''return end wdg length of single pin for bent and welded side, average end wdg length,
|
97
|
+
bent and welded side end wdg heights, bending angles and min distances between pins'''
|
98
|
+
|
99
|
+
R_avg = bore_diam/2 + wire_th + layers/2*(wire_h + wire_gap) + wire_h/2
|
100
|
+
l_h = R_avg/2*coil_pitch/Q*np.pi*(bore_diam + wire_th + slot_h)
|
101
|
+
tooth_wmin = (bore_diam + 2*wire_th)*np.pi/Q - slot_w
|
102
|
+
|
103
|
+
h_bent, alpha_bent, dmin = end_wdg_hairpin_check(alpha_bent, h_bent, dmin, l_h, wire_w, tooth_wmin)
|
104
|
+
|
105
|
+
h_welded = h_welded - h_conn if h_welded - h_conn > 0 else 0
|
106
|
+
h_welded, alpha_welded, dmin = end_wdg_hairpin_check(alpha_welded, h_welded, dmin, l_h, wire_w, tooth_wmin)
|
107
|
+
|
108
|
+
l_bent = 2*(0.002 + wire_w/2*alpha_bent + wire_w*(np.pi/2 - alpha_bent) + np.sqrt((l_h/2)**2 + h_bent**2))
|
109
|
+
l_welded = 2*(0.002 + wire_w/2*alpha_bent + wire_w*(np.pi/2 - alpha_bent) + np.sqrt((l_h/2)**2 + h_welded**2)) + h_conn
|
110
|
+
l_ew = (l_bent + l_welded)/2
|
111
|
+
h_welded = h_welded + h_conn
|
112
|
+
return l_bent, l_welded, l_ew, h_bent, h_welded, alpha_bent*180/np.pi, alpha_welded*180/np.pi, dmin
|
113
|
+
|
49
114
|
|
50
115
|
class Winding(object):
|
51
116
|
# TODO: raise ValueError "Unbalanced winding" if Q % (m * gcd(Q, p)) != 0
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: femagtools
|
3
|
-
Version: 1.8.
|
3
|
+
Version: 1.8.8
|
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,7 +1,7 @@
|
|
1
|
-
femagtools/__init__.py,sha256=
|
1
|
+
femagtools/__init__.py,sha256=nV55WL97b3bPz5zjpLN9RGLR4qnSMVZqRAiBhHa_c_o,1600
|
2
2
|
femagtools/airgap.py,sha256=hELJXe52yUw82JwZ1tGUXUtRhMG2_WSUBVeGkTZSAM8,1900
|
3
3
|
femagtools/amazon.py,sha256=O1ICuv21XDAJi1qK1Sigs2TdS6hDZP19OzvmE2t76wU,12069
|
4
|
-
femagtools/amela.py,sha256=
|
4
|
+
femagtools/amela.py,sha256=2q-Xsj6i6nQ3iKheBR1vQ4FulJfF1i-L8w3a3U8GYWo,4362
|
5
5
|
femagtools/asm.py,sha256=CiL0KWaF4P7O6-VwmGLdva_icwmPrPiI-TFQ19XYTKk,7660
|
6
6
|
femagtools/bch.py,sha256=wLuYbxNPpZ8b-74O_m-85qmbW2pg0ozEXfd2DD7-gvY,74388
|
7
7
|
femagtools/bchxml.py,sha256=KrRjAdrUPZXmiWvonu9HhpG_NvImMBpiXWTL4iSr4kE,3142
|
@@ -13,29 +13,30 @@ femagtools/dakota.py,sha256=L2zZdACdhso7szwN_s5tsmeEbcuUygE2JK4SxwtL79w,6901
|
|
13
13
|
femagtools/dakota_femag.py,sha256=ipmMUMTK1mvMpfHJJjwHa_4kx7BItYO3ha8MeYJTyy8,4068
|
14
14
|
femagtools/dakotaout.py,sha256=6nn0PXsB40mPKiQLenqAtHy0KXCO7kvqqQ-aD2JhQvw,5573
|
15
15
|
femagtools/docker.py,sha256=XDVmLBB0z4sZZpcrx7Wbm84xl4ksj7aqn5-ZOPxdxm4,7460
|
16
|
-
femagtools/ecloss.py,sha256=
|
16
|
+
femagtools/ecloss.py,sha256=nES8mtXNFitmxDvKL5o39hZl6qu-HfR6kUh9eBA9zxQ,34660
|
17
17
|
femagtools/erg.py,sha256=IXKq76P9qLt_ssNOP78v8Qizk3J2Zg80yaKDSjzwoJE,1224
|
18
|
-
femagtools/femag.py,sha256=
|
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=e6qeGEUdbupwDXMPNGwpSxdRENjyWrUuXEFXGIoXavE,37187
|
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
|
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=6wDyJmMMVncjOt8ObnFyvYxdpRTUc93IE6bOfWmu6u8,66067
|
28
28
|
femagtools/jhb.py,sha256=stJxkmzHpfUIBVcFw7jWbV5KN9_EFqzOCgacyhUqWvM,1779
|
29
29
|
femagtools/job.py,sha256=sIRVXsyoupfRXqGsWyOHMetcKlWIyggxfVURjM8aD54,11322
|
30
|
+
femagtools/leakinduc.py,sha256=TMCz0DNbVwRPAYIe-kt9Ttu4aO-HhMZSIP_MTTLaSDo,2267
|
30
31
|
femagtools/losscoeffs.py,sha256=7B29VdEsmv8HSP749X3QBb_E-XN6Z9dvNleKiRLWaMI,7721
|
31
32
|
femagtools/magnet.py,sha256=Nuk060bT4Wa3lX74HdefqTTtUxLaERDSBYTTpbi6KP4,1093
|
32
|
-
femagtools/mcv.py,sha256=
|
33
|
+
femagtools/mcv.py,sha256=nVemXwRPHkvlz7IIwnUONfQglnOcTnp3CsPwU1eG3OI,48604
|
33
34
|
femagtools/me.py,sha256=z6RJkvSbgMmorCQTxKvq44uIYKh82uYYExjkNePJCmE,1813
|
34
35
|
femagtools/model.py,sha256=dk9x-iqRzgOTdTCeU_ynUZGb1bt4FvU1ZGMPXytMbUg,17965
|
35
36
|
femagtools/moproblem.py,sha256=kOP8pRdD8YXz28_M2WKnFgl3eeJ7tqg49ohoazsmUOg,2825
|
36
37
|
femagtools/multiproc.py,sha256=Y8nx0W4NgRoG6UWO6TUD1drx216xnzSYuBbisCHhqrY,9107
|
37
38
|
femagtools/mxw2msh.py,sha256=CIIqAvfs8U-A0OfuOAoDaqNSmoMSHSI_tW1CPFRCP5E,2151
|
38
|
-
femagtools/nc.py,sha256=
|
39
|
+
femagtools/nc.py,sha256=sKfFaeT8hPVUCb1axPIwfUVxuUsnrHygdfqiHv7G_YA,15216
|
39
40
|
femagtools/netlist.py,sha256=CSCl8setLZ_L8DCnNWaNA3-wLe1yo-fmzARZoVvYfaA,2052
|
40
41
|
femagtools/ntib.py,sha256=76g1ZO3Fq_kN-HTMBvaKvJmMMlJMyEPFeNAcJPq3w7Y,3099
|
41
42
|
femagtools/opt.py,sha256=wBU0yh3hZlNti_zfIvtKcPg1EJrnE3I1BqmVxLGWixU,8753
|
@@ -43,12 +44,12 @@ femagtools/parstudy.py,sha256=WY1LxvN44LBqhmZb2dnNO5lVRW3oNyRiKmyi6QxdmqU,19792
|
|
43
44
|
femagtools/poc.py,sha256=yPWmpi8Q2g7NmpAi2YV5ezyo0VUj67EK0tcX2wikerw,7207
|
44
45
|
femagtools/semi_fea.py,sha256=WZtYKrzhDruETyuEW2kpiNp9OaA7Hheq3qJiAIYtsjg,3475
|
45
46
|
femagtools/shortcircuit.py,sha256=9LjnX4z3Kt_DI7DO_h-ivZqxvPt8eAnkJ8_RIFB_q-s,13936
|
46
|
-
femagtools/tks.py,sha256=
|
47
|
+
femagtools/tks.py,sha256=mDi45S5go9-jwALh6rS9RWPoOFBORZm0-XL4ECjSf_8,7531
|
47
48
|
femagtools/ts.py,sha256=x9aCMVASjdBZuyI2pJGMyi1dveGFd_pWQ20cZ-l_moc,47216
|
48
49
|
femagtools/utils.py,sha256=dJkQ5xsoVMzSEB5-2hEiwe2of9mLmsDo8nkrnSN-gPE,1643
|
49
50
|
femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
|
50
51
|
femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
|
51
|
-
femagtools/windings.py,sha256=
|
52
|
+
femagtools/windings.py,sha256=Jk1FGLnKMltDct_plcaFW-NMUE6YFrP57LtJrdw1Un0,27140
|
52
53
|
femagtools/zmq.py,sha256=HY8U7dxXkgE48151nvLcnLPa8OFBZcZTrB2XcjBc0Y4,9413
|
53
54
|
femagtools/dxfsl/__init__.py,sha256=MywcCdpKPKs4qJBJJgeDsikJFJ2P48dbTuNk303f5pM,76
|
54
55
|
femagtools/dxfsl/area.py,sha256=CpTMRBF8_AJmJMkkn-LgRv27U5xJ5Ohhd2ppRvESPNU,69757
|
@@ -70,8 +71,8 @@ femagtools/dxfsl/shape.py,sha256=uQqbgXIA2_KP2XRdhCfVfGWjcjwzhJ5t9RhiqR9R98c,616
|
|
70
71
|
femagtools/dxfsl/svgparser.py,sha256=RY2TU9MK6gOaNmI6w6RNqcw7H9YGmK-NUwvdylKBcsE,3763
|
71
72
|
femagtools/dxfsl/symmetry.py,sha256=dXfZVIqT49nbMirY5YVaRPi8kNB8reaiq-eIbhw1Z54,43936
|
72
73
|
femagtools/machine/__init__.py,sha256=B7yeRZzf29NWCWy8C8iJFdTr9bszAoMRcVEpblhCeg4,7256
|
73
|
-
femagtools/machine/afpm.py,sha256=
|
74
|
-
femagtools/machine/effloss.py,sha256=
|
74
|
+
femagtools/machine/afpm.py,sha256=lNfJ8vvq70e3G5pLwW7t_ynRBOPgbgvd1Jgi9sIbBMI,40239
|
75
|
+
femagtools/machine/effloss.py,sha256=wVsXqMni74IopYb6SHNWjEh-_6rjeLNNiWMB29ar0ms,14898
|
75
76
|
femagtools/machine/im.py,sha256=isMSoCnIk4Hj47MwBNP5PW7a2rI-7N35A9zHGOSl43s,38111
|
76
77
|
femagtools/machine/pm.py,sha256=C4vDdPIsIRUKtzY3b1RNT1v37p1uP3pMUduftNejcPc,68129
|
77
78
|
femagtools/machine/sizing.py,sha256=6IUSdp6HNGHlSaWMy0mjzLGxp3UtxFLfdzQ_4MYx7TI,30069
|
@@ -150,6 +151,7 @@ femagtools/templates/pm_sym_loss.mako,sha256=FNAvi_gmTXsGylrpi7lLKPoOOcNCV1mG6rc
|
|
150
151
|
femagtools/templates/prepare_thermal.mako,sha256=V3W6BGW7gjY8Lg2qzvGDi8rxx3JvPzrWoABDvHKyq54,9539
|
151
152
|
femagtools/templates/psd_psq_fast.mako,sha256=IOZx04JhVleAAbBOPWk9gEwDyT28z0zkF9tyEBteRPU,1428
|
152
153
|
femagtools/templates/psi-torq-rem-rot.mako,sha256=A1KOsYNSJhIJfumF-egnU-HUfNMPeX-XSPL_WsoE1Cw,3579
|
154
|
+
femagtools/templates/psi-torq-rot.mako,sha256=e0-kJZ4mQ5w-Dd4riJkcjlJAt0STcNrVRVJfa-6cV7g,2498
|
153
155
|
femagtools/templates/ring.mako,sha256=Cuc_FuCPWZM-g3TxHqzTdjknYEJSUgP-y64gp8pekDI,643
|
154
156
|
femagtools/templates/rot_hsm.mako,sha256=eh50TbpWNUALK9_7wOOJ7KPewHos7JExAfMACbPlXYc,973
|
155
157
|
femagtools/templates/rotorAsyn.mako,sha256=r_gce0oic24nPdI7BmERM1sokXpC5vvm8Sm0TIPb2zI,2280
|
@@ -170,9 +172,9 @@ femagtools/templates/therm-dynamic.mako,sha256=pEz7jrUpopK1-RqgulNnrkSaCZDjfLels
|
|
170
172
|
femagtools/templates/therm_static.mako,sha256=ulevp4AP-kZ1_qdScPMaX9tLqvvP0t9lFflWTXgUxaE,1310
|
171
173
|
femagtools/templates/torq_calc.mako,sha256=et6O9ZEkPMOYcaJVpYtH2u3aoU0iyhRCPkfN4ZLdjxA,2353
|
172
174
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
173
|
-
tests/test_afpm.py,sha256=
|
175
|
+
tests/test_afpm.py,sha256=ge5CXnVQ7E5gVViTI9hQOC0hHetBci18pY9prbUCAqU,16849
|
174
176
|
tests/test_airgap_induction.py,sha256=cmpy1og59oWEyCO4oF_zDuc1DUwCbdeebNL1ujpZza4,1065
|
175
|
-
tests/test_amela.py,sha256=
|
177
|
+
tests/test_amela.py,sha256=Oi_NURmXDI0s9Tw82KO8k5ZkK6sZ9b2DhafJ5SBnvkE,629
|
176
178
|
tests/test_asm.py,sha256=NAMJ2Km4zi6byhooq5E7GZbkFeSNSTaLpJWt-jQF5cE,1398
|
177
179
|
tests/test_bchreader.py,sha256=yFpjN0MIv_o_OD8XH9HxlOpcNtL79K_3bXMeupxO648,16843
|
178
180
|
tests/test_conductor.py,sha256=T7bmuSdI2Fowwm2Ht-8D0Qnfs1_lx1aoi9RhC2p5nYU,332
|
@@ -182,7 +184,7 @@ tests/test_effloss.py,sha256=-kJJNgS5c6saHXjNuhAe5GdWfr9mEYpPo8fE8OtjsNA,1142
|
|
182
184
|
tests/test_erg.py,sha256=kRVzpXa6JDdbxTss18HUWKny9Dx8IMx9uGTrbQCnHwg,523
|
183
185
|
tests/test_femag.py,sha256=l7-av3eitLm7bwTuunEmVeTspi82ifPrlz7f1boGdVI,1934
|
184
186
|
tests/test_forcedens.py,sha256=Yzl3SAmJNkZN9dA3aLxRvwY8fKsw077Fl0iJm6zJ5Sk,536
|
185
|
-
tests/test_fsl.py,sha256=
|
187
|
+
tests/test_fsl.py,sha256=e8NnUZLsG1Fh9fBOix_ClAl754b9lcqFp4EZR5HoDio,16623
|
186
188
|
tests/test_heat_source_network.py,sha256=TC-Gl4iy9jnMGfsY_24XjwlP-SDxP345JKVT8xRwsFo,690
|
187
189
|
tests/test_hxy.py,sha256=pVb6ZfDhBy5-DXa3gh7RQmLFG8p5cSYB8gdGLC8kjAk,640
|
188
190
|
tests/test_im.py,sha256=55wfCoA8_PuogI_RsC3AjUQCpR84T-HddtHuU1NxfPc,662
|
@@ -197,7 +199,7 @@ tests/test_mcv.py,sha256=Vv51WU3WU0AkgcSpyujMdJ2KvSdLNsks5HGtY0pWMOY,4749
|
|
197
199
|
tests/test_mcvreader.py,sha256=3cgq22b_iaWLrs4WWOUNHqJREnv0YoFivNpAb4teEJs,2118
|
198
200
|
tests/test_me.py,sha256=En00OrOhZclBO4u74q5Os0FgVP4TGFLzz99LF0QHXHA,196
|
199
201
|
tests/test_model.py,sha256=kYjjFgZPIex3foX3skiOdD5MCcmA2JP7oDDuE9txv_U,2698
|
200
|
-
tests/test_nc.py,sha256=
|
202
|
+
tests/test_nc.py,sha256=aTYWF5BDakA9sYRmkSHD0oLWXcOxkVYKKUE8r-nNfAE,4625
|
201
203
|
tests/test_parident.py,sha256=zwj-f-Q_s5dBr_fEvzd5iZqNVIcLwkoi_FF2_FNTiaw,1393
|
202
204
|
tests/test_parstudy.py,sha256=wk7WfYQrx5dtv6MnmWCfNAEInvRKsbVXYEUIIR9zLbQ,3200
|
203
205
|
tests/test_pocfile.py,sha256=eiMLBRQxDnHIGiqku6EXcQ3fb7wGIxhXmb20iyLlPRU,5816
|
@@ -218,9 +220,9 @@ tests/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
218
220
|
tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
|
219
221
|
tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
|
220
222
|
tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
|
221
|
-
femagtools-1.8.
|
222
|
-
femagtools-1.8.
|
223
|
-
femagtools-1.8.
|
224
|
-
femagtools-1.8.
|
225
|
-
femagtools-1.8.
|
226
|
-
femagtools-1.8.
|
223
|
+
femagtools-1.8.8.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
|
224
|
+
femagtools-1.8.8.dist-info/METADATA,sha256=dDLQLG1jOcCzNyRrSwMe81o32RSqT2A5Au3KjjfRn6s,6190
|
225
|
+
femagtools-1.8.8.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
226
|
+
femagtools-1.8.8.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
|
227
|
+
femagtools-1.8.8.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
|
228
|
+
femagtools-1.8.8.dist-info/RECORD,,
|
tests/test_afpm.py
CHANGED
@@ -83,6 +83,6 @@ def test_process(bch):
|
|
83
83
|
assert pytest.approx(r['r1'], abs=1e-3) == 0.03159
|
84
84
|
assert pytest.approx(np.mean(r['torque']), abs=0.1) == 17.5
|
85
85
|
assert pytest.approx(
|
86
|
-
sum([r['plfe'][k] for k in r['plfe']]), abs=0.
|
87
|
-
assert pytest.approx(np.mean(r['plmag']), abs=0.
|
86
|
+
sum([r['plfe'][k] for k in r['plfe']]), abs=0.01) == 6.264
|
87
|
+
assert pytest.approx(np.mean(r['plmag']), abs=0.01) == 14.96
|
88
88
|
assert pytest.approx(np.mean(r['plcu']), abs=0.1) == 925.6
|
tests/test_amela.py
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
import
|
2
|
-
import sys
|
1
|
+
import pytest
|
3
2
|
import json
|
4
3
|
from femagtools import amela
|
5
4
|
from pathlib import Path
|
@@ -11,7 +10,6 @@ def read_json():
|
|
11
10
|
return json.loads(
|
12
11
|
(Path(__file__).parent/"data/pm_data/pm_data_se38.json").read_text())
|
13
12
|
|
14
|
-
|
15
13
|
def test_amela():
|
16
14
|
al = amela.Amela(workdir='src/tests/data',
|
17
15
|
magnet_data=dict(name='pm_data'))
|
tests/test_fsl.py
CHANGED
@@ -315,19 +315,19 @@ class FslBuilderTest(unittest.TestCase):
|
|
315
315
|
def test_run_models(self):
|
316
316
|
feapars['calculationMode'] = "cogg_calc"
|
317
317
|
fsl = self.builder.create_analysis(feapars)
|
318
|
-
self.assertEqual(len(fsl),
|
318
|
+
self.assertEqual(len(fsl), 28)
|
319
319
|
|
320
320
|
feapars['calculationMode'] = "pm_sym_fast"
|
321
321
|
fsl = self.builder.create_analysis(feapars)
|
322
|
-
self.assertEqual(len(fsl),
|
322
|
+
self.assertEqual(len(fsl), 36)
|
323
323
|
|
324
324
|
feapars['calculationMode'] = "mult_cal_fast"
|
325
325
|
fsl = self.builder.create_analysis(feapars)
|
326
|
-
self.assertEqual(len(fsl),
|
326
|
+
self.assertEqual(len(fsl), 34)
|
327
327
|
|
328
328
|
feapars['calculationMode'] = "torq_calc"
|
329
329
|
fsl = self.builder.create_analysis(feapars)
|
330
|
-
self.assertEqual(len(fsl),
|
330
|
+
self.assertEqual(len(fsl), 28)
|
331
331
|
|
332
332
|
def test_run_existing_model(self):
|
333
333
|
model = femagtools.MachineModel('data/magnsec')
|
tests/test_nc.py
CHANGED
@@ -98,8 +98,7 @@ def test_geom(pm):
|
|
98
98
|
g = mag_spels[0].get_rect_geom()
|
99
99
|
assert g['w'] == pytest.approx(0.0112, abs=1e-4)
|
100
100
|
assert g['h'] == pytest.approx(0.00308, abs=1e-5)
|
101
|
-
assert g['
|
102
|
-
assert g['y0'] == pytest.approx(0.007528, abs=1e-5)
|
101
|
+
assert g['cxy'] == pytest.approx((0.02317, 0.007528), abs=1e-5)
|
103
102
|
assert g['area'] == pytest.approx(3.45e-05, abs=1e-6)
|
104
103
|
assert g['alpha'] == pytest.approx(1.885, abs=1e-3)
|
105
104
|
|
File without changes
|
File without changes
|
File without changes
|