mirror of https://gitlab.com/QEF/q-e.git
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:
parent
7b63f310dd
commit
ed34a4c724
|
@ -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 )
|
||||
!
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue