mod_tmatnewsolver Module

Calculation of the t-matrix for the new solver


Functions

public function calculate_left(i1, ie)

H e l p e r

f u n c t i o n

w h i c h

t e l l s

i f

t h e

l e f t

w a v e

f u n c t i o n s

a r e

n e e d e d

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: i1
integer, intent(in) :: ie

Return Value logical


Subroutines

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)

License
Creative Commons License
Category
single-site, KKRhost

C a l c u l a t i o n

o f

t h e

t

m a t r i x

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) :: 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

public subroutine allocate_locals_tmat_newsolver(allocmode, irmdnew, lmpot, nspin, vins, aux, ipiv, tmat0, tmatll, alpha0, dtmatll, alphall, dalphall, jlk_index, nsra, lmmaxd, nth, lmax, vnspll, vnspll0, vnspll1, vnspll2, hlk, jlk, hlk2, jlk2, tmatsph, ull, rll, sll, rllleft, sllleft)

W r a p p e r

r o u t i n e

f o r

t h e

a l l o c a t i o n / d e a l l o c a t i o n

o f

t h e

a r r a y s

f o r

t h e

t

m a t r i x

Read more…

Arguments

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

allocation mode (1: allocate and initialize, other: deallocate)

integer, intent(in) :: irmdnew

number of radial points in Chebycheb mesh

integer, intent(in) :: lmpot

lm-cutoff of potential expansion

integer, intent(in) :: nspin

number of spin channels

real(kind=dp), intent(inout), allocatable :: vins(:,:,:)
complex(kind=dp), intent(inout), allocatable :: aux(:,:)
integer, intent(inout), allocatable :: ipiv(:)
complex(kind=dp), intent(inout), allocatable :: tmat0(:,:)
complex(kind=dp), intent(inout), allocatable :: tmatll(:,:)
complex(kind=dp), intent(inout), allocatable :: alpha0(:,:)
complex(kind=dp), intent(inout), allocatable :: dtmatll(:,:)
complex(kind=dp), intent(inout), allocatable :: alphall(:,:)
complex(kind=dp), intent(inout), allocatable :: dalphall(:,:)
integer, intent(inout), allocatable :: jlk_index(:)
integer, intent(in) :: nsra

scalar-relativistic (nsra=2) or non-relativistic (nsra=1)

integer, intent(in) :: lmmaxd

cutoff of combined (l,m,s) index

integer, intent(in) :: nth

number of OpenMP threads

integer, intent(in) :: lmax

lmax cutoff

complex(kind=dp), intent(inout), allocatable, dimension (:, :, :, :) :: vnspll
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :) :: vnspll0
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :, :) :: vnspll1
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :) :: vnspll2
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :) :: hlk
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :) :: jlk
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :) :: hlk2
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :) :: jlk2
complex(kind=dp), intent(inout), allocatable, dimension (:, :) :: tmatsph
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :, :) :: ull
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :, :) :: rll
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :, :) :: sll
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :, :) :: rllleft
complex(kind=dp), intent(inout), allocatable, dimension (:, :, :, :) :: sllleft