Releases: mumax/3
Release list
mumax 3.12
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.Sliceinto aQuantity, allowing more complex fields to be used in operations likeAdd,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.Slicewith the indexix, iy, izof each cell, starting at 0 in the (-X, -Y, -Z) corner. #384.CurrentMag(): returns a snapshot of the current magnetization as aConfig. #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 regionsstartregiontostartregion+numgrainsthat lay withinboundarythicknessof a region boundary will be incremented byoffset. See also:ext_grainboundary_edgeXetc. #387 by @jplauzie.ExpectB(msg, have, want): technical function for test scripts that panics if twobools 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)andLine2D(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 slicevoxelsbecomedx$\times$ dy$\times$ dzcuboids 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 functionfunc(int)which, given a region index, yields its correspondingShape. #385 by @jplauzie. -
ext_geomEdge(axis): returns aShapeof all cells on an edge of the geometry.axiscan be+X,-X,+Y,-Y,+Z,-Z. #386 by @jplauzie.
New variables
MinimizeWallClockTimeandRelaxWallClockTime: if set to a positive value,Minimize()andRelax()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 ofext_grainboundaries()at the edges of the simulation box. #387 by @jplauzie.
Other changes
Minimize()andRelax()now return a boolean value indicating whether convergence was achieved. #388 by @jplauzie.
Bugfixes
- A fix in 3.11.1 made
B_demagunavailable whereMsat == 0, preventing users from obtaining stray fields. Fixed in #381, originally reported by @ac2290. ExchCouplingandDindCouplingwere 4x or 6x larger than they should be. Fixed in #377, originally reported by Elizabeth Martín Jefremovas.-httpflag had no effect on GUI port when running multiple files in a queue (e.g.,mumax3 -http="" file1 file2served 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
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=0could 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 -ialways opened default port:35367in browser even if it was already used by another mumax process. Fixed in 46fe212.-gpuflag had no effect when specifying multiple input files. Fixed in #373.
mumax 3.11
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 indexold_idxwill be moved to regionnew_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) quantityq, accounting for adaptive time steps.
Sum(q)andSumVector(q): sum of a quantityqover 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)andext_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>()andext_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 bysave(geom)). Besides loading the geometry as aVoxelShape(inaccessible by the user), this function also resizes the grid and cells to the same size as in the.ovffile. Part of #311 by @Artemkth.
Boolean parameters
EdgeCarryShift(defaultfalse): if set totrue, callingShift(x)uses the values ofmat the border to set the magnetization of the introduced cells. For cells where this border was outside the geometry,ShiftMagL/R/D/Uis used. #316 by @jsampaio.ext_grainCutShape(defaultfalse): if set totrue, callingext_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_enableCenterBubbleXandY(defaulttrue): if set tofalse,ext_centerBubblewill 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.ps1to 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.exewas 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_make3Dgrainsdid not use seeded random generator. Fixed in dcf1e2f.ShiftYerroneously 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
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
- Fixed sign in field-like Slonczewski torque (see issue #99 for the details)
- Fixed boundary conditions in exchange field calculation (see pull request #115 for the details; thanks to Attila Kakay for reporting)
- Support for Nvidia GPUs from Maxwell to Turing architectures; Fermi is now deprecated.
- Relax() now supports user-defined threshold contributed by @jsampaio (see issue #146 and pull request #148 for the details).
- mumax3-convert can now render arrows with scalar colorplots (see pull request #152 for the details)
- mumax3-convert can now convert ovf files to numpy binary files.
- Adaptive time step with finite temperature. Ref: http://doi.org/10.1063/1.5003957
- User-defined field terms (for a detailed example see supplementary materials Ref. https://doi.org/10.1088/1361-6463/aa8601)
- skyrmion / bubble position estimation and 2D moving window (see pull request #135)
- Runge-Kutta 56 solver (see Ref: http://doi.org/10.1063/1.5003957)
- Point-wise FixedLayer quantity.
- mumax3 binary can now handle *.go input files directly.
- 3D voronoi tessellation contributed by @peytondmurray
- Creation of bibtex file (references.bib) in output directory with relevant references specific to your simulation.
- mumax3-fft, a post-processing tool, has been moved to https://github.com/mumax/mumax3-fft
- SnapshotAs(...) contributed by @kkingstoun
- Vector fields, e.g., B_eff, can now be accessed in mx3 script via HostCopy() method.
- mumax3-convert can now handle wildcards on Windows.
- Option to use open boundary conditions instead of Neumann boundary conditions.
- Substantial overhaul of the build system for easier deployment for a given CUDA version.
- Up to CUDA 11 and Nvidia Ampere support.
- Lattice-based topological charge calculation contributed by @nov2oj (see #262 , #265 and https://arxiv.org/abs/2006.13336 for the details).
- Fixed solver reproducibility issue reported by @DeSanz (see #260 for the details).
- It is now possible to output magnetization angles using
ext_anglescontributed by @peytondmurray (see #232 for the details andtest/sp4_angles.mx3for an example). - It is now possible to initialized magnetization to conical or helical states (see #203 for the details and
test/conical.mx3for an example). - Magnifying loupe in the web interface contributed by @jsampaio (see #216 for the details).
- Free layer thickness can now be set with
FreeLayerThicknessparameter, instead of deducted from the model thickness by default (#266). - Slight solver performance optimization contributed by @peytondmurray (see #233 for the details).
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β
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
- Fixed sign in field-like Slonczewski torque (see issue #99 for the details)
- Fixed boundary conditions in exchange field calculation (see pull request #115 for the details; thanks to Attila Kakay for reporting)
- Support for Nvidia GPUs from Maxwell to Turing architectures; Fermi is now deprecated.
- Relax() now supports user-defined threshold contributed by @jsampaio (see issue #146 and pull request #148 for the details).
- mumax3-convert can now render arrows with scalar colorplots (see pull request #152 for the details)
- Adaptive time step with finite temperature. Ref: http://doi.org/10.1063/1.5003957
- User-defined field terms (for a detailed example see supplementary materials Ref. https://doi.org/10.1088/1361-6463/aa8601)
- skyrmion / bubble position estimation and 2D moving window (see pull request #135)
- Runge-Kutta 56 solver (see Ref: http://doi.org/10.1063/1.5003957)
- Point-wise FixedLayer quantity.
- mumax3 binary can now handle *.go input files directly.
- 3D voronoi tessellation contributed by @peytondmurray
- Creation of bibtex file (references.bib) in output directory with relevant references specific to your simulation.
- mumax3-fft, a post-processing tool, has been moved to https://github.com/mumax/mumax3-fft
- SnapshotAs(...) contributed by @kkingstoun
- Vector fields, e.g., B_eff, can now be accessed in mx3 script via HostCopy() method.
- mumax3-convert can now handle wildcards on Windows.
- Option to use open boundary conditions instead of Neumann boundary conditions.
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
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
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
This first community release features Ahmad Syukri bin Abdollah's fast conjugate gradient energy minimizer.
mumax 3.8 final
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:
- http://mumax.github.io/
- http://godoc.org/github.com/mumax/3/cmd/mumax3-convert
- http://godoc.org/github.com/mumax/3/cmd/mumax3-server
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
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