femagtools 1.8.4__py3-none-any.whl → 1.8.5__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.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,,