47 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
48#include
"implicit_f.inc"
63 INTEGER IPARI(NPARI,*),ITAB(*)
68 TYPE(intbuf_struct_) INTBUF_TAB(*)
73 INTEGER STATUS(MPI_STATUS_SIZE),
74 * req_si(nspmd),req_ri(nspmd)
75 INTEGER P,LENSD,LENRV,IADS(NSPMD+1),IADR(NSPMD+1),,
76 * siz,loc_proc,msgtyp,msgoff,ideb(ninter)
77 INTEGER NIN,NTY,INACTI
78 INTEGER J,,NB,NN,K,N,NOD,MODE,LEN,ALEN,ND
80 *
DIMENSION(:),
ALLOCATABLE :: bbufs, bbufr
99 IF((nty==7.and.ipari(34,nin)==-2.and.inacti==7).OR.
100 . (nty==22.and.ipari(34,nin)==-2.and.inacti==7))
THEN
101 lensd = lensd +
nsnsi(nin)%P(p)*alen
102 lenrv = lenrv +
nsnfi(nin)%P(p)*alen
106 iadr(nspmd+1)=lenrv+1
108 ALLOCATE(bbufs(lensd),stat=ierror)
110 CALL ancmsg(msgid=20,anmode=aninfo)
117 ALLOCATE(bbufr(lenrv),stat=ierror)
119 CALL ancmsg(msgid=20,anmode=aninfo)
128 IF (p/= loc_proc)
THEN
131 inacti =ipari(22,nin)
133 IF((nty==7.and.ipari(34,nin)==-2.and.inacti==7).OR.
134 . (nty==22.and.ipari(34,nin)==-2.and.inacti==7))
THEN
138 nd =
nsvsi(nin)%P(ideb(nin)+nn)
139 nod=intbuf_tab(nin)%NSV(nd)
141 bbufs(l+1)=mtf(2,nod)
142 bbufs(l+2)=mtf(3,nod)
151 ideb(nin)=ideb(nin)+nb
160 . bbufs(iads(p)),siz,real ,it_spmd(p),msgtyp,
161 . spmd_comm_world,req_si(p),ierror )
171 siz=iadr(p+1)-iadr(p)
174 CALL mpi_recv( bbufr(iadr(p)),siz,real,it_spmd(p),msgtyp,
175 * spmd_comm_world,status,ierror )
178 inacti =ipari(22,nin)
182 IF((nty==7.and.ipari(34,nin)==-2.and.inacti==7).OR.
183 . (nty==22.and.ipari(34,nin)==-2.and.inacti==7))
THEN
187 mtfi_v(nin)%P(1,ideb(nin)+k)=bbufr(iadr(p)+l)
188 mtfi_v(nin)%P(2,ideb(nin)+k)=bbufr(iadr(p)+l+1)
189 mtfi_v(nin)%P(3,ideb(nin)+k)=bbufr(iadr(p)+l+2)
197 ideb(nin)=ideb(nin)+nb
203 siz=iads(p+1)-iads(p)
205 CALL mpi_wait(req_si(p),status,ierror)
209 IF (
ALLOCATED(bbufs))
DEALLOCATE(bbufs)
210 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)