11integer,
intent(in) :: ik0
12complex(8),
intent(out) :: hdb(nstsv,nstsv,2:nkpa)
14integer ik,ikk,ikpa,ist
17complex(8),
allocatable :: apwalm(:,:,:,:),evecfv(:,:),evecsv(:,:)
18complex(8),
allocatable :: wfmt(:,:,:,:),wfir(:,:,:)
19complex(8),
allocatable :: wfmtk(:,:,:,:),wfgkk(:,:,:)
20complex(8),
allocatable :: ok(:,:),b(:,:)
29call match(
ngk(1,ik),
vgkc(:,:,1,ik),
gkc(:,1,ik),
sfacgk(:,:,1,ik),apwalm)
32call genwfsv(.false.,.false.,nstsv,[0],
ngdgc,
igfc,
ngk(1,ik),
igkig(:,1,ik), &
33 apwalm,evecfv,evecsv,wfmt,
ngtc,wfir)
37allocate(ok(nstsv,nstsv),b(nstsv,nstsv))
42 call match(
ngk(1,ikk),
vgkc(:,:,1,ikk),
gkc(:,1,ikk),
sfacgk(:,:,1,ikk),apwalm)
43 call genwfsv(.false.,.true.,nstsv,[0],
ngdgc,
igfc,
ngk(:,ikk),
igkig(:,:,ikk), &
44 apwalm,evecfv,evecsv,wfmtk,
ngkmax,wfgkk)
46 call genolpq(nstsv,
expqmt(:,:,ikpa),
ngk(:,ikk),
igkig(:,:,ikk),wfmt,wfir, &
53 b(ist,1:nstsv)=t1*ok(ist,1:nstsv)
57 call zgemm(
'C',
'N',nstsv,nstsv,nstsv,
zone,ok,nstsv,b,nstsv,
zzero, &
60deallocate(apwalm,evecfv,evecsv)
61deallocate(wfmt,wfir,wfmtk,wfgkk)
subroutine genolpq(nst, expqmt, ngpq, igpqig, wfmt, wfir, wfmtq, wfgpq, oq)
subroutine genwfsv(tsh, tgp, nst, idx, ngridg_, igfft_, ngp, igpig, apwalm, evecfv, evecsv, wfmt, ld, wfir)
subroutine getevecfv(fext, ikp, vpl, vgpl, evecfv)
subroutine getevecsv(fext, ikp, vpl, evecsv)
subroutine hdbulrk(ik0, hdb)
subroutine match(ngp, vgpc, gpc, sfacgp, apwalm)
real(8), dimension(:,:,:,:), allocatable vgkc
complex(8), parameter zzero
real(8), dimension(:,:,:), allocatable gkc
integer, dimension(3) ngdgc
integer, dimension(:,:), allocatable ngk
integer, dimension(:,:,:), allocatable igkig
complex(8), parameter zone
integer, dimension(:), allocatable igfc
real(8), dimension(:,:,:,:), allocatable vgkl
real(8), dimension(:,:), allocatable vkl
complex(8), dimension(:,:,:,:), allocatable sfacgk
real(8), dimension(:,:), allocatable evalsv
complex(8), dimension(:,:,:), allocatable expqmt