femagtools 1.8.2__py3-none-any.whl → 1.8.3__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.
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':[{