39 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
40#include "implicit_f.inc"
51 INTEGER ICRK,NUM,NODGLOBXFE(*)
56 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF,EMPL
57 INTEGER SIZ,MSGTYP,I,K,NG,NREC,MSGOFF2,MSGTYP2,SIZ0,STEP
59 REAL,
DIMENSION(:,:),
ALLOCATABLE :: BUFSR,XGLOB
60 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IBUF
65 ALLOCATE(bufsr(3,ncrknodg))
66 ALLOCATE(ibuf(ncrknodg))
67 ALLOCATE(xglob(3,num))
73 DO i=1,
crknod(icrk)%CRKNUMNODS
74 step =
crknod(icrk)%CRKNUMNODS*(icrk-1)
76 ibuf(siz) = nodglobxfe(i+step)
77 bufsr(1,siz) =
crkavx(icrk)%XX(1,i)
78 bufsr(2,siz) =
crkavx(icrk)%XX(2,i)
79 bufsr(3,siz) =
crkavx(icrk)%XX(3,i)
87 CALL mpi_send(ibuf,siz,mpi_integer,it_spmd(1),msgtyp,
88 . spmd_comm_world,ierror)
91 CALL mpi_send(bufsr,3*siz,mpi_real4,it_spmd(1),msgtyp,
92 . spmd_comm_world,ierror)
98 DO i=1,
crknod(icrk)%CRKNUMNODS
99 step =
crknod(icrk)%CRKNUMNODS*(icrk-1)
100 ng = nodglobxfe(i+step)
101 xglob(1,ng) =
crkavx(icrk)%XX(1,i)
102 xglob(2,ng) =
crkavx(icrk)%XX(2,i)
103 xglob(3,ng) =
crkavx(icrk)%XX(3,i)
114 . spmd_comm_world,status,ierror)
116 CALL mpi_recv(ibuf,siz,mpi_integer,it_spmd(i),msgtyp,
117 . spmd_comm_world,status,ierror)
123 CALL mpi_recv(bufsr,siz*3,mpi_real4,it_spmd(i),msgtyp2,
124 . spmd_comm_world,status,ierror)
130 xglob(1,ng) = bufsr(1,k)
131 xglob(2,ng) = bufsr(2,k)
132 xglob(3,ng) = bufsr(3,k)
147 k=i+ncrknodg*(icrk-1)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)