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