6 subroutine gendwfsv(tsh,tgp,nst,idx,ngp,ngpq,igpqig,apwalmq,dapwalm,evecfv, &
7 devecfv,evecsv,devecsv,dwfmt,ld,dwfir)
11 logical,
intent(in) :: tsh,tgp
12 integer,
intent(in) :: nst,idx(*)
13 integer,
intent(in) :: ngp(nspnfv),ngpq(nspnfv),igpqig(ngkmax,nspnfv)
14 complex(8),
intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)
15 complex(8),
intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw,nspnfv)
16 complex(8),
intent(in) :: evecfv(nmatmax,nstfv,nspnfv)
17 complex(8),
intent(in) :: devecfv(nmatmax,nstfv,nspnfv)
18 complex(8),
intent(in) :: evecsv(nstsv,nstsv),devecsv(nstsv,nstsv)
19 complex(8),
intent(out) :: dwfmt(npcmtmax,natmtot,nspinor,nst)
20 integer,
intent(in) :: ld
21 complex(8),
intent(out) :: dwfir(ld,nspinor,nst)
24 integer is,ia,ias,nrc,nrci
25 integer npc,igp,ifg,i,j,k
29 logical done(nstfv),ddone(nstfv)
31 complex(8),
allocatable :: wfmt1(:,:),wfmt2(:),dwfmt1(:,:)
36 allocate(wfmt1(npcmtmax,nstfv),dwfmt1(npcmtmax,nstfv))
38 if (.not.tsh)
allocate(wfmt2(npcmtmax))
52 dwfmt(1:npc,ias,ispn,j)=0.d0
57 if (abs(z1%re)+abs(z1%im) >
epsocc)
then 58 if (.not.done(ist))
then 60 call wfmtfv(ias,ngp(jspn),apwalmq(:,:,:,ias,jspn), &
61 evecfv(:,ist,jspn),wfmt1(:,ist))
63 call wfmtfv(ias,ngp(jspn),apwalmq(:,:,:,ias,jspn), &
64 evecfv(:,ist,jspn),wfmt2)
65 call zbsht(nrc,nrci,wfmt2,wfmt1(:,ist))
69 call zaxpy(npc,z1,wfmt1(:,ist),1,dwfmt(:,ias,ispn,j),1)
72 if (abs(z1%re)+abs(z1%im) >
epsocc)
then 73 if (.not.ddone(ist))
then 75 call dwfmtfv(ias,ngp(jspn),ngpq(jspn), &
76 apwalmq(:,:,:,ias,jspn),dapwalm(:,:,:,jspn), &
77 evecfv(:,ist,jspn),devecfv(:,ist,jspn),dwfmt1(:,ist))
79 call dwfmtfv(ias,ngp(jspn),ngpq(jspn), &
80 apwalmq(:,:,:,ias,jspn),dapwalm(:,:,:,jspn), &
81 evecfv(:,ist,jspn),devecfv(:,ist,jspn),wfmt2)
82 call zbsht(nrc,nrci,wfmt2,dwfmt1(:,ist))
86 call zaxpy(npc,z1,dwfmt1(:,ist),1,dwfmt(:,ias,ispn,j),1)
92 call dwfmtfv(ias,ngp,ngpq,apwalmq(:,:,:,ias,1),dapwalm,evecfv(:,k,1),&
93 devecfv(:,k,1),dwfmt(:,ias,1,j))
95 call dwfmtfv(ias,ngp,ngpq,apwalmq(:,:,:,ias,1),dapwalm,evecfv(:,k,1),&
97 call zbsht(nrc,nrci,wfmt2,dwfmt(:,ias,1,j))
103 if (
tevecsv)
deallocate(wfmt1,dwfmt1)
104 if (.not.tsh)
deallocate(wfmt2)
111 dwfir(1:ld,1:nspinor,j)=0.d0
120 if (abs(z1%re)+abs(z1%im) >
epsocc)
then 123 dwfir(igp,ispn,j)=dwfir(igp,ispn,j)+z1*evecfv(igp,ist,jspn)
128 ifg=
igfc(igpqig(igp,jspn))
129 dwfir(ifg,ispn,j)=dwfir(ifg,ispn,j)+z1*evecfv(igp,ist,jspn)
134 if (abs(z1%re)+abs(z1%im) >
epsocc)
then 137 dwfir(igp,ispn,j)=dwfir(igp,ispn,j)+z1*devecfv(igp,ist,jspn)
142 ifg=
igfc(igpqig(igp,jspn))
143 dwfir(ifg,ispn,j)=dwfir(ifg,ispn,j)+z1*devecfv(igp,ist,jspn)
152 dwfir(igp,1,j)=devecfv(igp,k,1)
156 ifg=
igfc(igpqig(igp,1))
157 dwfir(ifg,1,j)=t0*devecfv(igp,k,1)
integer, dimension(maxspecies) npcmt
integer, dimension(maxatoms, maxspecies) idxas
subroutine dwfmtfv(ias, ngp, ngpq, apwalmq, dapwalm, evecfv, devecfv, dwfmt)
subroutine zfftifc(nd, n, sgn, z)
integer, dimension(:), allocatable igfc
subroutine wfmtfv(ias, ngp, apwalm, evecfv, wfmt)
subroutine gendwfsv(tsh, tgp, nst, idx, ngp, ngpq, igpqig, apwalmq, dapwalm, evecfv, devecfv, evecsv, devecsv, dwfmt, ld, dwfir)
integer, dimension(maxspecies) natoms
subroutine zbsht(nr, nri, zfmt1, zfmt2)
integer, dimension(3) ngdgc
integer, dimension(maxspecies) nrcmt
integer, dimension(maxspecies) nrcmti
integer, dimension(2) jspnfv