femagtools 1.8.4__py3-none-any.whl → 1.8.5__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
femagtools/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  """
4
4
  __title__ = 'femagtools'
5
- __version__ = '1.8.4'
5
+ __version__ = '1.8.5'
6
6
  __author__ = 'Ronald Tanner'
7
7
  __license__ = 'BSD'
8
8
  __copyright__ = 'Copyright 2023-2024 Gamma Technology'
@@ -21,7 +21,6 @@ import sys
21
21
  import multiprocessing
22
22
 
23
23
  logger = logging.getLogger(__name__)
24
- journal = None
25
24
 
26
25
 
27
26
  def plot_geom(doit, plt, geom, title="Plot", areas=True):
@@ -279,7 +278,6 @@ def symmetry_search(machine,
279
278
 
280
279
 
281
280
  def build_machine_rotor(machine, inner, mindist, plt, EESM=False, single=False):
282
- global journal
283
281
  logger.debug("Begin of build_machine_rotor")
284
282
 
285
283
  if machine.has_windings():
@@ -350,14 +348,12 @@ def build_machine_rotor(machine, inner, mindist, plt, EESM=False, single=False):
350
348
  title="Final Rotor")
351
349
 
352
350
  t = timer.stop("-- rotor created in %0.4f seconds --")
353
- journal.put('time_rotor_created', t)
354
351
 
355
352
  logger.debug("End of build_machine_rotor")
356
353
  return machine_temp
357
354
 
358
355
 
359
356
  def build_machine_stator(machine, inner, mindist, plt, EESM=False, single=False):
360
- global journal
361
357
  logger.debug("Begin of build_machine_stator")
362
358
  timer = Timer(start_it=True)
363
359
 
@@ -424,7 +420,6 @@ def build_machine_stator(machine, inner, mindist, plt, EESM=False, single=False)
424
420
  title="Final Stator")
425
421
 
426
422
  t = timer.stop("-- stator created in %0.4f seconds --")
427
- journal.put('time_stator_created', t)
428
423
 
429
424
  logger.debug("End of build_machine_stator")
430
425
  return machine_temp
@@ -14,6 +14,7 @@ from .. import femag
14
14
  from scipy.interpolate import make_interp_spline, RegularGridInterpolator, RectBivariateSpline
15
15
  from scipy.integrate import quad
16
16
  import copy
17
+ from matplotlib.colors import to_rgb
17
18
 
18
19
  logger = logging.getLogger(__name__)
19
20
 
@@ -598,6 +599,280 @@ def _get_copper_losses(scale_factor, bch):
598
599
  return 0 # noload calc has no winding losses
599
600
 
600
601
 
602
+ def _set_plot_attributes(ax):
603
+ ax.set_aspect('equal')
604
+ for loc, spine in ax.spines.items():
605
+ spine.set_color('none') # don't draw spine
606
+ ax.yaxis.set_ticks([])
607
+ ax.xaxis.set_ticks([])
608
+
609
+
610
+ def _get_colors(colors, delta):
611
+ if delta == 0.0:
612
+ return colors
613
+ new_colors = []
614
+ for col in colors:
615
+ rgb = to_rgb(col)
616
+ r, g, b = rgb
617
+ col = (max(0.0, min(r+delta, 1.0)),
618
+ max(0.0, min(g+delta, 1.0)),
619
+ max(0.0, min(b+delta, 1.0)))
620
+ new_colors.append(col)
621
+ return new_colors
622
+
623
+
624
+ def _draw_vertical_magnets(ax,
625
+ poles,
626
+ xr, yr,
627
+ Rr,
628
+ xoff, yoff,
629
+ delta=0.0):
630
+ color = ['green', 'red']
631
+ color = _get_colors(color, delta)
632
+ for i in range(poles):
633
+ ax.fill(xr+xoff, yr+yoff,
634
+ facecolor=color[i%2], edgecolor=color[i%2])
635
+ xr, yr = np.dot(Rr, [xr, yr])
636
+ return
637
+
638
+
639
+ def _draw_vertical_slots(ax,
640
+ Q,
641
+ r,
642
+ alpha,
643
+ xoff, yoff,
644
+ delta=0.0):
645
+ color = ['skyblue', 'blue']
646
+ color = _get_colors(color, delta)
647
+ taus = 2*np.pi/Q
648
+ for n in range(Q):
649
+ beta = np.array([[n*taus+alpha[0], (n+1)*taus-alpha[0]],
650
+ [(n+1)*taus-alpha[1], n*taus+alpha[1]]])
651
+ ax.fill(np.hstack((r * np.cos(beta[0, 0]),
652
+ (r[::-1] * np.cos(beta[0, 1]))))+xoff,
653
+ np.hstack((r * np.sin(beta[0, 0]),
654
+ (r[::-1] * np.sin(beta[0, 1]))))+yoff,
655
+ facecolor=color[0], edgecolor=color[0])
656
+
657
+
658
+ def vertical_plot(machine, ax):
659
+ """plots afpm stator and rotor (vertical section)
660
+ Args:
661
+ dy1, dy1: float outer, inner diameter
662
+ rel_magn_width: float rel magnet width 0..1
663
+ Q: number of stator slots
664
+ poles: number of poles
665
+ slot_width: width of stator slot
666
+ """
667
+ logger.debug("begin of vertical_plot()")
668
+
669
+ model_type = machine['afmtype'][0:4]
670
+ dy1 = machine['outer_diam']*1e3
671
+ dy2 = machine['inner_diam']*1e3
672
+ rel_magn_width = machine['magnet']['afm_rotor']['rel_magn_width']
673
+ Q = machine['stator']['num_slots']
674
+ slot_width = machine['stator']['afm_stator']['slot_width']*1e3
675
+ poles = machine['poles']
676
+
677
+ # prepare Magnets
678
+ theta = np.linspace(np.pi/poles*(1-rel_magn_width),
679
+ np.pi/poles*(1+rel_magn_width),
680
+ 10)
681
+ xr = np.concatenate((dy1/2 * np.cos(theta), dy2/2 * np.cos(theta[::-1])))
682
+ yr = np.concatenate((dy1/2 * np.sin(theta), dy2/2 * np.sin(theta[::-1])))
683
+ rtheta = 2*np.pi/poles
684
+ Rr = np.array([
685
+ [np.cos(rtheta), -np.sin(rtheta)],
686
+ [np.sin(rtheta), np.cos(rtheta)]
687
+ ])
688
+
689
+ # prepare Slots
690
+ taus = 2*np.pi/Q
691
+ r = np.array([dy2/2, dy1/2])
692
+ alpha = np.arctan2(slot_width/2, r)
693
+
694
+ yoff = 0.0
695
+ xoff = 0.0
696
+ y_shift = -2
697
+ x_shift = dy1-dy2
698
+ ma_delta = 0.0 # color
699
+ sl_delta = 0.0 # color
700
+
701
+ # Draw
702
+ if model_type in ("S1R2"): # 2 rotor
703
+ _draw_vertical_magnets(ax, poles, xr, yr, Rr, xoff, yoff, delta=-0.1)
704
+ yoff += y_shift
705
+ xoff += x_shift
706
+
707
+ if model_type in ("S2R1"): # 2 stator
708
+ sl_delta = -0.1
709
+
710
+ _draw_vertical_slots(ax, Q, r, alpha, xoff, yoff, delta=sl_delta)
711
+ yoff += y_shift
712
+ xoff += x_shift
713
+
714
+ if model_type in ("S1R2"): # 2 rotor
715
+ ma_delta = 0.1
716
+
717
+ _draw_vertical_magnets(ax, poles, xr, yr, Rr, xoff, yoff, delta=ma_delta)
718
+ yoff += y_shift
719
+ xoff += x_shift
720
+
721
+ if model_type in ("S2R1"): # 2 stator
722
+ sl_delta = 0.0
723
+ _draw_vertical_slots(ax, Q, r, alpha, xoff, yoff, delta=sl_delta)
724
+
725
+ _set_plot_attributes(ax)
726
+ logger.debug("end of vertical_plot()")
727
+
728
+
729
+ IRON_NO = 0
730
+ IRON_UP = 1
731
+ IRON_DOWN = 2
732
+
733
+ def _draw_horizontal_magnets(ax,
734
+ poles,
735
+ magn_height,
736
+ magn_width,
737
+ yoke_height,
738
+ Q,
739
+ g,
740
+ taus,
741
+ dy2,
742
+ yoff=0.0,
743
+ iron=IRON_NO
744
+ ):
745
+ color = ['green', 'red']
746
+ xy = (0, Q//g*taus, Q//g*taus, 0)
747
+
748
+ if iron == IRON_UP:
749
+ yy = (yoff-yoke_height,
750
+ yoff-yoke_height,
751
+ yoff,
752
+ yoff)
753
+ yoff -= yoke_height
754
+ ax.fill(xy, yy, color='skyblue')
755
+
756
+ taum = dy2*np.pi/poles
757
+ ym = np.array([yoff-magn_height,
758
+ yoff-magn_height,
759
+ yoff,
760
+ yoff])
761
+ yoff -= magn_height
762
+
763
+ for n in range(poles//g):
764
+ xl = taum*n + taum*(1 - magn_width)
765
+ xr = taum*(n + 1) - taum*(1 - magn_width)
766
+ xm = (xl, xr, xr, xl)
767
+ ax.fill(xm, ym, color=color[n%2])
768
+
769
+ if iron == IRON_DOWN:
770
+ yy = (yoff-yoke_height,
771
+ yoff-yoke_height,
772
+ yoff,
773
+ yoff)
774
+ yoff -= yoke_height
775
+ ax.fill(xy, yy, color='skyblue')
776
+ return yoff
777
+
778
+
779
+ TOOTH_UP = 0
780
+ TOOTH_DOWN = 1
781
+ TOOTH_ONLY = 2
782
+
783
+
784
+ def _draw_horizontal_slots(ax,
785
+ slot_height, slot_width, yoke_height,
786
+ Q, g, taus,
787
+ yoff=0.0,
788
+ tooth=TOOTH_DOWN):
789
+ if not tooth == TOOTH_ONLY:
790
+ xx = (0, Q//g*taus, Q//g*taus, 0)
791
+ if tooth == TOOTH_DOWN:
792
+ yy = (yoff-yoke_height,
793
+ yoff-yoke_height,
794
+ yoff,
795
+ yoff)
796
+ else:
797
+ yy = (yoff-slot_height,
798
+ yoff-slot_height,
799
+ yoff-slot_height-yoke_height,
800
+ yoff-slot_height-yoke_height)
801
+ ax.fill(xx, yy, color='skyblue')
802
+
803
+ yt = (yoff-slot_height-yoke_height,
804
+ yoff-slot_height-yoke_height,
805
+ yoff, yoff)
806
+ for n in range(Q//g):
807
+ xt = np.array((n*taus, n*taus+(taus-slot_width)/2,
808
+ n*taus+(taus-slot_width)/2, n*taus))
809
+ ax.fill(xt, yt, color='skyblue')
810
+ xt += slot_width + (taus-slot_width)/2
811
+ ax.fill(xt, yt, color='skyblue')
812
+ return yoff - slot_height - yoke_height
813
+
814
+
815
+ def horizontal_plot(machine, ax):
816
+ logger.debug("begin of horizontal_plot()")
817
+
818
+ model_type = machine['afmtype'][0:4]
819
+ dy1 = machine['outer_diam']*1e3
820
+ dy2 = machine['inner_diam']*1e3
821
+ rel_magn_width = machine['magnet']['afm_rotor']['rel_magn_width']
822
+ magn_height = machine['magnet']['afm_rotor']['magn_height']*1e3
823
+ magn_yoke_height = machine['magnet']['afm_rotor']['yoke_height']*1e3
824
+
825
+ Q = machine['stator']['num_slots']
826
+ slot_width = machine['stator']['afm_stator']['slot_width']*1e3
827
+ poles = machine['poles']
828
+ m = 3
829
+ slot_height = machine['stator']['afm_stator']['slot_height']*1e3
830
+ if model_type in ('S2R1', 'S2R1_all'):
831
+ slot_height /= 2
832
+ yoke_height = machine['stator']['afm_stator']['yoke_height']*1e3
833
+ ag = machine['airgap']*1e3
834
+
835
+ g = np.gcd(Q, m*poles)//m
836
+ taus = dy2*np.pi/Q
837
+
838
+ yoff = 0.0
839
+ if model_type in ('S1R2', 'S1R2_all'): # 2 rotor
840
+ yoff = _draw_horizontal_magnets(ax, poles,
841
+ magn_height, rel_magn_width,
842
+ magn_yoke_height,
843
+ Q, g, taus, dy2,
844
+ yoff=yoff,
845
+ iron=IRON_UP)
846
+ yoff -= ag
847
+
848
+ tooth = TOOTH_ONLY if model_type in ('S1R2', 'S1R2_all') else TOOTH_DOWN
849
+ yoff = _draw_horizontal_slots(ax,
850
+ slot_height, slot_width, yoke_height,
851
+ Q, g, taus,
852
+ yoff=yoff,
853
+ tooth=tooth)
854
+ yoff -= ag
855
+
856
+ iron = IRON_DOWN if model_type in ('S1R1', 'S1R2', 'S1R2_all') else IRON_NO
857
+ yoff = _draw_horizontal_magnets(ax, poles,
858
+ magn_height, rel_magn_width,
859
+ magn_yoke_height,
860
+ Q, g, taus, dy2,
861
+ yoff=yoff,
862
+ iron=iron)
863
+ yoff -= ag
864
+
865
+ if model_type in ('S2R1', 'S2R1_all'): # 2 rotor
866
+ yoff = _draw_horizontal_slots(ax,
867
+ slot_height, slot_width, yoke_height,
868
+ Q, g, taus,
869
+ yoff=yoff,
870
+ tooth=TOOTH_UP)
871
+
872
+ _set_plot_attributes(ax)
873
+ logger.debug("end of horizontal_plot()")
874
+
875
+
601
876
  class AFPM:
602
877
  """Axial Flux PM
603
878
  Arguments:
@@ -366,7 +366,8 @@ def dqparident(workdir, engine, temp, machine,
366
366
  num_beta_steps: number of current steps (default 7 per quadrant)
367
367
  speed: rotor speed in 1/s (default 160/p)
368
368
  i1_max: maximum current in A rms (default approx 3*i1nom)
369
- period_frac: fraction of rotating angle (default 6)
369
+ period_frac: (int) fraction of rotating angle (default 6)
370
+ dqtype: (str) type of identification: 'ldq' (default), 'psidq'
370
371
  cmd: femag executable
371
372
  """
372
373
  import pathlib
femagtools/plot/char.py CHANGED
@@ -333,10 +333,14 @@ def _plot_contour(speed, torque, z, ax, title='', levels=[],
333
333
  clippath = Path(_get_nT_boundary(x, y))
334
334
  patch = PathPatch(clippath, facecolor='none')
335
335
  ax.add_patch(patch)
336
- for c in cont.collections:
337
- c.set_clip_path(patch)
338
- for c in contf.collections:
339
- c.set_clip_path(patch)
336
+ try:
337
+ for c in cont.collections:
338
+ c.set_clip_path(patch)
339
+ for c in contf.collections:
340
+ c.set_clip_path(patch)
341
+ except AttributeError: # matplotlib >= 3.10
342
+ cont.set_clip_path(patch)
343
+ contf.set_clip_path(patch)
340
344
 
341
345
  if xscale > 1:
342
346
  def format_fn(tick_val, tick_pos):
@@ -367,9 +371,16 @@ def efficiency_map(rmap, ax=0, title='', clabel=True,
367
371
 
368
372
 
369
373
  def losses_map(rmap, ax=0, title='Losses Map / kW', clabel=True,
370
- cmap='YlOrRd', cbar=False):
374
+ cmap='YlOrRd', cbar=False, key='losses'):
375
+ """
376
+ plot losses map
377
+ Args:
378
+ rmap: (dict) result of efficiency_losses_map
379
+ key: (str) type of losses: 'plfe1', 'plfe2', 'plmag', 'plcu1', 'plcu2', 'plfric', 'losses';
380
+ """
381
+
371
382
  if ax == 0:
372
383
  fig, ax = plt.subplots(figsize=(12, 12))
373
- return _plot_contour(rmap['n'], rmap['T'], np.asarray(rmap['losses'])/1e3, ax,
374
- title=title, levels=14, clabel=clabel,
375
- cmap=cmap, cbar=cbar)
384
+ return _plot_contour(rmap['n'], rmap['T'], np.asarray(rmap[key])/1e3, ax,
385
+ title=title, levels=14, clabel=clabel,
386
+ cmap=cmap, cbar=cbar)
femagtools/utils.py CHANGED
@@ -17,7 +17,7 @@ def fft(pos, y, pmod=0):
17
17
  else:
18
18
  #negative_periodic = np.abs(y[0] - y[-1])/np.max(y) > 1
19
19
  # count zero crossings
20
- ypos = np.asarray(y[:-1])-np.mean(y[:-1]) > 0
20
+ ypos = np.asarray(y)-np.mean(y) > 0
21
21
  nypos = ~ypos
22
22
  nzc = len(((ypos[:-1] & nypos[1:])
23
23
  | (nypos[:-1] & ypos[1:])).nonzero()[0])
femagtools/zmq.py CHANGED
@@ -147,7 +147,6 @@ class SubscriberTask(threading.Thread):
147
147
  def send_notify():
148
148
  logger.debug(f"Send loop: {SubscriberTask.notify_send_loop}")
149
149
  while SubscriberTask.notify_send_loop:
150
- logger.debug(f"Send data: {SubscriberTask.notify_send_header}")
151
150
  if 'progress_logger' in SubscriberTask.notify_send_header:
152
151
  # collect data from different threads
153
152
  SubscriberTask.notify_send_header.remove('progress_logger')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: femagtools
3
- Version: 1.8.4
3
+ Version: 1.8.5
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=vU0ig-0cH1u4MYLp5oY1knIx_P1ztRN-DjjooJ2MxnE,1600
1
+ femagtools/__init__.py,sha256=AYG-i1TsOTL54WdFZq9UcxAcqn7kj3GFb6Q_xMGw0jc,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
@@ -44,17 +44,17 @@ femagtools/poc.py,sha256=wMwOxMhPLFRiGPMsKQwWWuGr6UZPzRBajhfVMfXptNU,6794
44
44
  femagtools/semi_fea.py,sha256=WZtYKrzhDruETyuEW2kpiNp9OaA7Hheq3qJiAIYtsjg,3475
45
45
  femagtools/tks.py,sha256=C3lDdS91Yikf3cMnW-OEqmie-q6S24T81cCFrzwOyeI,7532
46
46
  femagtools/ts.py,sha256=x9aCMVASjdBZuyI2pJGMyi1dveGFd_pWQ20cZ-l_moc,47216
47
- femagtools/utils.py,sha256=ZbsxMeZ5xh_rSIRX9lAS7EnfQivbicoxEsUSyDoPHNk,1597
47
+ femagtools/utils.py,sha256=IXMk5ZI7B8CPePT523o_9doTKaaWuFe93AVwkBxkp00,1587
48
48
  femagtools/vbf.py,sha256=9XGfhftmD9carU8ByQ5DwqoR4daq5mJ39eMqruwml0Q,2444
49
49
  femagtools/vtu.py,sha256=Sf83dHIfCKY2km-MIUHKKoj-JKN4PDX7kkPLZXyIYY4,10723
50
50
  femagtools/windings.py,sha256=RS3QSx1JY0FXzItDuWimC9zYzRxq9n6BbY5fZt1dMFg,23780
51
- femagtools/zmq.py,sha256=oyPHnRc3tBkk5zCZuKiAlXnYX9ialYMuC5Z1QIxRhos,8584
51
+ femagtools/zmq.py,sha256=fsPvLbL7UB1CarTgixbWclIlVmCCsU4JLTKGEdg1wcU,8508
52
52
  femagtools/dxfsl/__init__.py,sha256=MywcCdpKPKs4qJBJJgeDsikJFJ2P48dbTuNk303f5pM,76
53
53
  femagtools/dxfsl/area.py,sha256=CXLf4lagLGGMkGZLfwowpH50djsZkepYSU5F3Juyxqo,69679
54
54
  femagtools/dxfsl/areabuilder.py,sha256=6dfWryYjXzGIVDOsX2zb1VKIhUzmpL43XhF-wtdesAg,35882
55
55
  femagtools/dxfsl/concat.py,sha256=F6scwesxyOmfmKQ5kGspNCxA71Yz6QgxFL7lTj3hsaI,13385
56
56
  femagtools/dxfsl/conv.py,sha256=9ki4PGyKuPpsSifKrBPu5_IvbhePv3sQU-Sq8A64s4w,12606
57
- femagtools/dxfsl/converter.py,sha256=5MwbWzrPfSuvGNX29mVfSpEOmAFxxj6JKhMEzYDqFng,43589
57
+ femagtools/dxfsl/converter.py,sha256=SYz5JWh485EeLA5K4gtz2jsVo8z0CXUjVn5tJ4JoEuM,43453
58
58
  femagtools/dxfsl/corner.py,sha256=-XPBcnEau-2-SRHLYzlBqCQGaFfgm_DH2qR1mSaFoAs,1311
59
59
  femagtools/dxfsl/dumprenderer.py,sha256=n4AvInjvGIaC2iKZtQaYXXDyJVSQ3uEOFOLD4-xfKRY,1861
60
60
  femagtools/dxfsl/dxfparser.py,sha256=kyXG0kZfNyOgn96MqBgP8RhOQhppfB5NbyRNNybs1C0,13451
@@ -69,13 +69,13 @@ femagtools/dxfsl/shape.py,sha256=uQqbgXIA2_KP2XRdhCfVfGWjcjwzhJ5t9RhiqR9R98c,616
69
69
  femagtools/dxfsl/svgparser.py,sha256=RY2TU9MK6gOaNmI6w6RNqcw7H9YGmK-NUwvdylKBcsE,3763
70
70
  femagtools/dxfsl/symmetry.py,sha256=dXfZVIqT49nbMirY5YVaRPi8kNB8reaiq-eIbhw1Z54,43936
71
71
  femagtools/machine/__init__.py,sha256=B7yeRZzf29NWCWy8C8iJFdTr9bszAoMRcVEpblhCeg4,7256
72
- femagtools/machine/afpm.py,sha256=4WEK2xB5GcjCTW4GyWN8q8PaQArbmbU0Yq4zmLJ79vo,26870
72
+ femagtools/machine/afpm.py,sha256=6P84lMVGgpnNcZBNkelTMNmaGGjydan_0loZ_n0K7Zc,35658
73
73
  femagtools/machine/effloss.py,sha256=gOgVdAr703Vh9T2Ht14of_I-95QOkH5qXmm11bfHK7s,14414
74
74
  femagtools/machine/im.py,sha256=isMSoCnIk4Hj47MwBNP5PW7a2rI-7N35A9zHGOSl43s,38111
75
75
  femagtools/machine/pm.py,sha256=C4vDdPIsIRUKtzY3b1RNT1v37p1uP3pMUduftNejcPc,68129
76
76
  femagtools/machine/sizing.py,sha256=6IUSdp6HNGHlSaWMy0mjzLGxp3UtxFLfdzQ_4MYx7TI,30069
77
77
  femagtools/machine/sm.py,sha256=SLaSuGJ8zXIFq6uBR2iu4uLXyWJZjA3iHAaTC8Jm-gw,39117
78
- femagtools/machine/utils.py,sha256=VswrQuGB_uGE4cYWIQSXLSEVJKrmSwNJdGlme7RPEno,20912
78
+ femagtools/machine/utils.py,sha256=25QNxP8lp31W7kB-gcIA1Vd_9UcYlxrahqZ-k3ALU_s,20985
79
79
  femagtools/moo/__init__.py,sha256=zinmWEOrsEz6DmMX0Dbn4t6_1UR-p4bEGqyR1wUQk_Q,175
80
80
  femagtools/moo/algorithm.py,sha256=e-Cgp2rp_hG9DXqWqluzQGNIWvCfthUgLD8O-aVPofA,5763
81
81
  femagtools/moo/population.py,sha256=krIl8tOJXPhCgBemkqn-jwvZg1VzsGniqMN_KAFxbuw,10203
@@ -85,7 +85,7 @@ femagtools/moo/test/PopulationTest.py,sha256=lG9NeWo0xrslfQRa4tgy1Nj23VJMFIlg_vQ
85
85
  femagtools/moo/test/ProblemTest.py,sha256=r5XEfY4LPscDb35TxxPd0lbP3nUmL6_G6vrRo1I3RSg,505
86
86
  femagtools/plot/__init__.py,sha256=f0yNw9NhadltPIu7zRWwTAY6FgHKeq9ul-3UcnK8Fmk,949
87
87
  femagtools/plot/bch.py,sha256=_EEPPEqtEPeWco3xlQqUuZft1eF-IXbMNnXyd8pYEJs,28873
88
- femagtools/plot/char.py,sha256=gVWPQTJkU8VkbCGFD62zfmZA_K0KlZ7EjorhwshhnZA,12123
88
+ femagtools/plot/char.py,sha256=xv4cNOTorK-fy7eUFhmyR-013TFI2A2999xXKgL2AnA,12469
89
89
  femagtools/plot/fieldlines.py,sha256=_7ykKhnQLeS4fz34pnzovH1gIhcUSKJ3gl1GUgWYix8,1137
90
90
  femagtools/plot/fluxdens.py,sha256=NlexRJ3f_8CgKoWrV82ZIsAXPrLhwj98uOe8_fUks7A,1082
91
91
  femagtools/plot/forcedens.py,sha256=Vloi9czy7qbGXI-Vm7Cow6IfHTsFhCLI1YWduFOR55c,4075
@@ -215,9 +215,9 @@ tests/moo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
215
215
  tests/moo/test_algorithm.py,sha256=Em8sFm2vzPmuIzRrBBnUQLU_TYuJHSf-kEeozw0XeX4,2563
216
216
  tests/moo/test_population.py,sha256=FvX9LRCxQx0_E2GxHQ5vKwOYFBQiNbT6Lmv5GmNWjTQ,5471
217
217
  tests/moo/test_problem.py,sha256=ALeP4u7g-dFhfwWL8vxivdrrYzVKPjHMCAXzzgyNZbs,467
218
- femagtools-1.8.4.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
219
- femagtools-1.8.4.dist-info/METADATA,sha256=FJCB-k0wQYuV9--d33J03ysXZrIXdvLwXLMYy6VCiE4,6190
220
- femagtools-1.8.4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
221
- femagtools-1.8.4.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
222
- femagtools-1.8.4.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
223
- femagtools-1.8.4.dist-info/RECORD,,
218
+ femagtools-1.8.5.dist-info/LICENSE,sha256=NaQe4uvkszQPJmiRPHecfk-Ab9VSRXo8xQLGNVHTeFo,1362
219
+ femagtools-1.8.5.dist-info/METADATA,sha256=CxspB9_deq3AqzLvZWTL8kn0ZpMD6yiUKo67ppIZ1y4,6190
220
+ femagtools-1.8.5.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
221
+ femagtools-1.8.5.dist-info/entry_points.txt,sha256=jrvOkZPiN44u1sASeu271VRaVIv5V-uRpN0_N5U_R8c,248
222
+ femagtools-1.8.5.dist-info/top_level.txt,sha256=Ri4YWtU8MZTzNje9IKyXhTakNbsrCynuWdon4Yq94Dc,17
223
+ femagtools-1.8.5.dist-info/RECORD,,