34 * NERBE3T ,ITAB,COMPID_RBE3S)
38 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
39#include "implicit_f.inc"
55 INTEGER IRBE3(NRBE3L,*),LRBE3(*),NODGLOB(*),WEIGHT(*),
56 * nerbe3y,nerbe3t(nrbe3g),itab(*),compid_rbe3s
61 INTEGER I,N,P, SZLOCRBE3(NRBE3G),PGLOBRBE3(NRBE3G),ID
62 INTEGER SNRBE3,SIZRBE3,SBUFSIZ,PSNRBE3
63 INTEGER NSN,IADG,IAD,SN,MN,NGRBE
64 INTEGER SECNDNODS(NRBE3G),ID_RBE3(NRBE3G)
65 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SENDBUF,RECBUF,
67 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: P0RECRBE3, IIN
71 INTEGER MSGOFF,MSGOFF2,MSGTYP,INFO,ATID,ATAG,ALEN
72 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,ISD(NSPMD)
92 IF (weight(lrbe3(irbe3(1,i)+n))==1)
93 . szlocrbe3(ngrbe) = szlocrbe3(ngrbe) + 1
95 sbufsiz = sbufsiz + szlocrbe3(ngrbe)
103 ALLOCATE(p0recrbe3(nrbe3g,nspmd))
105 p0recrbe3(i,1) = szlocrbe3(i)
110 CALL mpi_recv(p0recrbe3(1,p),nrbe3g,mpi_integer,it_spmd(p),
111 * msgtyp,spmd_comm_world,status,ierror)
117 CALL mpi_send(szlocrbe3,nrbe3g,mpi_integer,it_spmd(1),
118 . msgtyp,spmd_comm_world,ierror)
129 ALLOCATE(sendbuf(sbufsiz))
136 IF (weight(sn) == 1 )
THEN
138 sendbuf(snrbe3)=itab(sn)
144 CALL mpi_send(sendbuf,snrbe3,mpi_integer,it_spmd(1),msgtyp,
145 * spmd_comm_world,ierror)
154 IF (weight(mn)==1)
THEN
156 secndnods(ngrbe)=itab(mn)
166 IF(irbe3(3,i)/=0)
THEN
167 IF (weight(irbe3(3,i))==1)
THEN
182 ALLOCATE(iadrbe3(nrbe3g+1))
183 ALLOCATE(p0rbe3buf(nerbe3y))
188 snrbe3 = p0recrbe3(i,1)
190 snrbe3 = snrbe3 + p0recrbe3(i,n)
192 iadrbe3(i+1)=iadrbe3(i)+snrbe3
197 pglobrbe3(i)=iadrbe3(i)
204 iadg = iadrbe3(ngrbe)
208 IF (weight(sn) == 1 )
THEN
210 p0rbe3buf(iadg + snrbe3) = itab(sn)
213 pglobrbe3(ngrbe)=pglobrbe3(ngrbe) + snrbe3
222 sizrbe3 = sizrbe3 + p0recrbe3(i,p)
225 IF (sizrbe3 > 0)
THEN
226 ALLOCATE(recbuf(sizrbe3))
228 CALL mpi_recv(recbuf,sizrbe3,mpi_integer,it_spmd(p),msgtyp,
229 * spmd_comm_world,status,ierror)
234 DO n=1,p0recrbe3(i,p)
235 psnrbe3 = psnrbe3 + 1
236 p0rbe3buf(iadg + n) = recbuf(psnrbe3)
238 pglobrbe3(i) = pglobrbe3(i) + p0recrbe3(i,p)
247 IF (weight(mn)==1)
THEN
249 secndnods(ngrbe)=itab(mn)
258 IF(irbe3(3,i)/=0)
THEN
259 IF (weight(irbe3(3,i))==1)
THEN