mod_spinorbit_ham Module

Subroutine that constructs SOC potential for the new solverfrom radial derivative of vins and adds this to vnspll (output is vnspll1=vnspll+V_SOC)


Subroutines

public subroutine spinorbit_ham(lmax, lmmaxd, vins, rnew, eryd, zat, cvlight, socscale, nspin, lmpotd, theta, phi, ipan_intervall, rpan_intervall, npan_tot, ncheb, irmdnew, nrmaxd, vnspll, vnspll1, mode)

License
Creative Commons License
Category
spin-orbit-coupling, potential, KKRhost, KKRimp

S u b r o u t i n e

t h a t

c o n s t r u c t s

S O C

p o t e n t i a l

f o r

t h e

n e w

s o l v e r

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: lmax

l_max cutoff

integer, intent(in) :: lmmaxd

(l_max+1)^2 maximal number in combined L=(l,m) index (L_max)

real(kind=dp), intent(in), dimension(irmdnew, lmpotd, nspin) :: vins

non-sperical input potential in (l,m) basis, separately spin-polarized

real(kind=dp), intent(in), dimension(nrmaxd) :: rnew

radial points of Chebychev mesh

complex(kind=dp), intent(in) :: eryd

complex energy

real(kind=dp), intent(in) :: zat

atom charge

real(kind=dp), intent(in) :: cvlight

speed of light

real(kind=dp), intent(in) :: socscale

scaling factor for SOC strength

integer, intent(in) :: nspin

number of spin channels

integer, intent(in) :: lmpotd

L_max cutoff of potential (from Gaunt coefficients <= 4 l_max)

real(kind=dp) :: theta
real(kind=dp) :: phi
integer, intent(in), dimension(0:npan_tot) :: ipan_intervall
real(kind=dp), intent(in), dimension(0:npan_tot) :: rpan_intervall
integer, intent(in) :: npan_tot

total number of Chebychev panels of radial mesh

integer, intent(in) :: ncheb

number of Chebychev polynomials (radial points per panel)

integer, intent(in) :: irmdnew
integer, intent(in) :: nrmaxd

maximal number of radial points (NPAN_TOT*NCHEB)

complex(kind=dp), intent(in), dimension(2*lmmaxd, 2*lmmaxd, irmdnew) :: vnspll

input potential in (l,m,s) basis

complex(kind=dp), intent(out), dimension(2*lmmaxd, 2*lmmaxd, irmdnew) :: vnspll1

output potential (sum of input + V_SOC) in (l,m,s) basis

character(len=*), intent(in) :: mode

either '1' or 'transpose', depending whether SOC potential is constructed for right or left solution