Skip to main content

A simple, user friendly Python 3 toolbox for calculating magnetic fields from permanent magnets and current distributions.

Project description

magpylib - A simple and user friendly magnetic toolbox for Python 3


Builds:

Documentation:

Test Coverage:

Downloads: PyPI version

What is magpylib ?

  • Python package for calculating magnetic fields of magnets, currents and moments (sources).
  • It provides convenient methods to generate, geometrically manipulate, group and vizualize assemblies of sources.
  • The magnetic fields are determined from underlying (semi-analytical) solutions which results in fast computation times (sub-millisecond) and requires little computation power.

Dependencies:

Python3.6+, Numpy, Matplotlib


Guides & Installation:

Please check out our documentation for getting started and more info!

(Installation methods are still WIP.)

Installing this project using pip:

  • run the following in your Python environment terminal:
    pip install magpylib
    

Installing this project locally:

  • Clone this repository to your machine.
  • In the directory, run pip install . in your conda terminal.

Example:

  • Two permanent magnets with axial magnetization are created and geometrically manipulated. They are grouped in a single collection and the system geometry is displayed using a supplied method.
  • The total magnetic field that is generated by the collection is calculated on a grid in the xz-plane and is displayed using matplotlib.

Program output:

Code:

# imports
import numpy as np
import matplotlib.pyplot as plt
import magpylib as magpy

# create magnets
magnet1 = magpy.source.magnet.Box(mag=[0,0,600],dim=[3,3,3],pos=[-4,0,3])
magnet2 = magpy.source.magnet.Cylinder(mag=[0,0,500], dim=[3,5], pos=[0,0,0])

# manipulate magnets
magnet1.rotate(45,[0,1,0],anchor=[0,0,0])
magnet2.move([5,0,-4])

# collect magnets
pmc = magpy.Collection(magnet1,magnet2)

# display system geometry
pmc.displaySystem()

# calculate B-fields on a grid
xs = np.linspace(-10,10,20)
zs = np.linspace(-10,10,20)
Bs = np.array([[pmc.getB([x,0,z]) for x in xs] for z in zs])

# display fields using matplotlib
fig, ax = plt.subplots()
X,Y = np.meshgrid(xs,zs)
U,V = Bs[:,:,0], Bs[:,:,2]
ax.streamplot(X, Y, U, V, color=np.log(U**2+V**2), density=1.5)
plt.show() 

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

magpylib-1.0.2b0.tar.gz (45.9 kB view details)

Uploaded Source

Built Distribution

magpylib-1.0.2b0-py3-none-any.whl (67.4 kB view details)

Uploaded Python 3

File details

Details for the file magpylib-1.0.2b0.tar.gz.

File metadata

  • Download URL: magpylib-1.0.2b0.tar.gz
  • Upload date:
  • Size: 45.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for magpylib-1.0.2b0.tar.gz
Algorithm Hash digest
SHA256 fde2f8641a265461a9eb50259c5fccdf82822b57a441e3eae7a99f2861f3022e
MD5 e90265fd138dfd843d4d50047492d8e0
BLAKE2b-256 d2bcf09f9ae0fac48ba19b0ab891a6f9dec2400dc3ab5ac35ee867f1232c6ea1

See more details on using hashes here.

File details

Details for the file magpylib-1.0.2b0-py3-none-any.whl.

File metadata

  • Download URL: magpylib-1.0.2b0-py3-none-any.whl
  • Upload date:
  • Size: 67.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for magpylib-1.0.2b0-py3-none-any.whl
Algorithm Hash digest
SHA256 6bf826ce6d5a74c3701d02d121697616e2e04792c11368789fc6ac0d65fc4085
MD5 0834b9cad935a538048aaeee4c5065ff
BLAKE2b-256 3632eaaef25ded1c3c44c9f6c5ff2dba6ad84dc0fcdffcf93e0487fb93a8d0f9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page