40 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
41#include "implicit_f.inc"
55 INTEGER,
INTENT(IN) :: IAD_ELEM(2,*),FR_ELEM(*),ISEND(LEN)
56 INTEGER,
INTENT(INOUT) :: IRECV(LEN)
61 INTEGER LENCOM,MSGOFF ,MSGTYP
62 INTEGER STATUS(MPI_STATUS_SIZE),REQ_R(NSPMD),REQ_S(NSPMD)
64 INTEGER I,P,J,NOD,SIZ,L,IAD
69 siz = iad_elem(1,i+1)-iad_elem(1,i)
74 + irecv(l),siz,mpi_integer,it_spmd(i),msgtyp,
75 + spmd_comm_world,req_r(i),ierror)
82 siz = iad_elem(1,i+1)-iad_elem(1,i)
87 + isend(l),siz,mpi_integer,it_spmd(i),msgtyp,
88 + spmd_comm_world,req_s(i),ierror)
93 siz = iad_elem(1,i+1)-iad_elem(1,i)
95 CALL mpi_wait(req_r(i),status,ierror)
99 siz = iad_elem(1,i+1)-iad_elem(1,i)
101 CALL mpi_wait(req_s(i),status,ierror)
126 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
127#include "implicit_f.inc"
135#include "com01_c.inc"
136#include "com04_c.inc"
141 INTEGER,
INTENT(IN) :: IAD_STSH(*),FR_STSH(*),IAD_RTSH(*),FR_RTSH(*)
142 my_real ,
INTENT(INOUT) :: v_max(numnod)
147 INTEGER LENCOM,MSGOFF ,MSGTYP
148 my_real,
dimension(:),
ALLOCATABLE :: send_buf,rec_buf
149 INTEGER STATUS(MPI_STATUS_SIZE),REQ_R(NSPMD),REQ_S(NSPMD)
151 INTEGER P,J,NOD,SIZ,L,IAD
156 lencom = iad_stsh(nspmd+1) - iad_stsh(1)
159 ALLOCATE(send_buf(lencom),stat=ierror)
161 CALL ancmsg(msgid=20,anmode=aninfo)
165 lencom = iad_rtsh(nspmd+1) - iad_rtsh(1)
167 ALLOCATE(rec_buf(lencom),stat=ierror)
169 CALL ancmsg(msgid=20,anmode=aninfo)
178 siz = iad_rtsh(p+1)-iad_rtsh(p)
181 s rec_buf(l),siz,real,it_spmd(p),msgtyp,
182 g spmd_comm_world,req_r(p),ierror)
192 siz = iad_stsh(p+1)-iad_stsh(p)
195 DO j=iad_stsh(p),iad_stsh(p+1)-1
197 send_buf(l)=v_max(nod)
202 s send_buf(iad),siz,real,it_spmd(p),msgtyp,
203 g spmd_comm_world,req_s(p),ierror)
213 siz = iad_rtsh(p+1)-iad_rtsh(p)
215 CALL mpi_wait(req_r(p),status,ierror)
217 DO j=iad_rtsh(p),iad_rtsh(p+1)-1
219 v_max(nod) =
max(v_max(nod), rec_buf(l))
229 IF(iad_stsh(p+1)-iad_stsh(p)>0)
THEN
230 CALL mpi_wait(req_s(p),status,ierror)
233 IF (
ALLOCATED(send_buf))
DEALLOCATE(send_buf)
234 IF (
ALLOCATED(rec_buf))
DEALLOCATE(rec_buf)
258 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
259#include "implicit_f.inc"
267#include "com01_c.inc"
268#include "com04_c.inc"
273 INTEGER,
INTENT(IN) :: IAD_STSH(*),FR_STSH(*),IAD_RTSH(*),FR_RTSH(*)
274 my_real ,
INTENT(INOUT) :: a(3,numnod)
279 INTEGER LENCOM,MSGOFF ,MSGTYP
280 my_real,
dimension(:),
ALLOCATABLE :: send_buf,rec_buf
281 INTEGER STATUS(MPI_STATUS_SIZE),REQ_R(NSPMD),REQ_S(NSPMD)
283 INTEGER P,J,NOD,SIZ,L,IAD
288 lencom = iad_stsh(nspmd+1) - iad_stsh(1)
291 ALLOCATE(send_buf(3*lencom),stat=ierror)
293 CALL ancmsg(msgid=20,anmode=aninfo)
296 lencom = iad_rtsh(nspmd
298 ALLOCATE(rec_buf(3*lencom),stat=ierror)
300 CALL ancmsg(msgid=20,anmode=aninfo)
309 siz = 3*(iad_rtsh(p+1)-iad_rtsh(p))
312 s rec_buf(l),siz,real,it_spmd(p),msgtyp,
313 g spmd_comm_world,req_r(p),ierror)
323 siz = 3*(iad_stsh(p+1)-iad_stsh(p))
326 DO j=iad_stsh(p),iad_stsh(p+1)-1
328 send_buf(l) =a(1,nod)
329 send_buf(l+1)=a(2,nod)
330 send_buf(l+2)=a(3,nod)
335 s send_buf(iad),siz,real,it_spmd(p),msgtyp,
336 g spmd_comm_world,req_s(p),ierror)
346 siz = 3*(iad_rtsh(p+1)-iad_rtsh(p))
348 CALL mpi_wait(req_r(p),status,ierror)
350 DO j=iad_rtsh(p),iad_rtsh(p+1)-1
352 a(1,nod) = rec_buf(l)
353 a(2,nod) = rec_buf(l+1)
354 a(3,nod) = rec_buf(l+2)
364 IF(iad_stsh(p+1)-iad_stsh(p)>0)
THEN
365 CALL mpi_wait(req_s(p),status,ierror)
368 IF (
ALLOCATED(send_buf))
DEALLOCATE(send_buf)
369 IF (
ALLOCATED(rec_buf))
DEALLOCATE(rec_buf)
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)