9subroutine zpotcoul(iash,nrmt_,nrmti_,npmt_,ld1,rl,ngridg_,igfft_,ngp,gpc, &
10 gclgp,ld2,jlgprmt,ylmgp,sfacgp,zrhoir,ld3,zvclmt,zvclir)
102integer,
intent(in) :: iash,nrmt_(nspecies),nrmti_(nspecies),npmt_(nspecies)
103integer,
intent(in) :: ld1
104real(8),
intent(in) :: rl(ld1,-lmaxo-1:lmaxo+2,nspecies)
105integer,
intent(in) :: ngridg_(3),igfft_(*),ngp
106real(8),
intent(in) :: gpc(ngp),gclgp(ngp)
107integer,
intent(in) :: ld2
108real(8),
intent(in) :: jlgprmt(0:lnpsd,ld2,nspecies)
109complex(8),
intent(in) :: ylmgp(lmmaxo,ngp),sfacgp(ld2,natmtot)
110complex(8),
intent(in) :: zrhoir(*)
111integer,
intent(in) :: ld3
112complex(8),
intent(inout) :: zvclmt(ld3,*)
113complex(8),
intent(out) :: zvclir(*)
123complex(8) qlm(lmmaxo,natmtot),zlm(lmmaxo),zhmt(ld3)
125real(8),
external :: factn2
132 t2=t1*dble(2*l+1)*
rmtl(l+1,is)
133 lma=l**2+1; lmb=lma+2*l
134 qlm(lma:lmb,ias)=t2*zvclmt(i+lma:i+lmb,ias)
138call zcopy(ngridg_(1)*ngridg_(2)*ngridg_(3),zrhoir,1,zvclir,1)
139call zfftifc(3,ngridg_,-1,zvclir)
142 rl2(0:lmaxo)=
rmtl(2:lmaxo+2,is)
149 if (gpc(ig) >
epslat)
then
150 z1=zvclir(jg)*sfacgp(ig,ias)/gpc(ig)
151 zlm(1)=zlm(1)+jlgprmt(1,ig,is)*t1*z1
153 lma=l**2+1; lmb=lma+2*l
154 z2=jlgprmt(l+1,ig,is)*rl2(l)*z1
155 zlm(lma:lmb)=zlm(lma:lmb)+z2*conjg(ylmgp(lma:lmb,ig))
159 zlm(1)=zlm(1)+t2*zvclir(jg)
162 qlm(1:lmmaxo,ias)=qlm(1:lmmaxo,ias)-zlm(1:lmmaxo)
172 lma=l**2+1; lmb=lma+2*l
173 zlm(lma:lmb)=t2*qlm(lma:lmb,ias)
178 if (gpc(ig) >
epslat)
then
183 lma=l**2+1; lmb=lma+2*l
185 z1=z1+t3*sum(zlm(lma:lmb)*ylmgp(lma:lmb,ig))
187 z2=jlgprmt(lnpsd,ig,is)*conjg(sfacgp(ig,ias))
188 zvclir(jg)=zvclir(jg)+z1*z2
191 zvclir(jg)=zvclir(jg)+t2*zlm(1)
198 zvclir(jg)=gclgp(ig)*zvclir(jg)
211 z1=zvclir(igfft_(ig))*sfacgp(ig,ias)
212 zlm(1)=zlm(1)+(jlgprmt(0,ig,is)*
fourpi*
y00)*z1
214 lma=l**2+1; lmb=lma+2*l
215 z2=jlgprmt(l,ig,is)*z1
216 zlm(lma:lmb)=zlm(lma:lmb)+z2*conjg(ylmgp(lma:lmb,ig))
223 do lm=l**2+1,(l+1)**2
224 z1=t1*(zlm(lm)-zvclmt(i+lm,ias))
226 zhmt(lm:i1:
lmmaxi)=z1*rl(1:nri,l,is)
228 i1=lmmaxo*(nr-iro)+i0
229 zhmt(i0:i1:lmmaxo)=z1*rl(iro:nr,l,is)
234 do lm=l**2+1,(l+1)**2
235 z1=t1*(zlm(lm)-zvclmt(i+lm,ias))
237 i1=lmmaxo*(nr-iro)+i0
238 zhmt(i0:i1:lmmaxo)=z1*rl(iro:nr,l,is)
241 zvclmt(1:np,ias)=zvclmt(1:np,ias)+zhmt(1:np)
244 if (ias == iash) zvclmt(1:np,natmtot+1)=zhmt(1:np)
248call zfftifc(3,ngridg_,1,zvclir)
real(8), dimension(:,:), allocatable rmtl
integer, dimension(maxspecies) natoms
real(8), dimension(maxspecies) rmt
integer, dimension(maxatoms, maxspecies) idxas
integer, dimension(maxatoms *maxspecies) idxis
real(8), parameter fourpi
subroutine zpotcoul(iash, nrmt_, nrmti_, npmt_, ld1, rl, ngridg_, igfft_, ngp, gpc, gclgp, ld2, jlgprmt, ylmgp, sfacgp, zrhoir, ld3, zvclmt, zvclir)