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: Language grade: Python

Downloads: PyPI version Conda Cloud Conda Cloud

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!

Quickstart:

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.1.0b0.tar.gz (47.2 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: magpylib-1.1.0b0.tar.gz
  • Upload date:
  • Size: 47.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for magpylib-1.1.0b0.tar.gz
Algorithm Hash digest
SHA256 9653aaed69ee3b77ca880be8ef0906b9f651b3441edd224956c871c80715132b
MD5 00b0488588b30cde0014fa276c08aba1
BLAKE2b-256 5f74047a911092397a144edbee572c89ed161b955d0514ad970d6e229e7cbd7c

See more details on using hashes here.

Supported by

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