36 . NODGLOB,WEIGHT,ITAB)
42 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
43#include "implicit_f.inc"
58 INTEGER NPBY(NNPBY,*),LPBY(*),FR_RBY2(3,*),IAD_RBY2(4,*)
59 INTEGER SBUFSPM,SBUFRECVM,SBUFSPO,NODGLOB(*),SPORBY,WEIGHT(*),
65 INTEGER PMAIN,I,J,K,L,S,B,M,P,N,
67 . II(2),PTRPO(NSPMD+1),PTRPOO(NSPMD+1)
69 INTEGER BUFSEND(NSPMD+1),BUFRECP(NSPMD+1),
70 . NBNOD,SIZ,LPO,NSN,PTR,NN,,
72 INTEGER,
DIMENSION(:),
ALLOCATABLE :: BUFSPM,BUFRECVM,PORBY,BUFSPO
74 INTEGER MAINND(NRBYKIN)
78 INTEGER ,MSGOFF2,MSGTYP
79 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,ISD(NSPMD)
84 ALLOCATE(bufspm(sbufspm))
85 ALLOCATE(bufrecvm(sbufrecvm+nspmd+1))
86 ALLOCATE(porby(sporby))
87 ALLOCATE(bufspo(sbufspo))
94 IF (loc_proc==abs(pmain))
THEN
95 mainnd(j)=nodglob( npby(1,j) )-1
119 . abs(pmain)==i .AND. loc_proc/=i)
THEN
126 IF (weight(lpby(k+s-1))==1)
THEN
127 bufspm(l+nr-1) = nodglob(lpby(k+s-1))-1
140 IF (iad_rby2(1,i)>0)
THEN
144 siz = bufsend(i+1)-bufsend(i)
145 CALL mpi_isend(bufspm(b),siz,mpi_integer,it_spmd(i),msgtyp,
146 . spmd_comm_world,isd(i),ierror)
154 IF (iad_rby2(2,i)>0)
THEN
158 . spmd_comm_world,status,ierror)
161 CALL mpi_recv(bufrecvm(l),siz,mpi_integer,it_spmd(i),msgtyp,
162 . spmd_comm_world,status,ierror)
171 IF (iad_rby2(1,i)>0)
THEN
180 IF (abs(pmain)==loc_proc)
THEN
187 bufspo(l+nr)=nodglob(lpby(k+j-1))-1
190 IF (weight(lpby(k+j-1)) ==1)
THEN
191 bufspo(l+nr)=nodglob(lpby(k+j-1))-1
201 IF (iad_rby2(2,p)>0)
THEN
203 IF (bufrecvm(m)==i)
THEN
206 bufrecp(p)=bufrecp(p)+2
208 DO j=bufrecp(p),bufrecp(p)+nbnod-1
209 bufspo(l+nr)=bufrecvm(j)
214 bufrecp(p)=bufrecp(p)+nbnod
225 IF (ispmd/=0 .and .l>0)
THEN
227 CALL mpi_send(bufspo,l,mpi_integer,it_spmd(1),msgtyp,
228 . spmd_comm_world,ierror)
236 recoisde(abs(fr_rby2(3,i)))=1
248 IF (recoisde(i)==1)
THEN
252 . spmd_comm_world,status,ierror)
255 CALL mpi_recv(porby(lpo),siz,mpi_integer,it_spmd(i),
256 . msgtyp, spmd_comm_world,status,ierror)
269 IF(ptr<ptrpoo(p+1))
THEN
270 IF(porby(ptr)==i)
THEN
277 ptrpo(p)=ptrpo(p) + nsn +2