spin-orbit coupling Author: David Bauer Category: KKRimp, single-site, spin-orbit-coupling, dirac, potential
set the energy in case of a non-rel or SRA calculation
set the size of the t-matrix and the wavefunctions in case of a spin-orbit calculation the tmatrix is twice as big!
set up the calculation of the VLL matrix according to formula 4.12 of Bauer,PhD Thesis
add the spin-orbit Hamiltonian to the VLL matrix
in case of spin-orbit coupling V_LL ist not any more symmetric in L-space. Thus, the left- and right solutions need to be calculated explicitly. We transpose the potential in L-space in order to calculate the the left solution.
Extend matrix for the SRA treatment according to formula 4.107 of Bauer, PhD thesis
V = ( 1/2M = 1/2M_0 l(l+1)/r**2 + V_LL; 0 ) ( 0 2M-2M_0 )
calculate the source terms in the Lippmann-Schwinger equation
these are in priciple spherical hankel and bessel functions which are extended with derivates of j and h's for a SR calculation for details, check chapter 4 of Bauer, PhD thesis
calculate the Bessel and Hankel functions
if the option 'nosph' is not set then the wave functions of the spherical part of the potential is used as a reference function. The solutions of a sperical potential are calculated by using Bessel and Hankel functions and are stored in the same array:
The Lippmann-Schwinger equation for the full-potential is solved using using the Chebyshev integration method see Chapter 5 of Bauer, PhD thesis
calculate the right-hand side solution of the single-site wave functions
Full-relativistic: Transformation from kappa-mu to Lms basis
In case the option 'nosph' is not set. The output t-matrix just contains the non-sph part of the t-matrix. Thus, the sperical needs to be added
If spin-orbit coupling is used the left solution of the Hamiltonian is non-trivial and needs to be calculated explicitly
calculation of Jij's by a Lichtenstein-like approach check section 6.3.3 Bauer, PhD
calculation of the Wronskian. Just for nummerical checks
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(cell_type), | intent(in) | :: | cell | |||
type(tmat_type), | intent(inout) | :: | tmat | |||
integer, | intent(in) | :: | lmaxatom |
lmax cutoff for the current atom |
||
complex(kind=dp), | intent(in) | :: | eryd_in |
complex energy value in Ry |
||
real(kind=dp), | intent(in) | :: | zatom |
nuclear charge |
||
type(CELL_TYPENEW), | intent(in) | :: | cellnew | |||
type(wavefunction_type), | intent(inout) | :: | wavefunction | |||
integer, | intent(in) | :: | ispin |
spin index and number of spin channels |
||
integer, | intent(in) | :: | nspin |
spin index and number of spin channels |
||
integer, | intent(in) | :: | kspinorbit | |||
integer, | intent(in) | :: | use_fullgmat | |||
real(kind=dp), | intent(in) | :: | theta |
theta and phi angles for noncollinear direction |
||
real(kind=dp), | intent(in) | :: | phi |
theta and phi angles for noncollinear direction |
||
integer, | intent(in) | :: | ncoll |
UNUSED, can be removed |
||
integer, | intent(in) | :: | nsra | |||
type(config_type), | intent(in) | :: | config | |||
integer, | intent(in) | :: | idotime |
UNUSED, can be removed |
||
integer, | intent(in) | :: | ie |
energy index |
||
type(ldau_type), | intent(in) | :: | ldau |
lda+u variables |
||
integer, | intent(in) | :: | iatom |
atom index |
||
type(CELL_TYPEORBIT), | intent(in) | :: | cellorbit | |||
logical, | intent(in) | :: | calcleft |
triggers calculation of left solutions (can often be skipped to save time) |