Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spin-orbit torque #601

Open
zangyuzhe opened this issue Jul 9, 2021 · 1 comment
Open

Spin-orbit torque #601

zangyuzhe opened this issue Jul 9, 2021 · 1 comment

Comments

@zangyuzhe
Copy link

Hello,

We want to use spin orbit torque in the Spirit. Bu we found there is only zhang-li model. Are we able to use Slonczewski model for spin torque?

And when setting the magnitude of the current strength for the STT, is it actually setting u, which has a unit of m/s?

Many thanks

@GPMueller
Copy link
Member

GPMueller commented Jul 12, 2021

The documentation is lacking in this regard... Thanks for pointing it out and sorry that this basic info is not obviously accessible.

In the input file, you can specify llg_stt_use_gradient 0 to switch from the Zhang-Li model to Slonczewski.
The same can be set in the GUI and you can also use the corresponding API.


Regarding the units, I'm not 100% sure right now, as I haven't used the feature in quite a while. But I believe when setting the magnitude in the Zhang-Li model, you are setting the value of u * norm(j_e) in equation (10) of our paper
image

if (parameters.stt_use_gradient)
{
auto& boundary_conditions = this->systems[0]->hamiltonian->boundary_conditions;
// Gradient approximation for in-plane currents
Vectormath::directional_gradient(image, geometry, boundary_conditions, je, s_c_grad); // s_c_grad = (j_e*grad)*S
Vectormath::add_c_a ( dtg * a_j * ( damping - beta ), s_c_grad, force_virtual); // TODO: a_j durch b_j ersetzen
Vectormath::add_c_cross( dtg * a_j * ( 1 + beta * damping ), s_c_grad, image, force_virtual); // TODO: a_j durch b_j ersetzen
// Gradient in current richtung, daher => *(-1)
}

The implementation of Slonczewski's model (monolayer approximation) in Spirit is according to Chureemart et al:

// Monolayer approximation
Vectormath::add_c_a (-dtg * a_j * ( damping - beta ), s_c_vec, force_virtual);
Vectormath::add_c_cross(-dtg * a_j * ( 1 + beta * damping ), s_c_vec, image, force_virtual);

so the magnitude corresponds to a_j in this equation, as the spin polarisation vector S_p is normalised:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants