47 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
48#include "implicit_f.inc"
63 INTEGER IPARI(NPARI,*),ITAB(*),TAGPENE(*)
73 INTEGER STATUS(MPI_STATUS_SIZE),
74 * req_si(nspmd),req_ri(nspmd)
75 INTEGER P,LENSD,LENRV,IADS(NSPMD+1),IADR(NSPMD+1),IERROR,
76 * siz,loc_proc,msgtyp,msgoff,ideb(ninter)
77 INTEGER NIN,NTY,INACTI
78 INTEGER J,L,NB,NN,K,N,NOD,MODE,LEN,ALEN,ND
80 *
DIMENSION(:),
ALLOCATABLE :: bbufs, bbufr
98 IF((nty==7.and.ipari(34,nin)==-2.and.inacti
99 . (nty==22.and.ipari(34,nin)==-2.and.inacti==7))
THEN
100 lensd = lensd +
nsnsi(nin)%P(p)*alen
101 lenrv = lenrv +
nsnfi(nin)%P(p)*alen
105 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)
129 IF (p/= loc_proc)
THEN
132 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)
143 bbufs(l+3)=mtf(10,nod)
144 IF(tagpene(nod) == p)
THEN
145 bbufs(l+4) = mtf(11,nod)
147 bbufs(l+4) = -abs(mtf(11,nod)*(1-em6))
150 bbufs(l+5)=mtf(12,nod)
151 bbufs(l+6)=mtf(13,nod)
152 bbufs(l+7)=mtf(14,nod)
156 ideb(nin)=ideb(nin)+nb
164 . bbufs(iads(p)),siz,real ,it_spmd(p),msgtyp,
165 . spmd_comm_world,req_si(p),ierror )
176 siz=iadr(p+1)-iadr(p)
179 CALL mpi_recv( bbufr(iadr(p)),siz,real,it_spmd(p),msgtyp,
180 * spmd_comm_world,status,ierror )
183 inacti =ipari(22,nin)
187 IF((nty==7.and.ipari(34,nin)==-2.and.inacti==7).OR.
188 . (nty==22.and.ipari(34,nin)==-2.and.inacti==7))
THEN
192 i18kafi(nin)%P(1,ideb(nin)+k)=bbufr(iadr(p)+l)
193 i18kafi(nin)%P(2,ideb(nin)+k)=bbufr(iadr(p)+l+1)
194 i18kafi(nin)%P(3,ideb(nin)+k)=bbufr(iadr(p)+l+2)
195 mtfi_pene(nin)%P(ideb(nin)+k)=bbufr(iadr(p)+l+3)
197 mtfi_n(nin)%P(1,ideb(nin)+k)=bbufr(iadr(p)+l+5)
198 mtfi_n(nin)%P(2,ideb(nin)+k)=bbufr(iadr(p)+l+6)
199 mtfi_n(nin)%P(3,ideb(nin)+k)=bbufr(iadr(p)+l+7)
204 ideb(nin)=ideb(nin)+nb
214 siz=iads(p+1)-iads(p)
217 CALL mpi_wait(req_si(p),status,ierror)
222 IF(tagpene(k)/=0)
THEN
223 mtf(11,k)=mtf(11,k)*(1-em6)
226 IF (
ALLOCATED(bbufs))
DEALLOCATE(bbufs)
227 IF (
ALLOCATED(bbufr))
DEALLOCATE(bbufr)
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)