spinactive Derived Type

type, public :: spinactive


Contents


Components

TypeVisibility AttributesNameInitial
real(kind=wp), public :: conductance =1.0

Interfacial conductance

real(kind=wp), public :: polarization =0.0

Interfacial spin-polarization

real(kind=wp), public :: spinmixing =0.0

Interfacial 1st-order spin-mixing

real(kind=wp), public :: secondorder =0.0

Interfacial 2nd-order spin-mixing

real(kind=wp), public, dimension(1:3):: magnetization =[0, 0, 1]

Interfacial magnetization direction

real(kind=wp), public, dimension(1:3):: misalignment0 =[0, 0, 0]

Interfacial magnetization misalignment (this side)

real(kind=wp), public, dimension(1:3):: misalignment1 =[0, 0, 0]

Interfacial magnetization misalignment (other side)


Type-Bound Procedures

procedure, public :: diffusion_current => spinactive_diffusion_current

  • private pure function spinactive_diffusion_current(this, G0, G1) result(I)

    Calculate the matrix current at an interface with spin-active properties. The equations implemented here should be valid for an arbitrary interface polarization, and up to 2nd order in the transmission probabilities and spin-mixing angles of the interface.

    Arguments

    Type IntentOptional AttributesName
    class(spinactive), intent(in) :: this
    type(nambu), intent(in) :: G0

    Propagator matrices

    type(nambu), intent(in) :: G1

    Propagator matrices

    Return Value type(nambu)

    Matrix current

procedure, public :: kinetic_current => spinactive_kinetic_current

  • private pure subroutine spinactive_kinetic_current(this, G0, G1, C0, C1)

    Calculate the kinetic boundary coefficients at an interface with spin-active properties. These can be used to calculate the generalized current according to J = C₀H₀ - C₁H₁.

    Arguments

    Type IntentOptional AttributesName
    class(spinactive), intent(in) :: this
    type(propagator), intent(in) :: G0

    Propagator (this side)

    type(propagator), intent(in) :: G1

    Propagator (other side)

    complex(kind=wp), intent(out), dimension(0:7,0:7):: C0

    Boundary coefficient (this side)

    complex(kind=wp), intent(out), dimension(0:7,0:7):: C1

    Boundary coefficient (other side)

procedure, public :: update_prehook => spinactive_update_prehook

  • private impure subroutine spinactive_update_prehook(this)

    Updates the internal variables associated with spin-active interfaces.

    Arguments

    Type IntentOptional AttributesName
    class(spinactive), intent(inout) :: this