Research‎ > ‎Research Topics‎ > ‎

STT Extension Module

CYY_STTEvolve.zipSpin Trnasfer Torque (STT) Extension Module For OOMMF(Object Oriented MicroMagnetic Framework)


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

 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.
  Installation (Most recent version of OOMMF, it already include my extension module,
     so that you don't need to download the source code.)
    o    Download source code at the bottom of this page. (, new version, 22 July 2013)
    o    Copy the STT_Evolve.h and 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
 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).
 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). 

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). 

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). 

6.      Chun-Yeol You, “Effect of the synthetic antiferromagnetic polarizer layer rigidness on the spin transfer torque switching current density”, Appl. Phys. Lett103, 042402 (2013). 

7.      Chun-Yeol You, “Reduced Switching Current Density in Spin Transfer Torque with Lateral Symmetry Breaking Structure”, Appl. Phys. Expr6, 103001 (2013). 

8.      Hyungsuk Kim and Chun-Yeol You, "Embedded Object-Oriented Micromagnetic Frame(OOMMF) for More Flexible Micromagnetic Simulations",  Journal of Magnetics 21(4), 491-495 (2016).
DOI: 10.4283/JMAG.2016.21.4.491 

9.      Hyungsuk Kim and Chun-Yeol You, " Effect of Finite Tunneling Magneto-Resistance for the Switching Dynamics in the Spin Transfer Torque Magnetic Tunneling Junctions",  IEEE Trans. on MAG,  (2017).
Jun 24, 2017, 3:27 AM