The Elk Code
readdmatmt.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
subroutine
readdmatmt
7
use
modmain
8
use
moddftu
9
implicit none
10
! local variables
11
integer
is,ia,ias,ispn,jspn,idu
12
integer
is_,ia_,ispn_,jspn_
13
integer
l,ll,m1,m2,lm1,lm2
14
integer
l_,m1_,m2_
15
real(8)
a,b
16
! zero the density matrix
17
dmatmt
(:,:,:,:,:)=0.d0
18
! read density matrix from DMATMT.OUT
19
open
(50,file=
'DMATMT'
//trim(
filext
),form=
'FORMATTED'
)
20
do
idu=1,
ndftu
21
is=
isldu
(1,idu)
22
l=
isldu
(2,idu)
23
ll=l*(l+1)+1
24
do
ia=1,
natoms
(is)
25
ias=
idxas
(ia,is)
26
read
(50,*)
27
read
(50,*)
28
read
(50,*) is_,ia_,l_
29
if
((is /= is_).or.(ia /= ia_).or.(l /= l_))
then
30
write
(*,*)
31
write
(*,
'("Error(readdmatmt): differing is, ia or l")'
)
32
write
(*,
'(" current : ",3I4)'
) is,ia,l
33
write
(*,
'(" DMATMT.OUT : ",3I4)'
) is_,ia_,l_
34
write
(*,*)
35
stop
36
end if
37
do
ispn=1,
nspinor
38
do
jspn=1,
nspinor
39
read
(50,*)
40
read
(50,*) ispn_,jspn_
41
if
((ispn /= ispn_).or.(jspn /= jspn_))
then
42
write
(*,*)
43
write
(*,
'("Error(readdmatmt): differing ispn or jspn")'
)
44
write
(*,
'(" current : ",2I4)'
) ispn,jspn
45
write
(*,
'(" DMATMT.OUT : ",2I4)'
) ispn_,jspn_
46
write
(*,*)
47
stop
48
end if
49
do
m1=-l,l
50
lm1=ll+m1
51
do
m2=-l,l
52
lm2=ll+m2
53
read
(50,*) m1_,m2_,a,b
54
if
((m1 /= m1_).or.(m2 /= m2_))
then
55
write
(*,*)
56
write
(*,
'("Error(readdmatmt): differing m1 or m2")'
)
57
write
(*,
'(" current : ",2I6)'
) m1,m2
58
write
(*,
'(" DMATMT.OUT : ",2I6)'
) m1_,m2_
59
write
(*,*)
60
stop
61
end if
62
dmatmt
(lm1,ispn,lm2,jspn,ias)=cmplx(a,b,8)
63
end do
64
end do
65
end do
66
end do
67
end do
68
end do
69
close
(50)
70
end subroutine
71
modmain::filext
character(256) filext
Definition:
modmain.f90:1301
modmain::idxas
integer, dimension(maxatoms, maxspecies) idxas
Definition:
modmain.f90:42
moddftu::dmatmt
complex(8), dimension(:,:,:,:,:), allocatable dmatmt
Definition:
moddftu.f90:16
moddftu::isldu
integer, dimension(2, maxdftu) isldu
Definition:
moddftu.f90:40
moddftu
Definition:
moddftu.f90:6
modmain
Definition:
modmain.f90:6
moddftu::ndftu
integer ndftu
Definition:
moddftu.f90:38
modmain::nspinor
integer nspinor
Definition:
modmain.f90:267
modmain::natoms
integer, dimension(maxspecies) natoms
Definition:
modmain.f90:36
readdmatmt
subroutine readdmatmt
Definition:
readdmatmt.f90:7
readdmatmt.f90
Generated by
1.8.14