Xf_STT
Download
The Xf_STT class was created to enable simulation of the injection of multiple spin currents into a ferromagnet in OOMMF.
The spin torque equation derived by Slonczewski [1] and modified by Xiao [2] is written as (as implemented in OOMMF):
According to the OOMMF user guide:
has a default value of . In the definition of , is the reduced Planck’s constant, is the electronic charge in C, is the current density exerting spin-torque in , is the thickness of the free layer in meters in the direction which the current density is flowing, and is the saturation magnetization in . Note that may be rewritten as,
where is the current flowing homogeneously into the magnetic cell in A, and is the volume of the magnetic cell in .
and gives the in-plane and out-of-plane spin-torque terms, respectively. As implemented in OOMMF,
In the case where and , reduces to
The Specify block for the Xf_STT class has the form
The spin-transfer torque term does not actually change the energy in this implementation in OOMMF, and its implementation as a derivation from Oxs_Energy class is technically illegal. However, the spin-transfer torque term as an equivalent H-field in OOMMF using the Oxs_Energy class gives the flexibility to model the injection of multiple spin currents into one region in the ferromagnet.
The default values for P and Lambda are 0.4 and 2, respectively. If preferred, values for the fixed and free layers may be instead specified separately, through P_fixed, P_free, Lambda_fixed, and Lambda_free. Otherwise P_fixed = P_free = P and
Lambda_fixed = Lambda_free = Lambda. Lambda must be larger than or equal to 1; set Lambda=1 to remove the dependence of on . If you want non-zero , it is set directly as eps_prime.
Current density J and unit polarization direction mp are required. The units on J are . Positive J produces torque that tends to align towards .
Simulation of domain-wall dynamics under current-induced spin-torque is enabled by setting propogate_mp to 1. The setting propogate_mp is 0 (disabled) by default. When propogate_mp is enabled, mp is actually , where is the flow direction and is the cell dimension in that direction. The flow direction may be set by setting J_direction as one of six options:
-z, +z, -y, +y, -x, +x. The default is -z. The direction changes the mp used to calculate the spin torque at each cell site.
Parameters J, mp, P, Lambda, and eps_prime may all be varied pointwise (by specifying them as Oxs_ScalarField objects), but are fixed with respect to time. However, J can be multiplied by a time varying “profile,” to model current rise times, pulses, etc. Use the J_profile and J_profile_args options to enable this feature. The Jprofile_script should be a Tcl script that returns a single scalar. Jprofile_script_args should be a subset of {stage stage_time total_time }, to specify arguments appended to Jprofile_script on each time step. Default is the entire set, in the order as listed.
The Xf_STT module provides the scalar output “average J,” and the vector field outputs “Field” (which is ) and “J*mp.”
Dear Xuanyao,
What is the difference between Xf_STT and Oxs_SpinXferEvolve? It seems that the former ties together the functions of the latter and the Anv_SpinTEvolve evolver.
Xiangjun, Cheers>
Xf_STT allows you to to include the effect of spin-transfer torque into any evolver class you want, since Xf_STT returns spin-transfer torque as an Oxs_Energy class. This allows you to simulate structures in which spin current may be injected into the same region from several different interfaces, each with a polarization factor and lambda.