47 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
48#include "implicit_f.inc"
67 TYPE(intbuf_struct_) INTBUF_TAB(*)
73 * req_si(nspmd),req_ri(nspmd)
74 INTEGER P,LENSD,LENRV,IADS(NSPMD+1),IADR(NSPMD+1),IERROR,
75 * siz,loc_proc,msgtyp,msgoff,ideb(ninter)
76 INTEGER NIN,NTY,INACTI
77 INTEGER J,L,NB,NN,K,N,NOD,MODE,LEN,ALEN,ND
79 *
DIMENSION(:),
ALLOCATABLE :: bbufs, bbufr
97 IF((nty==7.and.ipari(34,nin)==-2.and.inacti==7).OR.
98 . (nty==22.and.ipari(34,nin)==-2.and.inacti==7))
THEN
99 lensd = lensd +
nsnsi(nin)%P(p)*alen
100 lenrv = lenrv +
nsnfi(nin)%P(p)*alen
104 iadr(nspmd+1)=lenrv+1
107 ALLOCATE(bbufs(lensd),stat=ierror)
109 CALL ancmsg(msgid=20,anmode=aninfo)
116 ALLOCATE(bbufr(lenrv),stat=ierror)
118 CALL ancmsg(msgid=20,anmode=aninfo)
128 IF (p/= loc_proc)
THEN
131 inacti =ipari(22,nin)
132 IF((nty==7.and.ipari(34,nin)==-2.and.inacti==7).OR.
133 . (nty==22.and.ipari(34,nin)==-2.and.inacti==7))
THEN
137 nd =
nsvsi(nin)%P(ideb(nin)+nn)
138 nod=intbuf_tab(nin)%NSV(nd)
143 ideb(nin)=ideb(nin)+nb
151 . bbufs(iads(p)),siz,real ,it_spmd(p),msgtyp,
152 . spmd_comm_world,req_si(p),ierror )
163 siz=iadr(p+1)-iadr(p)
166 CALL mpi_recv( bbufr(iadr(p)),siz,real,it_spmd(p),msgtyp,
167 * spmd_comm_world,status,ierror )
170 inacti =ipari(22,nin)
174 IF((nty==7.and.ipari(34,nin)==-2.and.inacti==7).OR.
175 . (nty==22.and.ipari(34,nin)==-2.and.inacti==7))
THEN
179 msfi(nin)%P(ideb(nin)+k)=bbufr(iadr(p)+l)
184 ideb(nin)=ideb(nin)+nb
194 siz=iads(p+1)-iads(p)
197 CALL mpi_wait(req_si(p),status,ierror)
201 IF (
ALLOCATED(bbufs))
DEALLOCATE(bbufs)
202 IF (
ALLOCATED(bbufr))
DEALLOCATE(bbufr)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_isend(buf, cnt, datatype, dest, 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)