Nmag is a micromagnetic simulation package. It has been developed at the University of Southampton with substantial contributions from Hans Fangohr, Thomas Fischbacher, Matteo Franchin.
It is released under the GNU GPL.
Features in brief:
• based on finite elements (suitable for non-cuboidal structures)
• problem description in Python, therefore high degree of flexibility
• inbuilt mesh post processing tools
• efficient data storage (binary compressed) and extraction into vtk files (of course the raw data can be extracted)
• arbitrary crystal anisotropy
• pseudo) periodic boundary conditions (“macro geometry approach”)
• Spin torque transfer (Zhang-Li model for uniform current density)
• Supports use of matrix compression library (HLib) for BEM
• extensive documentation in html and pdf, including Tutorial
Nmag’s home page is at http://nmag.soton.ac.uk/nmag/.
Nmag is supported on clusters Atlas4, Atlas5, Atlas6 and Atlas7. Nmag can run well on multiple CPU-cores within one compute server. The version installed on the HPC clusters is 0.20.
To run Nmag software, you need to run command “nmag_install” once on any cluster:
> nmag_install
After that you can enter command “nsim” to start Nmag software interface.
> nsim
To process large simulations that needs hours, days or even weeks, Nmag simulation can be submitted to batch LSF queue and executed in batch mode.
For a small model that can be processed on one CPU core, you can submit the simulation as:
> bsub -q linux64 -o stderr.o nsim case1.py
For a large model that needs to be processed on multiple CPU cores, you can submit the simulation as:
> bmpionenode -q atlas4_parallel -o stderr.o -n 4 nsim case1.py
> bmpionenode -q atlas5_parallel -o stderr.o -n 8 nsim case1.py
> bmpionenode -q atlas6_parallel -o stderr.o -n 6 nsim case1.py
In the above commands, “cas1.py” is the input file to Nmag; “stderr.o” is the file to store the job information and error messages if any. The suggested number of CPU cores for queue atlas4_parallel is (-n 4 or -n 8), atlas5_parallel is (-n 8), and atlas6_parallel is (-n 6 or -n 12).