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
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
Release history Release notifications | RSS feed
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)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9653aaed69ee3b77ca880be8ef0906b9f651b3441edd224956c871c80715132b |
|
MD5 | 00b0488588b30cde0014fa276c08aba1 |
|
BLAKE2b-256 | 5f74047a911092397a144edbee572c89ed161b955d0514ad970d6e229e7cbd7c |