mirror of https://gitlab.com/QEF/q-e.git
introducing exxbuff in order to using a buffer instead io routine.
Nicola Varini git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@5013 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
5926c8c55e
commit
3c6fc39d69
61
PW/exx.f90
61
PW/exx.f90
|
@ -18,7 +18,7 @@ module exx
|
|||
real (DP):: exxalfa=0.d0 ! 1 if exx, 0 elsewhere
|
||||
real (DP):: yukawa = 0.d0
|
||||
integer:: iunexx
|
||||
integer :: exx_nwordwfc
|
||||
integer :: exx_nwordwfc, ji
|
||||
!
|
||||
! variables defining the auxiliary k-point grid used in X BZ integration
|
||||
!
|
||||
|
@ -30,6 +30,7 @@ module exx
|
|||
real (DP), allocatable :: &
|
||||
x_occupation(:,:) ! x_occupation(nbnd,nks) the weight of
|
||||
! auxiliary functions in the density matrix
|
||||
complex (DP), allocatable :: exxbuff(:,:,:) !temporay buffer to store wfc
|
||||
!
|
||||
! let xk(:,ik) + xq(:,iq) = xkq(:,ikq) = S(isym)*xk(ik') + G
|
||||
!
|
||||
|
@ -380,8 +381,11 @@ contains
|
|||
allocate(psic_all(nxxs), temppsic_all(nxxs) )
|
||||
#endif
|
||||
allocate(present(nsym),rir(nrx1s*nrx2s*nrx3s,nsym))
|
||||
allocate(temppsic(nrxxs), psic(nrxxs), tempevc( npwx, nbnd ))
|
||||
allocate(temppsic(nrxxs), psic(nrxxs),tempevc( npwx, nbnd ))
|
||||
|
||||
if( .not. allocated( exxbuff ) ) allocate( exxbuff( nrxxs, nkqs, nbnd ) )
|
||||
|
||||
write(*,*) 'debug: exxbuff size=',size(exxbuff)
|
||||
exx_nwordwfc=2*nrxxs
|
||||
if (.not.exx_is_active()) then
|
||||
iunexx = find_free_unit()
|
||||
|
@ -467,7 +471,11 @@ contains
|
|||
if (index_sym(ikq) < 0 ) &
|
||||
call errore('exxinit','index_sym < 0 with gamma_only (!?)',1)
|
||||
|
||||
CALL davcio(psic,exx_nwordwfc,iunexx,(ikq-1)*half_nbnd+h_ibnd,1)
|
||||
do ji=1, nrxxs
|
||||
exxbuff(ji,ikq,h_ibnd)=psic(ji)
|
||||
enddo
|
||||
|
||||
!CALL davcio(psic,exx_nwordwfc,iunexx,(ikq-1)*half_nbnd+h_ibnd,1)
|
||||
end do
|
||||
end do
|
||||
else
|
||||
|
@ -489,13 +497,17 @@ contains
|
|||
psic(1:nrxxs) = temppsic(rir(1:nrxxs,isym))
|
||||
#endif
|
||||
if (index_sym(ikq) < 0 ) psic(1:nrxxs) = CONJG(psic(1:nrxxs))
|
||||
do ji=1, nrxxs
|
||||
exxbuff(ji,ikq,ibnd)=psic(ji)
|
||||
|
||||
CALL davcio(psic,exx_nwordwfc,iunexx,(ikq-1)*nbnd+ibnd,1)
|
||||
enddo
|
||||
!CALL davcio(psic,exx_nwordwfc,iunexx,(ikq-1)*nbnd+ibnd,1)
|
||||
end do
|
||||
end do
|
||||
end if
|
||||
end do
|
||||
deallocate(temppsic, psic, tempevc)
|
||||
|
||||
deallocate(temppsic, psic,tempevc)
|
||||
deallocate(present,rir)
|
||||
#ifdef __PARA
|
||||
deallocate(temppsic_all, psic_all)
|
||||
|
@ -508,6 +520,8 @@ contains
|
|||
|
||||
call stop_clock ('exxinit')
|
||||
|
||||
|
||||
|
||||
end subroutine exxinit
|
||||
|
||||
!-----------------------------------------------------------------------
|
||||
|
@ -623,8 +637,13 @@ contains
|
|||
!
|
||||
!loads the phi from file
|
||||
!
|
||||
CALL davcio ( tempphic, exx_nwordwfc, iunexx, &
|
||||
(ikq-1)*half_nbnd+h_ibnd, -1 )
|
||||
|
||||
do ji=1, nrxxs
|
||||
tempphic(ji)=exxbuff(ji,ikq,h_ibnd)
|
||||
|
||||
enddo
|
||||
!CALL davcio ( tempphic, exx_nwordwfc, iunexx, &
|
||||
! (ikq-1)*half_nbnd+h_ibnd, -1 )
|
||||
!calculate rho in real space
|
||||
rhoc(:)=CONJG(tempphic(:))*temppsic(:) / omega
|
||||
!brings it to G-space
|
||||
|
@ -648,8 +667,12 @@ contains
|
|||
!
|
||||
!loads the phi from file
|
||||
!
|
||||
CALL davcio ( tempphic, exx_nwordwfc, iunexx, &
|
||||
(ikq-1)*nbnd+ibnd, -1 )
|
||||
do ji=1, nrxxs
|
||||
tempphic(ji)=exxbuff(ji,ikq,ibnd)
|
||||
enddo
|
||||
|
||||
!CALL davcio ( tempphic, exx_nwordwfc, iunexx, &
|
||||
! (ikq-1)*nbnd+ibnd, -1 )
|
||||
!calculate rho in real space
|
||||
rhoc(:)=CONJG(tempphic(:))*temppsic(:) / omega
|
||||
!brings it to G-space
|
||||
|
@ -675,7 +698,7 @@ contains
|
|||
hpsi(1:npw,im)=hpsi(1:npw,im) - exxalfa*result(nls(igk(1:npw)))
|
||||
end do
|
||||
|
||||
deallocate (tempphic, temppsic, result, rhoc, vc, fac )
|
||||
deallocate (tempphic,temppsic, result, rhoc, vc, fac )
|
||||
|
||||
call stop_clock ('vexx')
|
||||
|
||||
|
@ -853,8 +876,12 @@ contains
|
|||
!
|
||||
!loads the phi from file
|
||||
!
|
||||
CALL davcio (tempphic, exx_nwordwfc, iunexx, &
|
||||
(ikq-1)*half_nbnd+h_ibnd, -1 )
|
||||
do ji=1, nrxxs
|
||||
tempphic(ji)=exxbuff(ji,ikq,h_ibnd)
|
||||
enddo
|
||||
|
||||
!CALL davcio (tempphic, exx_nwordwfc, iunexx, &
|
||||
! (ikq-1)*half_nbnd+h_ibnd, -1 )
|
||||
!calculate rho in real space
|
||||
rhoc(:)=CONJG(tempphic(:))*temppsic(:) / omega
|
||||
!brings it to G-space
|
||||
|
@ -877,8 +904,13 @@ contains
|
|||
!
|
||||
!loads the phi from file
|
||||
!
|
||||
CALL davcio (tempphic, exx_nwordwfc, iunexx, &
|
||||
(ikq-1)*nbnd+ibnd, -1 )
|
||||
do ji=1, nrxxs
|
||||
tempphic(ji)=exxbuff(ji,ikq,ibnd)
|
||||
|
||||
enddo
|
||||
|
||||
!CALL davcio (tempphic, exx_nwordwfc, iunexx, &
|
||||
! (ikq-1)*nbnd+ibnd, -1 )
|
||||
!calculate rho in real space
|
||||
rhoc(:)=CONJG(tempphic(:))*temppsic(:) / omega
|
||||
!brings it to G-space
|
||||
|
@ -1015,4 +1047,5 @@ contains
|
|||
return
|
||||
end function exx_divergence
|
||||
|
||||
|
||||
end module exx
|
||||
|
|
Loading…
Reference in New Issue