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)
22 integer,
allocatable :: idx(:)
23 real(8),
allocatable :: w(:)
24 complex(8),
allocatable :: h(:,:),o(:,:),hv(:,:),ov(:,:)
25 complex(8),
allocatable :: u(:,:),hu(:,:),ou(:,:)
26 complex(8),
allocatable :: hs(:,:),os(:,:),vs(:,:)
28 real(8),
external :: ddot
31 allocate(h(nmatp,nmatp),o(nmatp,nmatp))
38 call hmlistl(ngp,igpig,vgpc,nmatp,h)
44 call hmlaa(
tefvr,is,ias,ngp,apwalm(:,:,:,ias),nmatp,h)
45 call hmlalo(is,ias,ngp,apwalm(:,:,:,ias),nmatp,h)
46 call hmllolo(is,ias,ngp,nmatp,h)
56 call olpaa(
tefvr,is,ngp,apwalm(:,:,:,ias),nmatp,o)
57 call olpalo(is,ias,ngp,apwalm(:,:,:,ias),nmatp,o)
58 call olplolo(is,ias,ngp,nmatp,o)
70 allocate(idx(nmatp),w(nmatp))
75 evecfv(1:nmatp,1:nstfv)=0.d0
77 evecfv(idx(ist),ist)=1.d0
83 allocate(hv(nmatp,nstfv),ov(nmatp,nstfv))
84 allocate(u(nmatp,nstfv),hu(nmatp,nstfv),ou(nmatp,nstfv))
85 allocate(hs(ns,ns),os(ns,ns),vs(ns,nstfv))
95 call zhemv(
'U',nmatp,
zone,o,nmatp,evecfv(:,ist),1,
zzero,ov(:,ist),1)
97 t1=ddot(2*nmatp,evecfv(:,ist),1,ov(:,ist),1)
100 call zdscal(nmatp,t1,evecfv(:,ist),1)
101 call zdscal(nmatp,t1,ov(:,ist),1)
104 call zhemv(
'U',nmatp,
zone,h,nmatp,evecfv(:,ist),1,
zzero,hv(:,ist),1)
106 evalfv(ist)=ddot(2*nmatp,evecfv(:,ist),1,hv(:,ist),1)
109 u(1:nmatp,ist)=hv(1:nmatp,ist)+t1*ov(1:nmatp,ist)
111 call zhemv(
'U',nmatp,
zone,o,nmatp,u(:,ist),1,
zzero,ou(:,ist),1)
113 call zhemv(
'U',nmatp,
zone,h,nmatp,u(:,ist),1,
zzero,hu(:,ist),1)
120 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,hv(:,ist),1,
zzero, &
122 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,hu(:,ist),1,
zzero, &
124 call zgemv(
'C',nmatp,nstfv,
zone,u,nmatp,hu(:,ist),1,
zzero, &
125 hs(nstfv+1,nstfv+ist),1)
130 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,ov(:,ist),1,
zzero, &
132 call zgemv(
'C',nmatp,nstfv,
zone,evecfv,nmatmax,ou(:,ist),1,
zzero, &
134 call zgemv(
'C',nmatp,nstfv,
zone,u,nmatp,ou(:,ist),1,
zzero, &
135 os(nstfv+1,nstfv+ist),1)
141 call eveqnzhg(ns,nstfv,ns,hs,os,evalfv,ns,vs)
149 call zgemv(
'N',nmatp,nstfv,
zone,evecfv,nmatmax,vs(1,ist),1,
zzero, &
151 call zgemv(
'N',nmatp,nstfv,
zone,u,nmatp,vs(nstfv+1,ist),1,
zone,ov(:,ist),1)
156 call zcopy(nmatp,ov(:,ist),1,evecfv(:,ist),1)
163 deallocate(h,o,hv,ov,u,hu,ou,hs,os,vs)
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)
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)
subroutine eveqnzhg(n, m, ld1, a, b, w, ld2, z)