6subroutine eveqnit(nmatp,ngp,igpig,vpl,vgpl,vgpc,apwalm,evalfv,evecfv)
11integer,
intent(in) :: nmatp,ngp,igpig(ngkmax)
12real(8),
intent(in) :: vpl(3),vgpl(3,ngkmax),vgpc(3,ngkmax)
13complex(8),
intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)
14real(8),
intent(out) :: evalfv(nstfv)
15complex(8),
intent(out) :: evecfv(nmatmax,nstfv)
23real(8),
allocatable :: w(:),rwork(:)
24complex(8),
allocatable :: h(:,:),o(:,:),hv(:,:),ov(:,:)
25complex(8),
allocatable :: u(:,:),hu(:,:),ou(:,:)
26complex(8),
allocatable :: hs(:,:),os(:,:),work(:)
28real(8),
external :: ddot
36 evecfv(1:nmatp,1:nstfv)=0.d0
43allocate(h(nmatp,nmatp),o(nmatp,nmatp))
50call hmlistl(ngp,igpig,vgpc,nmatp,h)
56 call hmlaa(
tefvr,is,ias,ngp,apwalm(:,:,:,ias),nmatp,h)
57 call hmlalo(is,ias,ngp,apwalm(:,:,:,ias),nmatp,h)
58 call hmllolo(is,ias,ngp,nmatp,h)
68 call olpaa(
tefvr,is,ngp,apwalm(:,:,:,ias),nmatp,o)
69 call olpalo(is,ias,ngp,apwalm(:,:,:,ias),nmatp,o)
70 call olplolo(is,ias,ngp,nmatp,o)
78allocate(w(ns),rwork(3*ns))
79allocate(hv(nmatp,nstfv),ov(nmatp,nstfv))
80allocate(u(nmatp,nstfv),hu(nmatp,nstfv),ou(nmatp,nstfv))
81allocate(hs(ns,ns),os(ns,ns))
96 call zhemv(
'U',nmatp,
zone,o,nmatp,evecfv(:,ist),1,
zzero,ov(:,ist),1)
98 t1=ddot(2*nmatp,evecfv(:,ist),1,ov(:,ist),1)
101 call zdscal(nmatp,t1,evecfv(:,ist),1)
102 call zdscal(nmatp,t1,ov(:,ist),1)
105 call zhemv(
'U',nmatp,
zone,h,nmatp,evecfv(:,ist),1,
zzero,hv(:,ist),1)
107 t1=ddot(2*nmatp,evecfv(:,ist),1,hv(:,ist),1)
108 if ((
iscl <= 1).and.(it == 1))
then
114 call zcopy(nmatp,hv(:,ist),1,u(:,ist),1)
116 u(1:nmatp,ist)=u(1:nmatp,ist)+t1*ov(1:nmatp,ist)
118 call zhemv(
'U',nmatp,
zone,o,nmatp,u(:,ist),1,
zzero,ou(:,ist),1)
120 t1=ddot(2*nmatp,u(:,ist),1,ou(:,ist),1)
126 call zdscal(nmatp,t1,u(:,ist),1)
127 call zdscal(nmatp,t1,ou(:,ist),1)
130 call zhemv(
'U',nmatp,
zone,h,nmatp,u(:,ist),1,
zzero,hu(:,ist),1)
137 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,hv(:,ist),1,
zzero, &
139 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,hu(:,ist),1,
zzero, &
141 call zgemv(
'C',nmatp,nstfv,
zone,u,nmatp,hu(:,ist),1,
zzero, &
142 hs(nstfv+1,nstfv+ist),1)
147 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,ov(:,ist),1,
zzero, &
149 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,ou(:,ist),1,
zzero, &
151 call zgemv(
'C',nmatp,nstfv,
zone,u,nmatp,ou(:,ist),1,
zzero, &
152 os(nstfv+1,nstfv+ist),1)
157 call zhegv(1,
'V',
'U',ns,hs,ns,os,ns,w,work,lwork,rwork,info)
163 call zgemv(
'N',nmatp,nstfv,
zone,evecfv,nmatmax,hs(1,ist),1,
zzero, &
165 call zgemv(
'N',nmatp,nstfv,
zone,u,nmatp,hs(nstfv+1,ist),1,
zone,ov(:,ist),1)
170 call zcopy(nmatp,ov(:,ist),1,evecfv(:,ist),1)
175 rmax=sqrt(abs(rmax)/dble(nmatp))
182deallocate(w,rwork,h,o,hv,ov)
183deallocate(u,hu,ou,hs,os,work)