femagtools 1.7.0__py3-none-any.whl → 1.7.1__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.7.0'
5
+ __version__ = '1.7.1'
6
6
  __author__ = 'Ronald Tanner'
7
7
  __license__ = 'BSD'
8
8
  __copyright__ = 'Copyright 2023-2024 Gamma Technology'
femagtools/dxfsl/area.py CHANGED
@@ -81,6 +81,7 @@ class Area(object):
81
81
  global area_number
82
82
  area_number += 1
83
83
  self.id = area_number
84
+ self.is_child = False
84
85
  self.areas_inside = {}
85
86
  self.areas_of_group = []
86
87
 
@@ -431,12 +432,14 @@ class Area(object):
431
432
  d = distance(p1, p2)
432
433
  gap_list.append((d, (p1, p2), dist_id, a.get_id()))
433
434
 
434
- d, p1, p2 = a.get_nearest_point(center, radius, rightangle)
435
- if p1:
436
- gap_list.append((d, (p1, p2), dist_id, a.get_id()))
437
- d, p1, p2 = a.get_nearest_point(center, radius, leftangle)
438
- if p1:
439
- gap_list.append((d, (p1, p2), dist_id, a.get_id()))
435
+ if rightangle is not None:
436
+ d, p1, p2 = a.get_nearest_point(center, radius, rightangle)
437
+ if p1:
438
+ gap_list.append((d, (p1, p2), dist_id, a.get_id()))
439
+ if leftangle is not None:
440
+ d, p1, p2 = a.get_nearest_point(center, radius, leftangle)
441
+ if p1:
442
+ gap_list.append((d, (p1, p2), dist_id, a.get_id()))
440
443
  if not gap_list:
441
444
  return []
442
445
  gap_list.sort()
@@ -1553,74 +1556,6 @@ class Area(object):
1553
1556
  for i in a.nested_areas_inside():
1554
1557
  yield i
1555
1558
 
1556
- def crunch_area(self, geom):
1557
- n1_prev = None
1558
- e_prev = None
1559
- logger.debug("crunch area %s", self.identifier())
1560
-
1561
- if self.is_circle():
1562
- return 0
1563
-
1564
- c = 0
1565
- for n1, n2, e in self.list_of_elements():
1566
- if e_prev is not None:
1567
- if len([nbr for nbr in geom.g.neighbors(n1)]) == 2:
1568
- e_new = e_prev.concatenate(n1_prev, n2, e)
1569
- if e_new is not None:
1570
- e_prev_dict = geom.g.get_edge_data(n1_prev, n1)
1571
- e_dict = geom.g.get_edge_data(n1, n2)
1572
-
1573
- logger.debug("--> remove from %s to %s [%s, %s, %s]",
1574
- n1_prev,
1575
- n1,
1576
- e_prev_dict[0],
1577
- e_prev_dict[1],
1578
- e_prev_dict[2])
1579
- logger.debug(" remove %s", e_prev)
1580
- geom.remove_edge(e_prev)
1581
-
1582
- logger.debug("--> remove from %s to %s [%s, %s, %s]",
1583
- n1,
1584
- n2,
1585
- e_dict[0],
1586
- e_dict[1],
1587
- e_dict[2])
1588
- logger.debug(" remove %s", e)
1589
- if e.get_node_number(n1) == 1:
1590
- flag1 = e_dict[1]
1591
- flag2 = e_dict[2]
1592
- else:
1593
- flag1 = e_dict[2]
1594
- flag2 = e_dict[1]
1595
- geom.remove_edge(e)
1596
-
1597
- logger.debug("--> add from %s to %s",
1598
- n1_prev,
1599
- n2)
1600
- logger.debug(" add %s", e_new)
1601
- geom.add_edge(n1_prev, n2, e_new)
1602
-
1603
- e_new_dict = geom.g.get_edge_data(n1_prev, n2)
1604
- e_new_dict[0] = True
1605
- if e_new.get_node_number(n1_prev) == 1:
1606
- e_new_dict[1] = flag1
1607
- e_new_dict[2] = flag2
1608
- else:
1609
- e_new_dict[1] = flag2
1610
- e_new_dict[2] = flag1
1611
-
1612
- logger.debug(" new dict: [%s, %s, %s]",
1613
- e_new_dict[0],
1614
- e_new_dict[1],
1615
- e_new_dict[2])
1616
- e_prev = e_new
1617
- c += 1
1618
- continue
1619
-
1620
- n1_prev = n1
1621
- e_prev = e
1622
- return c
1623
-
1624
1559
  def __str__(self):
1625
1560
  return "Area {}\n".format(self.id) + \
1626
1561
  "distance...............: from {} to {}\n".\
@@ -33,7 +33,7 @@ def disable_logging():
33
33
  logger.debug("Logging level %s disabled", original_log_level)
34
34
 
35
35
  # Set the log level to a higher level, e.g., WARNING or CRITICAL
36
- logging.disable(logging.CRITICAL)
36
+ logging.disable(logging.ERROR)
37
37
 
38
38
 
39
39
  def enable_logging():
@@ -338,7 +338,11 @@ class EdgeInfo(object):
338
338
  return True # two lines
339
339
 
340
340
  def arc_line_direction_lefthand(self, start_edge, line_edge, builder):
341
- logger.debug("begin of arc_line_direction_lefthand")
341
+ logger.info("begin of arc_line_direction_lefthand")
342
+ if not self.is_arc():
343
+ logger.critical("FATAL: unexpected %s at position %s", self.classname(), self.n1)
344
+ sys.exit(1)
345
+
342
346
  assert(self.is_arc())
343
347
  assert(line_edge.is_line())
344
348
  start_edge.log_edge(":::: start")
@@ -844,10 +848,12 @@ class AreaBuilder(object):
844
848
  logger.debug("=== Area Group List ===")
845
849
  self.set_edge_attributes()
846
850
  errors = 0
851
+ disable_logging()
847
852
  for k in group_keys:
848
853
  if not self.build_group_area(group_list[k]):
849
854
  logger.warning("Creation of an areagroup failed")
850
855
  errors += 1
856
+ enable_logging()
851
857
 
852
858
  t = timer.stop("areagroups created in %0.4f seconds")
853
859
  logger.debug("end of create_area_groups: %s groups created",
@@ -26,6 +26,9 @@ def plot_geom(doit, plt, geom, title="Plot", areas=True):
26
26
  logger.info("Prepare Plot %s", title)
27
27
  plt.render_elements(geom, Shape,
28
28
  draw_inside=areas,
29
+ draw_groups=False,
30
+ draw_phi=True,
31
+ critical=True,
29
32
  title=title,
30
33
  show=True,
31
34
  with_corners=True,
@@ -165,6 +168,7 @@ def build_machine_rotor(machine, inner, mindist, plt, single=False):
165
168
  if machine.is_mirrored():
166
169
  logger.debug("Rotor is mirrored")
167
170
  machine_temp = machine.undo_mirror()
171
+ machine_temp.delete_tiny_elements(mindist)
168
172
  machine_temp.geom.set_rotor()
169
173
  machine_temp.search_rotor_subregions(single=single)
170
174
  else:
@@ -198,7 +202,6 @@ def build_machine_rotor(machine, inner, mindist, plt, single=False):
198
202
  machine_temp.rebuild_subregions(single=single)
199
203
 
200
204
  machine_temp.geom.recalculate_magnet_orientation()
201
- machine_temp.delete_tiny_elements(mindist)
202
205
  if inner:
203
206
  machine_temp.create_inner_corner_areas()
204
207
 
@@ -220,6 +223,7 @@ def build_machine_stator(machine, inner, mindist, plt, single=False):
220
223
  if machine.has_mirrored_windings():
221
224
  logger.debug("undo mirrored windings")
222
225
  machine_temp = machine.undo_mirror()
226
+ machine_temp.delete_tiny_elements(mindist)
223
227
  machine_temp.geom.set_stator()
224
228
  machine_temp.search_stator_subregions(single=single)
225
229
  machine_temp.create_mirror_lines_outside_windings()
@@ -228,7 +232,6 @@ def build_machine_stator(machine, inner, mindist, plt, single=False):
228
232
  if machine_temp.create_auxiliary_lines():
229
233
  machine_temp.rebuild_subregions(single=single)
230
234
 
231
- machine_temp.delete_tiny_elements(mindist)
232
235
  if inner:
233
236
  machine_temp.create_inner_corner_areas()
234
237
 
@@ -245,7 +248,7 @@ def build_machine_stator(machine, inner, mindist, plt, single=False):
245
248
  def convert(dxfile,
246
249
  rtol=1e-04,
247
250
  atol=1e-03,
248
- mindist=0.0,
251
+ mindist=0.01,
249
252
  symtol=0.001,
250
253
  sympart=0,
251
254
  split=False,
@@ -271,9 +274,13 @@ def convert(dxfile,
271
274
  conv = {}
272
275
 
273
276
  input_file = Path(dxfile)
277
+ if not input_file.is_file():
278
+ logger.error("File %s is not available", input_file)
279
+ sys.exit(1)
280
+
274
281
  basename = input_file.stem
275
282
  if part:
276
- logger.info("***** start processing %s *****", basename)
283
+ logger.info("***** start processing %s (%s) *****", basename, part)
277
284
  else:
278
285
  logger.info("***** start processing %s *****", basename)
279
286
  timer = Timer(start_it=True)
@@ -281,7 +288,8 @@ def convert(dxfile,
281
288
  journal = getJournal(name='converter', aktiv=debug_mode)
282
289
  journal.get_journal(input_file.name)
283
290
  journal.put_filename(str(input_file.resolve()))
284
- journal.put('success', False)
291
+ journal.set('success', False)
292
+ journal.write_journal()
285
293
 
286
294
  if part:
287
295
  if part[0] not in ('rotor', 'stator'):
@@ -527,6 +535,9 @@ def convert(dxfile,
527
535
  p)
528
536
  machine_inner.sync_with_counterpart(machine_outer)
529
537
 
538
+ machine_inner.search_critical_elements(mindist)
539
+ machine_outer.search_critical_elements(mindist)
540
+
530
541
  logger.info("***** END of work: %s *****", basename)
531
542
 
532
543
  if machine_inner.geom.is_rotor():
@@ -674,6 +685,7 @@ def convert(dxfile,
674
685
  rows=3, # rows
675
686
  cols=2, # cols
676
687
  num=3) # start num
688
+ machine.delete_tiny_elements(mindist)
677
689
 
678
690
  if da > 0.0 or dy > 0.0:
679
691
  if inner:
@@ -709,7 +721,6 @@ def convert(dxfile,
709
721
  else:
710
722
  machine.search_subregions(single=True)
711
723
 
712
- machine.delete_tiny_elements(mindist)
713
724
  machine.create_inner_corner_areas()
714
725
 
715
726
  logger.info("***** END of work: %s *****", basename)
@@ -727,6 +738,7 @@ def convert(dxfile,
727
738
  with_nodes=False,
728
739
  neighbors=False,
729
740
  write_id=write_id,
741
+ draw_phi=True,
730
742
  fill_areas=True)
731
743
  elif small_plots:
732
744
  #p.figure().suptitle(input_file.name, fontsize=16)
@@ -737,6 +749,7 @@ def convert(dxfile,
737
749
  with_nodes=False,
738
750
  neighbors=False,
739
751
  write_id=write_id,
752
+ draw_phi=True,
740
753
  fill_areas=True)
741
754
 
742
755
  if show_plots or small_plots:
@@ -765,11 +778,12 @@ def convert(dxfile,
765
778
  fslrenderer = FslRenderer(basename)
766
779
  conv['fsl'] = fslrenderer.render(machine, inner, outer)
767
780
 
768
- conv.update(params)
781
+ if params is not None:
782
+ conv.update(params)
769
783
  conv['name'] = basename
770
784
  t = timer.stop("-- all done in %0.4f seconds --", info=True)
771
785
  journal.put('time_total', t)
772
- journal.put('success', True)
786
+ journal.set('success', True)
773
787
  return conv
774
788
 
775
789
 
femagtools/dxfsl/geom.py CHANGED
@@ -283,6 +283,7 @@ class Geometry(object):
283
283
  self.has_magnets = False
284
284
  self.journal = getJournal()
285
285
  self.area_errors = 0
286
+ self.critical_points = []
286
287
  i = 0
287
288
 
288
289
  logger.debug("Geometry(split=%s, concat=%s, connect=%s, delete=%s, adjust=%s, main=%s,",
@@ -1829,6 +1830,10 @@ class Geometry(object):
1829
1830
  for area in magnets:
1830
1831
  area.render_magnet_phi(renderer, length)
1831
1832
 
1833
+ def render_critical(self, renderer):
1834
+ for e in self.critical_points:
1835
+ e.render(renderer, 'darkred')
1836
+
1832
1837
  def get_points_in_iron(self):
1833
1838
  points = []
1834
1839
  for area in self.list_of_areas():
@@ -2459,6 +2464,49 @@ class Geometry(object):
2459
2464
  # logger.info(" ++ %s", id)
2460
2465
  logger.debug("end set_areas_inside_for_all_areas")
2461
2466
 
2467
+ def set_groups_inside_for_all_areas(self):
2468
+ logger.debug("begin set_groups_inside_for_all_areas")
2469
+
2470
+ groups_inside = {}
2471
+ groups = {}
2472
+ areas_outside = []
2473
+ for area in self.list_of_areas():
2474
+ grouplist = [a for a in self.areagroup_list
2475
+ if area.is_inside(a, self)]
2476
+ if not grouplist:
2477
+ continue
2478
+ groups_inside = {g.id: g for g in grouplist}
2479
+ area.areas_inside = groups_inside
2480
+ areas_outside.append(area)
2481
+ for g in grouplist:
2482
+ alist = groups.get(g.id, [])
2483
+ alist.append(area)
2484
+ groups[g.id] = alist
2485
+
2486
+ outside_id = [a.id for a in areas_outside]
2487
+ logger.debug("Areas outside: %s", outside_id)
2488
+
2489
+ for id in groups.keys():
2490
+ if len(groups[id]) > 1:
2491
+ logger.warning("Attention: nested groups of areas")
2492
+ self.journal.put("warning", "nested groups of areas")
2493
+ areas = groups[id]
2494
+ main_area = areas[0]
2495
+ main_size = main_area.area_size()
2496
+ for a in areas[1:]:
2497
+ sz = a.area_size()
2498
+ if sz < main_size:
2499
+ main_area = a
2500
+ main_size = sz
2501
+ assert(main_area is not None)
2502
+ main_area.is_child = True
2503
+ for area in areas:
2504
+ if area.id != main_area.id:
2505
+ del area.areas_inside[id]
2506
+
2507
+ logger.debug("end set_areas_inside_for_all_areas")
2508
+ return areas_outside
2509
+
2462
2510
  def get_minmax_magnet(self):
2463
2511
  logger.debug("get_minmax_magnet")
2464
2512
  maglist = [a for a in self.list_of_areas() if a.is_magnet()]
@@ -2472,21 +2520,26 @@ class Geometry(object):
2472
2520
  def create_auxiliary_lines(self, rightangle, leftangle):
2473
2521
  logger.debug("begin of create_auxiliary_lines")
2474
2522
  timer = Timer(start_it=True)
2523
+ done = False
2475
2524
 
2476
- # for future (next release)
2477
- # area_list = self.list_of_areas()
2478
- # builder = AreaBuilder(geom=self)
2479
- # builder.create_area_groups(area_list)
2480
- # self.areagroup_list = builder.area_list
2481
-
2482
- self.set_areas_inside_for_all_areas()
2483
-
2484
- logger.debug("-> start create_auxiliary_lines")
2525
+ if True: # new style
2526
+ logger.debug("-> start create_auxiliary_lines")
2527
+ area_list = self.list_of_areas()
2528
+ builder = AreaBuilder(geom=self)
2529
+ builder.create_area_groups(area_list)
2530
+ self.areagroup_list = builder.area_list
2531
+ area_list = self.set_groups_inside_for_all_areas()
2532
+ for area in area_list:
2533
+ if self.create_aux_lines(area, rightangle, leftangle):
2534
+ done = True
2535
+ else:
2536
+ logger.debug("-> start create_auxiliary_lines")
2537
+ self.set_areas_inside_for_all_areas()
2538
+ done = False
2539
+ for area in self.list_of_areas():
2540
+ if self.create_aux_lines(area, rightangle, leftangle):
2541
+ done = True
2485
2542
 
2486
- done = False
2487
- for area in self.list_of_areas():
2488
- if self.create_aux_lines(area, rightangle, leftangle):
2489
- done = True
2490
2543
  t = timer.stop("-- auxiliary lines in %0.4f seconds --")
2491
2544
  self.journal.put('time_auxiliary_lines', t)
2492
2545
  logger.debug("end of create_auxiliary_lines")
@@ -2505,6 +2558,10 @@ class Geometry(object):
2505
2558
 
2506
2559
  aux_color = 'red'
2507
2560
  aux_linestyle = 'dotted'
2561
+ if area.is_child:
2562
+ logger.debug("Area %s is a child of another nested area", area.id)
2563
+ rightangle = None
2564
+ leftangle = None
2508
2565
 
2509
2566
  areas_border = {a.get_id(): a for a in areas_inside
2510
2567
  if area.has_connection(self, a, ndec)}
@@ -2861,7 +2918,7 @@ class Geometry(object):
2861
2918
  edges = self.search_tiny_elements(mindist)
2862
2919
  if not edges:
2863
2920
  logger.debug("-- no tiny elements found")
2864
- return
2921
+ return 0
2865
2922
 
2866
2923
  deleted = 0
2867
2924
  for edge in edges:
@@ -2901,8 +2958,27 @@ class Geometry(object):
2901
2958
 
2902
2959
  if deleted:
2903
2960
  logger.debug("%s tiny elements deleted", deleted)
2961
+ self.journal.put("tiny_elements_deleted", deleted)
2904
2962
  logger.debug("end of delete_tiny_elements")
2905
- return
2963
+ return deleted
2964
+
2965
+ def search_critical_elements(self, mindist):
2966
+ for n in self.g.nodes():
2967
+ nbrs = self.get_neighbors(n)
2968
+ if len(nbrs) < 3:
2969
+ continue
2970
+ critical_point = False
2971
+ critical_dist = 9999
2972
+ for nbr in nbrs:
2973
+ e = self.get_edge_element(n, nbr)
2974
+ if e.is_tiny(mindist):
2975
+ critical_point = True
2976
+ critical_dist = min(critical_dist, e.length())
2977
+ if critical_point:
2978
+ logger.debug("Warning: maybe critical point %s", n)
2979
+ self.journal.put("maybe_critical_points", (n, critical_dist))
2980
+ c = Circle(Element(center=n, radius=1))
2981
+ self.critical_points.append(c)
2906
2982
 
2907
2983
  def check_shaft_area(self, shaft):
2908
2984
  for a in self.list_of_areas():
@@ -3319,7 +3395,8 @@ class Geometry(object):
3319
3395
  if builder.create_area_groups(areas):
3320
3396
  return # bad
3321
3397
  group_list = builder.area_list
3322
- self.areagroup_list = group_list
3398
+ # for debugging
3399
+ # self.areagroup_list = group_list
3323
3400
  for group in group_list:
3324
3401
  if not group.is_magnet_rectangle():
3325
3402
  logger.debug("Warning: group is not a rectangle")
@@ -102,6 +102,11 @@ class Journal(object):
102
102
  if self.get_total('appendices_deleted') > 0:
103
103
  self.put_warning("Problem with appendices")
104
104
 
105
+ def set(self, name, val):
106
+ if not self.data:
107
+ return
108
+ self.data[name] = val
109
+
105
110
  def put(self, name, val):
106
111
  if not self.data:
107
112
  return
@@ -1069,7 +1069,10 @@ class Machine(object):
1069
1069
  return self.geom.has_magnets
1070
1070
 
1071
1071
  def delete_tiny_elements(self, mindist):
1072
- self.geom.delete_tiny_elements(mindist)
1072
+ return self.geom.delete_tiny_elements(mindist)
1073
+
1074
+ def search_critical_elements(self, mindist):
1075
+ self.geom.search_critical_elements(mindist)
1073
1076
 
1074
1077
  def create_arc(self, radius,
1075
1078
  color='red', linestyle='dotted',
@@ -207,6 +207,7 @@ class PlotRenderer(object):
207
207
  draw_inside = kwargs.get('draw_inside', False)
208
208
  draw_groups = kwargs.get('draw_groups', False)
209
209
  draw_phi = kwargs.get('draw_phi', False)
210
+ critical = kwargs.get('critical', False)
210
211
  fill_areas = kwargs.get('fill_areas', False)
211
212
  write_id = kwargs.get('write_id', False)
212
213
  with_legend = kwargs.get('with_legend', True)
@@ -308,6 +309,9 @@ class PlotRenderer(object):
308
309
  if draw_phi:
309
310
  geom.render_magnet_phi(self)
310
311
 
312
+ if critical:
313
+ geom.render_critical(self)
314
+
311
315
  if with_center and geom.center:
312
316
  self.point(geom.center, 'o', color='darkgreen')
313
317
  x_min = min(x_min, geom.center[0]-5)
@@ -310,7 +310,7 @@ def get_stator_dimensions(par, slots=[]):
310
310
  bns = taus*(Da+2*hs1) - bds
311
311
 
312
312
  hns = (-bns + np.sqrt(bns**2 + 4*ans*np.tan(taus)))/2/np.tan(taus)
313
- hys = psi1/2/lfe*By
313
+ hys = psi1/2/lfe/By
314
314
 
315
315
  # airgap and yoke diameter
316
316
  airgap = par['airgap']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: femagtools
3
- Version: 1.7.0
3
+ Version: 1.7.1
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=EYWHBDOxDAUDvC6zezPTQAc32r4rSi4VgkvM4coG6f8,1600
1
+ femagtools/__init__.py,sha256=J7PZIYNxvDe7bKOlKKN7KqkIMJCh3y9ziNTJ9-b6-xY,1600
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
@@ -47,21 +47,21 @@ femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
47
47
  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
- femagtools/dxfsl/area.py,sha256=tfkTwnrkFcw9OVYGXFvrsDMAka06Ed_mplJ8Cp5FaIg,59234
51
- femagtools/dxfsl/areabuilder.py,sha256=QBjfFyAnhZQN5LmqkNnxauPRLhiAGar0S1nsf4NT6y8,34001
50
+ femagtools/dxfsl/area.py,sha256=cYnDtnEuwuDW5R1NKV0s8PUzzQzxhgCUktFqHAjP9K8,56581
51
+ femagtools/dxfsl/areabuilder.py,sha256=Siu11yRcNJiSCWwc865-OvuVhSmLtRQWysbe1-rUcN0,34197
52
52
  femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
53
53
  femagtools/dxfsl/conv.py,sha256=GeRYUvbdcP5vKtNm5S5gU1yyMboGkGNyOqzkHpYbEEo,10086
54
- femagtools/dxfsl/converter.py,sha256=ihWGlLyuE5CmQL9lk-KilgbcMhzvKUltTHyHOoLG95g,31835
54
+ femagtools/dxfsl/converter.py,sha256=ZxOfF3bUQ2VXRjnUwDaAis3eRI-SiNEuM0UnSDpwda8,32353
55
55
  femagtools/dxfsl/corner.py,sha256=-XPBcnEau-2-SRHLYzlBqCQGaFfgm_DH2qR1mSaFoAs,1311
56
56
  femagtools/dxfsl/dumprenderer.py,sha256=n4AvInjvGIaC2iKZtQaYXXDyJVSQ3uEOFOLD4-xfKRY,1861
57
57
  femagtools/dxfsl/dxfparser.py,sha256=kyXG0kZfNyOgn96MqBgP8RhOQhppfB5NbyRNNybs1C0,13451
58
58
  femagtools/dxfsl/femparser.py,sha256=O8940Q1Mz8MKng6W8M3s9KfTvhDLJ56tfQWtZEW3xMM,2134
59
59
  femagtools/dxfsl/fslrenderer.py,sha256=DBE7qDlwIE5K8qD8ne7iNyaEVwHrpyis2TX1spteLsA,24979
60
60
  femagtools/dxfsl/functions.py,sha256=F0AjzHfIfq3v-mhDzUOeq3zeYQCEsJl1-XpEyJQsSnQ,11805
61
- femagtools/dxfsl/geom.py,sha256=1IQGcPj7Fjj88EKqjd_UadoOCqeLraR9R0hOcbEkEIQ,162242
62
- femagtools/dxfsl/journal.py,sha256=_ZNBnM1gtl0eW6eV_sZ6nCpBNOsF_rnla0st8bKbeks,4159
63
- femagtools/dxfsl/machine.py,sha256=0NjJ9-ar820rkKV3lqCJ95-4iiAEdn5WhsmoD3w2bps,49228
64
- femagtools/dxfsl/plotrenderer.py,sha256=xoDT2Xh2N-OONACGOL8K6LHTHH5aRQ4EvohGt--EOD0,13713
61
+ femagtools/dxfsl/geom.py,sha256=-hPErBLyAsDh-aq2s54psFqG2AaNr9jVeKMeEVUQF5E,165356
62
+ femagtools/dxfsl/journal.py,sha256=S17B7wsrq5QzIUbjgg0ntvnpgH0thHq9aQXO7GdYlQQ,4265
63
+ femagtools/dxfsl/machine.py,sha256=3leWkjdMCLX2HgMhw8gNdxTKROhNCKU7KQrDVbBQ8DI,49337
64
+ femagtools/dxfsl/plotrenderer.py,sha256=q2cORuxJEf1Ws6oCY9c0gF6N3kDrcI6WOz3u5Vl6R_c,13823
65
65
  femagtools/dxfsl/shape.py,sha256=ZmWw7VTSJs5rcY1Lh99MKo804mO7dSGHdKMIh-nVBow,59904
66
66
  femagtools/dxfsl/svgparser.py,sha256=R8V2V5jE6JyVfzshJVaPgsSuMlQf_pwJTFvrTrKDxZ0,2905
67
67
  femagtools/dxfsl/symmetry.py,sha256=0WeDq_z42A_cjG4m_vREDWyx-wqHqXDkoCT2eXh2EMo,38084
@@ -70,7 +70,7 @@ femagtools/machine/afpm.py,sha256=hNyDFRLGmCuWRPZl_u1ztJ4pA-Y_mxLaVvg3UJkzRuE,24
70
70
  femagtools/machine/effloss.py,sha256=sLB8AXYVAE_AL1Ca41A2EDbn9_7u6xNjaYFjmRPoTDg,13578
71
71
  femagtools/machine/im.py,sha256=3Y54AHMZfAjkvgexx2E-5jxNWzaVQ-SyaETCh7gNBYA,38008
72
72
  femagtools/machine/pm.py,sha256=N4UEpOEYpvJzGjWt4SLOpgMrjzoSYyuxpi-8wlT1U5A,58565
73
- femagtools/machine/sizing.py,sha256=YsvQye2hN-v_GLDeODmFrHkNQlkNWpQ9CkrZ0maS93k,23328
73
+ femagtools/machine/sizing.py,sha256=BYaPEWrU1IDbnyRzC2MlQBA0MXaiK8sx1wD7Pn21XX8,23328
74
74
  femagtools/machine/sm.py,sha256=ubS7mK2dibhwUpGwyY-23hoZbLrVqAtPeXVmqF657lg,37781
75
75
  femagtools/machine/utils.py,sha256=ckPOfaaieRbThMKkBtCtoCMsehdbePH8xNoWPmNoS3Y,18782
76
76
  femagtools/moo/__init__.py,sha256=zinmWEOrsEz6DmMX0Dbn4t6_1UR-p4bEGqyR1wUQk_Q,175
@@ -193,7 +193,7 @@ tests/test_nc.py,sha256=kIFUOlFy_jQUjLnS9wuy6c2YkPOrKyXlMtGxDIJnXsw,4205
193
193
  tests/test_parident.py,sha256=WWCyRgqqX3bcp0Q7Pwxz4dN2kklIm5E7kBvqkO9m718,1340
194
194
  tests/test_parstudy.py,sha256=wk7WfYQrx5dtv6MnmWCfNAEInvRKsbVXYEUIIR9zLbQ,3200
195
195
  tests/test_pocfile.py,sha256=eiMLBRQxDnHIGiqku6EXcQ3fb7wGIxhXmb20iyLlPRU,5816
196
- tests/test_sizing.py,sha256=8tIT8DG1c28aSwkPD4qPryKk3sU2JhXWLYYxhmDQMbM,1131
196
+ tests/test_sizing.py,sha256=NJ0FPlHx88lvqITSJ0sypE9HENd09WOMRRWea6a7zrk,1132
197
197
  tests/test_sm.py,sha256=FjcAbx4n7kLH00kjnKoGMk6t4_V9TJzIaxM21MkrOjE,83524
198
198
  tests/test_tksreader.py,sha256=8QtPAzxPJbkpxd1Nw2I7ggaTaKaL4WY55JJBHkZAzus,766
199
199
  tests/test_ts.py,sha256=tR2x5cKU9gw2fUprzaPgPbCvmDOHDO36JUPCCoTlY7Y,1833
@@ -210,9 +210,9 @@ tests/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
211
211
  tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
212
212
  tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
213
- femagtools-1.7.0.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
214
- femagtools-1.7.0.dist-info/METADATA,sha256=g4DD1r1-fho5dUKJw-PG64StC94fHJCUiBpqT0c0Js8,6147
215
- femagtools-1.7.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
216
- femagtools-1.7.0.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
217
- femagtools-1.7.0.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
218
- femagtools-1.7.0.dist-info/RECORD,,
213
+ femagtools-1.7.1.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
214
+ femagtools-1.7.1.dist-info/METADATA,sha256=nm1a5JYXOmQ6qXk7AgIZES-VbkKq9kVeSqok7Jx3u7I,6147
215
+ femagtools-1.7.1.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
216
+ femagtools-1.7.1.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
217
+ femagtools-1.7.1.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
218
+ femagtools-1.7.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (70.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
tests/test_sizing.py CHANGED
@@ -16,7 +16,7 @@ def test_im():
16
16
  sigmas=fs, Ba=0.77,
17
17
  cos_phi=0.8, eta=0.8,
18
18
  lda=0.9, rtype='statorRotor3')
19
- assert round(r['outer_diam'], 3) == 0.19
19
+ assert round(r['outer_diam'], 3) == 0.182
20
20
  assert r['stator']['num_slots'] == 36
21
21
 
22
22
 
@@ -33,7 +33,7 @@ def test_spm():
33
33
  Hc=700, sigmas=fs, brem=1.1, Ba=0.77,
34
34
  cos_phi=0.7, eta=0.8, demag=1.7,
35
35
  lda=0.9)
36
- assert round(r['outer_diam'], 3) == 0.19
36
+ assert round(r['outer_diam'], 3) == 0.18
37
37
  assert r['stator']['num_slots'] == 24
38
38
 
39
39