6subroutine dhmlaa(is,ias,ngp,ngpq,apwalm,apwalmq,dapwalm,dapwalmq,ld,dh)
11integer,
intent(in) :: is,ias
12integer,
intent(in) :: ngp,ngpq
13complex(8),
intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw)
14complex(8),
intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw)
15complex(8),
intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw)
16complex(8),
intent(in) :: dapwalmq(ngkmax,apwordmax,lmmaxapw)
17integer,
intent(in) :: ld
18complex(8),
intent(inout) :: dh(*)
22integer lm1,lm3,lma,lmb
25complex(8) y1(ngp),a1(lmoapw(is),ngpq),b1(lmoapw(is),ngp)
26complex(8) y2(ngp),a2(lmoapw(is),ngpq),b2(lmoapw(is),ngp)
29 do lm1=l1**2+1,(l1+1)**2
34 if (mod(l1+l3,2) == 0) then; l0=0; else; l0=1;
end if
35 do lm3=l3**2+1,(l3+1)**2
39 lma=l2**2+1; lmb=lma+2*l2
40 z1=z1+sum(
gntyyy(lma:lmb,lm3,lm1)*
dhaa(lma:lmb,jo,l3,io,l1,ias))
42 if (abs(z1%re)+abs(z1%im) > 1.d-12)
then
43 call zaxpy(ngp,z1,apwalm(:,jo,lm3),1,y1,1)
48 if (ias ==
iasph)
then
51 if (mod(l1+l3,2) == 0) then; l0=0; else; l0=1;
end if
52 do lm3=l3**2+1,(l3+1)**2
56 lma=l2**2+1; lmb=lma+2*l2
57 z1=z1+sum(
gntyry(lma:lmb,lm3,lm1)*
haa(lma:lmb,jo,l3,io,l1,ias))
59 if (abs(z1%re)+abs(z1%im) > 1.d-12)
then
60 call zaxpy(ngp,z1,dapwalm(:,jo,lm3),1,y1,1)
61 call zaxpy(ngp,z1,apwalm(:,jo,lm3),1,y2,1)
66 a2(i,1:ngpq)=dapwalmq(1:ngpq,io,lm1)
69 a1(i,1:ngpq)=apwalmq(1:ngpq,io,lm1)
74call zmctm(lmoapw(is),ngpq,ngp,a1,b1,ld,dh)
76 call zmctm(lmoapw(is),ngpq,ngp,a2,b2,ld,dh)
subroutine dhmlaa(is, ias, ngp, ngpq, apwalm, apwalmq, dapwalm, dapwalmq, ld, dh)
integer, dimension(0:maxlapw, maxspecies) apword
real(8), dimension(:,:,:,:,:,:), allocatable haa
complex(8), dimension(:,:,:), allocatable gntyry