Line data Source code
1 : MODULE m_rhomt
2 : CONTAINS
3 0 : SUBROUTINE rhomt(atoms,we,ne,eigVecCoeffs,denCoeffs,ispin)
4 : ! ***************************************************************
5 : ! perform the sum over m (for each l) and bands to set up the
6 : ! coefficient of spherical charge densities in subroutine
7 : ! cdnval c.l.fu
8 : ! ***************************************************************
9 :
10 : USE m_types
11 : IMPLICIT NONE
12 :
13 : INTEGER, INTENT(IN) :: ne, ispin
14 : TYPE(t_eigVecCoeffs), INTENT(IN) :: eigVecCoeffs
15 : REAL, INTENT(IN) :: we(:)!(nobd)
16 : TYPE(t_atoms), INTENT(IN) :: atoms
17 : TYPE(t_denCoeffs), INTENT(INOUT) :: denCoeffs
18 :
19 : INTEGER i,l,lm ,n,na,natom,m
20 :
21 0 : natom = 0
22 0 : DO n = 1,atoms%ntype
23 0 : DO na = 1,atoms%neq(n)
24 0 : natom = natom + 1
25 0 : DO l = 0,atoms%lmax(n)
26 : ! -----> sum over m
27 0 : DO m = -l,l
28 0 : lm = l* (l+1) + m
29 : ! -----> sum over occupied bands
30 0 : DO i = 1,ne
31 : denCoeffs%uu(l,n,ispin) = denCoeffs%uu(l,n,ispin) +&
32 0 : we(i) * REAL(eigVecCoeffs%abcof(i,lm,0,natom,ispin)*CONJG(eigVecCoeffs%abcof(i,lm,0,natom,ispin)))
33 : denCoeffs%dd(l,n,ispin) = denCoeffs%dd(l,n,ispin) +&
34 0 : we(i) * REAL(eigVecCoeffs%abcof(i,lm,1,natom,ispin)*CONJG(eigVecCoeffs%abcof(i,lm,1,natom,ispin)))
35 : denCoeffs%du(l,n,ispin) = denCoeffs%du(l,n,ispin) +&
36 0 : we(i) * REAL(eigVecCoeffs%abcof(i,lm,0,natom,ispin)*CONJG(eigVecCoeffs%abcof(i,lm,1,natom,ispin)))
37 : ENDDO
38 : ENDDO
39 : ENDDO
40 : ENDDO
41 : ENDDO
42 0 : END SUBROUTINE rhomt
43 : END MODULE m_rhomt
|