13 complex(8),
intent(out) :: dyn(3,natmtot)
15 integer ik,is,ias,jas,ip
19 complex(8) dynibs(3,natmtot)
21 complex(8),
allocatable :: zrhomt(:,:),zrhoir(:)
22 complex(8),
allocatable :: grhomt(:,:,:),grhoir(:,:)
23 complex(8),
allocatable :: zvclmt(:,:),zvclir(:)
24 complex(8),
allocatable :: gvclmt(:,:,:),gvclir(:,:)
25 complex(8),
allocatable :: zfmt(:),gvcln(:,:),gzfmt(:,:)
27 complex(8),
external :: zfmtinp
40 call 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 71 zvclmt(1:
npmtmax,1:natmtot)=0.d0
73 call zpotcoul(
iasph,
nrmt,
nrmti,
npmt,
nrmtmax,
rlmt,
ngridg,
igfft,
ngvec,
gc,
gclg, &
81 z1=z1+zfmtinp(
nrmt(is),
nrmti(is),
wr2mt(:,is),grhomt(:,ias,ip),zvclmt(:,ias))
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, &
138 z1=zfmtinp(nr,nri,
wr2mt(:,is),grhomt(:,ias,ip),
dvsmt(:,ias))
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)
147 z1=zfmtinp(nr,nri,
wr2mt(:,is),zfmt,gzfmt(:,ip))
148 dynibs(ip,ias)=dynibs(ip,ias)-z1
152 dyn(:,:)=dyn(:,:)+dynibs(:,:)
153 deallocate(zrhomt,zrhoir,grhomt,grhoir)
154 deallocate(zvclmt,zvclir,gvclmt,gvclir,zfmt,gzfmt)
complex(8), dimension(:,:), allocatable sfacg
integer, dimension(3) ngridg
real(8), dimension(:,:,:), allocatable jlgqrmt
complex(8), dimension(:,:), pointer, contiguous drhomt
real(8), dimension(:), pointer, contiguous rhoir
complex(8), dimension(:,:), allocatable dvclmt
subroutine zpotcoul(iash, nrmt_, nrmti_, npmt_, ld1, rl, ngridg_, igfft_, ngp, gpc, gclgp, ld2, jlgprmt, ylmgp, sfacgp, zrhoir, ld3, zvclmt, zvclir)
real(8), dimension(:,:,:), allocatable rlmt
integer, dimension(maxspecies) npmt
subroutine gradzfmt(nr, nri, ri, wcr, zfmt, ld, gzfmt)
real(8), dimension(:,:), pointer, contiguous rhomt
pure subroutine rtozfmt(nr, nri, rfmt, zfmt)
complex(8), dimension(:,:), allocatable ylmg
integer, dimension(:), allocatable igfft
subroutine gradzvcln(is, gzfmt)
complex(8), dimension(:,:), pointer, contiguous dvsmt
real(8), dimension(:), allocatable cfunir
subroutine dforcek(ik, dynibs)
integer, dimension(maxatoms *maxspecies) idxis
subroutine gradzf(zfmt, zfir, gzfmt, gzfir)
real(8), dimension(:,:,:), allocatable jlgrmt
real(8), dimension(:), allocatable gclg
complex(8), dimension(:), pointer, contiguous drhoir
real(8), dimension(:), allocatable gc
complex(8), dimension(:,:), allocatable sfacgq
subroutine holdthd(nloop, nthd)
real(8), dimension(maxspecies) spzn
real(8), dimension(:,:,:), allocatable wcrmt
real(8), dimension(:), allocatable gqc
real(8), dimension(:,:), pointer, contiguous vsmt
integer, dimension(maxspecies) nrmti
real(8), dimension(:), allocatable gclgq
complex(8), dimension(:,:), allocatable ylmgq
real(8), dimension(:,:), allocatable wr2mt
integer, dimension(maxspecies) nrmt