femagtools 1.6.6__py3-none-any.whl → 1.6.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
femagtools/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  """
4
4
  __title__ = 'femagtools'
5
- __version__ = '1.6.6'
5
+ __version__ = '1.6.7'
6
6
  __author__ = 'Ronald Tanner'
7
7
  __license__ = 'BSD'
8
8
  __copyright__ = 'Copyright 2016-2022 SEMAFOR Informatik & Energie AG'
@@ -22,9 +22,27 @@ from femagtools.dxfsl.journal import getJournal
22
22
  import io
23
23
  import time
24
24
 
25
- logger = logging.getLogger('femagtools.concat')
25
+ logger = logging.getLogger('femagtools.areabuilder')
26
+ original_log_level = None
26
27
 
28
+ def disable_logging():
29
+ logger
30
+ global original_log_level
31
+ # Store the current log level to restore it later
32
+ original_log_level = logger.getEffectiveLevel()
33
+ logger.debug("Logging level %s disabled", original_log_level)
27
34
 
35
+ # Set the log level to a higher level, e.g., WARNING or CRITICAL
36
+ logging.disable(logging.CRITICAL)
37
+
38
+
39
+ def enable_logging():
40
+ #if original_log_level is not None:
41
+ # Restore the original log level after the tests
42
+ logging.disable(logging.NOTSET)
43
+ logger.debug("Logging level %s enabled", original_log_level)
44
+
45
+
28
46
  def log_lefthand(left, edge1, edge2):
29
47
  if left:
30
48
  edge1.log_edge("**** left")
@@ -36,7 +54,6 @@ def log_lefthand(left, edge1, edge2):
36
54
  # areabuilder #
37
55
  #############################
38
56
 
39
-
40
57
  class EdgeInfo(object):
41
58
  def __init__(self,
42
59
  edge_data=None,
@@ -113,18 +130,47 @@ class EdgeInfo(object):
113
130
  start_angle = positive_angle(self.n2_angle_ingoing())
114
131
  self.startangle = start_angle
115
132
 
116
- def set_direction_angle(self, start_angle):
117
- angle = positive_angle(alpha_angle(start_angle, self.n1_angle_ingoing()))
118
- if is_same_angle(0.0, angle, atol=0.008): # 1/2 degree
133
+ def set_direction_angle(self, start_edge):
134
+ start_angle = start_edge.startangle
135
+ logger.debug("begin set_direction_angle: of %s", self.name)
136
+ self.angle = positive_angle(alpha_angle(start_angle, self.n1_angle_ingoing()))
137
+ logger.debug("set_direction_angle: angle is %s", self.angle)
138
+
139
+ if is_same_angle(0.0, self.angle, atol=0.008): # 1/2 degree
119
140
  # reverse direction
120
- if self.n1_direction_righthand():
121
- self.angle = 2.0 * np.pi
122
- elif self.n1_direction_lefthand():
123
- self.angle = 0.0
124
- else:
125
- self.angle = angle
126
- else:
127
- self.angle = angle
141
+ logger.debug("set_direction_angle: reverse direction( nearly 180 degrees)")
142
+
143
+ if start_edge.is_arc():
144
+ start_lefthand = start_edge.n1_direction_lefthand()
145
+ if self.is_arc():
146
+ myself_lefthand = self.n1_direction_lefthand()
147
+ if start_lefthand:
148
+ if not myself_lefthand: # righthand => same side
149
+ left = self.radius() < start_edge.radius()
150
+ else:
151
+ left = False
152
+ else:
153
+ if myself_lefthand: # lefthand => same side
154
+ left = self.radius() > start_edge.radius()
155
+ else:
156
+ left = True
157
+ if left: # self is left
158
+ self.angle = np.pi * 2.0
159
+ else:
160
+ self.angle = 0.0
161
+ elif self.is_line():
162
+ if start_lefthand:
163
+ self.angle = 0.0
164
+ else:
165
+ self.angle = np.pi * 2.0
166
+ else: # start is a line
167
+ if self.is_arc():
168
+ if self.n1_direction_righthand():
169
+ self.angle = np.pi * 2.0
170
+ else:
171
+ self.angle = 0.0
172
+
173
+ logger.debug("end set_direction_angle: angle is %s", self.angle)
128
174
 
129
175
  def n1_angle_outgoing(self):
130
176
  return self.element.get_alpha(self.n1)
@@ -166,6 +212,7 @@ class EdgeInfo(object):
166
212
 
167
213
  def myself_direction_lefthand(self, start_edge, nbr_edge, builder, ignore_start=False):
168
214
  logger.debug("start of myself_direction_lefthand")
215
+ start_edge.log_edge("===> start")
169
216
  self.log_edge("---> self")
170
217
  nbr_edge.log_edge("---> nbr")
171
218
 
@@ -176,13 +223,14 @@ class EdgeInfo(object):
176
223
  # 360 or 0 degrees => turn 180 degrees
177
224
  logger.debug("-- ATTENTION: myself %s turns nearly 180 degrees", self.classname())
178
225
  logger.debug(" the angle is %s", myself_angle)
226
+
179
227
  if start_edge.is_arc():
180
228
  if self.is_line() and not ignore_start:
181
229
  if start_edge.line_arc_close_together(self):
182
230
  logger.debug("START ARC and SELF LINE close")
183
231
  arc_edge = start_edge.get_reverse_edge() # reverse start edge
184
232
  arc_edge.log_name("REVERSE")
185
- arc_edge.set_direction_angle(start_edge.startangle)
233
+ arc_edge.set_direction_angle(start_edge)
186
234
  left = not arc_edge.arc_line_direction_lefthand(start_edge, self, builder)
187
235
  log_lefthand(left, self, arc_edge)
188
236
  if left: # self is left
@@ -192,13 +240,8 @@ class EdgeInfo(object):
192
240
  left = myself_angle > other_angle
193
241
 
194
242
  log_lefthand(left, self, nbr_edge)
195
- logger.debug("#3: end of myself_direction_lefthand: ==> %s", left)
243
+ logger.debug("#1a: end of myself_direction_lefthand: ==> %s", left)
196
244
  return left
197
-
198
- if start_edge.n1_direction_lefthand():
199
- myself_angle = 0.0
200
- else:
201
- myself_angle = np.pi * 2.0
202
245
 
203
246
  elif self.is_arc():
204
247
  if not ignore_start:
@@ -206,7 +249,7 @@ class EdgeInfo(object):
206
249
  logger.debug("START LINE and SELF ARC close")
207
250
  line_edge = start_edge.get_reverse_edge() # reverse start edge
208
251
  line_edge.log_name("REVERSE")
209
- line_edge.set_direction_angle(start_edge.startangle)
252
+ line_edge.set_direction_angle(start_edge)
210
253
  left = self.arc_line_direction_lefthand(start_edge, line_edge, builder)
211
254
  log_lefthand(left, self, line_edge)
212
255
  if left: # self is left
@@ -219,11 +262,6 @@ class EdgeInfo(object):
219
262
  logger.debug("#4: end of myself_direction_lefthand: ==> %s", left)
220
263
  return left
221
264
 
222
- if self.n1_direction_lefthand():
223
- myself_angle = 0.0
224
- else:
225
- myself_angle = np.pi * 2.0
226
-
227
265
  if is_same_angle(0.0, other_angle, atol=0.008): # 1/2 degree
228
266
  # 360 or 0 degrees => turn 180 degrees
229
267
  logger.debug("-- ATTENTION: other %s turns nearly 180 degrees", nbr_edge.classname())
@@ -233,32 +271,22 @@ class EdgeInfo(object):
233
271
  if start_edge.line_arc_close_together(nbr_edge):
234
272
  logger.debug("START ARC and SELF LINE close")
235
273
  arc_edge = start_edge.get_reverse_edge() # reverse start edge
236
- arc_edge.set_direction_angle(start_edge.startangle)
274
+ arc_edge.set_direction_angle(start_edge)
237
275
  left = arc_edge.arc_line_direction_lefthand(start_edge, nbr_edge, builder)
238
- log_lefthand(left, self, line_edge)
276
+ log_lefthand(left, self, nbr_edge)
239
277
  logger.debug("#5: end of myself_direction_lefthand: ==> %s", not left)
240
278
  return not left
241
279
 
242
- if start_edge.n1_direction_lefthand():
243
- other_angle = 0.0
244
- else:
245
- other_angle = np.pi * 2.0
246
-
247
280
  elif nbr_edge.is_arc():
248
281
  if not ignore_start:
249
282
  if nbr_edge.line_arc_close_together(start_edge):
250
283
  logger.debug("START LINE and NEIGHBOR ARC close")
251
284
  line_edge = start_edge.get_reverse_edge() # reverse start edge
252
- line_edge.set_direction_angle(start_edge.startangle)
285
+ line_edge.set_direction_angle(start_edge)
253
286
  left = nbr_edge.arc_line_direction_lefthand(start_edge, line_edge, builder)
254
287
  logger.debug("#6: end of myself_direction_lefthand: ==> %s", left)
255
288
  return left
256
289
 
257
- if nbr_edge.n1_direction_lefthand():
258
- other_angle = 0.0
259
- else:
260
- other_angle = np.pi * 2.0
261
-
262
290
  logger.debug("-- angles: myself = %s, other = %s",
263
291
  myself_angle, other_angle)
264
292
  if not is_same_angle(myself_angle, other_angle, atol=0.008): # 1/2 degree
@@ -328,7 +356,7 @@ class EdgeInfo(object):
328
356
  line_edge.startangle = start_edge.startangle
329
357
  # Line is start-edge now
330
358
  next_edge = builder.next_edge_lefthand_side(line_edge) # next of line
331
- next_edge.set_direction_angle(start_edge.startangle)
359
+ next_edge.set_direction_angle(start_edge)
332
360
  left = self.myself_direction_lefthand(start_edge,
333
361
  next_edge,
334
362
  builder,
@@ -336,10 +364,28 @@ class EdgeInfo(object):
336
364
  logger.debug("end of arc_line_direction_lefthand: arc lefthand = %s", left)
337
365
  return left
338
366
 
367
+ def get_alpha_points(self, prev_n):
368
+ n1 = self.n1
369
+ n2 = self.n2
370
+ a = 0.0
371
+ if self.is_arc():
372
+ angle = self.element.get_angle_of_arc()
373
+ if angle > np.pi * 0.75:
374
+ n = self.element.center_of_connection()
375
+ a = normalise_angle(alpha_points(prev_n,
376
+ n1,
377
+ n))
378
+ n1 = n
379
+
380
+ a += normalise_angle(alpha_points(prev_n,
381
+ n1,
382
+ n2))
383
+ return a, n1
339
384
 
340
385
  class AreaBuilder(object):
341
386
  def __init__(self,
342
387
  geom=None,
388
+ nolog=True,
343
389
  rtol=1e-04,
344
390
  atol=1e-04,
345
391
  ndec=6):
@@ -349,6 +395,7 @@ class AreaBuilder(object):
349
395
  self.geom = geom
350
396
  self.area_list = []
351
397
  self.journal = getJournal()
398
+ self.nolog = nolog
352
399
 
353
400
  def __str__(self):
354
401
  return "rtol: {}\n".format(self.rtol) + \
@@ -379,7 +426,8 @@ class AreaBuilder(object):
379
426
  area_list.append(a)
380
427
 
381
428
  timer = Timer(start_it=True)
382
-
429
+ if self.nolog:
430
+ disable_logging()
383
431
  self.set_edge_attributes()
384
432
 
385
433
  for n in self.geom.nodes():
@@ -392,7 +440,8 @@ class AreaBuilder(object):
392
440
  if result['ok']:
393
441
  a = self.append_new_area(self.area_list, result['area'])
394
442
  logger.debug("Area %s found", a.identifier())
395
-
443
+ if self.nolog:
444
+ enable_logging()
396
445
  t = timer.stop("{} areas created in %0.4f seconds".format(len(self.area_list)))
397
446
  if main:
398
447
  self.journal.put('time_build_areas', t)
@@ -461,14 +510,13 @@ class AreaBuilder(object):
461
510
  self.errors += 1
462
511
  return result
463
512
 
464
- prev_n1 = info_curr.n1
513
+ prev_node = info_curr.n1
465
514
  next_n1 = info_next.n1
466
515
  next_n2 = info_next.n2
467
516
 
468
- alpha = normalise_angle(alpha_points(prev_n1,
469
- next_n1,
470
- next_n2))
517
+ alpha, prev_node = info_next.get_alpha_points(prev_node)
471
518
 
519
+ logger.debug("--> alpha %s <--", alpha)
472
520
  c = 1
473
521
  while not (nodes_are_equal(next_n1, start_n1) and
474
522
  nodes_are_equal(next_n2, start_n2)):
@@ -505,14 +553,12 @@ class AreaBuilder(object):
505
553
  self.errors += 1
506
554
  return result
507
555
 
508
- prev_n1 = info_curr.n1
509
556
  next_n1 = info_next.n1
510
557
  next_n2 = info_next.n2
511
558
 
512
- a = normalise_angle(alpha_points(prev_n1,
513
- next_n1,
514
- next_n2))
559
+ a, prev_node = info_next.get_alpha_points(prev_node)
515
560
  alpha += a
561
+ logger.debug("--> alpha %s (+ %s) <--", alpha, a)
516
562
 
517
563
  logger.debug(" END OF get_new_area")
518
564
 
@@ -543,20 +589,21 @@ class AreaBuilder(object):
543
589
  logger.debug("WARNING: no neighbors available ???")
544
590
  return None # unexpected end => appendix
545
591
 
546
- logger.debug("-- NODE %s has %s neighbors", start_edge.n2, len(nbrs))
547
- logger.debug("-- startangle is %s", start_edge.startangle)
548
-
549
592
  if len(nbrs) == 1:
550
593
  logger.debug("end of next_edge_lefthand_side: one neighbor")
551
594
  return nbrs[0]
552
595
 
596
+ logger.debug("-- NODE %s has %s neighbors", start_edge.n2, len(nbrs))
597
+ logger.debug("-- startangle is %s", start_edge.startangle)
598
+
553
599
  all_nbrs = []
554
600
  logger.debug("candidates are:")
555
601
  for i, nbr in enumerate(nbrs):
556
- nbr.set_direction_angle(start_edge.startangle)
602
+ nbr.set_direction_angle(start_edge)
557
603
  nbr.log_name("EDG-{}".format(i))
558
604
  nbr.log_edge("++++ candidate")
559
605
  all_nbrs.append((nbr.angle, i, nbr))
606
+ logger.debug("--")
560
607
  all_nbrs.sort()
561
608
 
562
609
  a1, i1, nbr1 = all_nbrs[0] # lefthandside
@@ -565,8 +612,9 @@ class AreaBuilder(object):
565
612
  nbr2.log_edge("==== next")
566
613
  if nbr2.myself_direction_lefthand(start_edge, nbr1, self):
567
614
  nbr1 = nbr2
568
- logger.debug("-- is new lefthand neighbor")
569
-
615
+ logger.debug("-- %s ist neuer lefthand neighbor", nbr1.name)
616
+ else:
617
+ logger.debug("-- %s bleibt lefthand neighbor", nbr1.name)
570
618
  nbr1.log_edge(">>>> LEFT")
571
619
  logger.debug("end of next_edge_lefthand_side")
572
620
  return nbr1
@@ -711,3 +759,27 @@ class AreaBuilder(object):
711
759
 
712
760
  logger.debug("end of get_inner_airgap_line #%s", len(nodes))
713
761
  return nodes, elements
762
+
763
+ def get_element_line(self, start_node, end_node):
764
+ logger.debug("begin of get_element_line")
765
+ assert(self.geom.area_list)
766
+
767
+ logger.debug("-- get line from %s to %s", start_node, end_node)
768
+
769
+ logger.debug("EDGE FOUND: %s - %s", n1, n2)
770
+ nodes = [n1, n2]
771
+ info = self.get_edge_info(n1, n2)
772
+ elements = [info.element]
773
+
774
+ while not points_are_close(start_corner, n2):
775
+ info.set_start_angle()
776
+ info = self.next_edge_lefthand_side(info)
777
+ if not info: # bad
778
+ return []
779
+ n2 = info.n2
780
+ nodes.append(n2)
781
+ elements.append(info.element)
782
+
783
+ logger.debug("end of get_inner_airgap_line #%s", len(nodes))
784
+ return nodes, elements
785
+
@@ -198,6 +198,7 @@ def efficiency_losses_map(eecpars, u1, T, temp, n, npoints=(60, 40),
198
198
  with_tmech -- (optional) use friction and windage losses (default)
199
199
  num_proc -- (optional) number of parallel processes (default 0)
200
200
  progress -- (optional) custom function for progress logging
201
+ with_torque_corr -- (optional) T is corrected if out of range (default False)
201
202
 
202
203
  Returns:
203
204
  list of speed, current, voltage, torque, eta and losses
@@ -220,7 +221,8 @@ def efficiency_losses_map(eecpars, u1, T, temp, n, npoints=(60, 40),
220
221
  rb = {}
221
222
  r = m.characteristics(T, nmax, u1, nsamples=nsamples,
222
223
  with_mtpv=with_mtpv, with_mtpa=with_mtpa,
223
- with_pmconst=with_pmconst, with_tmech=with_tmech) # driving mode
224
+ with_pmconst=with_pmconst, with_tmech=with_tmech,
225
+ **kwargs) # driving mode
224
226
  if driving_only:
225
227
  rb['n'] = None
226
228
  rb['T'] = None
@@ -235,12 +237,13 @@ def efficiency_losses_map(eecpars, u1, T, temp, n, npoints=(60, 40),
235
237
  if 'n' not in rb:
236
238
  rb = m.characteristics(-T, max(r['n']), u1, nsamples=nsamples,
237
239
  with_mtpv=with_mtpv, with_mtpa=with_mtpa,
238
- with_pmconst=with_pmconst, with_tmech=with_tmech) # braking mode
239
-
240
+ with_pmconst=with_pmconst, with_tmech=with_tmech,
241
+ **kwargs) # braking mode
242
+
240
243
  if kwargs.get('mesh_func', 0):
241
244
  ntmesh = kwargs['mesh_func'](r['n_type'], r['n'], r['T'],
242
245
  rb['n'], rb['T'], npoints)
243
- else:
246
+ else:
244
247
  ntmesh = _generate_mesh(r['n'], r['T'],
245
248
  rb['n'], rb['T'], npoints)
246
249
 
@@ -1,13 +1,13 @@
1
+ import sys
2
+ import pathlib
3
+ import argparse
4
+ import logging
5
+ import logging.config
6
+ from femagtools.dxfsl.converter import convert
1
7
 
8
+ logger = logging.getLogger(__name__)
2
9
 
3
- if __name__ == '__main__':
4
- import pathlib
5
- import argparse
6
- import logging
7
- import logging.config
8
- from femagtools.dxfsl.converter import convert
9
-
10
- logger = logging.getLogger(__name__)
10
+ def main():
11
11
  argparser = argparse.ArgumentParser(
12
12
  description='Process SVG file and create a plot or FSL file.')
13
13
  argparser.add_argument('svgfile',
@@ -72,3 +72,6 @@ if __name__ == '__main__':
72
72
  p = pathlib.Path(args.svgfile)
73
73
  basename = p.stem
74
74
  pathlib.Path(basename + '.fsl').write_text('\n'.join(res['fsl']))
75
+
76
+ if __name__ == '__main__':
77
+ main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: femagtools
3
- Version: 1.6.6
3
+ Version: 1.6.7
4
4
  Summary: Python API for FEMAG
5
5
  Author-email: Ronald Tanner <tar@semafor.ch>, Dapu Zhang <dzhang@gtisoft.com>, Beat Holm <hob@semafor.ch>, Günther Amsler <amg@semafor.ch>, Nicolas Mauchle <mau@semafor.ch>
6
6
  License: Copyright (c) 2016-2023, Semafor Informatik & Energie AG, Basel
@@ -1,4 +1,4 @@
1
- femagtools/__init__.py,sha256=lJNqlV6QzIM5MGG7uASKr5ZDeIiKRDYFtLqJu1GYyRQ,1615
1
+ femagtools/__init__.py,sha256=sZWTjcLQrMQetDOnxFFHROzNe3PSPMHr_BUzgnsJdXQ,1615
2
2
  femagtools/airgap.py,sha256=ZCIZTYf6BbuNYx68y9fUDBQo3taN8RuGl8q-jJ7ygiA,1577
3
3
  femagtools/amazon.py,sha256=O1ICuv21XDAJi1qK1Sigs2TdS6hDZP19OzvmE2t76wU,12069
4
4
  femagtools/amela.py,sha256=pHjfXzpANI-7oz8MtrqNcyDZ6PxVM91vCJuvYhHy1rk,13891
@@ -48,7 +48,7 @@ femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
48
48
  femagtools/windings.py,sha256=6ioABZRWQ3xA4kmEz2NUkXh-C-FmW9YYkjQKs5YakQs,22197
49
49
  femagtools/dxfsl/__init__.py,sha256=MywcCdpKPKs4qJBJJgeDsikJFJ2P48dbTuNk303f5pM,76
50
50
  femagtools/dxfsl/area.py,sha256=cbg3Vi3UUutiofvX9-L0OGmW4u1XmI8PjnY54Lq372M,58872
51
- femagtools/dxfsl/areabuilder.py,sha256=gaSdJe-LImcn-rCe-9hXTVO6uJZMMEnV9hzft-MDTHs,26928
51
+ femagtools/dxfsl/areabuilder.py,sha256=plVZoMX1MPj5ZGxzQxAcdigmULVO_pSGqdLzchctRNY,29780
52
52
  femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
53
53
  femagtools/dxfsl/conv.py,sha256=j17gjZ7XjoP6QmEO50ZMA-jyYrcMQEgpDH0hZN26RbM,9236
54
54
  femagtools/dxfsl/converter.py,sha256=41eyMSMad8YXiYSrTGrr9YuTPXHRIczh1fGX0MT9NZ8,21322
@@ -67,7 +67,7 @@ femagtools/dxfsl/svgparser.py,sha256=R8V2V5jE6JyVfzshJVaPgsSuMlQf_pwJTFvrTrKDxZ0
67
67
  femagtools/dxfsl/symmetry.py,sha256=pLuGLPRCHLSQiMe7HeDcZr7IR-QJqJX49Rag_S408T8,13835
68
68
  femagtools/machine/__init__.py,sha256=U8W65K7jr7jDdC1KnJh0WjYd8DFaLnIFVvlh-TKcV94,7174
69
69
  femagtools/machine/afpm.py,sha256=hNyDFRLGmCuWRPZl_u1ztJ4pA-Y_mxLaVvg3UJkzRuE,24766
70
- femagtools/machine/effloss.py,sha256=630JZnLBCIo_XKXkhXWg74hxHv18wy4f8hXNv5xiDwc,13151
70
+ femagtools/machine/effloss.py,sha256=Ewx9X8ebT07-PsATIQaGCZoFhGS0hrvwUihJXMWQVnI,13315
71
71
  femagtools/machine/im.py,sha256=8cA7aNr-OkrMlmFaqtnZkDrCQtqSKOFYePwcmZW3oAM,37925
72
72
  femagtools/machine/pm.py,sha256=CpJpZDsbVXbJZSyxByI-DH1C9CFJZQ2zCDgIuXxsmR8,58517
73
73
  femagtools/machine/sizing.py,sha256=aN_OahewjTTBHnpRNfLh1AGFhqnoeZVuMBeb_3MCIVI,23096
@@ -90,7 +90,7 @@ femagtools/plot/mcv.py,sha256=AKbWhJd20Kcec8Hv9dX32G5yTLPkcWorQS7-3P6m-mQ,2960
90
90
  femagtools/plot/nc.py,sha256=yq-uYppAEUePbo1SAaBKNKla3cyqdLh5z9ArhtwPYZY,9548
91
91
  femagtools/plot/phasor.py,sha256=5iqxCQi_idkdqYALJjQb6YFr_Zv5xsUayDoKL5HzsdE,4765
92
92
  femagtools/plot/wdg.py,sha256=UooR1K8JDoVjKWEox_AfkBY40L87jk2L9OdIFz4O-OY,8462
93
- femagtools/svgfsl/converter.py,sha256=EKPQZwvV-jFDOceitt_sMhF5IxbWflj-4QU1xZrkwQM,2738
93
+ femagtools/svgfsl/converter.py,sha256=ZwHOugB-LwIKDz27tjKWiA_dMA4JOL1FWWXPs812uwc,2748
94
94
  femagtools/templates/FE-losses.mako,sha256=Rql5_8Q6_uthpr-uFXMUo7tdHehfZYND-7M-ohJXVU8,874
95
95
  femagtools/templates/afm_rotor.mako,sha256=fY-dlZvRLN9UAy5V6Q_inWghkSUe8pzrCYjJdNgfNXs,3112
96
96
  femagtools/templates/afm_stator.mako,sha256=l1xEwxffZ1jyx5wuJ3rhVbVlZirJzD2K8n4i5Dvbxuc,5344
@@ -209,9 +209,9 @@ tests/moo/__init__.py,sha256=l8HD-AY8EwxOoo_VrG3HgEZb2MaHypvnhKCVSkR-DTA,808
209
209
  tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
210
210
  tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
211
211
  tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
212
- femagtools-1.6.6.dist-info/LICENSE,sha256=V5OED7AzEaOtvbfgNheKOSUeNtijvKQuo84FtSJNkJU,1316
213
- femagtools-1.6.6.dist-info/METADATA,sha256=cBqOE9Ki2As_lrqQtRRHaOlUzo8FqxihyLNB7SdGjxU,5838
214
- femagtools-1.6.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
215
- femagtools-1.6.6.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
216
- femagtools-1.6.6.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
217
- femagtools-1.6.6.dist-info/RECORD,,
212
+ femagtools-1.6.7.dist-info/LICENSE,sha256=V5OED7AzEaOtvbfgNheKOSUeNtijvKQuo84FtSJNkJU,1316
213
+ femagtools-1.6.7.dist-info/METADATA,sha256=TDyXPVCiFKJAM_ZqdGdVyj45nexLQiOqckAQZHMQ99E,5838
214
+ femagtools-1.6.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
215
+ femagtools-1.6.7.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
216
+ femagtools-1.6.7.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
217
+ femagtools-1.6.7.dist-info/RECORD,,