37 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
38#include "implicit_f.inc"
52 INTEGER WEIGHT(*),NODGLOB(*),NUM,SRECBUF
57 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF
58 INTEGER SIZ,MSGTYP,I,K,NG,NREC,MSGOFF2,SI,MSGTYP2
60 REAL,
DIMENSION(:,:),
ALLOCATABLE :: BUFSR,
61 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IBUF
68 ALLOCATE(bufsr(3,numnodm))
69 ALLOCATE(xglob(3,num))
70 ALLOCATE(ibuf(numnodm))
76 IF (weight(i)==1)
THEN
78 ibuf(siz) = nodglob(i)
90 CALL mpi_send(ibuf,siz,mpi_integer,it_spmd(1),msgtyp,
91 . spmd_comm_world,ierror)
95 CALL mpi_send(bufsr,3*siz,mpi_real4,it_spmd(1),msgtyp,
96 . spmd_comm_world,ierror)
102 IF (weight(i)==1)
THEN
117 . spmd_comm_world,status,ierror)
120 CALL mpi_recv(ibuf,siz,mpi_integer,it_spmd(i),msgtyp,
121 . spmd_comm_world,status,ierror)
127 CALL mpi_recv(bufsr,siz*3,mpi_real4,it_spmd(i),msgtyp2,
128 . spmd_comm_world,status,ierror)
135 xglob(1,ng) = bufsr(1,k)
136 xglob(2,ng) = bufsr(2,k)
137 xglob(3,ng) = bufsr(3,k)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)