OOMMF extension for current-induced domain wall motion
The code was corrected in January 2008; be sure to download the latest version of the source files.
Class spinTEvolve is a modification of OOMMF's spinxferevolve class aimed at simulating the effect of polarized current on magnetic domain walls. It implements the two spin-current terms modifying the Landau-Lifshitz-Gilbert equation [1,2,3]. This code is distributed in the public domain.
- Get the spintevolve-files archive.
- Copy the spintevolve.h and spintevolve.cc files into the “/app/oxs/local” directory of your current OOMMF distribution (version 1.2a4 or later).
- Recompile the OOMMF code.
- An example .mif file, dw-160-8-4-3D.mif, is provided in the example archive for a transverse DW in a 5000×160×4 nm3 nanowire. Copy all the files into a directory before launching the script.
The convention from  in the case where the current is aligned with the wire axis is used:
where J is the current density and P is the current polarization. Electrons flowing toward the right means that u > 0.
- From theory, the domain wall should move in the direction of propagation of the electrons. Below the so-called Walker breakdown, the initial velocity should be equal to u and the terminal velocity equal to ß u. The code successfully reproduced these results.
- This is the same model as the one proposed by Zhang et al.  considering |bJ|=|u| and |cJ|=ß|u|.
The modified dm/dt is calculated in [Anv_SpinTEvolve::Calculate_dm_dt]
To calculate the time-derivative of the energy, starting with the relation
and substituting with –μ0 Heff and dm/dt with equation (1), we get
Evolver input/output (as it differs from the standard Oxs_RungeKuttaEvolve)
- u can be initialized as a ScalarField. Its unit is m/s. It can also be modified in time with u_profile in the same way as J with J_profile in the Oxs_SpinXferEvolve class. [not tested]
- ß has no unit and is constant over the entire mesh (up to now, but this could be modified quite quickly).
- ave_u_output: output, average of u over the entire mesh.
- spin_torque_output: the part of dm/dt coming from the spin-torque. Implemented in [Oxs_SpinXferEvolve::UpdateSpinTorqueOutputs]
- See the example dw-160-8-4-3D.mif for usage.
 S. Zhang and Z. Li, Roles of nonequilibrium conduction electrons on the magnetization dynamics of ferromagnets,
Phys. Rev. Lett. 93, 127204 (2004).
 A. Thiaville, Y. Nakatani, J. Miltat and Y. Suzuki, Micromagnetic understanding of current-driven domain wall motion in patterned nanowires, Europhys. Lett. 69, 990 (2005).
 A. Vanhaverbeke and M. Viret, Simple model of current-induced spin torque in domain walls, Phys. Rev. B 75, 024411 (2007).