Adam's lipid and dfa corrections
[unres.git] / source / unres / src-HCD-5D / dfa.F
index f69b81a..62e8892 100644 (file)
@@ -71,12 +71,16 @@ C     read fragment informations
 C
       implicit real*8 (a-h,o-z)
       include 'DIMENSIONS'
+#ifdef MPI
+      include "mpif.h"
+      include 'COMMON.SETUP'
+      integer ierror
+#endif
       include 'COMMON.IOUNITS'
       include 'COMMON.CHAIN'
       include 'COMMON.DFA'
       include 'COMMON.FFIELD'
       include 'COMMON.CONTROL'
-      include 'COMMON.SETUP'
 
 
 C     NOTE THAT FILENAMES are FIXED, CURRENTLY!!
@@ -90,6 +94,7 @@ C     THIS SHOULD BE MODIFIED!!
       integer ica1, ica2,ica3,ica4,ica5
       integer ishell, inca, itmp,iitmp
       double precision wtmp
+      logical lprn /.false./
 C
 C     READ DISTANCE
 C
@@ -254,12 +259,55 @@ C     BETA is not parallel !
       call int_bounds(idfaphi,idfaphi_start,idfaphi_end)
       call int_bounds(idfathe,idfathe_start,idfathe_end)
       call int_bounds(idfanei,idfanei_start,idfanei_end)
-      if (me.eq.king .or. .not. out1file) 
+      if (lprn) write (*,*) "Processor",MyRank," DFA MPI ",
+     & "idfadis ",idfadis,idfadis_start,idfadis_end,
+     & "idfaphi ",idfaphi,idfaphi_start,idfaphi_end,
+     & "idfathe ",idfathe,idfathe_start,idfathe_end,
+     & "idfanei ",idfanei,idfanei_start,idfanei_end
+      if (lprn) 
      &  write (iout,*) "DFA MPI ",
      & "idfadis ",idfadis,idfadis_start,idfadis_end,
      & "idfaphi ",idfaphi,idfaphi_start,idfaphi_end,
      & "idfathe ",idfathe,idfathe_start,idfathe_end,
      & "idfanei ",idfanei,idfanei_start,idfanei_end
+      do i=0,max_fg_procs-1
+        idfadis_start_all(j)=0
+        idfadis_end_all(j)=0
+        idfaphi_start_all(j)=0
+        idfaphi_end_all(j)=0
+        idfathe_start_all(j)=0
+        idfathe_end_all(j)=0
+        idfanei_start_all(j)=0
+        idfanei_end_all(j)=0
+      enddo
+      call MPI_Allgather(idfadis_start,1,MPI_INTEGER,
+     &  idfadis_start_all(0),1,MPI_INTEGER,FG_COMM,IERROR)
+      call MPI_Allgather(idfadis_end,1,MPI_INTEGER,
+     &  idfadis_end_all(0),1,MPI_INTEGER,FG_COMM,IERROR)
+      call MPI_Allgather(idfaphi_start,1,MPI_INTEGER,
+     &  idfaphi_start_all(0),1,MPI_INTEGER,FG_COMM,IERROR)
+      call MPI_Allgather(idfaphi_end,1,MPI_INTEGER,
+     &  idfaphi_end_all(0),1,MPI_INTEGER,FG_COMM,IERROR)
+      call MPI_Allgather(idfathe_start,1,MPI_INTEGER,
+     &  idfathe_start_all(0),1,MPI_INTEGER,FG_COMM,IERROR)
+      call MPI_Allgather(idfathe_end,1,MPI_INTEGER,
+     &  idfathe_end_all(0),1,MPI_INTEGER,FG_COMM,IERROR)
+      call MPI_Allgather(idfanei_start,1,MPI_INTEGER,
+     &  idfanei_start_all(0),1,MPI_INTEGER,FG_COMM,IERROR)
+      call MPI_Allgather(idfanei_end,1,MPI_INTEGER,
+     &  idfanei_end_all(0),1,MPI_INTEGER,FG_COMM,IERROR)
+      if (me.eq.0 .or. out1file) then
+        write (iout,*) "Partitioning of DFA work"
+        write (iout,'(5a10)') 'Rank','DFA_dis','DFA_phi','DFA_the',
+     &   'DFA_nei'
+        do i=0,nfgtasks-1
+          write (iout,'(i10,8i5)') i,idfadis_start_all(i),
+     &     idfadis_end_all(i),idfaphi_start_all(i),
+     &     idfaphi_end_all(i),idfathe_start_all(i),
+     &     idfathe_end_all(i),idfanei_start_all(i),
+     &     idfanei_end_all(i)
+        enddo
+      endif
 #else
       idfadis_start=1
       idfadis_end=idfadis