6subroutine gendwfsv(tsh,tgp,nst,idx,ngp,ngpq,igpqig,apwalmq,dapwalm,evecfv, &
7 devecfv,evecsv,devecsv,dwfmt,ld,dwfir)
11logical,
intent(in) :: tsh,tgp
12integer,
intent(in) :: nst,idx(*)
13integer,
intent(in) :: ngp(nspnfv),ngpq(nspnfv),igpqig(ngkmax,nspnfv)
14complex(8),
intent(in) :: apwalmq(ngkmax,apwordmax,lmmaxapw,natmtot,nspnfv)
15complex(8),
intent(in) :: dapwalm(ngkmax,apwordmax,lmmaxapw,nspnfv)
16complex(8),
intent(in) :: evecfv(nmatmax,nstfv,nspnfv)
17complex(8),
intent(in) :: devecfv(nmatmax,nstfv,nspnfv)
18complex(8),
intent(in) :: evecsv(nstsv,nstsv),devecsv(nstsv,nstsv)
19complex(8),
intent(out) :: dwfmt(npcmtmax,natmtot,nspinor,nst)
20integer,
intent(in) :: ld
21complex(8),
intent(out) :: dwfir(ld,nspinor,nst)
24integer is,ia,ias,nrc,nrci
25integer npc,igp,ifg,i,j,k
29logical done(nstfv),ddone(nstfv)
31complex(8),
allocatable :: wfmt1(:,:),wfmt2(:),dwfmt1(:,:)
36 allocate(wfmt1(npcmtmax,nstfv),dwfmt1(npcmtmax,nstfv))
38if (.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))
103if (
tevecsv)
deallocate(wfmt1,dwfmt1)
104if (.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)