41#include "implicit_f.inc"
57 . x(3,*), xxx(3,*), xxxa(3,*),
58 . v(3,*), vvv(3,*), vvva(3,*)
64 INTEGER II, I, ITAG, , ITAB(3,NSPMD-1),
65 . stat(mpi_status_size,2*(nspmd-1)), ierr, leni, lenr,
66 . iad, i1, i2, iad1, iad2,
67 . j, j1, itabl(3), pmain, msgoff
71 ALLOCATE(
fvspmd(ifv)%REQ(2*(nspmd-1)))
72 ALLOCATE(
fvspmd(ifv)%IADI(nspmd-1))
73 ALLOCATE(
fvspmd(ifv)%IADR(nspmd-1))
77 IF (
fvspmd(ifv)%RANK == 0)
THEN
79 itab(1,i) =
fvspmd(ifv)%ITAB(1,i)
80 itab(1,i) = itab(1,i)+
fvspmd(ifv)%ITAB(4,i)
81 itab(2,i) =
fvspmd(ifv)%ITAB(2,i)
82 itab(3,i) =
fvspmd(ifv)%ITAB(3,i)
90 fvspmd(ifv)%IADI(ii)=leni+1
91 fvspmd(ifv)%IADR(ii)=lenr+1
92 leni=leni+(itab(1,ii)+itab(2,ii)+itab(3,ii))
93 lenr=lenr+6*(itab(1,ii)+itab(2,ii)+itab(3,ii))
102 len=(itab(1,ii)+itab(2,ii)+itab(3,ii))
104 . itag,
fvspmd(ifv)%MPI_COMM,
fvspmd(ifv)%REQ(ii), ierr)
108 DO i=1,
fvspmd(ifv)%NSPMD-1
112 len=6*(itab(1,ii)+itab(2,ii)+itab(3,ii))
119 len = len +
fvspmd(ifv)%NNI_L
121 i1=
fvspmd(ifv)%IBUF_L(1,i)
122 i2=
fvspmd(ifv)%IBUF_L(2,i)
132 i1=
fvspmd(ifv)%IBUFA_L(1,i)
133 i2=
fvspmd(ifv)%IBUFA_L(2,i)
143 ELSE IF(
fvspmd(ifv)%RANK > 0)
THEN
146 itabl(1)=itabl(1)+
fvspmd(ifv)%NNI_L
147 itabl(2)=
fvspmd(ifv)%NNA_L
151 len=itabl(1)+itabl(2)+itabl(3)
152 ALLOCATE(
fvspmd(ifv)%IBUF(len),
fvspmd(ifv)%RBUF(6*len))
156 len = len +
fvspmd(ifv)%NNI_L
158 i1=
fvspmd(ifv)%IBUF_L(1,i)
159 i2=
fvspmd(ifv)%IBUF_L(2,i)
160 fvspmd(ifv)%IBUF(iad1-1+i)=i1
161 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+1)=x(1,i2)
162 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+2)=x(2,i2)
163 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+3)=x(3,i2)
164 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+4)=v(1,i2)
165 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+5)=v(2,i2)
166 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+6)=v(3,i2)
171 i1=
fvspmd(ifv)%IBUFA_L(1,i)
172 i2=
fvspmd(ifv)%IBUFA_L(2,i)
173 IF (i2 <= numnod)
THEN
175 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+1)=x(1,i2)
176 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+2)=x(2,i2)
177 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+3)=x(3,i2)
178 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+4)=v(1,i2)
179 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+5)=v(2,i2)
180 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+6)=v(3,i2)
181 fvspmd(ifv)%IBUF(iad1-1+i)=i1
183 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+1)=zero
184 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+2)=zero
185 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+3)=zero
186 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+4)=zero
187 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+5)=zero
188 fvspmd(ifv)%RBUF(iad2-1+6*(i-1)+6)=zero
189 fvspmd(ifv)%IBUF(iad1-1+i)=-i1
193 iad1=iad1+
fvspmd(ifv)%NNA_L
194 iad2=iad2+3*
fvspmd(ifv)%NNA_L
198 len=itabl(1)+itabl(2)+itabl(3)
203 len=6*(itabl(1)+itabl(2)+itabl(3))
233#include "implicit_f.inc"
241#include "com01_c.inc"
247 . x(3,*), xxx(3,*), xxxa(3,*),
248 . v(3,*), vvv(3,*), vvva(3,*)
254 INTEGER II, I, ITAG, LEN, ITAB(3,NSPMD-1),
255 . STAT(MPI_STATUS_SIZE,2*(NSPMD-1)), IERR, LENI, LENR,
256 . iad, i1, i2, iad1, iad2,
257 . j, j1, itabl(3), pmain, msgoff
262 IF (
fvspmd(ifv)%RANK == 0)
THEN
263 DO i=1,
fvspmd(ifv)%NSPMD-1
264 itab(1,i) =
fvspmd(ifv)%ITAB(1,i)
265 itab(1,i) = itab(1,i)+
fvspmd(ifv)%ITAB(4,i)
266 itab(2,i) =
fvspmd(ifv)%ITAB(2,i)
267 itab(3,i) =
fvspmd(ifv)%ITAB(3,i)
270 DO i=1,
fvspmd(ifv)%NSPMD-1
277 j1=
fvspmd(ifv)%IBUF(iad1-1+j)
278 xxx(1,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+1)
279 xxx(2,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+2)
280 xxx(3,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+3)
281 vvv(1,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+4)
282 vvv(2,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+5)
283 vvv(3,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+6)
286 iad2=iad2+6*itab(1,ii)
288 j1=
fvspmd(ifv)%IBUF(iad1-1+j)
290 xxxa(1,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+1)
291 xxxa(2,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+2)
292 xxxa(3,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+3)
293 vvva(1,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+4)
294 vvva(2,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+5)
295 vvva(3,j1)=
fvspmd(ifv)%RBUF(iad2-1+6*(j-1)+6)
299 iad2=iad2+6*itab(2,ii)
302 ELSE IF(
fvspmd(ifv)%RANK > 0)
THEN
307 DEALLOCATE(
fvspmd(ifv)%REQ)
308 DEALLOCATE(
fvspmd(ifv)%IADR)
309 DEALLOCATE(
fvspmd(ifv)%IADI)