40 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
41#include "implicit_f.inc"
56 my_real ,
INTENT(IN) :: buf_exch(n_anchor_remote_send,4)
57 my_real ,
INTENT(INOUT) :: a(3,numnod),stifn(numnod)
62 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
64 . STATUS(MPI_STATUS_SIZE),
65 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
66 . REQ_R(NSPMD),REQ_S(NSPMD),OFFSET
68 . rbuf(4*n_anchor_remote),sbuf(4*n_anchor_remote_send)
74 IF (n_anchor_remote > 0)
THEN
80 msgtyp = 10000 + nspmd*(i-1) + loc_proc
82 s rbuf(l),siz,real,it_spmd(i),msgtyp,
83 g spmd_comm_world,req_r(i),ierror)
90 IF (n_anchor_remote_send > 0)
THEN
95#include
"vectorize.inc"
98 sbuf(l ) = buf_exch(nod,1)
99 sbuf(l+1) = buf_exch(nod,2)
100 sbuf(l+2) = buf_exch(nod,3)
101 sbuf(l+3) = buf_exch(nod,4)
113 msgtyp = 10000 + nspmd*(loc_proc-1) + i
114 siz = iad_send(i+1)-iad_send(i)
117 s sbuf(l),siz,real,it_spmd(i),msgtyp,
118 g spmd_comm_world,req_s(i),ierror)
127 IF (n_anchor_remote > 0)
THEN
131 CALL mpi_wait(req_r(i),status,ierror)
133#include "vectorize.inc"
136 a(1,nod) = a(1,nod) + rbuf(l)
137 a(2,nod) = a(2,nod) + rbuf(l+1)
138 a(3,nod) = a(3,nod) + rbuf(l+2)
139 stifn(nod) = stifn(nod) + rbuf(l+3)
149 IF (n_anchor_remote_send > 0)
THEN
152 CALL mpi_wait(req_s(i),status,ierror)
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)