femagtools 1.8.2__py3-none-any.whl → 1.8.3__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. femagtools/__init__.py +1 -1
  2. femagtools/dxfsl/area.py +65 -0
  3. femagtools/dxfsl/conv.py +5 -0
  4. femagtools/dxfsl/converter.py +34 -1
  5. femagtools/dxfsl/functions.py +14 -6
  6. femagtools/dxfsl/geom.py +12 -12
  7. femagtools/dxfsl/journal.py +1 -1
  8. femagtools/dxfsl/symmetry.py +28 -8
  9. femagtools/femag.py +64 -61
  10. femagtools/fsl.py +5 -2
  11. femagtools/isa7.py +3 -2
  12. femagtools/machine/afpm.py +43 -23
  13. femagtools/machine/effloss.py +29 -18
  14. femagtools/machine/sizing.py +4 -3
  15. femagtools/machine/sm.py +34 -36
  16. femagtools/mcv.py +56 -26
  17. femagtools/multiproc.py +79 -80
  18. femagtools/parstudy.py +10 -4
  19. femagtools/semi_fea.py +108 -0
  20. femagtools/templates/basic_modpar.mako +0 -3
  21. femagtools/templates/fe-contr.mako +18 -18
  22. femagtools/templates/ld_lq_fast.mako +3 -0
  23. femagtools/templates/mult_cal_fast.mako +3 -0
  24. femagtools/templates/pm_sym_f_cur.mako +4 -1
  25. femagtools/templates/pm_sym_fast.mako +3 -0
  26. femagtools/templates/pm_sym_loss.mako +3 -0
  27. femagtools/templates/psd_psq_fast.mako +3 -0
  28. femagtools/templates/torq_calc.mako +3 -0
  29. femagtools/tks.py +23 -20
  30. femagtools/zmq.py +213 -0
  31. {femagtools-1.8.2.dist-info → femagtools-1.8.3.dist-info}/METADATA +3 -3
  32. {femagtools-1.8.2.dist-info → femagtools-1.8.3.dist-info}/RECORD +40 -38
  33. {femagtools-1.8.2.dist-info → femagtools-1.8.3.dist-info}/WHEEL +1 -1
  34. tests/test_afpm.py +15 -6
  35. tests/test_femag.py +1 -1
  36. tests/test_fsl.py +4 -4
  37. tests/test_mcv.py +20 -14
  38. {femagtools-1.8.2.dist-info → femagtools-1.8.3.dist-info}/LICENSE +0 -0
  39. {femagtools-1.8.2.dist-info → femagtools-1.8.3.dist-info}/entry_points.txt +0 -0
  40. {femagtools-1.8.2.dist-info → femagtools-1.8.3.dist-info}/top_level.txt +0 -0
femagtools/zmq.py ADDED
@@ -0,0 +1,213 @@
1
+ """zmq functions for FEMAG
2
+
3
+ """
4
+ import re
5
+ import pathlib
6
+ import threading
7
+ import json
8
+ import time
9
+ import logging
10
+ try:
11
+ import zmq
12
+ except ImportError:
13
+ pass
14
+
15
+ numpat = re.compile(r'([+-]?\d+(?:\.\d+)?(?:[eE][+-]\d+)?)\s*')
16
+ logger = logging.getLogger(__name__)
17
+
18
+ class ProtFile:
19
+ def __init__(self, dirname, num_cur_steps):
20
+ self.size = 0
21
+ self.looplen = 0
22
+ self.cur_steps = [1, num_cur_steps]
23
+ self.n = 0
24
+ self.num_loops = 0
25
+ import platform
26
+ self.dirname = dirname
27
+ self.name = 'samples'
28
+
29
+ def percent(self):
30
+ if self.looplen > 0:
31
+ return min(100 * self.n / self.looplen, 100)
32
+ return 0
33
+
34
+ def update(self):
35
+ if not self.dirname:
36
+ return ''
37
+ p = list(pathlib.Path(self.dirname).glob('*.PROT'))
38
+ if p:
39
+ buf = ''
40
+ if self.size < p[0].stat().st_size:
41
+ with p[0].open() as fp:
42
+ fp.seek(self.size)
43
+ buf = fp.read()
44
+ return self.append(buf)
45
+ return ''
46
+
47
+ def append(self, buf):
48
+ self.size += len(buf)
49
+ for line in [l.strip() for l in buf.split('\n') if l]:
50
+ if line.startswith('Loop'):
51
+ self.n = 0
52
+ try:
53
+ cur_steps = self.cur_steps[self.num_loops]
54
+ except IndexError:
55
+ cur_steps = 1
56
+ x0, x1, dx, nbeta = [float(f)
57
+ for f in re.findall(numpat, line)][:4]
58
+ move_steps = round((x1-x0)/dx+1)
59
+ beta_steps = int(nbeta)
60
+ self.looplen = cur_steps*beta_steps*move_steps
61
+ self.num_loops += 1
62
+ elif (line.startswith('Cur') or
63
+ line.startswith('Id')):
64
+ self.n += 1
65
+ elif line.startswith('Number movesteps Fe-Losses'):
66
+ return f'{self.percent():3.1f}%' # 100%
67
+ elif line.startswith('begin'):
68
+ self.name = line.split()[1].strip()
69
+
70
+ return f'{self.percent():3.1f}%' # {self.n}/{self.looplen}'
71
+
72
+
73
+ class SubscriberTask(threading.Thread):
74
+ ylabel_index = 1
75
+ curve_label = '{}.'
76
+ # used by static notify func
77
+ percent_list = []
78
+ notify_timerfunc = None
79
+ notify_send_loop = True
80
+ notify = None
81
+ notify_send_header = set()
82
+ notify_send_data = dict()
83
+
84
+ def __init__(self, **kwargs):
85
+ threading.Thread.__init__(self)
86
+ context = zmq.Context.instance()
87
+ self.subscriber = context.socket(zmq.SUB)
88
+ self.port = kwargs.get('port', None)
89
+ self.host = kwargs.get('host')
90
+ self.notify = kwargs.get('notify', None)
91
+ SubscriberTask.notify = kwargs.get('notify', None)
92
+ self.header = kwargs.get('header')
93
+ self.num_cur_steps = kwargs.get('num_cur_steps', None)
94
+ SubscriberTask.curve_label = kwargs.get('curve_label', '')
95
+ SubscriberTask.timestep = kwargs.get('timestep', 1)
96
+ if not self.host:
97
+ self.host = 'localhost'
98
+ if not self.header:
99
+ self.header = [b'']
100
+ self.running = True
101
+
102
+ # timer function
103
+ if not SubscriberTask.notify_timerfunc:
104
+ SubscriberTask.notify_timerfunc = threading.Timer(0.1, SubscriberTask.send_notify)
105
+ SubscriberTask.notify_send_loop = True
106
+ SubscriberTask.notify_timerfunc.start()
107
+
108
+ if b'xyplot' in self.header:
109
+ self.ylabel = self.curve_label.format(SubscriberTask.ylabel_index)
110
+ SubscriberTask.ylabel_index += 1
111
+ if b'progress' in self.header:
112
+ self.protfile = ProtFile(None, self.num_cur_steps)
113
+ self.protId = len(SubscriberTask.percent_list)
114
+ SubscriberTask.percent_list.append(0) # 0%
115
+
116
+ self.subscriber.connect(f'tcp://{self.host}:{self.port}')
117
+ self.subscriber.setsockopt(zmq.SUBSCRIBE, self.header[0] if len(self.header) == 1 else b'')
118
+ self.controller = zmq.Context.instance().socket(zmq.PULL)
119
+ self.controller_url = f'inproc://publisher{self.port}'
120
+ try:
121
+ self.controller.bind(self.controller_url)
122
+ except zmq.error.ZMQError:
123
+ pass # ignore
124
+
125
+ self.poller = zmq.Poller()
126
+ self.poller.register(self.subscriber, zmq.POLLIN)
127
+ self.poller.register(self.controller, zmq.POLLIN)
128
+ self.logger = logger
129
+
130
+ def stop(self):
131
+ socket = zmq.Context.instance().socket(zmq.PUSH)
132
+ socket.connect(self.controller_url)
133
+ socket.send(b"quit")
134
+ socket.close()
135
+ self.running = False
136
+
137
+ def clear():
138
+ SubscriberTask.ylabel_index = 1
139
+ SubscriberTask.curve_label = '{}.'
140
+ SubscriberTask.notify_timerfunc = None
141
+ SubscriberTask.notify_send_loop = False
142
+ SubscriberTask.notify = None
143
+ SubscriberTask.notify_send_header = set()
144
+ SubscriberTask.notify_send_data = dict()
145
+ SubscriberTask.percent_list = []
146
+
147
+ def send_notify():
148
+ logger.debug(f"Send loop: {SubscriberTask.notify_send_loop}")
149
+ while SubscriberTask.notify_send_loop:
150
+ logger.debug(f"Send data: {SubscriberTask.notify_send_header}")
151
+ if 'progress_logger' in SubscriberTask.notify_send_header:
152
+ # collect data from different threads
153
+ SubscriberTask.notify_send_header.remove('progress_logger')
154
+ numTot = len(SubscriberTask.percent_list)
155
+ d = json.loads(SubscriberTask.notify_send_data.get('progress_logger')[1])
156
+ d['percent'] = sum(SubscriberTask.percent_list) / numTot
157
+ d['subtitle'] = f"{SubscriberTask.percent_list.count(100)} of {numTot}"
158
+ SubscriberTask.notify(['progress_logger', json.dumps(d)])
159
+ if 'xyplot' in SubscriberTask.notify_send_header:
160
+ SubscriberTask.notify([s.decode('latin1')
161
+ for s in SubscriberTask.notify_send_data.get('xyplot')])
162
+ SubscriberTask.notify_send_header.remove('xyplot')
163
+
164
+ time.sleep(abs(SubscriberTask.timestep))
165
+ logger.debug(f"Send Finished loop: {SubscriberTask.notify_send_loop}")
166
+
167
+ def run(self):
168
+ self.logger.debug("subscriber is ready, port: %s", {self.port})
169
+ while self.running:
170
+ socks = dict(self.poller.poll())
171
+ if socks.get(self.subscriber) == zmq.POLLIN:
172
+ try:
173
+ response = self.subscriber.recv_multipart()
174
+ # Sometimes femag send messages with only len = 1. These messages must be ignored
175
+ if len(response) < 2:
176
+ continue
177
+ # header progress
178
+ if response[0] == b'progress' and b'progress' in self.header:
179
+ SubscriberTask.notify_send_header.add('progress_logger')
180
+ response[0] = b'progress_logger'
181
+ SubscriberTask.notify_send_data['progress_logger'] = response
182
+ SubscriberTask.percent_list[self.protId] = json.loads(response[1].decode()).get('percent')
183
+ continue
184
+
185
+ # header xyplot (add ylabel)
186
+ if response[0] == b'xyplot' and b'xyplot' in self.header :
187
+ d = json.loads(response[1].decode(), strict=False)
188
+ d['ylabel'] = f"{d.get('ylabel')}_{self.ylabel}" \
189
+ if d.get('ylabel') else self.ylabel
190
+ response[1] = json.dumps(d).encode()
191
+
192
+ # timestep negative, immediately update
193
+ if SubscriberTask.timestep < 0:
194
+ self.notify([s.decode('latin1') for s in response])
195
+ else:
196
+ SubscriberTask.notify_send_data['xyplot'] = response
197
+ SubscriberTask.notify_send_header.add('xyplot')
198
+ continue
199
+
200
+ if response[0] in self.header or b'' in self.header:
201
+ self.notify([s.decode('latin1') for s in response])
202
+
203
+ except Exception:
204
+ self.logger.error(
205
+ "error in subscription message processing", exc_info=True)
206
+
207
+ if socks.get(self.controller) == zmq.POLLIN:
208
+ req = self.controller.recv()
209
+ self.logger.info("subscriber %s", req)
210
+ break
211
+ self.subscriber.close()
212
+ self.controller.close()
213
+ self.logger.debug("subscriber stopped")
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: femagtools
3
- Version: 1.8.2
3
+ Version: 1.8.3
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
@@ -37,7 +37,7 @@ Classifier: Topic :: Scientific/Engineering
37
37
  Requires-Python: >=3.7
38
38
  Description-Content-Type: text/markdown
39
39
  License-File: LICENSE
40
- Requires-Dist: numpy<=1.26.4
40
+ Requires-Dist: numpy
41
41
  Requires-Dist: scipy
42
42
  Requires-Dist: mako
43
43
  Requires-Dist: six
@@ -1,4 +1,4 @@
1
- femagtools/__init__.py,sha256=kRVLeU7jCmB8MUrNUdzChKl4fzai9F9XlN-SHUMQXTo,1600
1
+ femagtools/__init__.py,sha256=Mk0XyVDe7ePCT-_eiv7tascc1YnktWH3vF4TbVsuVD4,1600
2
2
  femagtools/airgap.py,sha256=hELJXe52yUw82JwZ1tGUXUtRhMG2_WSUBVeGkTZSAM8,1900
3
3
  femagtools/amazon.py,sha256=O1ICuv21XDAJi1qK1Sigs2TdS6hDZP19OzvmE2t76wU,12069
4
4
  femagtools/amela.py,sha256=RFTuQ5EcX19G2YJchnktr6j62mNptrdTreShQDOeuKA,13874
@@ -15,64 +15,66 @@ femagtools/dakotaout.py,sha256=6nn0PXsB40mPKiQLenqAtHy0KXCO7kvqqQ-aD2JhQvw,5573
15
15
  femagtools/docker.py,sha256=XDVmLBB0z4sZZpcrx7Wbm84xl4ksj7aqn5-ZOPxdxm4,7460
16
16
  femagtools/ecloss.py,sha256=kTsE9Lx6nt6Ez9PBfD58hPMcnH2PxSc95zJaYMCQd5Q,33957
17
17
  femagtools/erg.py,sha256=IXKq76P9qLt_ssNOP78v8Qizk3J2Zg80yaKDSjzwoJE,1224
18
- femagtools/femag.py,sha256=m8mfMjzjkL_R-iqyInxM7y7F4jgKg6ZI7FfTQlbxtng,46988
18
+ femagtools/femag.py,sha256=gku2PP8rEj8UWRUscD5jYB7kKzlA4lcbd-y2sTdRClQ,47291
19
19
  femagtools/forcedens.py,sha256=7NNv75Vg9vQ_fy8W4kM2rlSO970zaSmeurhPmdAxsOU,8485
20
- femagtools/fsl.py,sha256=PU4t8wBvtVckv4f8ozg5_exxspuToW0W0O95jZZ5IU4,36924
20
+ femagtools/fsl.py,sha256=VvDqt94zvYl2mHCWRgWLJBoXznYkIXeo0xMX3Eoqk1s,37114
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=bso2gRHTNoDgupWUAmormQD9Izj1l1EcT9XxvybiD8Y,60197
27
+ femagtools/isa7.py,sha256=K0ieLtl3o1vE7900BDbOQbwfGELcy2Kh5J-2lAGdCtY,60231
28
28
  femagtools/jhb.py,sha256=stJxkmzHpfUIBVcFw7jWbV5KN9_EFqzOCgacyhUqWvM,1779
29
29
  femagtools/job.py,sha256=sIRVXsyoupfRXqGsWyOHMetcKlWIyggxfVURjM8aD54,11322
30
30
  femagtools/losscoeffs.py,sha256=Nil2fvkkS6-T29OnHIsdVbegCHyl23iZg8rMVbbA5wY,6785
31
31
  femagtools/magnet.py,sha256=Nuk060bT4Wa3lX74HdefqTTtUxLaERDSBYTTpbi6KP4,1093
32
- femagtools/mcv.py,sha256=CAv-8bRm9aQJR5LVVXuLGGw1id_uu0m-fMiPMYX9Z-o,40488
32
+ femagtools/mcv.py,sha256=bS_z7OnwX5qM-zv-PKapcaNP31t0p8MNOAs9OXUX7SY,41739
33
33
  femagtools/me.py,sha256=z6RJkvSbgMmorCQTxKvq44uIYKh82uYYExjkNePJCmE,1813
34
34
  femagtools/model.py,sha256=dk9x-iqRzgOTdTCeU_ynUZGb1bt4FvU1ZGMPXytMbUg,17965
35
35
  femagtools/moproblem.py,sha256=kOP8pRdD8YXz28_M2WKnFgl3eeJ7tqg49ohoazsmUOg,2825
36
- femagtools/multiproc.py,sha256=7mJF-VU1NrJkENyg8eHtDrDRNBwLPK43phZv3ehm9BU,8435
36
+ femagtools/multiproc.py,sha256=p2Y4gu-WlGdN9v6aL4IUHPG0bANHUPSE4a9F64wIMoY,9050
37
37
  femagtools/mxw2msh.py,sha256=CIIqAvfs8U-A0OfuOAoDaqNSmoMSHSI_tW1CPFRCP5E,2151
38
38
  femagtools/nc.py,sha256=bAj3iurE9WaovoCi76ry2aJZJ6rC1zO6xWrfsSD6lrc,15160
39
39
  femagtools/netlist.py,sha256=CSCl8setLZ_L8DCnNWaNA3-wLe1yo-fmzARZoVvYfaA,2052
40
40
  femagtools/ntib.py,sha256=76g1ZO3Fq_kN-HTMBvaKvJmMMlJMyEPFeNAcJPq3w7Y,3099
41
41
  femagtools/opt.py,sha256=wBU0yh3hZlNti_zfIvtKcPg1EJrnE3I1BqmVxLGWixU,8753
42
- femagtools/parstudy.py,sha256=OXAqRGSvOZHNZTx_bXSgXpKv_ABB6zHOU-dJLJjrhBI,19464
42
+ femagtools/parstudy.py,sha256=lLz2SIxUJRc1YV54vW-Zl1h_MvP9mHMtl1RJa_ich3c,19734
43
43
  femagtools/poc.py,sha256=wMwOxMhPLFRiGPMsKQwWWuGr6UZPzRBajhfVMfXptNU,6794
44
- femagtools/tks.py,sha256=xStMu6P1xsc36tS53FKnbL6i2ZTVnCNXyTVw8_gjepo,7436
44
+ femagtools/semi_fea.py,sha256=WZtYKrzhDruETyuEW2kpiNp9OaA7Hheq3qJiAIYtsjg,3475
45
+ femagtools/tks.py,sha256=C3lDdS91Yikf3cMnW-OEqmie-q6S24T81cCFrzwOyeI,7532
45
46
  femagtools/ts.py,sha256=x9aCMVASjdBZuyI2pJGMyi1dveGFd_pWQ20cZ-l_moc,47216
46
47
  femagtools/utils.py,sha256=1SX5s21xyW8u0NF_Hjs7DByyCTdLm9VRArLburTyHR0,1581
47
48
  femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
48
49
  femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
49
50
  femagtools/windings.py,sha256=OYoEFIQci3f3sYJkcyRjBpBpDRtX2Y2aHZiRXOEgsls,23497
51
+ femagtools/zmq.py,sha256=oyPHnRc3tBkk5zCZuKiAlXnYX9ialYMuC5Z1QIxRhos,8584
50
52
  femagtools/dxfsl/__init__.py,sha256=MywcCdpKPKs4qJBJJgeDsikJFJ2P48dbTuNk303f5pM,76
51
- femagtools/dxfsl/area.py,sha256=C0mPWeer2kleh3x5GHibMSjegEjfmEZHTHTB9WVHIPg,67005
53
+ femagtools/dxfsl/area.py,sha256=0v38NzATGmW1KWCU2dlwVz9JN0Va_EdHAI3GJ7CTMTA,69578
52
54
  femagtools/dxfsl/areabuilder.py,sha256=6dfWryYjXzGIVDOsX2zb1VKIhUzmpL43XhF-wtdesAg,35882
53
55
  femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
54
- femagtools/dxfsl/conv.py,sha256=-d03mQiDWF_MD4T0TIH7k-zNa6p7w9rtc6QE2Bz1Q7s,10362
55
- femagtools/dxfsl/converter.py,sha256=YXesbeqHbwtr97xPMJTNSsxe_kVJycJQfrKrIQVoJQw,36425
56
+ femagtools/dxfsl/conv.py,sha256=f17Yn5bgvpefxTeohwkYctXqRw7-dwoDwM2cUzeZ9xQ,10639
57
+ femagtools/dxfsl/converter.py,sha256=0c1YfAmLqZ7ZSUoJSkdBQWs9yAwTztVizHjEWgvwYWQ,37890
56
58
  femagtools/dxfsl/corner.py,sha256=-XPBcnEau-2-SRHLYzlBqCQGaFfgm_DH2qR1mSaFoAs,1311
57
59
  femagtools/dxfsl/dumprenderer.py,sha256=n4AvInjvGIaC2iKZtQaYXXDyJVSQ3uEOFOLD4-xfKRY,1861
58
60
  femagtools/dxfsl/dxfparser.py,sha256=kyXG0kZfNyOgn96MqBgP8RhOQhppfB5NbyRNNybs1C0,13451
59
61
  femagtools/dxfsl/femparser.py,sha256=O8940Q1Mz8MKng6W8M3s9KfTvhDLJ56tfQWtZEW3xMM,2134
60
62
  femagtools/dxfsl/fslrenderer.py,sha256=d2a_HXml2CqS8FkmSbFXsUtOLIfSI14C4qGQd0Xj-c4,27961
61
- femagtools/dxfsl/functions.py,sha256=teJHtVxoViGs66AB8_4BxRrFQx9SbPT2azIrKyhJHOc,12005
62
- femagtools/dxfsl/geom.py,sha256=CuaW4aa0Xb3dTYX_HSHpMxqOXGztT35_ISHh0Dj-FJE,173525
63
- femagtools/dxfsl/journal.py,sha256=4LMSW5wCYlETzid6SIF8b5DH-DCgtH4nFx-xIxjtbfg,4265
63
+ femagtools/dxfsl/functions.py,sha256=UddJ4PqRL_BG2Sffed4c1tGkugxxKD71A5VPd-Op-yk,12163
64
+ femagtools/dxfsl/geom.py,sha256=J6arfaC-IPVeqaBR2Z8o4UmoOrOwPYbOGQwSVXftWaw,173626
65
+ femagtools/dxfsl/journal.py,sha256=r4z52av3k95MjwzypgUJpj8sSAeQoJsS81Uqs1IBLVw,4265
64
66
  femagtools/dxfsl/machine.py,sha256=8KG0jIcK7vYFTXqIwYNOecGaYgvhZ9UjrRHJQZ9kjHE,56514
65
67
  femagtools/dxfsl/plotrenderer.py,sha256=q2cORuxJEf1Ws6oCY9c0gF6N3kDrcI6WOz3u5Vl6R_c,13823
66
68
  femagtools/dxfsl/shape.py,sha256=-hUphAYwhja_6FyWHjUbBlNSPh6tWZCKYdz7aDplqWk,61566
67
69
  femagtools/dxfsl/svgparser.py,sha256=RY2TU9MK6gOaNmI6w6RNqcw7H9YGmK-NUwvdylKBcsE,3763
68
- femagtools/dxfsl/symmetry.py,sha256=DPZ-y-UjEshNlOdC90kGhpAitsIwrvCN6gZeNGp5DJU,41120
70
+ femagtools/dxfsl/symmetry.py,sha256=i5dHh6jZBDMJo2pIFf8uiKLBppJBlQ2uKgoPMnUpjCo,42094
69
71
  femagtools/machine/__init__.py,sha256=B7yeRZzf29NWCWy8C8iJFdTr9bszAoMRcVEpblhCeg4,7256
70
- femagtools/machine/afpm.py,sha256=wMyfdGDaBAt6knDSzw04Oxy_oDuBCEi06f6WaKZoRGw,25918
71
- femagtools/machine/effloss.py,sha256=GV_bc5f1ysBi1Ng7FR3fD1xh5KXa6ACc55iWfsltMBI,13663
72
+ femagtools/machine/afpm.py,sha256=qo0TRPJ--Wr5qEdPvDCoo7CoarQMb6U1t8BVbLa-pgU,26845
73
+ femagtools/machine/effloss.py,sha256=x27-9l0t7Vj4Ri7qqIzNvISzu5mf67ERjfGv5_T3eP4,14384
72
74
  femagtools/machine/im.py,sha256=3Y54AHMZfAjkvgexx2E-5jxNWzaVQ-SyaETCh7gNBYA,38008
73
75
  femagtools/machine/pm.py,sha256=C4vDdPIsIRUKtzY3b1RNT1v37p1uP3pMUduftNejcPc,68129
74
- femagtools/machine/sizing.py,sha256=YhsT5Iki7_zW1BBKB1dD_q6qHI-kvjb3_68881Q71LU,30039
75
- femagtools/machine/sm.py,sha256=Y6g4KPm-2bhzMYjGarojokEzaNgOmFR2G4DIKBtVQOs,39210
76
+ femagtools/machine/sizing.py,sha256=6IUSdp6HNGHlSaWMy0mjzLGxp3UtxFLfdzQ_4MYx7TI,30069
77
+ femagtools/machine/sm.py,sha256=LvTWnbudLq5OAog5vu9BDoqTx_GeZC25FLo4iJha8UE,39108
76
78
  femagtools/machine/utils.py,sha256=VswrQuGB_uGE4cYWIQSXLSEVJKrmSwNJdGlme7RPEno,20912
77
79
  femagtools/moo/__init__.py,sha256=zinmWEOrsEz6DmMX0Dbn4t6_1UR-p4bEGqyR1wUQk_Q,175
78
80
  femagtools/moo/algorithm.py,sha256=e-Cgp2rp_hG9DXqWqluzQGNIWvCfthUgLD8O-aVPofA,5763
@@ -97,7 +99,7 @@ femagtools/templates/afm_rotor.mako,sha256=4yoEA4fOq9FRcwxOMRw1oX4Bs_jcrtyHOY6kH
97
99
  femagtools/templates/afm_stator.mako,sha256=l1xEwxffZ1jyx5wuJ3rhVbVlZirJzD2K8n4i5Dvbxuc,5344
98
100
  femagtools/templates/airgapinduc.mako,sha256=aCMLZ7P4vjeSGikIetkwymgDjESdftPN_aYx2LfjfsY,246
99
101
  femagtools/templates/asyn_motor.mako,sha256=vvZ0SIJj4ORaCbE1Hl5NeCU_j2CWdOltVpSKP7ESJTQ,2879
100
- femagtools/templates/basic_modpar.mako,sha256=IlUbc5A0yrVF-kSTUgC8PM_PdzSbX_bzeAwiKN17msc,3323
102
+ femagtools/templates/basic_modpar.mako,sha256=fJ-zkKh63HPZ1W2PC01ObVN8YXt2_4V9Ok-2kgzkJ2w,3239
101
103
  femagtools/templates/bertotti.mako,sha256=o0OjzIIliVy2oHtDx4QzsDBodfsUQhdln4DmPNcIHnQ,1346
102
104
  femagtools/templates/calc_field_ts.mako,sha256=hNs7INzk92U8LljQvQHnKf20fD2HU6igtx1rhsOvPkc,1911
103
105
  femagtools/templates/calc_therm_field.mako,sha256=Q1aAulucLjrtNiCnFGin3ObK13R1KG6dWjJTWwdfxds,1600
@@ -109,12 +111,12 @@ femagtools/templates/connect_models.mako,sha256=8j1hzBMeoDJ7-GL5BH-S5p53Bu5jtqqs
109
111
  femagtools/templates/cu_losses.mako,sha256=EeNwINYuwBuhbo9LH3STdQOTxOyyWw_BANgh_BSV9TE,1339
110
112
  femagtools/templates/displ_stator_rotor.mako,sha256=dsf9qW0i79aWAbOxaHwWfiq-Tn6WCDx46PQyEvL3SMw,830
111
113
  femagtools/templates/ec-rotorbar.mako,sha256=RbA1TVNczEEddTNjvGLPxILExxp4rIgoxXe1YT6a4Is,1672
112
- femagtools/templates/fe-contr.mako,sha256=NoP7FQ62ITxgNmwP6GmkCnGhjEn5gPLUFgdLdhkKylY,1983
114
+ femagtools/templates/fe-contr.mako,sha256=Gj4EFpAk_SVW_SIeW5eRRJAsYXTTpl-djuyb47n3Dj8,1898
113
115
  femagtools/templates/fieldcalc.mako,sha256=bEtff9HeD6hTpB9t3COt40V1oGeT0a_6ouWTQlKIGX8,749
114
116
  femagtools/templates/gen_hairpin_winding.mako,sha256=mQ8TyFYzSyKazpu4uiyS0UdVrl4PobHN-J6FE74IWs8,5329
115
117
  femagtools/templates/gen_winding.mako,sha256=kVMRkonDLHRB12bJ5e0Pwb1-8hBGVMM4dn1FEo70bok,3984
116
118
  femagtools/templates/inductances.mako,sha256=OpcW3E7LW09J8eoXylzfq2R16LKKxzJDr0PGCdHzixM,560
117
- femagtools/templates/ld_lq_fast.mako,sha256=BEQoplL7Ojqg5caldzAhMLKL-3E78wCSSbz5-KkDk2o,1359
119
+ femagtools/templates/ld_lq_fast.mako,sha256=vO7_zLpZThNpBu_LSGnZ8k1S8eF87DEmxUse4rRVmmk,1448
118
120
  femagtools/templates/leak_dist_wind.mako,sha256=vs8fpxcM203kL8BVNuR8BKSmMsQM6U1_vTtYXZIfdSc,600
119
121
  femagtools/templates/leak_evol_wind.mako,sha256=JKff7ZEpndKmFYr7R0xaef_49YV6TG0tZeE8wQejR7Q,770
120
122
  femagtools/templates/leak_tooth_wind.mako,sha256=LYCPSXhSLApidthuuGNiApLh0EJZOPZmTX0LZ5cOblQ,431
@@ -133,18 +135,18 @@ femagtools/templates/magnetShell2.mako,sha256=4IJBfBTPxuYHr1SAcVvNdQoGd8emwsx8vM
133
135
  femagtools/templates/mesh-airgap.mako,sha256=Pn3lDoWMoHFmT_u9yhsdhBBORxcGJWuAY5Qg5aW1H8w,3858
134
136
  femagtools/templates/modal_analysis.mako,sha256=Thf62FBqL738qnp1ongPr196GJY27vwElKqPfMWF45s,2298
135
137
  femagtools/templates/modified_steinmetz.mako,sha256=qrJ18XtoU39kjbcdywCJCLObQGaO-eC3Cl-1P4xLZWg,1327
136
- femagtools/templates/mult_cal_fast.mako,sha256=FhqRZQaBIIvmx0LgKXVLOIjz7LshoDFHqhkD0QGlX8A,1255
138
+ femagtools/templates/mult_cal_fast.mako,sha256=TTEPmWKpqq8rSO_usYvHl9rTMopHNGoEhmRuhEgYTrg,1344
137
139
  femagtools/templates/new_model.mako,sha256=P7658h99bKrA6YbP1D365ImIZPGEAZoBeYCdq0DT0AA,345
138
140
  femagtools/templates/noloadflux-rot.mako,sha256=BiAtTL0mj8ukbRiPKKyH80PpzugGIJKZhvay7yxnSp8,3209
139
141
  femagtools/templates/noloadflux.mako,sha256=vYUpZRLOAixNoBbB-Nc-Y9niPYsSUEPvBCOjw26uFdg,4661
140
142
  femagtools/templates/noloadfluxdc.mako,sha256=n3M4gNxf4Q-i7B8ft69Ism9lquRqh-pf4ET4KYwdQb0,3146
141
143
  femagtools/templates/open.mako,sha256=Zl5yvdwT5BflJIPVmReggzSrTQhepbef62EoCuw_mQg,344
142
144
  femagtools/templates/plots.mako,sha256=6xfmncVbzDiJLF6V0B6fha23H19R7P26DvcTTwzJ5A0,630
143
- femagtools/templates/pm_sym_f_cur.mako,sha256=KlskcNx5Y_HNwt2crA7CqHN5TIaKBb14T6cFg2vghl0,1464
144
- femagtools/templates/pm_sym_fast.mako,sha256=NOSbuWSEM2XGY5-JweGxSr32mXGBVSas_aSOQyK4uEU,2361
145
- femagtools/templates/pm_sym_loss.mako,sha256=dh0o3ZamZuWs7sHc-jS7ohKsqeZCA0tRaqkaFmXlRS0,1009
145
+ femagtools/templates/pm_sym_f_cur.mako,sha256=Tk4ImaSN1vPfybzersJd5AmLHnqJjWHigCeBn_Cr40U,1558
146
+ femagtools/templates/pm_sym_fast.mako,sha256=wD_bwszJ5svPOL1AtWThbkuMyxi-wRAPpP3AMlJGwPM,2450
147
+ femagtools/templates/pm_sym_loss.mako,sha256=FNAvi_gmTXsGylrpi7lLKPoOOcNCV1mG6rc8gnXQ8u0,1098
146
148
  femagtools/templates/prepare_thermal.mako,sha256=V3W6BGW7gjY8Lg2qzvGDi8rxx3JvPzrWoABDvHKyq54,9539
147
- femagtools/templates/psd_psq_fast.mako,sha256=7DQUZI6KOjdKQMFLKySGUlWXo4U_rZuHXFzLxiA1GGc,1339
149
+ femagtools/templates/psd_psq_fast.mako,sha256=IOZx04JhVleAAbBOPWk9gEwDyT28z0zkF9tyEBteRPU,1428
148
150
  femagtools/templates/ring.mako,sha256=Cuc_FuCPWZM-g3TxHqzTdjknYEJSUgP-y64gp8pekDI,643
149
151
  femagtools/templates/rot_hsm.mako,sha256=eh50TbpWNUALK9_7wOOJ7KPewHos7JExAfMACbPlXYc,973
150
152
  femagtools/templates/rotorAsyn.mako,sha256=r_gce0oic24nPdI7BmERM1sokXpC5vvm8Sm0TIPb2zI,2280
@@ -163,9 +165,9 @@ femagtools/templates/statorRotor3.mako,sha256=6ycHlkSnk-TKFdoxiOqjpr6Pk0l634w3_O
163
165
  femagtools/templates/stator_msh.mako,sha256=Neze1ielMCk7TrARyhOra91fFQVT8Phsgk2Omt_aMG8,1799
164
166
  femagtools/templates/therm-dynamic.mako,sha256=pEz7jrUpopK1-RqgulNnrkSaCZDjfLelsVo6cBqmpac,3142
165
167
  femagtools/templates/therm_static.mako,sha256=ulevp4AP-kZ1_qdScPMaX9tLqvvP0t9lFflWTXgUxaE,1310
166
- femagtools/templates/torq_calc.mako,sha256=89IVD1L1Ep7kYaKVrNYYAurUidnbR7LdcP2aLF2hdYo,2264
168
+ femagtools/templates/torq_calc.mako,sha256=et6O9ZEkPMOYcaJVpYtH2u3aoU0iyhRCPkfN4ZLdjxA,2353
167
169
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
- tests/test_afpm.py,sha256=OE-ULFcp_fBQ7SyRacDmDGbq8ULFHLbXXx3MHJN1C1c,11031
170
+ tests/test_afpm.py,sha256=eNQFe9pxuiCITJHCs8pjHVqcKgVBKPJZX_VY-OMBoBw,16846
169
171
  tests/test_airgap_induction.py,sha256=cmpy1og59oWEyCO4oF_zDuc1DUwCbdeebNL1ujpZza4,1065
170
172
  tests/test_amela.py,sha256=IsGah_O8qWsudZOnWL0pjH9S40O03oH_XfDtLgnzBMk,637
171
173
  tests/test_asm.py,sha256=NAMJ2Km4zi6byhooq5E7GZbkFeSNSTaLpJWt-jQF5cE,1398
@@ -175,9 +177,9 @@ tests/test_convert.py,sha256=oseuhm3Iw-9b4WzBjA_Og2lgXPqKYicLUnfadq5Yick,6497
175
177
  tests/test_dxfsl.py,sha256=DBAjtwNAwcB7VYZBjul7xf4ovu14n3Z0fxyreVzAW4A,383
176
178
  tests/test_effloss.py,sha256=-kJJNgS5c6saHXjNuhAe5GdWfr9mEYpPo8fE8OtjsNA,1142
177
179
  tests/test_erg.py,sha256=kRVzpXa6JDdbxTss18HUWKny9Dx8IMx9uGTrbQCnHwg,523
178
- tests/test_femag.py,sha256=55cCx90tJ1BEeu_-DOit37y26hFGVSYwkT81s9-p28E,1934
180
+ tests/test_femag.py,sha256=l7-av3eitLm7bwTuunEmVeTspi82ifPrlz7f1boGdVI,1934
179
181
  tests/test_forcedens.py,sha256=Yzl3SAmJNkZN9dA3aLxRvwY8fKsw077Fl0iJm6zJ5Sk,536
180
- tests/test_fsl.py,sha256=rBTfOeBXixIdxcxGS9lKV9hHBNhgglsH56gmbK_AMeA,16623
182
+ tests/test_fsl.py,sha256=J9ym2RD7bOixFGi2o7jy3PeGNxtnYD-zXJHZ-oxS-Ro,16623
181
183
  tests/test_heat_source_network.py,sha256=TC-Gl4iy9jnMGfsY_24XjwlP-SDxP345JKVT8xRwsFo,690
182
184
  tests/test_hxy.py,sha256=pVb6ZfDhBy5-DXa3gh7RQmLFG8p5cSYB8gdGLC8kjAk,640
183
185
  tests/test_im.py,sha256=55wfCoA8_PuogI_RsC3AjUQCpR84T-HddtHuU1NxfPc,662
@@ -188,7 +190,7 @@ tests/test_losscoeffs.py,sha256=3EKmDFRuvn88z_8r0HxKFdB0lNXNnhEgaFshL8BkDjE,2012
188
190
  tests/test_machine.py,sha256=Woha6nfKaYQCxxoG57sUztpnpU6K9imXwn9B_KMhanw,12906
189
191
  tests/test_magncurv.py,sha256=wPf1dNACZ1BkqKHSqJxiNi6Dq8JP3QCRBY4ql_0YCyU,2608
190
192
  tests/test_magnet.py,sha256=BUHG_8SEi4d8j6yV9BSzcpYc2-UVMRFv50P_jgTTXoQ,276
191
- tests/test_mcv.py,sha256=cPgijMjDxSt1CwN6syE4r4WWAlUSruZDQsTK_oNhfg4,4570
193
+ tests/test_mcv.py,sha256=Vv51WU3WU0AkgcSpyujMdJ2KvSdLNsks5HGtY0pWMOY,4749
192
194
  tests/test_mcvreader.py,sha256=3cgq22b_iaWLrs4WWOUNHqJREnv0YoFivNpAb4teEJs,2118
193
195
  tests/test_me.py,sha256=En00OrOhZclBO4u74q5Os0FgVP4TGFLzz99LF0QHXHA,196
194
196
  tests/test_model.py,sha256=kYjjFgZPIex3foX3skiOdD5MCcmA2JP7oDDuE9txv_U,2698
@@ -213,9 +215,9 @@ tests/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
215
  tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
214
216
  tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
215
217
  tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
216
- femagtools-1.8.2.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
217
- femagtools-1.8.2.dist-info/METADATA,sha256=yH0fPdMTzP_mojxKfekWdoGkrj_tvA0WrEpRVt_XYlc,6198
218
- femagtools-1.8.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
219
- femagtools-1.8.2.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
220
- femagtools-1.8.2.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
221
- femagtools-1.8.2.dist-info/RECORD,,
218
+ femagtools-1.8.3.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
219
+ femagtools-1.8.3.dist-info/METADATA,sha256=YF5JTNXLsBKjScrsC_YvqGov9Ui8xLvX4YUuibV6OAA,6190
220
+ femagtools-1.8.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
221
+ femagtools-1.8.3.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
222
+ femagtools-1.8.3.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
223
+ femagtools-1.8.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
tests/test_afpm.py CHANGED
@@ -6,17 +6,26 @@ import numpy as np
6
6
  @pytest.fixture
7
7
  def bch():
8
8
  flux = [{"1": [{"voltage_dpsi": [-0.03209, 0.18265, 0.60242, 0.98741, 1.33474, 1.67401, 1.98203, 2.26988, 2.56507, 2.84096, 3.08776, 3.2895, 3.39963, 3.38025, 3.26313, 3.10407, 2.93507, 2.76033, 2.56391, 2.34599, 2.06373, 1.67041, 1.21208, 0.73233, 0.26069, -0.1785, -0.59529, -0.98242, -1.33788, -1.66913, -1.97542, -2.27278, -2.56427, -2.84029, -3.08908, -3.28815, -3.39709, -3.38292, -3.26505, -3.1031, -2.93572, -2.76086, -2.56485, -2.34516, -2.06286, -1.67001, -1.21145, -0.73258, -0.26043, -0.03424],
9
+ "flux_k": [-0.00024797, -0.00026318, -0.00027388, -0.00028017, -0.00028225, -0.00028017, -0.00027388, -0.00026318, -0.00024797, -0.00022816, -0.00020373, -0.00017495, -0.00014264, -0.00010804, -7.2328e-05, -3.622e-05, 3.5235e-10, 3.6221e-05, 7.2329e-05, 0.00010804, 0.00014264, 0.00017495, 0.00020373, 0.00022816, 0.00024797, 0.00026318, 0.00027388, 0.00028017, 0.00028225, 0.00028017, 0.00027388, 0.00026318, 0.00024797, 0.00022816, 0.00020373, 0.00017495, 0.00014264, 0.00010804, 7.2328e-05, 3.622e-05, -5.3859e-10, -3.6221e-05, -7.2329e-05, -0.00010804, -0.00014264, -0.00017495, -0.00020373, -0.00022816, -0.00024797, -0.00026318],
9
10
  "current_k": [-61.3751, -44.4249, -26.7146, -8.5472, 9.7664, 27.9129, 45.5819, 62.4709, 78.291, 92.7716, 105.6647, 116.75, 125.8376, 132.7721, 137.4348, 139.746, 139.6661, 137.1965, 132.3794, 125.2972, 116.0712, 104.8592, 91.853, 77.2752, 61.3751, 44.425, 26.7147, 8.5473, -9.7663, -27.9129, -45.5818, -62.4708, -78.2909, -92.7715, -105.6646, -116.7499, -125.8375, -132.772, -137.4348, -139.746, -139.6661, -137.1965, -132.3794, -125.2973, -116.0713, -104.8593, -91.8531, -77.2753, -61.3753, -44.4252]}],
10
11
  "2": [{"voltage_dpsi": [-2.70873, -2.84289, -3.08872, -3.28966, -3.40077, -3.38253, -3.26581, -3.10425, -2.93479, -2.76044, -2.56444, -2.34638, -2.06388, -1.67025, -1.21138, -0.73288, -0.26186, 0.17947, 0.59726, 0.98129, 1.33448, 1.67007, 1.97798, 2.27298, 2.565, 2.84086, 3.08791, 3.28738, 3.40043, 3.382, 3.26177, 3.10385, 2.93498, 2.761, 2.56721, 2.34413, 2.06081, 1.67428, 1.21276, 0.73087, 0.26326, -0.17835, -0.59726, -0.98187, -1.33451, -1.67393, -1.98009, -2.26991, -2.56524, -2.70814],
12
+ "flux_k": [0.00024797, 0.00022816, 0.00020373, 0.00017495, 0.00014264, 0.00010804, 7.2328e-05, 3.622e-05, -5.4865e-10, -3.6221e-05, -7.2329e-05, -0.00010804, -0.00014264, -0.00017495, -0.00020373, -0.00022816, -0.00024797, -0.00026319, -0.00027388, -0.00028018, -0.00028225, -0.00028018, -0.00027388, -0.00026319, -0.00024797, -0.00022816, -0.00020373, -0.00017495, -0.00014264, -0.00010804, -7.2328e-05, -3.6219e-05, 1.2533e-09, 3.6222e-05, 7.233e-05, 0.00010804, 0.00014264, 0.00017495, 0.00020373, 0.00022816, 0.00024797, 0.00026319, 0.00027388, 0.00028018, 0.00028225, 0.00028018, 0.00027388, 0.00026319, 0.00024797, 0.00022816],
11
13
  "current_k": [-78.291, -92.7716, -105.6647, -116.75, -125.8376, -132.7721, -137.4348, -139.746, -139.6661, -137.1965, -132.3793, -125.2972, -116.0712, -104.8591, -91.8529, -77.2751, -61.3751, -44.4249, -26.7146, -8.5472, 9.7665, 27.913, 45.5819, 62.471, 78.291, 92.7716, 105.6648, 116.75, 125.8376, 132.7721, 137.4348, 139.746, 139.6661, 137.1964, 132.3793, 125.2972, 116.0711, 104.8591, 91.8529, 77.2751, 61.375, 44.4248, 26.7145, 8.5471, -9.7666, -27.9131, -45.582, -62.471, -78.2911, -92.7717]}],
12
14
  "3": [{"voltage_dpsi": [2.84917, 2.75927, 2.55941, 2.34039, 2.06628, 1.67025, 1.21009, 0.73481, 0.261, -0.17937, -0.59637, -0.98128, -1.3359, -1.67147, -1.97782, -2.27163, -2.56453, -2.84095, -3.08811, -3.28914, -3.39818, -3.37911, -3.26389, -3.1048, -2.9344, -2.76119, -2.56567, -2.3429, -2.06276, -1.67452, -1.21232, -0.73148, -0.26207, 0.17808, 0.59503, 0.98204, 1.33622, 1.67039, 1.97855, 2.27258, 2.56388, 2.84039, 3.08896, 3.28894, 3.39743, 3.38225, 3.26528, 3.10222, 2.93438, 2.85068],
15
+ "flux_k": [-6.9463e-10, 3.622e-05, 7.2328e-05, 0.00010804, 0.00014264, 0.00017495, 0.00020373, 0.00022816, 0.00024797, 0.00026318, 0.00027388, 0.00028018, 0.00028225, 0.00028018, 0.00027388, 0.00026319, 0.00024797, 0.00022816, 0.00020373, 0.00017495, 0.00014264, 0.00010804, 7.2329e-05, 3.6221e-05, 4.7315e-10, -3.622e-05, -7.2328e-05, -0.00010804, -0.00014264, -0.00017495, -0.00020373, -0.00022816, -0.00024797, -0.00026318, -0.00027388, -0.00028018, -0.00028225, -0.00028018, -0.00027388, -0.00026319, -0.00024797, -0.00022816, -0.00020373, -0.00017495, -0.00014264, -0.00010804, -7.2329e-05, -3.6221e-05, -1.344e-09, 3.6219e-05],
13
16
  "current_k": [139.6661, 137.1965, 132.3793, 125.2972, 116.0712, 104.8591, 91.8529, 77.2751, 61.3751, 44.4249, 26.7146, 8.5472, -9.7664, -27.913, -45.5819, -62.4709, -78.291, -92.7716, -105.6648, -116.75, -125.8376, -132.7721, -137.4348, -139.746, -139.6661, -137.1964, -132.3793, -125.2972, -116.0711, -104.8591, -91.8529, -77.2751, -61.375, -44.4248, -26.7145, -8.5471, 9.7665, 27.913, 45.582, 62.471, 78.2911, 92.7716, 105.6648, 116.7501, 125.8377, 132.7721, 137.4348, 139.746, 139.6661, 137.1964]}]},
14
- {"1": [{"voltage_dpsi": [-0.164, 0.31282, 1.22918, 2.04412, 2.76836, 3.46167, 4.11078, 4.77156, 5.46133, 6.11894, 6.72286, 7.17226, 7.41434, 7.37021, 7.08365, 6.73419, 6.37469, 6.02313, 5.65316, 5.21216, 4.63892, 3.82747, 2.83881, 1.75897, 0.67703, -0.30814, -1.22402, -2.03929, -2.77346, -3.45998, -4.10589, -4.77592, -5.46118, -6.11693, -6.71904, -7.1717, -7.41769, -7.36689, -7.08377, -6.73809, -6.37507, -6.02389, -5.6506, -5.21247, -4.64366, -3.82516, -2.83299, -1.75901, -0.67935, -0.17111]}],
15
- "2": [{"voltage_dpsi": [-5.79795, -6.11993, -6.7221, -7.17369, -7.41038, -7.36841, -7.0954, -6.74027, -6.37224, -6.02015, -5.6508, -5.21078, -4.64548, -3.83655, -2.8201, -1.74367, -0.68171, 0.3047, 1.21988, 2.0388, 2.77748, 3.45904, 4.09605, 4.77066, 5.46193, 6.11755, 6.72035, 7.17308, 7.41739, 7.37072, 7.08598, 6.73638, 6.37495, 6.02127, 5.65027, 5.21196, 4.64339, 3.82886, 2.8256, 1.75069, 0.6829, -0.30317, -1.22397, -2.03802, -2.77241, -3.46157, -4.10196, -4.77059, -5.46082, -5.79421]}],
16
- "3": [{"voltage_dpsi": [6.19601, 6.01926, 5.64672, 5.20807, 4.64101, 3.82704, 2.83086, 1.75627, 0.67645, -0.31084, -1.22597, -2.03996, -2.76816, -3.45404, -4.10878, -4.77759, -5.45876, -6.11606, -6.71946, -7.1725, -7.41691, -7.36647, -7.08919, -6.74187, -6.37346, -6.02129, -5.65, -5.21234, -4.64353, -3.8312, -2.82547, -1.74764, -0.67936, 0.30752, 1.22233, 2.0382, 2.77387, 3.45808, 4.10343, 4.77476, 5.458, 6.11536, 6.72081, 7.17204, 7.41658, 7.36668, 7.08927, 6.74189, 6.37457, 6.199]}]},
17
- {"1": [{"voltage_dpsi": [-0.13021, 0.13398, 0.63544, 1.07588, 1.43528, 1.76639, 2.12693, 2.50364, 2.89065, 3.27719, 3.63451, 3.89846, 4.01618, 3.97256, 3.81911, 3.6284, 3.43585, 3.256, 3.07992, 2.86525, 2.57751, 2.16822, 1.61886, 1.01051, 0.41958, -0.13092, -0.63389, -1.07351, -1.438, -1.76628, -2.1236, -2.50407, -2.89058, -3.27649, -3.6347, -3.90002, -4.01488, -3.97198, -3.81908, -3.62717, -3.43662, -3.2567, -3.07975, -2.86806, -2.57996, -2.16204, -1.61665, -1.01521, -0.41851, -0.13103]}],
18
- "2": [{"voltage_dpsi": [-3.08691, -3.27739, -3.63554, -3.90035, -4.01726, -3.97426, -3.81858, -3.62641, -3.43566, -3.25674, -3.08029, -2.86443, -2.5814, -2.1668, -1.61474, -1.01335, -0.42013, 0.13246, 0.63408, 1.07328, 1.44146, 1.76559, 2.11834, 2.50359, 2.89062, 3.27621, 3.63475, 3.89964, 4.01944, 3.9731, 3.81565, 3.62633, 3.43581, 3.25685, 3.08075, 2.86964, 2.58012, 2.16347, 1.61455, 1.01158, 0.42203, -0.13062, -0.63452, -1.07269, -1.43881, -1.76896, -2.12106, -2.50105, -2.89114, -3.08745]}],
19
- "3": [{"voltage_dpsi": [3.34229, 3.25579, 3.0797, 2.86326, 2.58155, 2.16852, 1.61177, 1.01002, 0.41964, -0.1328, -0.63375, -1.07268, -1.43428, -1.76624, -2.12453, -2.50245, -2.89037, -3.27617, -3.63446, -3.89975, -4.01921, -3.97327, -3.81721, -3.62683, -3.43556, -3.25756, -3.08041, -2.86489, -2.5812, -2.16737, -1.61191, -1.00953, -0.41986, 0.13195, 0.63353, 1.06914, 1.43416, 1.769, 2.12468, 2.50287, 2.88933, 3.27515, 3.63472, 3.90184, 4.01901, 3.97065, 3.81767, 3.62879, 3.43505, 3.34368]}]}]
17
+ {"1": [{"voltage_dpsi": [-0.164, 0.31282, 1.22918, 2.04412, 2.76836, 3.46167, 4.11078, 4.77156, 5.46133, 6.11894, 6.72286, 7.17226, 7.41434, 7.37021, 7.08365, 6.73419, 6.37469, 6.02313, 5.65316, 5.21216, 4.63892, 3.82747, 2.83881, 1.75897, 0.67703, -0.30814, -1.22402, -2.03929, -2.77346, -3.45998, -4.10589, -4.77592, -5.46118, -6.11693, -6.71904, -7.1717, -7.41769, -7.36689, -7.08377, -6.73809, -6.37507, -6.02389, -5.6506, -5.21247, -4.64366, -3.82516, -2.83299, -1.75901, -0.67935, -0.17111],
18
+ "flux_k": [-0.00054346, -0.00057622, -0.00059881, -0.00061181, -0.00061601, -0.00061181, -0.00059881, -0.00057622, -0.00054346, -0.0005002, -0.00044635, -0.00038264, -0.00031122, -0.00023515, -0.00015714, -7.8606e-05, 2.8188e-10, 7.8607e-05, 0.00015714, 0.00023515, 0.00031122, 0.00038264, 0.00044635, 0.0005002, 0.00054346, 0.00057622, 0.00059881, 0.00061181, 0.00061601, 0.00061181, 0.00059881, 0.00057622, 0.00054346, 0.0005002, 0.00044635, 0.00038265, 0.00031122, 0.00023516, 0.00015714, 7.8609e-05, 2.4765e-09, -7.8604e-05, -0.00015714, -0.00023515, -0.00031122, -0.00038264, -0.00044635, -0.0005002, -0.00054346, -0.00057622]}],
19
+ "2": [{"voltage_dpsi": [-5.79795, -6.11993, -6.7221, -7.17369, -7.41038, -7.36841, -7.0954, -6.74027, -6.37224, -6.02015, -5.6508, -5.21078, -4.64548, -3.83655, -2.8201, -1.74367, -0.68171, 0.3047, 1.21988, 2.0388, 2.77748, 3.45904, 4.09605, 4.77066, 5.46193, 6.11755, 6.72035, 7.17308, 7.41739, 7.37072, 7.08598, 6.73638, 6.37495, 6.02127, 5.65027, 5.21196, 4.64339, 3.82886, 2.8256, 1.75069, 0.6829, -0.30317, -1.22397, -2.03802, -2.77241, -3.46157, -4.10196, -4.77059, -5.46082, -5.79421],
20
+ "flux_k": [0.00054346, 0.0005002, 0.00044635, 0.00038265, 0.00031122, 0.00023515, 0.00015714, 7.8606e-05, -1.1275e-09, -7.8608e-05, -0.00015714, -0.00023516, -0.00031122, -0.00038265, -0.00044636, -0.0005002, -0.00054346, -0.00057622, -0.00059882, -0.00061181, -0.00061602, -0.00061181, -0.00059881, -0.00057622, -0.00054346, -0.0005002, -0.00044636, -0.00038265, -0.00031122, -0.00023516, -0.00015715, -7.8609e-05, -2.2953e-09, 7.8605e-05, 0.00015714, 0.00023515, 0.00031122, 0.00038265, 0.00044635, 0.0005002, 0.00054346, 0.00057622, 0.00059882, 0.00061181, 0.00061602, 0.00061182, 0.00059882, 0.00057623, 0.00054346, 0.0005002]}],
21
+ "3": [{"voltage_dpsi": [6.19601, 6.01926, 5.64672, 5.20807, 4.64101, 3.82704, 2.83086, 1.75627, 0.67645, -0.31084, -1.22597, -2.03996, -2.76816, -3.45404, -4.10878, -4.77759, -5.45876, -6.11606, -6.71946, -7.1725, -7.41691, -7.36647, -7.08919, -6.74187, -6.37346, -6.02129, -5.65, -5.21234, -4.64353, -3.8312, -2.82547, -1.74764, -0.67936, 0.30752, 1.22233, 2.0382, 2.77387, 3.45808, 4.10343, 4.77476, 5.458, 6.11536, 6.72081, 7.17204, 7.41658, 7.36668, 7.08927, 6.74189, 6.37457, 6.199],
22
+ "flux_k": [-2.396e-09, 7.8604e-05, 0.00015714, 0.00023515, 0.00031122, 0.00038264, 0.00044635, 0.0005002, 0.00054346, 0.00057622, 0.00059881, 0.00061181, 0.00061601, 0.00061181, 0.00059881, 0.00057622, 0.00054346, 0.0005002, 0.00044636, 0.00038265, 0.00031122, 0.00023516, 0.00015715, 7.8611e-05, 3.9866e-09, -7.8603e-05, -0.00015714, -0.00023515, -0.00031122, -0.00038264, -0.00044635, -0.0005002, -0.00054346, -0.00057622, -0.00059881, -0.00061181, -0.00061601, -0.00061181, -0.00059881, -0.00057622, -0.00054347, -0.00050021, -0.00044636, -0.00038265, -0.00031123, -0.00023516, -0.00015715, -7.8616e-05, -4.5503e-09, 7.8602e-05]}]},
23
+ {"1": [{"voltage_dpsi": [-0.13021, 0.13398, 0.63544, 1.07588, 1.43528, 1.76639, 2.12693, 2.50364, 2.89065, 3.27719, 3.63451, 3.89846, 4.01618, 3.97256, 3.81911, 3.6284, 3.43585, 3.256, 3.07992, 2.86525, 2.57751, 2.16822, 1.61886, 1.01051, 0.41958, -0.13092, -0.63389, -1.07351, -1.438, -1.76628, -2.1236, -2.50407, -2.89058, -3.27649, -3.6347, -3.90002, -4.01488, -3.97198, -3.81908, -3.62717, -3.43662, -3.2567, -3.07975, -2.86806, -2.57996, -2.16204, -1.61665, -1.01521, -0.41851, -0.13103],
24
+ "flux_k": [-0.0002955, -0.000313, -0.0003248, -0.00033141, -0.0003335, -0.00033141, -0.0003248, -0.000313, -0.0002955, -0.00027203, -0.00024254, -0.00020755, -0.00016843, -0.000127, -8.4739e-05, -4.2345e-05, 1.0973e-09, 4.2347e-05, 8.4742e-05, 0.000127, 0.00016843, 0.00020755, 0.00024254, 0.00027203, 0.0002955, 0.000313, 0.0003248, 0.00033141, 0.0003335, 0.00033141, 0.0003248, 0.000313, 0.0002955, 0.00027203, 0.00024254, 0.00020755, 0.00016843, 0.000127, 8.474e-05, 4.2345e-05, -1.1174e-09, -4.2347e-05, -8.4742e-05, -0.000127, -0.00016843, -0.00020755, -0.00024254, -0.00027203, -0.0002955, -0.000313]}],
25
+ "2": [{"voltage_dpsi": [-3.08691, -3.27739, -3.63554, -3.90035, -4.01726, -3.97426, -3.81858, -3.62641, -3.43566, -3.25674, -3.08029, -2.86443, -2.5814, -2.1668, -1.61474, -1.01335, -0.42013, 0.13246, 0.63408, 1.07328, 1.44146, 1.76559, 2.11834, 2.50359, 2.89062, 3.27621, 3.63475, 3.89964, 4.01944, 3.9731, 3.81565, 3.62633, 3.43581, 3.25685, 3.08075, 2.86964, 2.58012, 2.16347, 1.61455, 1.01158, 0.42203, -0.13062, -0.63452, -1.07269, -1.43881, -1.76896, -2.12106, -2.50105, -2.89114, -3.08745],
26
+ "flux_k": [0.0002955, 0.00027203, 0.00024254, 0.00020755, 0.00016843, 0.000127, 8.4741e-05, 4.2346e-05, -7.953e-10, -4.2347e-05, -8.4742e-05, -0.000127, -0.00016843, -0.00020755, -0.00024254, -0.00027203, -0.0002955, -0.000313, -0.00032481, -0.00033141, -0.0003335, -0.00033141, -0.00032481, -0.000313, -0.0002955, -0.00027203, -0.00024254, -0.00020755, -0.00016843, -0.000127, -8.4741e-05, -4.2346e-05, 4.3288e-10, 4.2347e-05, 8.4742e-05, 0.000127, 0.00016843, 0.00020755, 0.00024254, 0.00027203, 0.0002955, 0.000313, 0.00032481, 0.00033141, 0.0003335, 0.00033141, 0.00032481, 0.000313, 0.0002955, 0.00027203]}],
27
+ "3": [{"voltage_dpsi": [3.34229, 3.25579, 3.0797, 2.86326, 2.58155, 2.16852, 1.61177, 1.01002, 0.41964, -0.1328, -0.63375, -1.07268, -1.43428, -1.76624, -2.12453, -2.50245, -2.89037, -3.27617, -3.63446, -3.89975, -4.01921, -3.97327, -3.81721, -3.62683, -3.43556, -3.25756, -3.08041, -2.86489, -2.5812, -2.16737, -1.61191, -1.00953, -0.41986, 0.13195, 0.63353, 1.06914, 1.43416, 1.769, 2.12468, 2.50287, 2.88933, 3.27515, 3.63472, 3.90184, 4.01901, 3.97065, 3.81767, 3.62879, 3.43505, 3.34368],
28
+ "flux_k": [-1.4799e-09, 4.2345e-05, 8.4739e-05, 0.000127, 0.00016843, 0.00020755, 0.00024254, 0.00027203, 0.0002955, 0.000313, 0.0003248, 0.00033141, 0.0003335, 0.00033141, 0.0003248, 0.000313, 0.0002955, 0.00027203, 0.00024254, 0.00020755, 0.00016843, 0.000127, 8.4742e-05, 4.2348e-05, 1.6107e-09, -4.2345e-05, -8.4739e-05, -0.000127, -0.00016843, -0.00020755, -0.00024254, -0.00027203, -0.0002955, -0.000313, -0.0003248, -0.00033141, -0.0003335, -0.00033141, -0.0003248, -0.000313, -0.0002955, -0.00027203, -0.00024254, -0.00020755, -0.00016843, -0.00012701, -8.4742e-05, -4.2348e-05, -2.0235e-09, 4.2344e-05]}]}]
20
29
 
21
30
  linearForce = [{"displ": [0.0, 1.17, 2.34, 3.51, 4.68, 5.85, 7.019, 8.189, 9.359, 10.529, 11.699, 12.869, 14.039, 15.209, 16.379, 17.549, 18.719, 19.889, 21.058, 22.228, 23.398, 24.568, 25.738, 26.908, 28.078, 29.248, 30.418, 31.588, 32.758, 33.928, 35.097, 36.267, 37.437, 38.607, 39.777, 40.947, 42.117, 43.287, 44.457, 45.627, 46.797, 47.967, 49.136, 50.306, 51.476, 52.646, 53.816, 54.986, 56.156, 57.326],
22
31
  "force_x": [6.699, 6.09, 5.918, 6.376, 7.321, 8.036, 8.02, 7.45, 6.693, 6.086, 5.917, 6.379, 7.325, 8.037, 8.02, 7.449, 6.693, 6.087, 5.917, 6.379, 7.325, 8.036, 8.019, 7.449, 6.692, 6.086, 5.917, 6.379, 7.322, 8.038, 8.021, 7.449, 6.692, 6.087, 5.917, 6.381, 7.323, 8.035, 8.023, 7.449, 6.693, 6.088, 5.917, 6.38, 7.325, 8.036, 8.022, 7.449, 6.692, 6.086]},
tests/test_femag.py CHANGED
@@ -70,7 +70,7 @@ def test_run_script(monkeypatch, tmpdir):
70
70
  magnetizingCurves=mcv, magnets=magnetmat)
71
71
 
72
72
  fsl = femag.create_fsl(machine, simulation)
73
- assert len(fsl) == 95
73
+ assert len(fsl) == 94
74
74
  assert femag.model.magnet['temp_prop']['magntemp'] == 60.0
75
75
 
76
76
  r = femag(machine, simulation)
tests/test_fsl.py CHANGED
@@ -319,15 +319,15 @@ class FslBuilderTest(unittest.TestCase):
319
319
 
320
320
  feapars['calculationMode'] = "pm_sym_fast"
321
321
  fsl = self.builder.create_analysis(feapars)
322
- self.assertEqual(len(fsl), 34)
322
+ self.assertEqual(len(fsl), 35)
323
323
 
324
324
  feapars['calculationMode'] = "mult_cal_fast"
325
325
  fsl = self.builder.create_analysis(feapars)
326
- self.assertEqual(len(fsl), 32)
326
+ self.assertEqual(len(fsl), 33)
327
327
 
328
328
  feapars['calculationMode'] = "torq_calc"
329
329
  fsl = self.builder.create_analysis(feapars)
330
- self.assertEqual(len(fsl), 26)
330
+ self.assertEqual(len(fsl), 27)
331
331
 
332
332
  def test_run_existing_model(self):
333
333
  model = femagtools.MachineModel('data/magnsec')
@@ -498,7 +498,7 @@ class FslBuilderTest(unittest.TestCase):
498
498
  magnets = femagtools.magnet.Magnet(magnetmat)
499
499
  condMat = femagtools.magnet.Magnet([dict(name='Cu', elconduct=56e6)])
500
500
  fsl = self.builder.create_model(model, magnets, condMat)
501
- self.assertEqual(len(fsl), 188)
501
+ self.assertEqual(len(fsl), 187)
502
502
  brem = [l.strip() for l in fsl
503
503
  if l.split('=')[0].strip() == 'm.remanenc']
504
504
  self.assertEqual(brem[-1].split('=')[-1].strip(),
tests/test_mcv.py CHANGED
@@ -3,6 +3,11 @@ import os
3
3
  import pytest
4
4
  import numpy as np
5
5
  import femagtools.mcv
6
+ import pathlib
7
+
8
+ @pytest.fixture
9
+ def mcv_data_dir():
10
+ return pathlib.Path(__file__).with_name('data')
6
11
 
7
12
  def test_write_mcv_magcrv(tmpdir):
8
13
  filename = f"{tmpdir}/mcvData"
@@ -40,13 +45,10 @@ def test_write_mcv_orient_crv(tmpdir):
40
45
  assert mcvr['curve'][1]['hi'] == pytest.approx(H, 1e-3)
41
46
  assert len(mcvr['curve']) == 2
42
47
 
43
- def test_read_mcv_magcrv():
44
- testPath = os.path.split(__file__)[0]
45
- if not testPath:
46
- testPath = '.'
47
- filename = "data/TKS_NO_20.MCV"
48
+ def test_read_mcv_magcrv(mcv_data_dir):
49
+ filename = "TKS_NO_20.MCV"
48
50
  reader = femagtools.mcv.Reader()
49
- reader.readMcv('{0}/{1}'.format(testPath, filename))
51
+ reader.readMcv(mcv_data_dir / filename)
50
52
  r = reader.get_results()
51
53
  assert r['desc'] == u'PowerCore\xae NO 20 ;ThyssenKrupp Steel Eur'
52
54
  assert r['fillfac'] == pytest.approx(0.92, 1e-6)
@@ -54,13 +56,10 @@ def test_read_mcv_magcrv():
54
56
  assert r['curve'][0]['bi'][0] == 0.0
55
57
  assert r['curve'][0]['bi'][-1] == pytest.approx(1.836, 1e-3)
56
58
 
57
- def test_read_write_mcv_with_losses():
58
- testPath = os.path.split(__file__)[0]
59
- if not testPath:
60
- testPath = '.'
61
- filename = "data/TKM270-50A-LOSS.MCV"
59
+ def test_read_write_mcv_with_losses(mcv_data_dir):
60
+ filename = "TKM270-50A-LOSS.MCV"
62
61
  reader = femagtools.mcv.Reader()
63
- reader.readMcv('{0}/{1}'.format(testPath, filename))
62
+ reader.readMcv(mcv_data_dir / filename)
64
63
  r = reader.get_results()
65
64
  assert r['name'] == u'TKM270-50A-LOSS'
66
65
  assert len(r['curve'][0]['bi']) == 35
@@ -72,9 +71,9 @@ def test_read_write_mcv_with_losses():
72
71
  assert r['losses']['pfe'][8][18] == pytest.approx(3097.6, 0.1)
73
72
 
74
73
  # test mcv writer
75
- filename_out = "data/TKS_LOSS.MCV"
74
+ filename_out = "TKS_LOSS.MCV"
76
75
  writer = femagtools.mcv.Writer(r)
77
- writeMcvFile = '{0}/{1}'.format(testPath, filename_out)
76
+ writeMcvFile = mcv_data_dir / filename_out
78
77
  writer.writeMcv(writeMcvFile)
79
78
  # TEST
80
79
  reader2 = femagtools.mcv.Reader()
@@ -93,6 +92,13 @@ def test_read_write_mcv_with_losses():
93
92
  np.testing.assert_almost_equal(reader.losses['B'],
94
93
  reader2.losses['B'], 5)
95
94
 
95
+ writer.bertotti = {'ch': 0.02196930496538005,
96
+ 'cw': 9.739048407022554e-05,
97
+ 'ce': 0.00047834510925596726,
98
+ 'ch_freq': 2, 'b_coeff':0}
99
+ writer.writeMcv(mcv_data_dir / "TKS_LOSS2.MCV", feloss='bertotti')
100
+
101
+
96
102
  def test_extrapol():
97
103
  mcv = {'name':"M222",
98
104
  'curve':[{