36 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
37#include "implicit_f.inc"
51 INTEGER IAD_ELEM(2,*),FR_ELEM(*), SIZE, LENR,WEIGHT_MD(*)
57 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
59 . STATUS(MPI_STATUS_SIZE),
60 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
61 . REQ_R(NSPMD),REQ_S(NSPMD),MSGOFF
63 my_real,
DIMENSION(:),
ALLOCATABLE :: sbuf,rbuf
68 ALLOCATE(sbuf(lenr+1))
69 ALLOCATE(rbuf(lenr+1))
77 siz = iad_elem(1,i+1)-iad_elem(1,i)
81 s rbuf(l),siz,real,it_spmd(i),msgtyp,
82 g spmd_comm_world,req_r(i),ierror)
93 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
103 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
107 siz = iad_send(i+1)-iad_send(i)
111 s sbuf(l),siz,real,it_spmd(i),msgtyp,
112 g spmd_comm_world,req_s(i),ierror)
118 nb_nod = iad_elem(1,i+1)-iad_elem(1,i)
120 CALL mpi_wait(req_r(i),status,ierror)
123 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
126 adm(nod) = adm(nod) + rbuf(l)
133 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
134 CALL mpi_wait(req_s(i),status,ierror)
141 IF(weight_md(i)==0) adm(i) = zero
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)