13complex(8),
intent(out) :: dyn(3,natmtot)
15integer ik,is,ias,jas,ip
19complex(8) dynibs(3,natmtot)
21complex(8),
allocatable :: zrhomt(:,:),zrhoir(:)
22complex(8),
allocatable :: grhomt(:,:,:),grhoir(:,:)
23complex(8),
allocatable :: zvclmt(:,:),zvclir(:)
24complex(8),
allocatable :: gvclmt(:,:,:),gvclir(:,:)
25complex(8),
allocatable :: zfmt(:),gvcln(:,:),gzfmt(:,:)
27complex(8),
external :: zfmtinp
40call gradzf(zrhomt,zrhoir,grhomt,grhoir)
48 zvclmt(1:
npmtmax,1:natmtot)=0.d0
52 if (ip ==
ipph) then; jas=
iasph; else; jas=0;
endif
53 call zpotcoul(jas,
nrmt,
nrmti,
npmt,
nrmtmax,
rlmt,
ngridg,
igfft,
ngvec,
gqc,
gclgq, &
64 if (ip ==
ipph) then; jas=natmtot+1; else; jas=
iasph;
end if
73call zpotcoul(
iasph,
nrmt,
nrmti,
npmt,
nrmtmax,
rlmt,
ngridg,
igfft,
ngvec,
gc,
gclg, &
89 if (ias ==
iasph) then; jas=natmtot+1; else; jas=ias;
end if
90 call gradzfmt(
nrmt(is),
nrmti(is),
rlmt(:,-1,is),
wcrmt(:,:,is),zvclmt(:,jas),&
100 if (ias ==
iasph) cycle
105 call gradzfmt(nr,nri,
rlmt(:,-1,is),
wcrmt(:,:,is),
dvclmt(:,ias),
npmtmax,gzfmt)
107 dyn(ip,ias)=
spzn(is)*gzfmt(1,ip)*
y00
129 call mpi_allreduce(mpi_in_place,dynibs,3*natmtot,mpi_double_complex,mpi_sum, &
139 dynibs(ip,ias)=dynibs(ip,ias)-z1
142 if (ias ==
iasph) then; jas=natmtot+1; else; jas=ias;
end if
143 call gradzfmt(nr,nri,
rlmt(:,-1,is),
wcrmt(:,:,is),
drhomt(:,jas),
npmtmax,gzfmt)
148 dynibs(ip,ias)=dynibs(ip,ias)-z1
152dyn(:,:)=dyn(:,:)+dynibs(:,:)
153deallocate(zrhomt,zrhoir,grhomt,grhoir)
154deallocate(zvclmt,zvclir,gvclmt,gvclir,zfmt,gzfmt)
subroutine dforcek(ik, dynibs)
subroutine gradzf(zfmt, zfir, gzfmt, gzfir)
subroutine gradzfmt(nr, nri, ri, wcr, zfmt, ld, gzfmt)
subroutine gradzvcln(is, gzfmt)
integer, dimension(maxspecies) nrmti
real(8), dimension(:,:,:), allocatable wcrmt
integer, dimension(3) ngridg
integer, dimension(maxspecies) nrmt
real(8), dimension(:), pointer, contiguous rhoir
real(8), dimension(:,:,:), allocatable jlgrmt
integer, dimension(maxatoms *maxspecies) idxis
complex(8), dimension(:,:), allocatable sfacg
real(8), dimension(:), allocatable cfunir
integer, dimension(:), allocatable igfft
real(8), dimension(:,:), pointer, contiguous vsmt
integer, dimension(maxspecies) npmt
real(8), dimension(:,:), allocatable wr2mt
real(8), dimension(:), allocatable gclg
real(8), dimension(:,:), pointer, contiguous rhomt
complex(8), dimension(:,:), allocatable ylmg
real(8), dimension(:), allocatable gc
real(8), dimension(:,:,:), allocatable rlmt
real(8), dimension(maxspecies) spzn
subroutine holdthd(nloop, nthd)
complex(8), dimension(:,:), allocatable ylmgq
real(8), dimension(:), allocatable gclgq
real(8), dimension(:,:,:), allocatable jlgqrmt
real(8), dimension(:), allocatable gqc
complex(8), dimension(:,:), pointer, contiguous dvsmt
complex(8), dimension(:), allocatable drhoir
complex(8), dimension(:,:), allocatable drhomt
complex(8), dimension(:,:), allocatable sfacgq
complex(8), dimension(:,:), allocatable dvclmt
pure subroutine rtozfmt(nr, nri, rfmt, zfmt)
pure complex(8) function zfmtinp(nr, nri, wr, zfmt1, zfmt2)
subroutine zpotcoul(iash, nrmt_, nrmti_, npmt_, ld1, rl, ngridg_, igfft_, ngp, gpc, gclgp, ld2, jlgprmt, ylmgp, sfacgp, zrhoir, ld3, zvclmt, zvclir)