9 subroutine zpotcoul(iash,nrmt_,nrmti_,npmt_,ld1,rl,ngridg_,igfft_,ngp,gpc, &
10 gclgp,ld2,jlgprmt,ylmgp,sfacgp,ld3,zvclmt,zvclir)
102 integer,
intent(in) :: iash,nrmt_(nspecies),nrmti_(nspecies),npmt_(nspecies)
103 integer,
intent(in) :: ld1
104 real(8),
intent(in) :: rl(ld1,-lmaxo-1:lmaxo+2,nspecies)
105 integer,
intent(in) :: ngridg_(3),igfft_(*),ngp
106 real(8),
intent(in) :: gpc(ngp),gclgp(ngp)
107 integer,
intent(in) :: ld2
108 real(8),
intent(in) :: jlgprmt(0:lnpsd,ld2,nspecies)
109 complex(8),
intent(in) :: ylmgp(lmmaxo,ngp),sfacgp(ld2,natmtot)
110 integer,
intent(in) :: ld3
111 complex(8),
intent(inout) :: zvclmt(ld3,*),zvclir(*)
114 integer nr,nri,iro,np
116 integer ig,jg,i,i0,i1
121 complex(8) qlm(lmmaxo,natmtot),zlm(lmmaxo),zhmt(ld3)
123 real(8),
external :: factn2
130 t2=t1*dble(2*l+1)*
rmtl(l+1,is)
131 lma=l**2+1; lmb=lma+2*l
132 qlm(lma:lmb,ias)=t2*zvclmt(i+lma:i+lmb,ias)
136 call zfftifc(3,ngridg_,-1,zvclir)
139 rl2(0:lmaxo)=
rmtl(2:lmaxo+2,is)
146 if (gpc(ig) >
epslat)
then 147 z1=zvclir(jg)*sfacgp(ig,ias)/gpc(ig)
148 zlm(1)=zlm(1)+jlgprmt(1,ig,is)*t1*z1
150 lma=l**2+1; lmb=lma+2*l
151 z2=jlgprmt(l+1,ig,is)*rl2(l)*z1
152 zlm(lma:lmb)=zlm(lma:lmb)+z2*conjg(ylmgp(lma:lmb,ig))
156 zlm(1)=zlm(1)+t2*zvclir(jg)
159 qlm(1:lmmaxo,ias)=qlm(1:lmmaxo,ias)-zlm(1:lmmaxo)
164 t1=factn2(2*lnpsd+1)/
omega 168 t2=t1/(factn2(2*l+1)*
rmtl(l,is))
169 lma=l**2+1; lmb=lma+2*l
170 zlm(lma:lmb)=t2*qlm(lma:lmb,ias)
175 if (gpc(ig) >
epslat)
then 180 lma=l**2+1; lmb=lma+2*l
182 z1=z1+t3*sum(zlm(lma:lmb)*ylmgp(lma:lmb,ig))
184 z2=jlgprmt(lnpsd,ig,is)*conjg(sfacgp(ig,ias))
185 zvclir(jg)=zvclir(jg)+z1*z2
188 zvclir(jg)=zvclir(jg)+t2*zlm(1)
195 zvclir(jg)=gclgp(ig)*zvclir(jg)
208 z1=zvclir(igfft_(ig))*sfacgp(ig,ias)
209 zlm(1)=zlm(1)+(jlgprmt(0,ig,is)*
fourpi*
y00)*z1
211 lma=l**2+1; lmb=lma+2*l
212 z2=jlgprmt(l,ig,is)*z1
213 zlm(lma:lmb)=zlm(lma:lmb)+z2*conjg(ylmgp(lma:lmb,ig))
220 do lm=l**2+1,(l+1)**2
221 z1=t1*(zlm(lm)-zvclmt(i+lm,ias))
223 zhmt(lm:i1:
lmmaxi)=z1*rl(1:nri,l,is)
225 i1=lmmaxo*(nr-iro)+i0
226 zhmt(i0:i1:lmmaxo)=z1*rl(iro:nr,l,is)
231 do lm=l**2+1,(l+1)**2
232 z1=t1*(zlm(lm)-zvclmt(i+lm,ias))
234 i1=lmmaxo*(nr-iro)+i0
235 zhmt(i0:i1:lmmaxo)=z1*rl(iro:nr,l,is)
238 zvclmt(1:np,ias)=zvclmt(1:np,ias)+zhmt(1:np)
241 if (ias == iash) zvclmt(1:np,natmtot+1)=zhmt(1:np)
245 call zfftifc(3,ngridg_,1,zvclir)
integer, dimension(maxatoms, maxspecies) idxas
real(8), dimension(:,:), allocatable rmtl
subroutine zfftifc(nd, n, sgn, z)
subroutine zpotcoul(iash, nrmt_, nrmti_, npmt_, ld1, rl, ngridg_, igfft_, ngp, gpc, gclgp, ld2, jlgprmt, ylmgp, sfacgp, ld3, zvclmt, zvclir)
real(8), dimension(maxspecies) rmt
integer, dimension(maxspecies) natoms
integer, dimension(maxatoms *maxspecies) idxis
real(8), parameter fourpi