+#ifdef MPI
+#ifdef DEBUG
+ write (iout,*) "FG Processor",fg_rank," ioverlap_last",
+ & ioverlap_last," ioverlap",(ioverlap(i),i=1,ioverlap_last)
+ write (*,*) "FG Processor",fg_rank," ioverlap_last",ioverlap_last,
+ & " ioverlap",(ioverlap(i),i=1,ioverlap_last)
+ call flush(iout)
+#endif
+ if (nfgtasks.eq.1) return
+#ifdef DEBUG
+ write (iout,*) "Before MPI_Gather"
+ call flush(iout)
+#endif
+ call MPI_Gather(ioverlap_last,1,MPI_INTEGER,ioverlap_last_tab,
+ & 1,MPI_INTEGER,king,FG_COMM,IERROR)
+#ifdef DEBUG
+ write (iout,*) "After MPI_Gather"
+ call flush(iout)
+#endif
+#ifdef DEBUG
+ if (myrank.eq.king)
+ & write (iout,*) "FG Processor",fg_rank,"ioverlap_last_tab",
+ & (ioverlap_last_tab(i),i=0,nfgtasks-1)
+ call flush(iout)
+#endif
+ displs(0)=0
+ do i=1,nfgtasks-1
+ displs(i)=displs(i-1)+ioverlap_last_tab(i-1)
+ enddo
+ call MPI_Gatherv(ioverlap,ioverlap_last,MPI_INTEGER,
+ & ioverlap_all,ioverlap_last_tab,displs,MPI_INTEGER,king,
+ & FG_COMM,IERROR)
+#ifdef DEBUG
+ write (iout,*) "After Gatherv"
+ call flush(iout)
+#endif
+ if (fg_rank.gt.0) return
+ ioverlap_last=0
+ do i=0,nfgtasks-1
+ ioverlap_last=ioverlap_last+ioverlap_last_tab(i)
+ enddo
+#ifdef DEBUG
+ write (iout,*) "ioverlap_last",ioverlap_last," ioverlap_last",
+ & (ioverlap_all(i),i=1,ioverlap_last)
+ call flush(iout)
+#endif
+ ii=0
+ do i=1,ioverlap_last
+ ioverlap(ii+1)=ioverlap_all(i)
+ do j=ii,1,-1
+ if (ioverlap(ii+1).eq.ioverlap(j)) goto 11
+ enddo
+ ii=ii+1
+ 11 continue
+ enddo
+ ioverlap_last=ii
+#ifdef DEBUG
+ write (iout,*) "After summing: ioverlap_last",ioverlap_last,
+ & " ioverlap",(ioverlap(i),i=1,ioverlap_last)
+ call flush(iout)
+#endif
+#endif