Constructs potential matrix (2x2 for SOC) adding SOC potential with proper form
of small-component in the case of a scalar-relativistic calculation.
Then creates source terms needed to solve Lippmann-Schwinger equations as described
in the PhD thesis of David Bauer.
@note Note
- in the case of using the SRATRICK
(default behavior) first the spherical solutions are computed (diagonal)
which are then used to compute the non-spherical solutions in a second step
- Jonathan Chico Apr. 2019: Removed inc.p dependencies and rewrote to Fortran90
######################################################
Calculation of the Wronskian. Just for nummerical checks
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ielast |
number of energy points in contour |
||
integer, | intent(in) | :: | nspin |
Number of spin directions |
||
integer, | intent(in) | :: | lmax |
Maximum l component in wave function expansion |
||
real(kind=dp), | intent(in) | :: | zat |
Nuclear charge for a given atom |
||
real(kind=dp), | intent(in) | :: | socscale |
Spin-orbit scaling for a given atom |
||
complex(kind=dp), | intent(in), | dimension (iemxd) | :: | ez |
list of complex energy points in contour |
|
integer, | intent(in) | :: | nsra |
use scalar-relativistic (nsra=2) or non-relativistic (nsra=1) wavefunctions |
||
real(kind=dp), | intent(in), | dimension (ncleb) | :: | cleb |
values of GAUNT coefficients |
|
integer, | intent(in), | dimension (ncleb, 4) | :: | icleb |
index array of nonzero Gaunt coefficients [mapping of (lm1, lm2) to lm3] |
|
integer, | intent(in) | :: | iend |
Number of nonzero gaunt coefficients |
||
integer, | intent(in) | :: | ncheb |
Number of Chebychev pannels for the new solver |
||
integer, | intent(in) | :: | npan_tot |
total number of panels for Chebychev radial mesh |
||
real(kind=dp), | intent(in), | dimension (0:ntotd) | :: | rpan_intervall |
radial meshpoints of panel boundaries |
|
integer, | intent(in), | dimension (0:ntotd) | :: | ipan_intervall |
indices where panels start in radial Chebychev mesh |
|
real(kind=dp), | intent(in), | dimension (nrmaxd) | :: | rnew |
radial mesh points in Chebychev mesh |
|
real(kind=dp), | intent(in), | dimension (nrmaxd, lmpot, nspotd) | :: | vinsnew |
potential interpolated to Chebychev radial mesh |
|
real(kind=dp), | intent(in) | :: | theta |
theta of local spin frame, relative to z-axis |
||
real(kind=dp), | intent(in) | :: | phi |
phi of local spin frame |
||
integer, | intent(in) | :: | i1 |
atom index |
||
integer, | intent(in) | :: | ipot |
potential index (ipot=(iatom-1)*nspin+ispin) |
||
integer, | intent(in) | :: | lmpot |
maximal LM-value of potential expansion: (LPOT+1)**2 |
||
integer, | intent(in) | :: | lly |
LLY /= 0: apply Lloyds formula |
||
complex(kind=dp), | intent(in) | :: | deltae |
Energy difference for numerical derivative |
||
integer, | intent(in) | :: | idoldau |
flag to perform LDA+U |
||
integer, | intent(in) | :: | lopt |
angular momentum QNUM for the atoms on which LDA+U should be applied (-1 to switch it OFF) |
||
real(kind=dp), | intent(in), | dimension (mmaxd, mmaxd, nspind) | :: | wldau |
potential matrix for LDA+U |
|
type(type_dtmatjijdij), | intent(inout) | :: | t_dtmatjij_at |
derived Data type to store -matrix for Jij calculation |
||
integer, | intent(in) | :: | ispin |
spin index, only used for 'NOSOC' test option where external spin loop is used in main1a |