A versatile and extensible GPU-accelerated micromagnetic simulator written in C++ and CUDA with a Python interface. This project is in development alongside mumax³. If you have any questions, feel free to use the mumax⁺ GitHub Discussions.
Installation instructions, documentation, tutorials and examples can be found on the mumax⁺ website.
mumax⁺ is described in the following paper:
mumax+: extensible GPU-accelerated micromagnetics and beyond
Please cite this paper if you would like to cite mumax⁺. All demonstrations in the paper were simulated using version v1.1.0 of the code. The scripts used to generate the data can be found in the paper2025 directory under the paper2025 tag.
See INSTALL.md or the mumax⁺ website for full instructions, covering the 3 main ways you can run/install mumax⁺:
- online through Google Colab,
- installing pre-built wheels from the GitHub releases,
- building from source.
Documentation for mumax⁺ can be found at http://mumax.github.io/plus.
It follows the NumPy style guide and is generated using Sphinx. You can build it yourself by running the following command in the docs/ directory:
make htmlThe documentation can then be found at docs/_build/html/index.html. However, to generate the class diagrams you should be on a Linux device and first install clang-uml otherwise they will not be generated.
Lots of example codes are located in the examples/ directory. They are either simple Python scripts, which can be executed inside said directory like any Python script
python standardproblem4.pyor they are interactive notebooks (.ipynb files), which can be run using Jupyter.
Several automated tests are located inside the test/ directory. Type pytest inside the terminal to run them. Some are marked as slow, such as test_mumax3_standardproblem5.py. You can deselect those by running pytest -m "not slow". Tests inside the test/mumax3/ directory require external installation of mumax³. They are marked by mumax3 and can be deselected in the same way.
mumax⁺ can use either single or double floating-point precision.
This can be controlled by the command-line argument --mumaxplus-fp-precision and/or the environment variable MUMAXPLUS_FP_PRECISION.
See this tutorial page or example notebook for more details.
Contributions are gratefully accepted. To contribute code, fork our repo on GitHub and send a pull request.