6 subroutine eveqnit(nmatp,ngp,igpig,vpl,vgpl,vgpc,apwalm,evalfv,evecfv)
11 integer,
intent(in) :: nmatp,ngp,igpig(ngkmax)
12 real(8),
intent(in) :: vpl(3),vgpl(3,ngkmax),vgpc(3,ngkmax)
13 complex(8),
intent(in) :: apwalm(ngkmax,apwordmax,lmmaxapw,natmtot)
14 real(8),
intent(out) :: evalfv(nstfv)
15 complex(8),
intent(out) :: evecfv(nmatmax,nstfv)
23 integer,
allocatable :: idx(:)
24 real(8),
allocatable :: w(:),rwork(:)
25 complex(8),
allocatable :: h(:,:),o(:,:),hv(:,:),ov(:,:)
26 complex(8),
allocatable :: u(:,:),hu(:,:),ou(:,:)
27 complex(8),
allocatable :: hs(:,:),os(:,:),work(:)
29 real(8),
external :: ddot
32 allocate(h(nmatp,nmatp),o(nmatp,nmatp))
39 call hmlistl(ngp,igpig,vgpc,nmatp,h)
45 call hmlaa(
tefvr,is,ias,ngp,apwalm(:,:,:,ias),nmatp,h)
46 call hmlalo(is,ias,ngp,apwalm(:,:,:,ias),nmatp,h)
47 call hmllolo(is,ias,ngp,nmatp,h)
57 call olpaa(
tefvr,is,ngp,apwalm(:,:,:,ias),nmatp,o)
58 call olpalo(is,ias,ngp,apwalm(:,:,:,ias),nmatp,o)
59 call olplolo(is,ias,ngp,nmatp,o)
72 allocate(idx(nmatp),w(nmatp))
78 evalfv(ist)=w(idx(ist))
80 evecfv(1:nmatp,1:nstfv)=0.d0
82 evecfv(idx(ist),ist)=1.d0
88 allocate(w(ns),rwork(3*ns))
89 allocate(hv(nmatp,nstfv),ov(nmatp,nstfv))
90 allocate(u(nmatp,nstfv),hu(nmatp,nstfv),ou(nmatp,nstfv))
91 allocate(hs(ns,ns),os(ns,ns))
103 call zhemv(
'U',nmatp,
zone,o,nmatp,evecfv(:,ist),1,
zzero,ov(:,ist),1)
105 t1=ddot(2*nmatp,evecfv(:,ist),1,ov(:,ist),1)
108 call zdscal(nmatp,t1,evecfv(:,ist),1)
109 call zdscal(nmatp,t1,ov(:,ist),1)
112 call zhemv(
'U',nmatp,
zone,h,nmatp,evecfv(:,ist),1,
zzero,hv(:,ist),1)
114 t1=ddot(2*nmatp,evecfv(:,ist),1,hv(:,ist),1)
118 call zcopy(nmatp,hv(:,ist),1,u(:,ist),1)
120 u(1:nmatp,ist)=u(1:nmatp,ist)+t1*ov(1:nmatp,ist)
122 call zhemv(
'U',nmatp,
zone,o,nmatp,u(:,ist),1,
zzero,ou(:,ist),1)
124 call zhemv(
'U',nmatp,
zone,h,nmatp,u(:,ist),1,
zzero,hu(:,ist),1)
131 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,hv(:,ist),1,
zzero, &
133 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,hu(:,ist),1,
zzero, &
135 call zgemv(
'C',nmatp,nstfv,
zone,u,nmatp,hu(:,ist),1,
zzero, &
136 hs(nstfv+1,nstfv+ist),1)
141 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,ov(:,ist),1,
zzero, &
143 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,ou(:,ist),1,
zzero, &
145 call zgemv(
'C',nmatp,nstfv,
zone,u,nmatp,ou(:,ist),1,
zzero, &
146 os(nstfv+1,nstfv+ist),1)
151 call zhegv(1,
'V',
'U',ns,hs,ns,os,ns,w,work,lwork,rwork,info)
157 call zgemv(
'N',nmatp,nstfv,
zone,evecfv,nmatmax,hs(1,ist),1,
zzero, &
159 call zgemv(
'N',nmatp,nstfv,
zone,u,nmatp,hs(nstfv+1,ist),1,
zone,ov(:,ist),1)
164 call zcopy(nmatp,ov(:,ist),1,evecfv(:,ist),1)
171 deallocate(w,rwork,h,o,hv,ov)
172 deallocate(u,hu,ou,hs,os,work)
pure subroutine hmlistl(ngp, igpig, vgpc, ld, h)
subroutine getevecfv(fext, ikp, vpl, vgpl, evecfv)
subroutine hmlaa(thr, is, ias, ngp, apwalm, ld, h)
complex(8), parameter zone
subroutine olpaa(tor, is, ngp, apwalm, ld, o)
pure subroutine olpalo(is, ias, ngp, apwalm, ld, o)
subroutine getevalfv(fext, ikp, vpl, evalfv)
pure subroutine sortidx(n, x, idx)
complex(8), parameter zzero
integer, dimension(maxatoms *maxspecies) idxis
pure subroutine olpistl(ngp, igpig, ld, o)
subroutine eveqnit(nmatp, ngp, igpig, vpl, vgpl, vgpc, apwalm, evalfv, evecfv)
subroutine holdthd(nloop, nthd)
pure subroutine olplolo(is, ias, ngp, ld, o)
pure subroutine hmllolo(is, ias, ngp, ld, h)
pure subroutine hmlalo(is, ias, ngp, apwalm, ld, h)