38 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
39#include
"implicit_f.inc"
53 INTEGER WEIGHT(*),NODGLOB(*),NUM,SRECBUF
58 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF
59 INTEGER SIZ,MSGTYP,I,K,NG,NREC,MSGOFF2
63 REAL,
DIMENSION(:,:) ,
ALLOCATABLE :: BUFSR
64 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IBUF
66 REAL,
DIMENSION(:,:),
ALLOCATABLE :: XGLOB
68 ALLOCATE(bufsr(3,numnodm), ibuf(numnodm))
69 ALLOCATE(xglob(3,num))
75 IF (weight(i)==1)
THEN
77 ibuf(siz) = nodglob(i)
89 CALL mpi_send(ibuf,siz,mpi_integer,it_spmd(1),msgtyp,
90 . spmd_comm_world,ierror)
93 CALL mpi_send(bufsr,3*siz,mpi_real,it_spmd(1),msgtyp,
94 . spmd_comm_world,ierror)
98 IF (weight(i)==1)
THEN
112 . spmd_comm_world,status,ierror)
115 CALL mpi_recv(ibuf,siz,mpi_integer,it_spmd(i),msgtyp,
116 . spmd_comm_world,status,ierror)
121 CALL mpi_recv(bufsr,3*siz,mpi_real,it_spmd(i),msgtyp,
122 . spmd_comm_world,status,ierror)
128 xglob(1,ng) = bufsr(1,k)
129 xglob(2,ng) = bufsr(2,k)
130 xglob(3,ng) = bufsr(3,k)
136 DEALLOCATE (bufsr,ibuf,xglob)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)