The size of features such as domain walls, vortices, and cross-ties depends on material parameters (e.g., saturation magnetization , magneto-crystalline anisotopy , exchange coefficient ), applied field ( ), and part geometry, but the typical length scale is on the order of a few nanometers. Arbitrary shapes and material variations may be modeled, though part size will be limited by the available computing power. Micromagnetics can be used to study static magnetization structures, for example ground states in small particles [14] and domain walls in film strips [19], quasi-static behavior to model M vs. H hystersis loops [15], and field-driven magnetization dynamics using the Landau-Lifshitz-Gilbert equation [12,17,20]. More recent extensions include spin-torque [21,26,29,33,34], thermal [11], and DMI [30] effects.
The goal of the OOMMF (Object Oriented MicroMagnetic Framework) project in the Information Technology Laboratory (ITL) at the National Institute of Standards and Technology (NIST) is to develop a portable, extensible public domain micromagnetic program and associated tools [1,5,10]. The first release of OOMMF, based on a micromagnetic code previously developed by Robert McMichael and Michael Donahue, was made in October, 1998. That release included the 2D micromagnetic solver, problem editor, and several display widgets. Current releases implement a completely functional, fully 3D micromagnetics package, with the capability of being extended by other programmers so that people developing new code can build on the OOMMF foundation. The primary developers of OOMMF are Michael Donahue and Donald Porter.
OOMMF is written in C++, a widely-available, object-oriented language that can produce programs with good performance as well as extensibility. The code uses Tcl/Tk to create a portable user interface allowing OOMMF to operate across a wide range of Unix, Windows, and macOS platforms.
The code may be modified at three distinct levels. At the top level, individual programs interact via well-defined protocols across network sockets. One may connect these modules together in various ways from the user interface, and new modules speaking the same protocol can be transparently added. The second level of modification is at the Tcl/Tk script level. Some modules allow Tcl/Tk scripts to be imported and executed at run time, and the top level scripts are relatively easy to modify or replace. At the lowest level, the C++ source is provided and can be modified (see the OOMMF Programming Manual). The primary extension mechanism at this level is through the OOMMF eXtensible Solver, Oxs. The extensible nature of Oxs allows its capabilities to be varied as necessary for the problem at hand, and lets OOMMF users extend Oxs with external modules.
If you want to receive e-mail notification of updates to this project, register your e-mail address with the “muMAG” mailing list:
The OOMMF developers are always interested in your comments about OOMMF. See the Credits for instructions on how to contact them, and for information on citing OOMMF.