Magba is a performant analytical magnetic computation library for Rust.
Python bindings available via PyMagba.
Learn more at docs.rs/magba.
Features
- Creating magnets and computing fields.
- Manipulating object positions and orientations.
- Using sensors to measure magnetic fields.
- Grouping magnets and sensors into collections.
- Parallelization using Rayon (enabled by default).
- Support calculation with
f32andf64.
Installation
To install Magba using cargo, run:
By default, Magba installs with all stable features enabled, including parallelization with Rayon.
Feature Flags
The available feature flags are:
default: Enable std and rayon.alloc: Enable heap allocations, allowing collections and batch processing without the fullstdlibrary.std: Use std features, such as magnet and sources structs. Disable the flag to use Magba inno_stdenvironments. Without std, you can still access thefieldsmodule to directly compute the fields.rayon: Parallelization using Rayon.libm: Use libm as the math backend. Must be enabled when compiling forno_std.unstable: Enable unstable features. These features may change any time.
Quick Start
use *;
use *;
use PI;
// Define magnetic sources
let cylinder = default;
let cuboid = new;
// Grouping sources as collection
let mut source_assembly = sources!;
source_assembly.push;
// Observer positions
let points = ;
// Compute B-field (Magnetic flux density [T])
let b_fields = source_assembly.compute_B_batch;
// [
// [ -2.7063724257464133e-5, -3.533949646070574e-17, 0.7312215044902747 ],
// [ -3.381192498299282e-5 , 0.0, 0.7187831955877858 ],
// [ -4.0548326050340215e-5, 0.0, 0.7130992758498962 ],
// ]
// Move and Rotate
source_assembly.translate;
source_assembly.rotate;
let b_fields = source_assembly.compute_B_batch;
// [
// [ -9.575129388363597e-6 , -0.24516787434696088, 0.4573303607411665 ],
// [ -1.4358446356125264e-5, -0.2948988353221851 , 0.3578212873125478 ],
// [ -1.9136669915278972e-5, -0.30697154302354923, 0.33360985034592394 ],
// ]
Testing
Results are validated against MagpyLib and reference data.
See /tests/test-data and the accuracy report for details.
Acknowledgment
Most of the field computation used in Magba is based on MagpyLib. We would like to thank MagpyLib contributors for their hard work and contributions to the scientific community.
Learn more at docs.rs/magba.