spinorbit Derived Type

type, public :: spinorbit


Contents


Components

TypeVisibility AttributesNameInitial
class(material), public, pointer:: material=> null()

Pointer to the material modelled by this instance

type(spin), public, dimension(1:3):: field

Spin-orbit coupling field (SU(2) gauge field)

type(spin), public :: Ax

Spin-orbit coupling matrices (the components and square)

type(spin), public :: Ay

Spin-orbit coupling matrices (the components and square)

type(spin), public :: Az

Spin-orbit coupling matrices (the components and square)

type(spin), public :: A2

Spin-orbit coupling matrices (the components and square)

type(spin), public :: Axt

Spin-orbit coupling matrices (tilde-conjugated versions)

type(spin), public :: Ayt

Spin-orbit coupling matrices (tilde-conjugated versions)

type(spin), public :: Azt

Spin-orbit coupling matrices (tilde-conjugated versions)

type(spin), public :: A2t

Spin-orbit coupling matrices (tilde-conjugated versions)


Constructor

public interface spinorbit

  • public function spinorbit_construct(parent) result(this)

    Constructs a spinorbit object with a given parent material.

    Arguments

    Type IntentOptional AttributesName
    class(material), target:: parent

    Return Value type(spinorbit)


Type-Bound Procedures

procedure, public :: diffusion_equation => spinorbit_diffusion_equation

Diffusion equation

  • private pure subroutine spinorbit_diffusion_equation(this, p)

    Calculate the spin-orbit coupling terms in the diffusion equation, and update the second derivatives of the Riccati parameters.

    Arguments

    Type IntentOptional AttributesName
    class(spinorbit), intent(in) :: this
    type(propagator), intent(inout) :: p

procedure, public :: diffusion_equation_a => spinorbit_diffusion_equation_a

Boundary condition (left)

  • private pure subroutine spinorbit_diffusion_equation_a(this, p, r, rt)

    Calculate the spin-orbit coupling terms in the left boundary condition, and update the residuals.

    Arguments

    Type IntentOptional AttributesName
    class(spinorbit), intent(in), target:: this
    type(propagator), intent(in) :: p
    type(spin), intent(inout) :: r
    type(spin), intent(inout) :: rt

procedure, public :: diffusion_equation_b => spinorbit_diffusion_equation_b

Boundary condition (right)

  • private pure subroutine spinorbit_diffusion_equation_b(this, p, r, rt)

    Calculate the spin-orbit coupling terms in the right boundary condition, and update the residuals.

    Arguments

    Type IntentOptional AttributesName
    class(spinorbit), intent(in), target:: this
    type(propagator), intent(in) :: p
    type(spin), intent(inout) :: r
    type(spin), intent(inout) :: rt

procedure, public :: update_prehook => spinorbit_update_prehook

Code to execute before updates

  • private impure subroutine spinorbit_update_prehook(this)

    Updates the internal variables associated with spin-orbit coupling.

    Arguments

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