Skip to content

Releases: mumax/3

mumax 3.12

Choose a tag to compare

@JonathanMaes JonathanMaes released this 20 Apr 12:21

Besides a variety of new shapes, this update introduces several useful functions like CustomQuantity(slice) which can turn a Go slice into a custom quantity. In combination with the new CellIndices() or the old LoadFile(), NewScalarMask() or NewVectorMask(), this enables the efficient generation of custom fields inside .mx3 scripts. It is now also possible to automatically interrupt minimize() and relax() after a given real time has passed. As always, new functions prefixed by ext_ may exhibit unintuitive behavior in some edge cases, so always double-check their output when used in more complex simulations (e.g., with moving windows or rotating systems).

Important bugfixes include restoring the ability to obtain stray fields in regions where Msat==0, and a scaling issue in ExchCoupling and DindCoupling.

Changelog

New functionality in input scripts

New functions

  • CustomQuantity(slice): turns a *data.Slice into a Quantity, allowing more complex fields to be used in operations like Add, Mul, ... without having to abuse builtin quantities. A slice can be made with, e.g., NewScalarMask, LoadFile, ... #384 by @jplauzie.
  • CellIndices(): returns a 4D *data.Slice with the index ix, iy, iz of each cell, starting at 0 in the (-X, -Y, -Z) corner. #384.
  • CurrentMag(): returns a snapshot of the current magnetization as a Config. #388 by @jplauzie.
  • ext_grainboundaries(startregion, numgrains, offset, boundarythickness, zeroflag): generates grain boundaries as regions. Given a distribution of regions, the region index of cells in regions startregion to startregion+numgrains that lay within boundarythickness of a region boundary will be incremented by offset. See also: ext_grainboundary_edgeX etc. #387 by @jplauzie.
  • ExpectB(msg, have, want): technical function for test scripts that panics if two bools are not equal. #392.

New Shapes

  • Superball(diameter, p): smooth interpolation between cube (p=∞), circle (p=1), octahedron (p=0.5) and beyond. #374 by @JLeliaert.
  • Line(x1, y1, z1, x2, y2, z2, diam, linecap) and Line2D(x1, y1, x2, y2, diam, linecap): lines of a given diameter in 3D and 2D, respectively, with a few different options for the line caps. #383 by @JonathanMaes.
  • VoxelShape(voxels, dx, dy, dz): elements >0.5 in the slice voxels become dx $\times$ dy $\times$ dz cuboids at the corresponding position, with the center of the slice at the origin. Introduced in #311 by @Artemkth, exposed to users in #390 by @jplauzie.
  • ext_AllRegionShapes(): returns a function func(int) which, given a region index, yields its corresponding Shape. #385 by @jplauzie.
  • ext_geomEdge(axis): returns a Shape of all cells on an edge of the geometry. axis can be +X, -X, +Y, -Y, +Z, -Z. #386 by @jplauzie.

New variables

  • MinimizeWallClockTime and RelaxWallClockTime: if set to a positive value, Minimize() and Relax() will be interrupted after this amount of real-time seconds unless they converge earlier. #388 by @jplauzie.
  • NREGION: read-only value representing the maximum number of regions (=256). #389 by @jplauzie.
  • ext_grainboundary_edgeX, Y, Z: affects the behavior of ext_grainboundaries() at the edges of the simulation box. #387 by @jplauzie.

Other changes

  • Minimize() and Relax() now return a boolean value indicating whether convergence was achieved. #388 by @jplauzie.

Bugfixes

  • A fix in 3.11.1 made B_demag unavailable where Msat == 0, preventing users from obtaining stray fields. Fixed in #381, originally reported by @ac2290.
  • ExchCoupling and DindCoupling were 4x or 6x larger than they should be. Fixed in #377, originally reported by Elizabeth Martín Jefremovas.
  • -http flag had no effect on GUI port when running multiple files in a queue (e.g., mumax3 -http="" file1 file2 served GUI regardless).
  • Warning for extreme aspect ratios (>100) will no longer throw a fatal error. Changed in #382, originally requested by @janmasell.
  • Warnings for non-7-smooth grid and high aspect ratios did not appear log.txt. Fixed in #382.
  • Region 256 was allowed in some places. Fixed in #389.

mumax 3.11.1

Choose a tag to compare

@JonathanMaes JonathanMaes released this 10 Jul 11:58

This patch solves a few bugs, most importantly one that appeared in 3.10 where regions with Msat=0 could influence other regions through the exchange interaction.

Changelog

Bugfixes

  • Regions with Msat=0 could interact with other regions through the exchange interaction, and were themselves affected by the demagnetising field. Reported by @jplauzie in #357. Fixed in #372.
  • mumax3 -i always opened default port :35367 in browser even if it was already used by another mumax process. Fixed in 46fe212.
  • -gpu flag had no effect when specifying multiple input files. Fixed in #373.

mumax 3.11

Choose a tag to compare

@JLeliaert JLeliaert released this 28 Nov 20:28

Important

In mumax 3.11, GPUs with compute capability <5.0 will no longer be able to run the mumax³ pre-compiled binaries that are provided on the mumax³ download page. Those binaries will only be compiled with CUDA 10.0 and higher. Check your GPU's compute capability with nvidia-smi --query-gpu="compute_cap" --format="csv".

Changelog

New functionality in input scripts

Functions

  • FunctionFromDatafile(file, xcol, ycol, interp): creates a function from columns in a CSV file. #343 by @JeroenMulkers.
  • RedefRegion(old_idx, new_idx): all cells with region index old_idx will be moved to region new_idx. #280 by @RossKnapman.
  • RemoveCustomEnergies(): clear all user-defined energies. #301 by @FGarcias.
  • ClearPostSteps(): clears all functions that run after each simulation step (e.g., running averages, tracking skyrmions/DWs...). #362 by @ilateur.
  • RunningAverage(q): tracks the time-average of a (custom) quantity q, accounting for adaptive time steps.
    Sum(q) and SumVector(q): sum of a quantity q over all cells in the simulation domain. #347 by @JonathanMaes.
  • Triangle(x0, y0, x1, y1, x2, y2): triangle shape, infinite along z-axis. #364 by @ilateur.
  • ext_centerWallInLayer(reg, comp) and ext_centerWallInRegion(reg, comp): follow a domain wall in only one layer/region (useful e.g. in SAF or odd-shaped geometries). #222 by @jsampaio.
  • ext_hopfindex_<method>(), ext_hopfindexdensity_<method>() and ext_emergentmagneticfield_<method>(): calculation of Hopf index and related quantities via different numerical methods, as described in Knapman et al., Phys. Rev. B 111, 134408 (2025). #365 by @RossKnapman.
  • ext_InitGeomFromOVF(file): load geometry stored in an OVF file (e.g. saved by save(geom)). Besides loading the geometry as a VoxelShape (inaccessible by the user), this function also resizes the grid and cells to the same size as in the .ovf file. Part of #311 by @Artemkth.

Boolean parameters

  • EdgeCarryShift (default false): if set to true, calling Shift(x) uses the values of m at the border to set the magnetization of the introduced cells. For cells where this border was outside the geometry, ShiftMagL/R/D/U is used. #316 by @jsampaio.
  • ext_grainCutShape (default false): if set to true, calling ext_make3Dgrains() on a certain shape will complete all voronoi grains whose centre lies within the shape, while grains whose centre lies outside the shape will be cut out. #335 by @JLeliaert.
  • ext_enableCenterBubbleX and Y (default true): if set to false, ext_centerBubble will not consider that axis for centering. #361 by @ilateur.

Other changes

  • Updated README with instructions and troubleshooting for building mumax³ on Windows, and updated deploy_windows.ps1 to be more versatile. Related: #332.
  • Warn the user when the grid is not 7-smooth, when it contains an odd number of cells at nonzero temperature, or when cells have a high aspect ratio. See #340.
  • Removed unnecessary torque evaluation in RKF56 solver. Fixed in #341.
  • Print extra system information when mumax³ starts, including commit hash when mumax3.exe was compiled. Merged in e07e134 and #344.
  • Updated GPU benchmarks on homepage (24 new, 12 removed).

Bugfixes

  • OVF files could not contain comments when loaded with mumax³. Fixed in #311 by @Artemkth.
  • Shifted(x, y, z) could not be used to shift quantities over more than one direction at once. Fixed in #283.
  • Incorrect equation for magnetoelastic effective field. Fixed in #324 by @marcrovi.
  • Bulk DMI with Neumann BC skipped derivative calculation in non-3D systems. Fixed in #363 by @ilateur.
  • ext_make3Dgrains did not use seeded random generator. Fixed in dcf1e2f.
  • ShiftY erroneously relied on x-axis for one calculation. Fixed in #355 by @ilateur.
  • MFM images could not be calculated for some grid sizes. Fixed in #334.
  • Cone was not a cone. Fixed in ef13cb6, reported by @gnmp in #287.
  • Demag kernel calculation did not always print 0% and 100% completion.
  • Scrolling in mumax-view was broken in Firefox.
  • 🎅 9c348f6
  • Updated LICENSE with additional permission under GNU GPL version 3 section 7 concerning NVIDIA CUDA Toolkit. Fixed in #296 by @rolandmas.

mumax 3.10

Choose a tag to compare

@godsic godsic released this 13 Aug 12:45

You would need at least Nvidia driver v331 to run mumax3.10 (corresponding to CUDA 7.0 release).
We strongly encourage you to use as latest driver as it possible for your hardware, since newer CUDA versions offer sizeable performance gains.

The mumax3.10 release version includes

There is also plethora of fixes, including contributions from @joh, @syockit, @kkingstoun, @LLizardi, @kakutsmann, @ivlis, @jsampaio and @yuli-nano.

Finally, we would like to thank everybody who kindly shared mumax3 benchmark results with us.

mumax 3.10β

mumax 3.10β Pre-release
Pre-release

Choose a tag to compare

@barnex barnex released this 29 Sep 08:30

You would need CUDA 10 and Nvidia driver 410.48 (Linux) and 411.31 (Windows) to run mumax3.10β.
Binaries for older CUDA versions are NOT RECOMMENDED and only provided for compatibility reasons (e.g. for supercomputers)

This version includes

There is also plethora of fixes, including contributions from @joh, @syockit, @kkingstoun, @LLizardi, @kakutsmann, @ivlis and @jsampaio.

Finally, we would like to thank everybody who kindly shared mumax3 benchmark results with us.

mumax 3.9.3

Choose a tag to compare

@barnex barnex released this 30 Sep 08:05

This release allows space-dependent induced DMI (thanks @JeroenMulkers).
Linux binary is now compiled for cuda 7.5, which ships with ubuntu 16.04.

mumax 3.9.1

Choose a tag to compare

@barnex barnex released this 06 Dec 20:50

This version works around issue #52: a bug in NVIDIA's cuFFT library caused wrong FFT results for certain sizes with CUDA >= 6.5. Fortunately, a sanity check in mumax detected this issue, causing mumax to checkfail and not return wrong results. Thanks @godsic for detecting and fixing this issue.

Upgrading is recommended for everyone using CUDA 6.5 or newer.

mumax 3.9 "community" release

Choose a tag to compare

@barnex barnex released this 19 Jun 13:47

This first community release features Ahmad Syukri bin Abdollah's fast conjugate gradient energy minimizer.

mumax 3.8 final

Choose a tag to compare

@barnex barnex released this 18 May 15:25

This release is intended to be very stable and usable in the long-term.

Fixes

This version fixes the "closure caveat" that arises when using a time-dependent function that also depends on an other variable. E.g.:

for i:=0; i<256; i++{
    alpha.SetRegion(i, i*t*1e9)
}

Until now, the same i was shared among all regions. It would have the value 255 (the last value assigned to it). This unexpected behavior has now been fixed and a fresh copy of i is used for each region, giving the expected time- and space-dependence.

However, there is a price to pay. E.g., in this case:

A = 1e-3
B_ext = vector(A*sin(omega*t), 0, 0)
A = 2e-3  // B_ext not affected by new A

the second assignment to A used to change the amplitude of B_ext. This is not the case anymore, as the A in A*sin(omega*t) is now a fresh copy, unaffected by assignments to the original. If you want to change the amplitude in this case, you need to repeat B_ext = after setting a new A.

Running

On linux, cd to the directory containing mumax3.sh and run:
./mumax3.sh
which should start mumax3 in a browser window. You can also run an .mx3 input file, see http://mumax.github.io/examples.html.

You can have a look at the contents of the mumax3.sh script. All it does is set your LD_LIBRARY_PATH to the current directory (which contains cuda6.0 libraries) and run mumax3-cuda6.0.

If you have manually installed CUDA on your system, you should be able to run mumax3-cudaX.X, with X.X your CUDA version. The same goes for clusters, etc. You may then also copy mumax3-cudaX.X to a convenient location like ~/bin/mumax3 or /usr/local/bin/mumax3 After which you can run mumax3 from any location.

Driver

You will, of course, need a proprietary nvidia driver. If your current driver does not work, version 340 is recommended.

Reference

Thank you for citing "The Design and Verification of MuMax3", http://dx.doi.org/10.1063/1.4899186.

More documentation at:

Questions

Most questions can be answered by reading "The Design and Verification of MuMax3", http://dx.doi.org/10.1063/1.4899186.

If that does not work, your question can be posted here: https://groups.google.com/forum/#!forum/mumax2.

Please use a descriptive subject like, e.g.:
"mumax 3.7 crashes with CUDA_ERROR_UNKNOWN on Ubuntu 15.04",
but not, e.g.:
"mumax question".

To install from source in Ubuntu 15.04:

Installing from source is easy from Ubuntu 15.04. Execute these steps if you understand what they do:

sudo apt-get install git golang-go gcc nvidia-cuda-toolkit nvidia-cuda-dev nvidia-340 gnuplot
export GOPATH=$HOME go get -u -v github.com/mumax/3/cmd/mumax3

This will install mumax3 in $HOME/bin

mumax 3.7

Choose a tag to compare

@barnex barnex released this 27 Apr 09:08

New features:

  • MaxAngle, SpinAngle quantities return the maximum spin-spin angle and the space-dependent spin-spin angle.
  • Finite temperature can now be used with all solvers, but still requires a fixed time step (thanks @JLeliaert).
  • 2D topological charge can now be output (Thanks @godsic).
  • Add CC5.2 code for recent GPU's (Thanks @godsic ) and handle older drivers better.

Reference

Thank you for citing "The Design and Verification of MuMax3", http://dx.doi.org/10.1063/1.4899186.

Questions

Most questions can be answered by reading "The Design and Verification of MuMax3", http://dx.doi.org/10.1063/1.4899186.

If that does not work, your question can be posted here: https://groups.google.com/forum/#!forum/mumax2.

Please use a descriptive subject like, e.g.:
"mumax 3.7 crashes with CUDA_ERROR_UNKNOWN on Ubuntu 15.04",
but not, e.g.:
"mumax question".

To install from source in Ubuntu 15.04:

Execute these steps if you understand what they do:

sudo apt-get install git golang-go gcc nvidia-cuda-toolkit nvidia-cuda-dev nvidia-340 gnuplot
export $GOPATH=$HOME go get -u -v github.com/mumax/3/cmd/mumax3

This will install mumax3 in $HOME/bin