Spin Transfer Torque (STT) Extension Module for

OOMMF(Object Oriented MicroMagnetic Framework)

(back to Home)


: : : : Nano Pillar Strcuture       : : : : E:\cyyou\Homepage\Result.gif

< Switching of 60x40 nm2 F1 layer in AFM/F3/NM/F2/I/F1 structure with current density of 2.7x1011 A/m2 >

         This is the homepage of the STT Extension module for OOMMF.

         Typical MRAM multilayer stack (AFM/F3/NM/F2/I/F1) can be simulated as shown above figure.
The role of AFM layer is only providing the exchange bias field.


o    Download source code. (Down). (new version, 22 July 2013)

o    Copy the STT_Evolve.h and STT_Evolve.cc files into OOMMF/app/oxs/local folder.

o    Recompile OOMMF (see OOMMF User guide for the compiling procedure).

o    Example *.mif file is also included in the zip file.

o    If you want pre-compiled binary version (Windows version only) is available by personal request.

o    The current flows z-directions.

         Comments or request : send e-mail to cyyou@inha.ac.kr

         Thanks to Antoine Vanhaverbeke, my extension module is based on his wonderful works for STT domain wall motion.

         License: Public Domain, it is free to use without any limitation, but I have no responsibility to the results.

         When you refer this module, I ask that you cite, Chun-Yeol You, J. of Magnetics, 17, 73 (2012). (pdf)

         MIF file usage of CYY_STTEvole
You can find *.mif file in download zip file. It is self-explained, and I give some comments here.
If you have any question, let me know.

         At 3 Sep. 2012, there is minor correction about bJ term acting on polarizer layer. If you downloaded
my code before 3 Sep. 2012, please download it again. There is a sign correction.

         Important corrections: 22 July 2013, We found a serious error in the direction of STT for the polarizer layer.
You must download fixed version, if we consider polarizer layer spin dynamics.

proc J_time { t } {

    set scale 1.0;

    if {$t > 10.0e-9} {                     % Pulse Time, after 10 ns, no current

        set scale 0


    return $scale



% Oesterd field effect which generated from the running current can be included

Specify Oxs_StageZeeman  [subst {

multiplier [expr $CurrentDensity]

 stage_count $NumStageCount

 script { ReadHField }



% Read pre-calcuated Oersted field file,

% it is calculated for 1 A/m^2 current density so that
% the $CurrentDensity must be multiplied to obtain the proper Oersted field.

% And if there is no current, the Oesterd field is also zero.

% The pre-calcuated Oersted field must be calculated in separated procedure

% by using Ampere or Viot-Savart laws.


proc ReadHField { stage } {


    if { $stage < 1000 } {         % 10 ns is 1000-th stage, the each step is defined 10 ps  

    set HField Oxs_FileVectorField

    lappend HField [subst {

    atlas :atlas

    file "Oersted_H_Field.ohf"


    return $HField

    } else {

    return "0.0 0.0 0.0"




% STT-Evolve

 Specify CYY_STTEvolve [subst {

  do_precess 1

  gamma_LL 2.21e5

  method rkf54s

  alpha 0.005                               % Gilbert damping constant, you may position dep. alpha


  Jcurr $CurrentDensity                 % current density of A/m^2 unit

  J_profile J_time                           

  J_profile_args total_time


% Field like term (bJ0 + bJ1*J + bJ2*J^2)

% Each term has A/m, A/m/(A/m^2), and A/m/(A/m^2)^2 unit

% in order to keep the field unit,

% positive bJ prefers parallel configurations (fixed at 21 Mar. 2012)

% (If you download code, before 21 Mar. 2012, the sign convention of bJ is opposite.)

% eta0 is spin polarization of the polarizer layer or STT efficiency

% Slonczewski term is automatically calculated by aJ = hbar/(2*e*mu0*Ms*unitCellz)*J
% Assume the STT exist only the first unit cell layer.


  bJ0   0.0

  bJ1   0.0

  bJ2   0.0

  eta0  0.7


% Define STT between two layers, the usage is almost the same with

% Oxs_TwoSurfaceExchange in OOMMF.


 Inter_down {

         atlas  :atlas

        region  F1                             

   scalarfield  :zheight

   scalarvalue  [expr $LZ5 + $LZ4 + $LZ3]

    scalarside  -


 Inter_up {

         atlas  :atlas

        region  Top

   scalarfield  :zheight

   scalarvalue  [expr $LZ5 + $LZ4 + $LZ3 + $LZ2]

    scalarside  +




Related Publications


1.      Chun-Yeol You, "Micromagnetic Simulations for Spin Transfer Torque in Magnetic Multilayers",
J. of Magnetics 17, 73 (2012). (pdf)

2.      Chun-Yeol You, "Reduced spin transfer torque switching current density with non-colllinear
polarizer layer magnetization in magnetic multilayer systems", Appl. Phys. Lett. 100, 252413 (2012). (pdf)

3.      Chun-Yeol You, "Dependence of the Spin Transfer Torque Switching Current Density on the
Exchange Stiffness Constant", Appl. Phys. Expr5, 103001 (2012).  

4.      Chun-Yeol You and Myung-Hwa Jung, Dependence of the switching current density
on the junction sizes in spin transfer torque, J. Appl. Phys. 113, 073904 (2013).

5.      Chun-Yeol You and Myung-Hwa Jung, Role of non-collinear polarizer layer in

spin transfer torque switching processes, J. Appl. Phys. 114, 013909 (2013). (pdf)


6.      Chun-Yeol You, Effect of the synthetic antiferromagnetic polarizer layer rigidness on the

spin transfer torque switching current density, Appl. Phys. Lett. 103, 042402 (2013). (pdf)


7.      Chun-Yeol You, Reduced Switching Current Density in Spin Transfer Torque with Lateral

Symmetry Breaking Structure, Appl. Phys. Expr. 6, 103001 (2013). (pdf)


(More Publications)


(back to Home)