tmat_newsolver Subroutine

public subroutine tmat_newsolver(ielast, nspin, lmax, zat, socscale, ez, nsra, cleb, icleb, iend, ncheb, npan_tot, rpan_intervall, ipan_intervall, rnew, vinsnew, theta, phi, i1, ipot, lmpot, lly, deltae, idoldau, lopt, wldau, t_dtmatjij_at, ispin)

Uses

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

Arguments

Type IntentOptional 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