Bug fix: d3.x was not working anymore with pools. A possible solution.

git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@6034 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
dalcorso 2009-10-17 07:22:42 +00:00
parent 7b63f310dd
commit ed34a4c724
3 changed files with 11 additions and 7 deletions

View File

@ -40,7 +40,7 @@ SUBROUTINE d3_exc
ALLOCATE (work3 ( nrxx))
ALLOCATE (d3dyn1( 3*nat, 3*nat, 3*nat))
IF ( my_pool_id == 0 ) THEN
! IF ( my_pool_id == 0 ) THEN
!
! Calculates third derivative of Exc
!
@ -78,7 +78,7 @@ SUBROUTINE d3_exc
ENDDO
!
END IF
! END IF
!
IF ( npool /= 1 ) CALL mp_bcast( d3dyn1, ionode_id, inter_pool_comm )
!

View File

@ -18,8 +18,8 @@ SUBROUTINE davcio_drho2 (drho, lrec, iunit, nrec, isw)
USE pwcom
USE kinds, ONLY : DP
USE phcom
USE io_global, ONLY : ionode_id
USE mp_global, ONLY : intra_pool_comm, me_pool, root_pool
USE io_global, ONLY : ionode_id, ionode
USE mp_global, ONLY : intra_pool_comm, inter_pool_comm, me_pool, root_pool
USE mp, ONLY : mp_bcast, mp_barrier
USE fft_base, ONLY : dfftp, cgather_sym
!
@ -43,13 +43,14 @@ SUBROUTINE davcio_drho2 (drho, lrec, iunit, nrec, isw)
CALL cgather_sym (drho, ddrho)
root = 0
CALL mp_barrier()
IF ( me_pool == root_pool ) CALL davcio (ddrho, lrec, iunit, nrec, + 1)
IF ( ionode ) CALL davcio (ddrho, lrec, iunit, nrec, + 1)
ELSEIF (isw < 0) THEN
!
! First task of the pool reads ddrho, and broadcasts to all the
! processors of the pool
!
IF ( me_pool == root_pool ) CALL davcio (ddrho, lrec, iunit, nrec, - 1)
IF ( ionode ) CALL davcio (ddrho, lrec, iunit, nrec, - 1)
CALL mp_bcast( ddrho, ionode_id, inter_pool_comm )
CALL mp_bcast( ddrho, root_pool, intra_pool_comm )
!
! Distributes ddrho between between the tasks of the pool

View File

@ -28,10 +28,13 @@ SUBROUTINE read_ef()
REWIND (unit = iuef)
READ (iuef, err = 100, iostat = ios) ef_sh
!
100 CALL errore ('d3_valence', 'reading iuef', ABS (ios) )
!
END IF
100 CALL mp_bcast(ios, ionode_id)
CALL errore ('d3_valence', 'reading iuef', ABS (ios) )
CALL mp_bcast( ef_sh, ionode_id )
RETURN