In order to allow a programmer not familiar with the code as a whole to add modifications and new functionality, we feel that an object oriented approach is critical, and have settled on C++ as a good compromise with respect to availability, functionality, and portability. In order to allow the code to run on a wide variety of systems, we are writing the interface and glue code in Tcl/Tk. This enables our code to operate across a wide range of Unix platforms, Windows NT, and Windows 9X.
The code may be modified at 3 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, although at present the documentation for this is incomplete (cf. the ``OOMMF Programming Manual'').
The first portion of OOMMF released was a magnetization file display program called mmDisp. A working release of the complete OOMMF project was first released in October, 1998. It included a problem editor, a 2D micromagnetic solver, and several display widgets, including an updated version of mmDisp. The solver can be controlled by an interactive interface, or through a sophisticated batch control system. This solver was originally based on a micromagnetic code that Mike Donahue and Bob McMichael had previously developed. It utilizes a Landau-Lifshitz ODE solver to relax 3D spins on a 2D mesh of square cells, using FFT's to compute the self-magnetostatic (demag) field. Anisotropy, applied field, and initial magnetization can be varied pointwise, and arbitrarily shaped elements can be modeled.
The current development version, OOMMF 1.2, includes Oxs, the OOMMF eXtensible Solver. Oxs offers users of OOMMF the ability to extend Oxs with their own modules. The details of programming an Oxs extension module are found in the OOMMF Programming Manual . The extensible nature of the Oxs solver means that its capabilities may be varied as necessary for the problem to be solved. Oxs modules distributed as part of OOMMF support full 3D simulations suitable for modeling layered materials.
If you want to receive e-mail notification of updates to this project, register your e-mail address with the ``muMAG Announcement'' 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 referencing OOMMF.