6 subroutine dhmlaa(is,ias,ngp,ngpq,apwalm,apwalmq,dapwalm,dapwalmq,ld,dh)
11 integer,
intent(in) :: is,ias,ngp,ngpq
12 complex(8),
intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw)
13 complex(8),
intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw)
14 complex(8),
intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw)
15 complex(8),
intent(in) :: dapwalmq(ngkmax,apwordmax,lmmaxapw)
16 integer,
intent(in) :: ld
17 complex(8),
intent(inout) :: dh(*)
21 integer lm1,lm3,lma,lmb
24 complex(8) y1(ngp),a1(lmoapw(is),ngpq),b1(lmoapw(is),ngp)
25 complex(8) y2(ngp),a2(lmoapw(is),ngpq),b2(lmoapw(is),ngp)
28 do lm1=l1**2+1,(l1+1)**2
33 l0=merge(0,1,mod(l1+l3,2) == 0)
34 do lm3=l3**2+1,(l3+1)**2
38 lma=l2**2+1; lmb=lma+2*l2
39 z1=z1+sum(
gntyyy(lma:lmb,lm3,lm1)*
dhaa(lma:lmb,jo,l3,io,l1,ias))
41 if (abs(z1%re)+abs(z1%im) > 1.d-12) &
42 call zaxpy(ngp,z1,apwalm(:,jo,lm3),1,y1,1)
46 if (ias ==
iasph)
then 49 l0=merge(0,1,mod(l1+l3,2) == 0)
50 do lm3=l3**2+1,(l3+1)**2
54 lma=l2**2+1; lmb=lma+2*l2
55 z1=z1+sum(
gntyry(lma:lmb,lm3,lm1)*
haa(lma:lmb,jo,l3,io,l1,ias))
57 if (abs(z1%re)+abs(z1%im) > 1.d-12)
then 58 call zaxpy(ngp,z1,dapwalm(:,jo,lm3),1,y1,1)
59 call zaxpy(ngp,z1,apwalm(:,jo,lm3),1,y2,1)
64 a2(i,1:ngpq)=dapwalmq(1:ngpq,io,lm1)
67 a1(i,1:ngpq)=apwalmq(1:ngpq,io,lm1)
72 call zmctm(lmoapw(is),ngpq,ngp,a1,b1,ld,dh)
73 if (ias ==
iasph)
call zmctm(lmoapw(is),ngpq,ngp,a2,b2,ld,dh)
subroutine dhmlaa(is, ias, ngp, ngpq, apwalm, apwalmq, dapwalm, dapwalmq, ld, dh)
real(8), dimension(:,:,:), allocatable gntyyy
real(8), dimension(:,:,:,:,:,:), allocatable haa
integer, dimension(0:maxlapw, maxspecies) apword
complex(8), dimension(:,:,:), allocatable gntyry
subroutine zmctm(l, m, n, a, b, ld, c)
complex(8), dimension(:,:,:,:,:,:), allocatable dhaa