Skip to main content

magnum.np finite-difference package for the solution of micromagnetic problems

Project description

magnum.np

magnum.np is a Python library for the solution of micromagnetic problems with the finite-difference method. It implements state-of-the-art algorithms and is based on pytorch, which allows to seamlessly run code either on GPU or on CPU. Simulation scripts are written in Python which leads to very readable yet flexible code. Due to pytorch integration, extensive postprocessing can be done directly in the simulations scripts. Furthermore pytorch's autograd feature makes it possible to solve inverse problems without significant modifications of the code. This manual is meant to give you both a quick start and a reference to magnum.np.

Features

  • Explicit / Implicit time-integration of the Landau-Lifshitz-Gilbert Equation
  • Fast FFT Demagnetization-field computation optimized for small memory footprint
  • Fast FFT Oersted-field optimized for small memory footprint
  • Arbitrary Material Parameters variing in space and time
  • Spin-torque model by Zhang and Li, Slonczewski
  • Antiferromagnetic coupling layers (RKKY)
  • Dzyaloshinskii-Moriya interaction (interface, bulk, D2d)
  • String method for energy barrier computations
  • Sophisticated domain handling, e.g. for spatially varying material parameters
  • Seemingless VTK import / export via pyvista
  • Inverse Problems via pytorch's autograd feature

Installation

from Python Package Index (PyPi)

For a clean and independent system, we start with a clean virtual python environment (this step could be omitted, if you would like to install magnum.np the available python environment)

mkdir venv
python -m venv venv
source venv/bin/activate

Finally install a release versions of magnum.np by means of pip:

pip install magnum.np

from source code (gitlab.com)

More advanced users can also install magnum.np from source code. It can be downloaded from https://gitlab.com/magnum.np/magnum.np .

After activating the virtual environment magnum.np can be simply installed using pip. For example installing with the -e option also allows to modify the source code:

pip install -e .

Note that a default version of pytorch is included in magnum.np's dependecy list. If you would like to uses a specific pytorch version (fitting your installed CUDA library) it needs to be installed in advance.

Example

The following demo code shows the solution of the muMAG Standard Problem #5 and can be found in the demos directory:

from magnumnp import *
import torch

Timer.enable()

# initialize state
n  = (40, 40, 1)
dx = (2.5e-9, 2.5e-9, 10e-9)
mesh = Mesh(n, dx)

state = State(mesh)
state.material = {
    "Ms": 8e5,
    "A": 1.3e-11,
    "alpha": 0.1,
    "xi": 0.05,
    "b": 72.17e-12
    }

# initialize magnetization that relaxes into s-state
state.m = state.Constant([0,0,0])
state.m[:20,:,:,1] = -1.
state.m[20:,:,:,1] = 1.
state.m[20,20,:,1] = 0.
state.m[20,20,:,2] = 1.

state.j = state.Tensor([1e12, 0, 0])

# initialize field terms
demag    = DemagField()
exchange = ExchangeField()
torque   = SpinTorqueZhangLi()

# initialize sstate
llg = LLGSolver([demag, exchange])
llg.relax(state)
write_vti(state.m, "data/m0.vti", state)

# perform integration with spin torque
llg = LLGSolver([demag, exchange, torque])
logger = ScalarLogger("data/m.dat", ['t', 'm'])
while state.t < 5e-9:
    llg.step(state, 1e-10)
    logger << state

Timer.print_report()

Documentation

The documentation is located in the doc directory and can be built using sphinx. For example the following commands build an HTML documentation of the actual source code.

cd doc
make html

Alternatively, the latest version of the documentation is always available on https://magnumnp-magnumnp.readthedocs-hosted.com/en/latest/

Citation

If you use magnum.np in your work or publication, please cite the following reference:

[1] Bruckner, Florian, et al. "magnum.np -- A pytorch based GPU enhanced Finite Difference Micromagnetic Simulation Framework for High Level Development and Inverse Design", to be published (2023).

Contributing

Contributions are gratefully accepted. The source code is hosted on www.gitlab.com/magnum.np/magnum.np. If you have any issues or question, just open an issue via gitlab.com. To contribute code, fork our repository on gitlab.com and create a corresponding merge request.

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

magnumnp-1.0.5.tar.gz (53.6 kB view details)

Uploaded Source

Built Distribution

magnumnp-1.0.5-py3-none-any.whl (76.0 kB view details)

Uploaded Python 3

File details

Details for the file magnumnp-1.0.5.tar.gz.

File metadata

  • Download URL: magnumnp-1.0.5.tar.gz
  • Upload date:
  • Size: 53.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for magnumnp-1.0.5.tar.gz
Algorithm Hash digest
SHA256 b24cea26c009f3a2c8e49c3384a000e036277b3696850e39832ba0bbc1a324e0
MD5 7d4e9c982320a5559ab941c84c4206e1
BLAKE2b-256 a1861411d1674ae7c1b6fbb2868a98a480c441e767ae1f0df83a5c5b051977ba

See more details on using hashes here.

File details

Details for the file magnumnp-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: magnumnp-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 76.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for magnumnp-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 161c35390400438736167196aa47bff01cf71390a9ef524428aa8b7680a70517
MD5 87f31411b9bfe35d378d6b9a509131ed
BLAKE2b-256 894bc8d918e19d8a4b794a396c1762309e43863b29e260291f3527f85b4d6919

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