We are a team of 8 students that decided while they where working on a project based on MTJ that they would propose a universal solution through a solver running on Pyhton in order to solve the LLG equations for different applications. We are divided into 3 teams :
What's inside our program ?
- main.py1 : user's direct inputs
- main.py2 : parameters to modify within the main.py file
- heff.py : parameters to modify within the heff.py file
- coefficients.py : parameters to modify within the coefficients.py file
- Resolution & Plot : graphic parameters
main.py
It is the file to run when one wants to launch the program. It is used to set the parameters needed to perform the simulations, the user must input some values, e.g., when running the program:
First, you will be asked to enter the shape of the device (enter 1 if your MTJ is a cylinder) :
Then new instructions will appear :
Those lines allow you to define the applied field Hap (the value must be of the order of 10^7 and has to be changed in both main.py and heff.py) and the associated angles θh and φh.
You will then be asked to define the initial magnetization :
You can either chose the default value, in that case :
Otherwise you will have to input θm and φm :
Next, you will have to implement your reference vector with θp and φp :
Along with the anisotropic normalized vector through θUK and φUK :
The following instruction requires to enter the volume of the sample :
Finally you will be asked to input the temporal parameters for your resolution, the step value along with the total duration :
It
is also possible to select the basic coefficients defined at 0K: the modulus of
the anisotropic constant of the two layers KU, the modulus of the
magnetization MS0, the value of the gyromagnetic coefficient γ,
the damping coefficient α, the thickness of the ferromagnet, the Curie
temperature of the material, the permittivity of the material ε,
the thickness of the oxide layer and the value of
the spin polarization factor η :
For what concerns the three applications the program allows to set the
value of the applied voltage Vcma for the VCMA and for the SOT the
values of the values of the spin torque efficiency, the current and the
thickness of the fixed layer :
heff.py
This file allows to calculate the effective field, in order to solve the LLG equation.
First
define the basic operations: the scalar and vectorial product, the vectors of
the applied field Happ and of the magnetization M have been defined, in
function of the given angles θ and φ. You also must define the VCMA parameters
(be careful, VCMA must be defined in both heff.py & main.py)
coefficients.py
This file allows to implement additional terms to integrate in the equation.
VCMA :
VCMA
coefficients can be calculated by uncommenting the associated functions: Mt, Kv
& for the voltage control : KU (independent of Temperature) or KUt
(dependant).
STT :
can
be calculated by uncommenting the appropriate functions, without taking the temperature
into account : Aparallel0 & Heffstt. But it can also consider the temperature:
Aparallel1, Aparallel & HeffsttT. The applied voltage can also be defined through
VoltageappliedSTT as long as the surface & reference layer (surfacelayer
& Referencelayer respectively).
SOT :
SOT
coefficients can be calculated by uncommenting the following functions : Taus,
SOTcoefficient & Heffsot.
Resolution & Plot
At the end of the main.py file,the magnetization vector is defined, and a 2D\3D plot is performed, showing the change of the magnetization in time, taking in consideration the initial value and some successive calculated values, until the end of the loop. The user can modify the number of vectors, their color, and other parameters.
THE END
Thank you for using our software. It is recalled that you can improve it by adding new parameters or configurations !