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