femagtools 1.8.7__py3-none-any.whl → 1.8.9__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.
@@ -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
@@ -227,7 +227,7 @@ if __name__ == "__main__":
227
227
  # (tks.losses['cw'],
228
228
  # tks.losses['cw_freq'],
229
229
  # tks.losses['b_coeff']),
230
- title=filename, log=False)
230
+ title=filename, log=True)
231
231
  pl.show()
232
232
 
233
233
  mcv = tks.getValues()
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.7
3
+ Version: 1.8.9
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=ACK3cP4kilKCsL9TszbvzK0Gd3rNR9mdxXLlRxxVOI8,1600
1
+ femagtools/__init__.py,sha256=PWCIZG-FFAcwgx3DdNrvXuU1HpMNmFzbAzIZJ-2Biv4,1600
2
2
  femagtools/airgap.py,sha256=hELJXe52yUw82JwZ1tGUXUtRhMG2_WSUBVeGkTZSAM8,1900
3
3
  femagtools/amazon.py,sha256=O1ICuv21XDAJi1qK1Sigs2TdS6hDZP19OzvmE2t76wU,12069
4
- femagtools/amela.py,sha256=RFTuQ5EcX19G2YJchnktr6j62mNptrdTreShQDOeuKA,13874
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=kTsE9Lx6nt6Ez9PBfD58hPMcnH2PxSc95zJaYMCQd5Q,33957
16
+ femagtools/ecloss.py,sha256=nES8mtXNFitmxDvKL5o39hZl6qu-HfR6kUh9eBA9zxQ,34660
17
17
  femagtools/erg.py,sha256=IXKq76P9qLt_ssNOP78v8Qizk3J2Zg80yaKDSjzwoJE,1224
18
- femagtools/femag.py,sha256=y9H7_B4k1lDjQygoNe_amOzsZvLhobIYSFBrhU6BE6s,44799
18
+ femagtools/femag.py,sha256=ScrZ9gbWQIy4eIhF0Wmi41lSFm7-WRtiLcJOvkITcHo,44864
19
19
  femagtools/forcedens.py,sha256=7NNv75Vg9vQ_fy8W4kM2rlSO970zaSmeurhPmdAxsOU,8485
20
- femagtools/fsl.py,sha256=8aFo7a0cf2vOLiYTqKabwZl_1xs2JqJaAHKGckHCL6U,37204
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=bP1yl2iwy_5W0QVv2eSXn74EfFOAvtUSpyJGiI3QwTg,61831
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=IDT0rw67mfennlHnuqJKDUS7vKezXMr_tZsSHDypUoE,48343
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=bAj3iurE9WaovoCi76ry2aJZJ6rC1zO6xWrfsSD6lrc,15160
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=C3lDdS91Yikf3cMnW-OEqmie-q6S24T81cCFrzwOyeI,7532
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=RS3QSx1JY0FXzItDuWimC9zYzRxq9n6BbY5fZt1dMFg,23780
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=PTBCvHHW8Z4dhyjhHSEkgfdVU9gzEsHLw2mY3X5LQp8,38272
74
- femagtools/machine/effloss.py,sha256=gOgVdAr703Vh9T2Ht14of_I-95QOkH5qXmm11bfHK7s,14414
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=eNQFe9pxuiCITJHCs8pjHVqcKgVBKPJZX_VY-OMBoBw,16846
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=IsGah_O8qWsudZOnWL0pjH9S40O03oH_XfDtLgnzBMk,637
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=J9ym2RD7bOixFGi2o7jy3PeGNxtnYD-zXJHZ-oxS-Ro,16623
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=QUf01YigPYtwkRsmt7_8ap9tQUJgIeDmWo53llVucTM,4668
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.7.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
222
- femagtools-1.8.7.dist-info/METADATA,sha256=FjouSutX0CXyaLR8K4xThZIFopGoxvhm6151vMBW95A,6190
223
- femagtools-1.8.7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
224
- femagtools-1.8.7.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
225
- femagtools-1.8.7.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
226
- femagtools-1.8.7.dist-info/RECORD,,
223
+ femagtools-1.8.9.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
224
+ femagtools-1.8.9.dist-info/METADATA,sha256=hMiKfPVFbKiP4TvfbVxXIVzk5VSOv7-hYJuz9uejQr0,6190
225
+ femagtools-1.8.9.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
226
+ femagtools-1.8.9.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
227
+ femagtools-1.8.9.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
228
+ femagtools-1.8.9.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
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.1) == 50.1
87
- assert pytest.approx(np.mean(r['plmag']), abs=0.1) == 119.7
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 os
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), 27)
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), 35)
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), 33)
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), 27)
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['x0'] == pytest.approx(0.02317, abs=1e-5)
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