#magnetic #magnetism #calculations

app magnet_rs

User friendly magnetic field calculations in Rust

4 releases

0.2.3 Sep 19, 2021
0.2.2 Sep 18, 2021
0.2.1 Sep 18, 2021
0.1.0 Feb 19, 2021

#1189 in Math

MPL-2.0 license

730KB
4.5K SLoC

Magnet_RS

License: MPL 2.0 License: CC BY-SA 4.0 build status crate documentation

Magnet_RS is a command line program to calculate the magnetic fields of any object or objects in 2D and 3D; along with any induced forces and torques. This uses the lodestone_core crate, which is a rewrite of a python package, pymagnet:

Github, or PyPi.

Description

This binary reads a toml file containing the magnets and list of points to run the calculation over. This is then saved to a JSON file with the following keys:

  • magnets: an array of the magnets and their properties
  • points: points where the field is calculated
  • field: calculated magnetic field

Currently, only 2D features are available.

Example

Run the demo calculation:

magnet_rs -d

which saves the computed field to example_out.json

The Python script in the data folder, plot_example.py will plot the resulting json file.

Reading input files

Save the following into input.toml

[[magnet]]
kind = "rectangle"
size = [1.0, 1.0]
center = [-1.0, -0.5]
magnetisation = [1.0, 90.0]
magAngle = "degrees"
alpha = 0.0
alphaAngle = "degrees"

[[magnet]]
kind = "rectangle"
size = [1.0, 1.0]
center = [1.0, -2.0]
magnetisation = [-1.0, 0.5]
magAngle = "degrees"
alpha = 0.0
alphaAngle = "degrees"


# Then define the type of grid for calculating over
[grid]
kind = "grid"
start = [-2.0, -2.0]
stop = [2.0, 2.0]
numPoints = 101
units = "mm" # NOTE: Units are not yet implemented 

then run the following to save the data in a JSON file:

magnet_rs -i input.toml -o out.json

Licensing

Source code licensed under the Mozilla Public License Version 2.0

Documentation is licensed under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

This is a human-readable summary of (and not a substitute for) the license, adapted from CS50x. Official translations of this license are available in other languages.

You are free to:

  • Share — copy and redistribute the material in any medium or format.
  • Adapt — remix, transform, and build upon the material.

Under the following terms:

  • Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original
  • No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.

Dependencies

~7–16MB
~203K SLoC