Uses the Coulomb matrix U (array ULDAU
), the density matrix
(array DENMAT
) and the occupation numbers dentot (total) and (array DENTOTS
) (per spin).
It also contains a routine to write the entries for different potential entries
Note
Modifications by N. Long Xmas Juelich 2015
C a l c u l a t i o n
o f
C o u l o m b
i n t e r a c t i o n
p o t e n t i a l
i n
L D A + U
n o n - r e l a t i v i s t i c
c a s e
o t h e r w i s e
m a t r i c e s
D E N M A T
a n d
V L D A U
m u s t
h a v e
d o u b l e
d i m e n s i o n
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | ntldau |
number of atoms on which LDA+U is applied |
||
integer, | intent(in), | dimension (natyp) | :: | itldau |
integer pointer connecting the NTLDAU atoms to their corresponding index in the unit cell |
|
integer, | intent(in) | :: | nspin |
Counter for spin directions |
||
complex(kind=dp), | intent(inout), | dimension (mmaxd, mmaxd, npotd) | :: | denmatc | ||
integer, | intent(in), | dimension (natyp) | :: | 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 (natyp) | :: | ueff |
input U parameter for each atom |
|
real(kind=dp), | intent(in), | dimension (natyp) | :: | jeff |
input J parameter for each atom |
|
real(kind=dp), | intent(inout), | dimension (mmaxd, mmaxd, mmaxd, mmaxd, natyp) | :: | uldau |
calculated Coulomb matrix elements (EREFLDAU) |
|
real(kind=dp), | intent(inout), | dimension (mmaxd, mmaxd, nspind, natyp) | :: | wldau |
potential matrix |
|
real(kind=dp), | intent(inout), | dimension (natyp) | :: | eu |
Total energy corrections |
|
real(kind=dp), | intent(inout), | dimension (natyp) | :: | edc |
Double-counting correction |
|
integer, | intent(in) | :: | mmaxd |
2*LMAX+1 |
||
integer, | intent(in) | :: | npotd |
(2(KREL+KORBIT)+(1-(KREL+KORBIT))NSPIND)*NATYP) |
||
integer, | intent(in) | :: | natyp |
Number of kinds of atoms in unit cell |
||
integer, | intent(in) | :: | nspind |
KREL+(1-KREL)*(NSPIN+1) |
||
integer, | intent(in) | :: | lmax |
Maximum l component in wave function expansion |
A u x i l i a r y
s u b r o u t i n e
t o
w r i t e
t h e
e n t r i e s
o f
t h e
d i f f e r e n t
p o t e n t i a l s
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in), | dimension (mmaxd, mmaxd) | :: | z | ||
integer, | intent(in) | :: | mmaxd | |||
integer, | intent(in) | :: | mmax | |||
integer, | intent(in) | :: | ifile |