The Elk Code
moddftu.f90
Go to the documentation of this file.
1 
2 ! Copyright (C) 2008 F. Bultmark, F. Cricchio and L. Nordstrom.
3 ! This file is distributed under the terms of the GNU General Public License.
4 ! See the file COPYING for license details.
5 
6 module moddftu
7 
8 use modmain
9 
10 !-----------------------------------------------------------!
11 ! muffin-tin density and potential matrix variables !
12 !-----------------------------------------------------------!
13 ! maximum angular momentum for muffin-tin density matrix
14 integer, parameter :: lmaxdm=3
15 integer, parameter :: lmmaxdm=(lmaxdm+1)**2
16 ! density matrix in each muffin-tin
17 complex(8), allocatable :: dmatmt(:,:,:,:,:)
18 ! tolerance for checking invariance of density matrix under symmetry operations
19 real(8) epsdmat
20 ! potential matrix in each muffin-tin
21 complex(8), allocatable :: vmatmt(:,:,:,:,:)
22 ! potential matrix in spherical coordinates for lmaxi and lmaxo
23 complex(4), allocatable :: vmatmti(:,:,:,:,:),vmatmto(:,:,:,:,:)
24 ! tvmatmt is .true. if the potential matrices are calculated
25 logical tvmatmt
26 ! tvmmt is .true. if the potential matrix for that l and atom is non-zero
27 logical, allocatable :: tvmmt(:,:)
28 
29 !-------------------------!
30 ! DFT+U variables !
31 !-------------------------!
32 ! type of DFT+U double-counting correction
33 ! 0 : no DFT+U
34 ! 1 : fully localised limit (FLL)
35 ! 2 : around mean field (AFM)
36 integer dftu
37 ! input type for DFT+U calculation
38 ! 1 : U and J
39 ! 2 : Slater parameters
40 ! 3 : Racah parameters
41 ! 4 : Yukawa screening length
42 ! 5 : U and determination of corresponding Yukawa screening length
43 integer inpdftu
44 ! maximum number of DFT+U entries
45 integer, parameter :: maxdftu=10
46 ! number of DFT+U entries
47 integer ndftu
48 ! species and angular momentum for each entry
49 integer isldu(2,maxdftu)
50 ! U and J values for each entry
51 real(8) ujdu(2,maxdftu)
52 ! DFT+U energy for each atom and entry
53 real(8), allocatable :: engyadu(:,:)
54 ! energy from the DFT+U correction
55 real(8) engydu
56 ! Slater parameters
57 real(8) fdu(0:2*lmaxdm,maxdftu)
58 ! Racah parameters
59 real(8) edu(0:lmaxdm,maxdftu)
60 ! screening length of Yukawa potential to calculate Slater integrals
61 real(8) lamdu(maxdftu)
62 ! initial values of screening length if U is fixed
63 real(8) lamdu0(maxdftu)
64 ! energies to calculate radial functions for Slater integrals
65 real(8), allocatable :: efdu(:,:)
66 ! radial functions to calculate Slater integrals
67 real(8), allocatable :: fdufr(:,:,:)
68 ! fixed value of U for which screening length has to be determined
70 
71 !---------------------------------!
72 ! tensor moment variables !
73 !---------------------------------!
74 ! tmwrite is .true. if tensor moments are written out at every s.c. loop
75 logical tmwrite
76 ! fixed tensor moment type
77 ! 0 : none
78 ! 1 (-1) : fixed 3-index tensor moment (or just lowering the symmetry)
79 integer ftmtype
80 ! number of fixed tensor moment entries
81 integer ntmfix
82 ! tensor moment indices for each entry:
83 ! is, ia, l for the species, atom, angular momentum
84 ! k, p, r, t for the 3-index tensor moment and vector component
85 integer, allocatable :: itmfix(:,:)
86 ! 3-index tensor component with conventional normalisation
87 real(8), allocatable :: wkprfix(:)
88 ! density matrices corresponding to the fixed tensor moments
89 complex(8), allocatable :: dmftm(:,:,:,:,:)
90 ! fixed tensor moment potential matrix
91 complex(8), allocatable :: vmftm(:,:,:,:,:)
92 ! fixed tensor moment step size
93 real(8) tauftm
94 ! tensor moments at t=0 of a TDDFT+U calculations
95 real(8), allocatable :: wkpr0(:,:)
96 ! tm3vdl is .true. if the tensor moments should be in the complex convention of
97 ! G. van der Laan and B. T. Thoole, J. Phys.: Condens. Matter 7, 9947 (1995)
98 logical tm3vdl
99 
100 end module
101 
integer, dimension(:,:), allocatable itmfix
Definition: moddftu.f90:85
real(8), dimension(:,:), allocatable efdu
Definition: moddftu.f90:65
complex(4), dimension(:,:,:,:,:), allocatable vmatmti
Definition: moddftu.f90:23
integer, parameter lmmaxdm
Definition: moddftu.f90:15
complex(8), dimension(:,:,:,:,:), allocatable dmftm
Definition: moddftu.f90:89
real(8), dimension(:), allocatable wkprfix
Definition: moddftu.f90:87
real(8), dimension(0:2 *lmaxdm, maxdftu) fdu
Definition: moddftu.f90:57
real(8), dimension(maxdftu) dudufix
Definition: moddftu.f90:69
real(8) engydu
Definition: moddftu.f90:55
logical tmwrite
Definition: moddftu.f90:75
complex(8), dimension(:,:,:,:,:), allocatable dmatmt
Definition: moddftu.f90:17
real(8) tauftm
Definition: moddftu.f90:93
complex(4), dimension(:,:,:,:,:), allocatable vmatmto
Definition: moddftu.f90:23
integer, dimension(2, maxdftu) isldu
Definition: moddftu.f90:49
integer ndftu
Definition: moddftu.f90:47
real(8), dimension(maxdftu) lamdu
Definition: moddftu.f90:61
real(8), dimension(0:lmaxdm, maxdftu) edu
Definition: moddftu.f90:59
integer ftmtype
Definition: moddftu.f90:79
real(8), dimension(:,:,:), allocatable fdufr
Definition: moddftu.f90:67
real(8), dimension(:,:), allocatable engyadu
Definition: moddftu.f90:53
integer inpdftu
Definition: moddftu.f90:43
logical tvmatmt
Definition: moddftu.f90:25
complex(8), dimension(:,:,:,:,:), allocatable vmatmt
Definition: moddftu.f90:21
logical, dimension(:,:), allocatable tvmmt
Definition: moddftu.f90:27
complex(8), dimension(:,:,:,:,:), allocatable vmftm
Definition: moddftu.f90:91
real(8), dimension(maxdftu) udufix
Definition: moddftu.f90:69
integer dftu
Definition: moddftu.f90:36
logical tm3vdl
Definition: moddftu.f90:98
real(8) epsdmat
Definition: moddftu.f90:19
real(8), dimension(maxdftu) lamdu0
Definition: moddftu.f90:63
integer, parameter maxdftu
Definition: moddftu.f90:45
real(8), dimension(:,:), allocatable wkpr0
Definition: moddftu.f90:95
real(8), dimension(2, maxdftu) ujdu
Definition: moddftu.f90:51
integer, parameter lmaxdm
Definition: moddftu.f90:14
integer ntmfix
Definition: moddftu.f90:81