15integer(omp_lock_kind) lock(nwrf)
16real(8) vgqc(3,ngrf),gqc(ngrf),gclgq(ngrf)
18real(8),
allocatable :: jlgqr(:,:,:)
19complex(8),
allocatable :: ylmgq(:,:),sfacgq(:,:),epsi(:,:,:)
20complex(4),
allocatable :: vchi0(:,:,:)
24allocate(epsi(ngrf,ngrf,nwrf),vchi0(ngrf,ngrf,nwrf))
27 call omp_init_lock(lock(iw))
34 if (
mp_mpi)
write(*,
'("Info(epsinv): ",I6," of ",I6," q-points")') iq,
nqpt
36 call gengqf(ngrf,
vqc(:,iq),vgqc,gqc,jlgqr,ylmgq,sfacgq)
38 call gengclgq(.true.,iq,ngrf,gqc,gclgq)
40 gclgq(1:ngrf)=sqrt(gclgq(1:ngrf))
42 vchi0(1:ngrf,1:ngrf,1:nwrf)=0.e0
51 call genvchi0(.false.,ik,lock,
vql(:,iq),gclgq,jlgqr,ylmgq,sfacgq,ngrf,vchi0)
58 call mpi_allreduce(mpi_in_place,vchi0,n,mpi_complex,mpi_sum,
mpicom,
ierror)
61 epsi(1:ngrf,1:ngrf,1:nwrf)=-vchi0(1:ngrf,1:ngrf,1:nwrf)
63 epsi(ig,ig,1:nwrf)=epsi(ig,ig,1:nwrf)+1.d0
73 call zminv(ngrf,epsi(:,:,iw))
83 call omp_destroy_lock(lock(iw))
85deallocate(jlgqr,ylmgq,sfacgq,epsi,vchi0)
subroutine gengqf(ng, vqpc, vgqc, gqc, jlgqr, ylmgq, sfacgq)
subroutine genvchi0(t3hw, ik, lock, vqpl, gclgq, jlgqr, ylmgq, sfacgq, nm, vchi0)
real(8), dimension(:,:), allocatable vqc
real(8), dimension(:,:), allocatable vql