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.2.0b0.tar.gz
(63.5 kB
view details)
File details
Details for the file magpylib-1.2.0b0.tar.gz
.
File metadata
- Download URL: magpylib-1.2.0b0.tar.gz
- Upload date:
- Size: 63.5 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.2 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 058969ac0363d301dc682c9c3084977385660ef673ab321c394ede00240f8581 |
|
MD5 | 1631d8efd40987ad5ea90ab16ab32541 |
|
BLAKE2b-256 | 797bb7a07f0f2f2450a3a830bb886912000578b7aa1111bf2f847e2001762cf5 |