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 +1 -1
 - femagtools/dxfsl/converter.py +0 -5
 - femagtools/machine/afpm.py +275 -0
 - femagtools/machine/utils.py +2 -1
 - femagtools/plot/char.py +19 -8
 - femagtools/utils.py +1 -1
 - femagtools/zmq.py +0 -1
 - {femagtools-1.8.4.dist-info → femagtools-1.8.5.dist-info}/METADATA +1 -1
 - {femagtools-1.8.4.dist-info → femagtools-1.8.5.dist-info}/RECORD +13 -13
 - {femagtools-1.8.4.dist-info → femagtools-1.8.5.dist-info}/LICENSE +0 -0
 - {femagtools-1.8.4.dist-info → femagtools-1.8.5.dist-info}/WHEEL +0 -0
 - {femagtools-1.8.4.dist-info → femagtools-1.8.5.dist-info}/entry_points.txt +0 -0
 - {femagtools-1.8.4.dist-info → femagtools-1.8.5.dist-info}/top_level.txt +0 -0
 
    
        femagtools/__init__.py
    CHANGED
    
    
    
        femagtools/dxfsl/converter.py
    CHANGED
    
    | 
         @@ -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
         
     | 
    
        femagtools/machine/afpm.py
    CHANGED
    
    | 
         @@ -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:
         
     | 
    
        femagtools/machine/utils.py
    CHANGED
    
    | 
         @@ -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 
     | 
    
         
            -
                 
     | 
| 
       337 
     | 
    
         
            -
                    c. 
     | 
| 
       338 
     | 
    
         
            -
             
     | 
| 
       339 
     | 
    
         
            -
                    c. 
     | 
| 
      
 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[ 
     | 
| 
       374 
     | 
    
         
            -
             
     | 
| 
       375 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
| 
      
 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. 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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. 
     | 
| 
       219 
     | 
    
         
            -
            femagtools-1.8. 
     | 
| 
       220 
     | 
    
         
            -
            femagtools-1.8. 
     | 
| 
       221 
     | 
    
         
            -
            femagtools-1.8. 
     | 
| 
       222 
     | 
    
         
            -
            femagtools-1.8. 
     | 
| 
       223 
     | 
    
         
            -
            femagtools-1.8. 
     | 
| 
      
 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,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |