Magpylib integration#

cf. https://magpylib.readthedocs.io/en/latest/

Since we use the same convention for spatial coordinates, it is actually quite simple to make magpylib objects work with atomsmltr. To do that, just use the wrapper for magnetic field objects :

import magpylib as magpy
from atomsmltr.environment.fields.magnetic.magpylib import MagpylibWrapper

# create a magpylib object
cyl = magpy.magnet.Cylinder(polarization=(0.5, 0.5, 0), dimension=(40, 20))

# wrap it up
mag_field = MagpylibWrapper(cyl)
mag_field.tag = "a nic magnet"

# use it as any MagneticField object
limits = (-50, 50, -50, 50)
Npoints = (100, 101)
mag_field.plot2D(plane="XY", limits=limits, Npoints=Npoints)
mag_field.plot2D(plane="YZ", limits=limits, Npoints=Npoints)
mag_field.plot2D(plane="ZX", limits=limits, Npoints=Npoints)
<Axes: xlabel='Z', ylabel='X'>
../../_images/55a8887ea32714fd85a88435965332d6fd7a48ff9bc619a2efc07f7b933df68d.png ../../_images/a08d2de502909afdea54115f31946a02f12d2f4ff586f0f5d4abe57d6a862929.png ../../_images/34169a175b2a4505ae9fa3a61c083be5fadbf53f3d64f6b964edf6fa82b40a47.png