plus

More versatile and extensible GPU-accelerated micromagnetic simulator

https://github.com/mumax/plus

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.6%) to scientific vocabulary

Keywords

cpp cuda finite-difference-time-domain gpu-computing micromagnetics python scientific-computing
Last synced: 4 months ago · JSON representation ·

Repository

More versatile and extensible GPU-accelerated micromagnetic simulator

Basic Info
  • Host: GitHub
  • Owner: mumax
  • License: gpl-3.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 50 MB
Statistics
  • Stars: 22
  • Watchers: 8
  • Forks: 5
  • Open Issues: 3
  • Releases: 4
Topics
cpp cuda finite-difference-time-domain gpu-computing micromagnetics python scientific-computing
Created over 1 year ago · Last pushed 4 months ago
Metadata Files
Readme License Citation

README.md

mumax⁺

A more versatile and extensible GPU-accelerated micromagnetic simulator written in C++ and CUDA with a Python interface. This project is in development alongside its popular predecessor mumax³. If you have any questions, feel free to use the mumax mailing list.

Paper

mumax⁺ is described in the following paper:

mumax+: extensible GPU-accelerated micromagnetics and beyond

https://arxiv.org/abs/2411.18194

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.

Dependencies

You should install these yourself * CUDA Toolkit 10.0 or later * A C++ compiler which supports C++17, such as GCC * On Windows (good luck): MSVC 2019

These will be installed automatically within the conda environment * cmake 4.0.0 * Python 3.13 * pybind11 v2.13.6 * NumPy * matplotlib * SciPy * Sphinx

Installation from Source

Linux

Make sure that the following applications and build tools are installed: * C++ compiler which supports c++17, such as GCC * CPython (version ≥ 3.8 recommended) and pip * CUDA Toolkit (version 10.0 or later) * git * miniconda or anaconda

Make especially sure that everything CUDA-related (like nvcc) can be found inside your path. This can be done by editing your ~/.bashrc file and adding the following lines. ```bash

add CUDA

export PATH="/usr/local/cuda/bin:$PATH" export LDLIBRARYPATH="/usr/local/cuda/lib64:$LDLIBRARYPATH" `` The paths might differ if CUDA Toolkit has been installed in a different location. If successful, a command such asnvcc --version` should work.

Clone the mumax⁺ git repository. The --recursive flag is used here to get the pybind11 submodule which is needed to build mumax⁺. bash git clone --recursive https://github.com/mumax/plus.git mumaxplus && cd mumaxplus We recommend to install mumax⁺ in a clean conda environment. You could also skip this step and use your own conda environment instead if preferred. bash conda env create -f environment.yml conda activate mumaxplus Then build and install mumax⁺ using pip. bash pip install -v . If changes are made to the code, then pip install -v . can be used to rebuild mumax⁺. If you want to change the Python code without needing to reinstall, you can use pip install -ve ..

You could also compile the source code with double precision, by changing FP_PRECISION in CMakeLists.txt from SINGLE to DOUBLE before rebuilding. cmake add_definitions(-DFP_PRECISION=DOUBLE) # FP_PRECISION should be SINGLE or DOUBLE

Windows

These instructions are old and worked at some point (2021), but not today. If you are brave enough to try Windows and you manage to get it working, please let us know!

  1. Install Visual Studio 2019 and the desktop development with C++ workload
  2. Install CUDA Toolkit 10.x
  3. Install cmake
  4. Download the pybind11 submodule with git git submodule init git submodule update
  5. Install Python packages using conda conda env create -f environment.yml
  6. Build mumaxplus using setuptools activate mumaxplus python setup.py develop or conda conda activate mumaxplus conda develop -b .

Documentation

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: bash make html The documentation can now be found at docs/_build/html/index.html.

Examples

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 bash python standardproblem4.py or they are interactive notebooks (.ipynb files), which can be run using Jupyter.

Testing

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.

Contributing

Contributions are gratefully accepted. To contribute code, fork our repo on GitHub and send a pull request.

Owner

  • Name: mumax
  • Login: mumax
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite the following paper."
authors:
  - family-names: Mulkers
    given-names: Jeroen
    orcid: "https://orcid.org/0000-0002-4000-9275"
  - family-names: Moreels
    given-names: Lars
    orcid: "https://orcid.org/0000-0001-7362-2466"
  - family-names: Lateur
    given-names: Ian
    orcid: "https://orcid.org/0009-0003-8283-4083"
  - family-names: De Gusem
    given-names: Diego
    orcid: "https://orcid.org/0009-0008-3341-0555"
title: "mumax⁺"
version: 1.0.0
date-released: 2024-11-29
url: "https://github.com/mumax/plus"
preferred-citation:
  type: generic
  authors:
    - family-names: Moreels
      given-names: Lars
      orcid: "https://orcid.org/0000-0001-7362-2466"
    - family-names: Lateur
      given-names: Ian
      orcid: "https://orcid.org/0009-0003-8283-4083"
    - family-names: De Gusem
      given-names: Diego
      orcid: "https://orcid.org/0009-0008-3341-0555"
    - family-names: Mulkers
      given-names: Jeroen
      orcid: "https://orcid.org/0000-0002-4000-9275"
    - family-names: Maes
      given-names: Jonathan
      orcid: "https://orcid.org/0000-0003-4973-8383"
    - family-names: Milosevic
      given-names: Milorad V.
      orcid: "https://orcid.org/0000-0002-5431-377X"
    - family-names: Leliaert
      given-names: Jonathan
      orcid: "https://orcid.org/0000-0001-8778-3092"
    - family-names: Van Waeyenberge
      given-names: Bartel
      orcid: "https://orcid.org/0000-0001-7523-1661"
  year: 2024
  month: 11
  day: 27
  title: "mumax+: extensible GPU-accelerated micromagnetics and beyond"
  doi: "10.48550/arXiv.2411.18194"
  url: https://arxiv.org/abs/2411.18194

GitHub Events

Total
  • Create event: 29
  • Release event: 3
  • Issues event: 17
  • Watch event: 20
  • Delete event: 28
  • Issue comment event: 45
  • Public event: 1
  • Push event: 163
  • Pull request review comment event: 286
  • Pull request review event: 227
  • Pull request event: 54
  • Fork event: 4
Last Year
  • Create event: 29
  • Release event: 3
  • Issues event: 17
  • Watch event: 20
  • Delete event: 28
  • Issue comment event: 45
  • Public event: 1
  • Push event: 163
  • Pull request review comment event: 286
  • Pull request review event: 227
  • Pull request event: 54
  • Fork event: 4

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 9
  • Total pull requests: 31
  • Average time to close issues: 3 months
  • Average time to close pull requests: 17 days
  • Total issue authors: 4
  • Total pull request authors: 3
  • Average comments per issue: 1.78
  • Average comments per pull request: 0.71
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 9
  • Pull requests: 31
  • Average time to close issues: 3 months
  • Average time to close pull requests: 17 days
  • Issue authors: 4
  • Pull request authors: 3
  • Average comments per issue: 1.78
  • Average comments per pull request: 0.71
  • Merged pull requests: 17
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • ilateur (4)
  • lamoreel (3)
  • Johnblog (1)
  • kkingstoun (1)
  • MathieuMoalic (1)
Pull Request Authors
  • ilateur (12)
  • lamoreel (11)
  • DiegoDeGusem (9)
  • hernantech (1)
Top Labels
Issue Labels
enhancement (3) bug (2)
Pull Request Labels
enhancement (18) bug (2)

Dependencies

environment.yml pypi
  • clang-format *
pyproject.toml pypi
setup.py pypi
  • numpy *