33 1 X ,NNG ,GRNOD, DD_R2R, WEIGHT, BUFR)
37 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
38#include "implicit_f.inc"
51 INTEGER NNG, GRNOD(*), DD_R2R(*), WEIGHT(*)
58 INTEGER I, P, N, L, IERROR, ,LOC_PROC, MSGTYP, BUFSIZ,
59 . status(mpi_status_size)
80 s bufr(1,l+1),bufsiz,real,it_spmd(p),msgtyp,
81 g spmd_comm_world,status,ierror)
88 s bufr,l*3,real,it_spmd(1),msgtyp,
89 g spmd_comm_world,ierror)
105 1 X ,NNG ,GRNOD, DD_R2R, WEIGHT, BUFR)
109 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
110#include "implicit_f.inc"
118#include "com01_c.inc"
123 INTEGER NNG, GRNOD(*), DD_R2R(*), WEIGHT(*)
130 INTEGER I, P, N, L, IERROR, MSGOFF,LOC_PROC, , BUFSIZ,
131 . STATUS(MPI_STATUS_SIZE)
152 s bufr(1,l+1),bufsiz,mpi_double_precision,it_spmd(p),
153 g msgtyp,spmd_comm_world,status,ierror)
160 s bufr,l*3,mpi_double_precision,it_spmd(1),msgtyp,
161 g spmd_comm_world,ierror)
176!|| spmd_comm_world_mod ../engine/source/mpi/spmd_comm_world.f90
179 1 M ,NNG ,GRNOD, DD_R2R, WEIGHT, BUFR)
183 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
184#include "implicit_f.inc"
192#include "com01_c.inc"
197 INTEGER NNG, GRNOD(*), DD_R2R(*), WEIGHT(*)
204 INTEGER I, P, N, L, IERROR, MSGOFF,LOC_PROC, MSGTYP, BUFSIZ,
205 . STATUS(MPI_STATUS_SIZE)
224 s bufr(l+1),bufsiz,real,it_spmd(p),msgtyp,
225 g spmd_comm_world,status,ierror)
232 s bufr,l,real,it_spmd(1),msgtyp,
233 g spmd_comm_world,ierror)
250 1 RBY ,NNG ,GRNOD, DD_R2R, WEIGHT, IEX, BUFR)
258 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
259#include "implicit_f.inc"
267#include "com01_c.inc"
268#include "param_c.inc"
273 INTEGER NNG, GRNOD(*), DD_R2R(*), WEIGHT(*), IEX
275 . BUFR(9,*), RBY(NRBY,*)
280 INTEGER I, P, N, L, IERROR, MSGOFF,LOC_PROC, MSGTYP, BUFSIZ,
281 . STATUS(MPI_STATUS_SIZE),NOD
289 IF(weight(nod)==1)
THEN
293 bufr(p,l) = rby(16+p,n)
303 s bufr(1,l+1),bufsiz,real,it_spmd(p),msgtyp,
304 g spmd_comm_world,status,ierror)
311 s bufr,l*9,real,it_spmd(1),msgtyp,
312 g spmd_comm_world,ierror)
336 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
337#include "implicit_f.inc"
345#include "com01_c.inc"
346#include "com04_c.inc"
351 INTEGER NNG, GRNOD(*), WEIGHT(*),IEX,TLEL,TLELN,TCNEL,TCNELDB
356 INTEGER I, P, N, L(6), IERROR, MSGOFF, LOC_PROC, MSGTYP,
357 . STATUS(MPI_STATUS_SIZE),NB(6),OFFSET1
378 l(3) = numels+numelq+numelc+numelt+numelp+numelr+numeltg
399 s nb,6,mpi_integer,it_spmd(p),msgtyp,
400 g spmd_comm_world,status,ierror)
409 offset1 = offset1 + nb(3)
418 s l,6,mpi_integer,it_spmd(1),msgtyp,
419 g spmd_comm_world,ierror)
436 1 ITAB ,NNG ,GRNOD, DD_R2R, WEIGHT, IBUF,FLAG)
440 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
441#include "implicit_f.inc"
449#include "com01_c.inc"
454 INTEGER NNG,GRNOD(*),DD_R2R(*),WEIGHT(*),IBUF(*),ITAB(*),FLAG
459 INTEGER I, P, N, L, IERROR, MSGOFF
485 s ibuf(l+1),bufsiz,mpi_integer,it_spmd(p),msgtyp,
486 g spmd_comm_world,status,ierror)
493 s ibuf,l,mpi_integer,it_spmd(1),msgtyp,
494 g spmd_comm_world,ierror)
511 1 ITAB ,NNG ,IEX, IBUF, FLAG)
519 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
520#include "implicit_f.inc"
528#include "com01_c.inc"
533 INTEGER NNG, IEX,IBUF(*),ITAB(*),FLAG
538 INTEGER I, P, L, IERROR, MSGOFF, LOC_PROC, MSGTYP, BUFSIZ,
539 . status(mpi_status_size)
556 ELSEIF (flag==2)
THEN
557 bufsiz =
nbeln(iex,p)
558 ELSEIF (flag==3)
THEN
560 ELSEIF (flag==4)
THEN
568 s ibuf(l+1),bufsiz,mpi_integer,it_spmd(p),msgtyp,
569 g spmd_comm_world,status,ierror)
572 IF ((flag==1).OR.(flag>2))
THEN
574 ibuf(l+i)=ibuf(l+i)+
offset(p)
581 ELSEIF (flag==2)
THEN
583 ELSEIF (flag==3)
THEN
585 ELSEIF (flag==4)
THEN
594 s itab,nng,mpi_integer,it_spmd(1),msgtyp,
595 g spmd_comm_world,ierror)
613 1 ITAB,NNG,GRNOD,DD_R2R,WEIGHT,IBUF,IEX,DBNBUF,
622 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
623#include "implicit_f.inc"
631#include "com01_c.inc"
636 INTEGER NNG,GRNOD(*),DD_R2R(*),WEIGHT(*),IBUF(*),ITAB(*),
637 . IEX,FLAG,DBNBUF(*),DDBUF(*)
642 INTEGER I, P, N, L, IERROR, MSGOFF,LOC_PROC, MSGTYP, BUFSIZ,
643 . STATUS(MPI_STATUS_SIZE)
672 s ibuf(l+1),bufsiz,mpi_integer,it_spmd(p),msgtyp,
673 g spmd_comm_world,status,ierror)
682 s ibuf,l,mpi_integer,it_spmd(1),msgtyp,
683 g spmd_comm_world,ierror)
703 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
704#include "implicit_f.inc"
712#include "com01_c.inc"
722 INTEGER P, IERROR, MSGOFF, LOC_PROC, MSGTYP,
723 . STATUS(MPI_STATUS_SIZE),BUFSIZ,TOTO
737 s addr,bufsiz,mpi_character,it_spmd(p),msgtyp,
738 g spmd_comm_world,ierror)
743 s addr,bufsiz,mpi_character,it_spmd(1),msgtyp,
744 g spmd_comm_world,status,ierror)
763 1 M ,NNG ,GRNOD, DD_R2R, WEIGHT,
764 2 BUFR ,IAD_ELEM,FR_ELEM, LRBUF,IEX )
772 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
773#include "implicit_f.inc"
781#include "com01_c.inc"
782#include "com04_c.inc"
787 INTEGER NNG,LRBUF,IEX,
788 . GRNOD(*),DD_R2R(*),(*),IAD_ELEM(2,*),FR_ELEM(*)
795 INTEGER I, P, N, L, IERROR, MSGOFF,
796 . LOC_PROC, MSGTYP, BUFSIZ,
798 . status(mpi_status_size), itag(numnod)
804 l = dd_r2r(1)+
dbn(iex,1)
806 IF((dd_r2r(p)+
dbn(iex,p))>0)
THEN
807 bufsiz = dd_r2r(p)+
dbn(iex,p)
810 s bufr(l+1),bufsiz,real,it_spmd(p),msgtyp,
811 g spmd_comm_world,ierror)
812 l = l + dd_r2r(p)+
dbn(iex,p)
819 s bufr,bufsiz,real,it_spmd(1),msgtyp,
820 g spmd_comm_world,status,ierror)
826 dbl = dd_r2r(loc_proc)
852 1 M ,NNG ,GRNOD, DD_R2R, WEIGHT,
853 2 BUFR ,IAD_ELEM,FR_ELEM, LRBUF )
857 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
858#include "implicit_f.inc"
866#include "com01_c.inc"
867#include "com04_c.inc"
873 . GRNOD(*),DD_R2R(*),WEIGHT(*),IAD_ELEM(2,*),FR_ELEM(*)
880 INTEGER I, P, N, L, IERROR, MSGOFF,
881 . LOC_PROC, MSGTYP, BUFSIZ,
883 . STATUS(MPI_STATUS_SIZE), ITAG(NUMNOD)
891 IF((dd_r2r(p))>0)
THEN
895 s bufr(l+1),bufsiz,real,it_spmd(p),msgtyp,
896 g spmd_comm_world,ierror)
900 ELSEIF(dd_r2r(loc_proc)>0)
THEN
901 bufsiz = dd_r2r(loc_proc)
904 s bufr,bufsiz,real,it_spmd(1),msgtyp,
905 g spmd_comm_world,status,ierror)
927!||--- called by ------------------------------------------------------
936 1 A ,NNG ,GRNOD, DD_R2R, WEIGHT,
937 2 BUFR ,IAD_ELEM,FR_ELEM, LRBUF,IEX )
945 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
946#include "implicit_f.inc"
954#include "com01_c.inc"
955#include "com04_c.inc"
960 INTEGER NNG,LRBUF,IEX,
961 . GRNOD(*),DD_R2R(*),WEIGHT(*),IAD_ELEM(2,*),FR_ELEM(*)
968 INTEGER I, P, N, L, IERROR, MSGOFF, DBL,
969 . LOC_PROC, MSGTYP, BUFSIZ,
971 . STATUS(MPI_STATUS_SIZE), ITAG(NUMNOD)
980 bufsiz = (dd_r2r(p)+
dbn(iex,p))*3
984 g spmd_comm_world,ierror)
985 l = l + dd_r2r(p)+
dbn(iex,p)
993 g spmd_comm_world,status,ierror)
1000 dbl = dd_r2r(loc_proc)
1004 IF(weight(n)==1)
THEN
1011 a(1,n) = bufr(1,dbl)
1012 a(2,n) = bufr(2,dbl)
1013 a(3,n) = bufr(3,dbl)
1031 1 A ,NNG ,GRNOD, DD_R2R,WEIGHT,
1032 2 BUFR ,IAD_ELEM,FR_ELEM, LRBUF ,MS ,
1041 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1042#include "implicit_f.inc"
1050#include "com01_c.inc"
1051#include "com04_c.inc"
1052#include "task_c.inc"
1056 INTEGER NNG,LRBUF,IEX,
1057 . GRNOD(*),DD_R2R(*),WEIGHT(*),IAD_ELEM(2,*),FR_ELEM(*)
1059 . bufr(3,*), a(3,*), ms(*), v(3,*), wf, wf2
1064 INTEGER I, P, N, L, IERROR, MSGOFF, MSGOFF2, DBL,
1065 . LOC_PROC, MSGTYP, BUFSIZ,
1067 . STATUS(MPI_STATUS_SIZE)
1069 . DF1, DF2, DF3, WFB
1078 IF(loc_proc==1)
THEN
1079 l = dd_r2r(1)+
dbn(iex,1)
1081 IF((dd_r2r(p)+
dbn(iex,p))>0)
THEN
1082 bufsiz = (dd_r2r(p)+
dbn(iex,p))*3
1085 s bufr(1,l+1),bufsiz,real,it_spmd(p),msgtyp,
1086 g spmd_comm_world,ierror)
1087 l = l + dd_r2r(p)+
dbn(iex,p)
1094 s bufr,bufsiz,real,it_spmd(1),msgtyp,
1095 g spmd_comm_world,status,ierror)
1099 dbl = dd_r2r(loc_proc)
1103 IF(weight(n)==1)
THEN
1105 df1 = ms(n)*bufr(1,l)-a(1,n)
1106 df2 = ms(n)*bufr(2,l)-a(2,n)
1107 df3 = ms(n)*bufr(3,l)-a(3,n)
1108 a(1,n) = ms(n)*bufr(1,l)
1109 a(2,n) = ms(n)*bufr(2,l)
1110 a(3,n) = ms(n)*bufr(3,l)
1112 wf = wf + (df1*v(1,n)+df2*v(2,n)+df3*v(3,n))/two
1113 wf2= wf2+ (df1*a(1,n)+df2*a(2,n)+df3*a(3,n))/(two*ms(n))
1116 df1 = ms(n)*bufr(1,dbl)-a(1,n)
1117 df2 = ms(n)*bufr(2,dbl)-a(2,n)
1118 df3 = ms(n)*bufr(3,dbl)-a(3,n)
1119 a(1,n) = ms(n)*bufr(1,dbl)
1120 a(2,n) = ms(n)*bufr(2,dbl)
1121 a(3,n) = ms(n)*bufr(3,dbl)
1126 IF(loc_proc==1)
THEN
1130 s wfb,1,real,it_spmd(p),msgtyp,
1131 g spmd_comm_world,status,ierror)
1137 s wf,1,real,it_spmd(1),msgtyp,
1138 g spmd_comm_world,ierror)
1143 IF(loc_proc==1)
THEN
1147 s wfb,1,real,it_spmd(p),msgtyp,
1148 g spmd_comm_world,status,ierror)
1154 s wf2,1,real,it_spmd(1),msgtyp,
1155 g spmd_comm_world,ierror)
1161!||====================================================================
1167!||--- uses -----------------------------------------------------
1171 1 A ,AR ,STIFN,STIFR ,MS ,
1172 2 IAD_ELEM ,FR_ELEM, SIZE,
1173 3 LENR ,DD_R2R,DD_R2R_ELEM,FLAG)
1178 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1179#include "implicit_f.inc"
1187#include "com01_c.inc"
1188#include "task_c.inc"
1189#include "tabsiz_c.inc"
1193 INTEGER IAD_ELEM(2,*),FR_ELEM(*), SIZE, LENR,
1194 . DD_R2R(NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),FLAG
1196 . A(3,*),AR(3,*),STIFN(*),STIFR(*),MS(*)
1201 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
1203 . STATUS(MPI_STATUS_SIZE),
1204 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
1205 . REQ_R(NSPMD),REQ_S(NSPMD),OFFSET,MSGOFF
1213 loc_proc = ispmd + 1
1218 siz = size*(dd_r2r(i+1,2)-dd_r2r(i,2))
1222 s rbuf(l),siz,real,it_spmd(i),msgtyp,
1223 g spmd_comm_world,req_r(i),ierror)
1234#include "vectorize.inc"
1235 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1236 nod = dd_r2r_elem(j)
1239 sbuf(l+1) = a(2,nod)
1240 sbuf(l+2) = a(3,nod)
1241 sbuf(l+3) = ar(1,nod)
1242 sbuf(l+4) = ar(2,nod)
1243 sbuf(l+5) = ar(3,nod)
1245 sbuf(l ) = stifn(nod)
1246 sbuf(l+1) = stifr(nod)
1251#include "vectorize.inc"
1252 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1253 nod = dd_r2r_elem(j)
1256 sbuf(l+1) = a(2,nod)
1257 sbuf(l+2) = a(3,nod)
1259 sbuf(l ) = stifn(nod)
1274 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1276 siz = iad_send(i+1)-iad_send(i)
1279 s sbuf(l),siz,real,it_spmd(i),msgtyp,
1280 g spmd_comm_world,req_s(i),ierror)
1287 offset = dd_r2r(nspmd+1,1)-1
1290 nb_nod = dd_r2r(i+1,2)-dd_r2r(i,2)
1292 CALL mpi_wait(req_r(i),status,ierror)
1296#include "vectorize.inc"
1297 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1298 nod = dd_r2r_elem(offset+j)
1301 a(2,nod) = rbuf(l+1)
1302 a(3,nod) = rbuf(l+2)
1303 ar(1,nod)= rbuf(l+3)
1304 ar(2,nod)= rbuf(l+4)
1305 ar(3,nod)= rbuf(l+5)
1308 stifr(nod)= rbuf(l+1)
1313#include "vectorize.inc"
1314 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1315 nod = dd_r2r_elem(offset+j)
1318 a(2,nod) = rbuf(l+1)
1319 a(3,nod) = rbuf(l+2)
1334 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1335 CALL mpi_wait(req_s(i),status,ierror)
1352 1 A ,AR, V, VR ,MS , IN,
1353 2 IAD_ELEM ,FR_ELEM, SIZE, WF, WF2,
1354 3 LENR ,DD_R2R,DD_R2R_ELEM,WEIGHT,FLAG)
1359 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1360#include "implicit_f.inc"
1368#include "com01_c.inc"
1369#include "task_c.inc"
1370#include "tabsiz_c.inc"
1374 INTEGER IAD_ELEM(2,*),FR_ELEM(*), SIZE, LENR,
1375 . DD_R2R(NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),FLAG,
1378 . A(3,*),AR(3,*), V(3,*),VR(3,*),MS(*),IN(*),
1384 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
1386 . STATUS(MPI_STATUS_SIZE),
1387 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
1388 . REQ_R(NSPMD),REQ_S(NSPMD),OFFSET,MSGOFF
1391 . SBUF(SIZE*LENR ),DF1,DF2,DF3,DF4,DF5,DF6
1401 siz = size*(dd_r2r(i+1,2)-dd_r2r(i,2))
1405 s rbuf(l),siz,real,it_spmd(i),msgtyp,
1406 g spmd_comm_world,req_r(i),ierror)
1417#include "vectorize.inc"
1418 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1419 nod = dd_r2r_elem(j)
1421 sbuf(l+1) = a(2,nod)
1422 sbuf(l+2) = a(3,nod)
1423 sbuf(l+3) = ar(1,nod)
1424 sbuf(l+4) = ar(2,nod)
1425 sbuf(l+5) = ar(3,nod)
1433#include "vectorize.inc"
1434 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1435 nod = dd_r2r_elem(j)
1437 sbuf(l+1) = a(2,nod)
1438 sbuf(l+2) = a(3,nod)
1455 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1457 siz = iad_send(i+1)-iad_send(i)
1460 s sbuf(l),siz,real,it_spmd(i),msgtyp,
1461 g spmd_comm_world,req_s(i),ierror)
1468 offset = dd_r2r(nspmd+1,1)-1
1471 nb_nod = dd_r2r(i+1,2)-dd_r2r(i,2)
1473 CALL mpi_wait(req_r(i),status,ierror)
1477#include "vectorize.inc"
1478 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1479 nod = dd_r2r_elem(offset+j)
1480 IF(weight(nod)==1)
THEN
1481 df1 = rbuf(l)-a(1,nod)
1482 df2 = rbuf(l+1)-a(2,nod)
1483 df3 = rbuf(l+2)-a(3,nod)
1484 df4 = rbuf(l+3)-ar(1,nod)
1485 df5 = rbuf(l+4)-ar(2,nod)
1486 df6 = rbuf(l+5)-ar(3,nod)
1489 a(2,nod) = rbuf(l+1)
1490 a(3,nod) = rbuf(l+2)
1491 ar(1,nod)= rbuf(l+3)
1492 ar(2,nod)= rbuf(l+4)
1493 ar(3,nod)= rbuf(l+5)
1500 IF(weight(nod)==1)
THEN
1501 wf = wf + (df1*v(1,nod)+df2*v(2,nod)+
1503 wf2= wf2+ (df1*a(1,nod)+df2*a(2,nod)+
1504 . df3*a(3,nod))/(two*ms(nod))
1505 wf = wf + (df4*vr(1,nod)+df5*vr(2,nod)+
1506 . df6*vr(3,nod))/two
1507 wf2= wf2+ (df4*ar(1,nod)+df5*ar(2,nod)+
1508 . df6*ar(3,nod))/(two*in(nod))
1512#include "vectorize.inc"
1513 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1514 nod = dd_r2r_elem(offset+j)
1515 IF(weight(nod)==1)
THEN
1516 df1 = rbuf(l)-a(1,nod)
1517 df2 = rbuf(l+1)-a(2,nod)
1518 df3 = rbuf(l+2)-a(3,nod)
1521 a(2,nod) = rbuf(l+1)
1522 a(3,nod) = rbuf(l+2)
1528 IF(weight(nod)==1)
THEN
1529 wf = wf + (df1*v(1,nod)+df2*v(2,nod)+
1531 wf2= wf2+ (df1*a(1,nod)+df2*a(2,nod)+
1532 . df3*a(3,nod))/(two*ms(nod))
1544 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1545 CALL mpi_wait(req_s(i),status,ierror)
1562 1 NPBY , RBY ,IAD_ELEM ,FR_ELEM, SIZE,
1563 2 LENR ,DD_R2R,DD_R2R_ELEM ,X)
1568 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1569#include "implicit_f.inc"
1570#include "param_c.inc"
1578#include "com01_c.inc"
1579#include "com04_c.inc"
1580#include "task_c.inc"
1581#include "tabsiz_c.inc"
1585 INTEGER IAD_ELEM(2,*),FR_ELEM(*), SIZE, LENR,
1586 . dd_r2r(nspmd+1,sdd_r2r),dd_r2r_elem(*),
1590 DOUBLE PRECISION X(3,*)
1595 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
1597 . STATUS(MPI_STATUS_SIZE),
1598 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
1599 . REQ_R(NSPMD),REQ_S(NSPMD),OFFSET,IDRBY,MSGOFF
1601 . RBUF(SIZE*LENR ),SBUF(SIZE*LENR )
1606 LOC_PROC = ispmd + 1
1611 siz = size*(dd_r2r(i+1,2)-dd_r2r(i,2))
1615 s rbuf(l),siz,mpi_double_precision,it_spmd(i),
1616 g msgtyp,spmd_comm_world,req_r(i),ierror)
1627#include "vectorize.inc"
1628 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1630 nod = dd_r2r_elem(j)
1632 IF (npby(1,k)==nod) idrby = k
1636 sbuf(l+k-1) = rby(k,idrby)
1638 sbuf(l+26-1) = x(1,nod)
1639 sbuf(l+27-1) = x(2,nod)
1640 sbuf(l+28-1) = x(3,nod)
1658 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1660 siz = iad_send(i+1)-iad_send(i)
1663 s sbuf(l),siz,mpi_double_precision,it_spmd(i),
1664 g msgtyp,spmd_comm_world,req_s(i),ierror)
1671 offset = dd_r2r(nspmd+1,1)-1
1674 nb_nod = dd_r2r(i+1,2)-dd_r2r(i,2)
1676 CALL mpi_wait(req_r(i),status,ierror)
1679#include "vectorize.inc"
1680 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1682 nod = dd_r2r_elem(offset+j)
1684 IF (npby(1,k)==nod) idrby = k
1688 rby(k,idrby) = rbuf(l+k-1)
1690 x(1,nod) = rbuf(l+26-1)
1691 x(2,nod) = rbuf(l+27-1)
1692 x(3,nod) = rbuf(l+28-1)
1704 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1705 CALL mpi_wait(req_s(i),status,ierror)
1730 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1731#include "implicit_f.inc"
1739#include "com01_c.inc"
1740#include "task_c.inc"
1750 INTEGER P, IERROR, MSGOFF,LOC_PROC,
1751 . msgtyp,status(mpi_status_size)
1760 IF(loc_proc==1)
THEN
1764 s wfb,1,real,it_spmd(p),msgtyp,
1765 g spmd_comm_world,status,ierror)
1771 s wf,1,real,it_spmd(1),msgtyp,
1772 g spmd_comm_world,ierror)
1777 IF(loc_proc==1)
THEN
1781 s wfb,1,real,it_spmd(p),msgtyp,
1782 g spmd_comm_world,status,ierror)
1788 s wf2,1,real,it_spmd(1),msgtyp,
1789 g spmd_comm_world,ierror)
1808 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1809#include "implicit_f.inc"
1817#include "com01_c.inc"
1818#include "task_c.inc"
1822 INTEGER TAGELG(*),TAGEL(*),LEN(*)
1827 INTEGER I, P, L, IERROR, MSGOFF, LOC_PROC, MSGTYP,
1828 . STATUS(MPI_STATUS_SIZE)
1835 IF(loc_proc==1)
THEN
1836 DO i=1,len(loc_proc)
1844 s tagelg(l+1),len(p),mpi_integer,it_spmd(p),msgtyp,
1845 g spmd_comm_world,status,ierror)
1849 ELSEIF(len(loc_proc)>0)
THEN
1852 s tagel,len(loc_proc),mpi_integer,it_spmd(1),msgtyp,
1853 g spmd_comm_world,ierror)
1869 1 ITAG,IAD_ELEM ,FR_ELEM,DD_R2R,DD_R2R_ELEM,LENR)
1874 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1875#include "implicit_f.inc"
1883#include "com01_c.inc"
1884#include "com04_c.inc"
1885#include "task_c.inc"
1886#include "tabsiz_c.inc"
1890 INTEGER IAD_ELEM(2,*),FR_ELEM(*),
1891 . DD_R2R(NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),
1897 INTEGER MSGTYP,I,,LOC_PROC,IERROR,
1899 . STATUS(MPI_STATUS_SIZE),
1900 . iad_send(nspmd+1),iad_recv(nspmd+1),
1901 . req_r(nspmd),req_s(nspmd),offset,
1902 . sbuf(2*lenr),rbuf(2*lenr), msgoff
1907 loc_proc = ispmd + 1
1912 siz = 2*(dd_r2r(i+1,2)-dd_r2r(i,2))
1916 s rbuf(l),siz,mpi_integer,it_spmd(i),msgtyp,
1917 g spmd_comm_world,req_r(i),ierror)
1927#include "vectorize.inc"
1928 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1929 nod = dd_r2r_elem(j)
1931 sbuf(l+1) = itag(numnod+nod)
1943 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1945 siz = iad_send(i+1)-iad_send(i)
1948 s sbuf(l),siz,mpi_integer,it_spmd(i),msgtyp,
1949 g spmd_comm_world,req_s(i),ierror)
1956 offset = dd_r2r(nspmd+1,1)-1
1959 nb_nod = dd_r2r(i+1,2)-dd_r2r(i,2)
1961 CALL mpi_wait(req_r(i),status,ierror)
1963#include "vectorize.inc"
1964 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1965 nod = dd_r2r_elem(offset+j)
1967 itag(numnod+nod) = rbuf(l+1)
1978 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1979 CALL mpi_wait(req_s(i),status,ierror)
1992!||--- calls -----------------------------------------------------
2000 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
2001#include "implicit_f.inc"
2009#include "com01_c.inc"
2010#include "task_c.inc"
2011#include "tabsiz_c.inc"
2015 INTEGER IAD_ELEM(2,*),FR_ELEM(*),
2016 . DD_R2R(+1,SDD_R2R),DD_R2R_ELEM(*),LENR
2023 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
2026 . iad_send(nspmd+1),iad_recv(nspmd+1),
2027 . req_r(nspmd),req_s(nspmd),offset
2029 . rbuf(3*lenr ),sbuf(3*lenr )
2033 loc_proc = ispmd + 1
2036 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
2039 siz = 3*(dd_r2r(i+1,1)-dd_r2r(i,1))
2041 msgtyp = 10000 + nspmd*(i-1) + loc_proc
2043 s rbuf(l),siz,real,it_spmd(i),msgtyp,
2044 g spmd_comm_world,req_r(i),ierror)
2052 offset = dd_r2r(nspmd+1,1)-1
2055#include "vectorize.inc"
2056 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
2057 nod = dd_r2r_elem(offset+j)
2059 sbuf(l+1) = a(2,nod)
2060 sbuf(l+2) = a(3,nod)
2072 IF(dd_r2r(i+1,2)-dd_r2r(i,2)>0)
THEN
2073 msgtyp = 10000 + nspmd*(loc_proc-1) + i
2074 siz = iad_send(i+1)-iad_send(i)
2077 s sbuf(l),siz,real,it_spmd(i),msgtyp,
2078 g spmd_comm_world,req_s(i),ierror)
2086 nb_nod = dd_r2r(i+1,1)-dd_r2r(i,1)
2088 CALL mpi_wait(req_r(i),status,ierror)
2090#include "vectorize.inc"
2091 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
2092 nod = dd_r2r_elem(j)
2094 a(2,nod) = rbuf(l+1)
2095 a(3,nod) = rbuf(l+2)
2106 IF(dd_r2r(i+1,2)-dd_r2r(i,2)>0)
THEN
2107 CALL mpi_wait(req_s(i),status,ierror)
2124 1 FR_ELEM,DD_R2R,DD_R2R_ELEM,LENR)
2128 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
2129#include "implicit_f.inc"
2137#include "com01_c.inc"
2138#include "task_c.inc"
2139#include "tabsiz_c.inc"
2143 INTEGER OFF_SPH_R2R(*),IAD_ELEM(2,*),
2144 . FR_ELEM(*),DD_R2R(NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),LENR
2149 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
2151 . status(mpi_status_size),
2152 . iad_send(nspmd+1),iad_recv(nspmd+1),
2153 . req_r(nspmd),req_s(nspmd),offset,
2154 . rbuf(lenr ),sbuf(lenr )
2158 loc_proc = ispmd + 1
2163 siz = dd_r2r(i+1,1)-dd_r2r(i,1)
2165 msgtyp = 10000 + nspmd*(i-1) + loc_proc
2167 s rbuf(l),siz,mpi_integer,it_spmd(i),msgtyp,
2168 g spmd_comm_world,req_r(i),ierror)
2176 offset = dd_r2r(nspmd+1,1)-1
2179#include "vectorize.inc"
2180 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
2181 nod = dd_r2r_elem(offset+j)
2182 sbuf(l) = off_sph_r2r(nod)
2194 IF(dd_r2r(i+1,2)-dd_r2r(i,2)>0)
THEN
2195 msgtyp = 10000 + nspmd*(loc_proc-1) + i
2196 siz = iad_send(i+1)-iad_send(i)
2199 s sbuf(l),siz,mpi_integer,it_spmd(i),msgtyp,
2200 g spmd_comm_world,req_s(i),ierror)
2208 nb_nod = dd_r2r(i+1,1)-dd_r2r(i,1)
2210 CALL mpi_wait(req_r(i),status,ierror)
2212#include "vectorize.inc"
2213 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
2214 nod = dd_r2r_elem(j)
2215 off_sph_r2r(nod) = rbuf(l)
2226 IF(dd_r2r(i+1,2)-dd_r2r(i,2)>0)
THEN
2227 CALL mpi_wait(req_s(i),status,ierror)
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
subroutine mpi_isend(buf, cnt, datatype, dest, tag, comm, ireq, ierr)
subroutine mpi_wait(ireq, status, ierr)
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
integer, dimension(:,:), allocatable dbn
integer, dimension(:), allocatable tcnelt
integer, dimension(:), allocatable tcneltdb
integer, dimension(:), allocatable offset
integer, dimension(:,:), allocatable tbcnel
integer, dimension(:), allocatable tag_rby
integer, dimension(:,:), allocatable nbeln
integer, dimension(:), allocatable nbeltn_r2r
integer, dimension(:,:), allocatable nbel
integer, dimension(:), allocatable add_rby
integer, dimension(:), allocatable nbelt_r2r
integer, dimension(:,:), allocatable tbcneldb
integer, dimension(:), allocatable dbno
subroutine send_data_spmd(idp, nng, grnod, a, ar, stx, str, v, vr, ms, in, dx, dd_r2r, nglob, weight, typ, flag_rot, flag_rby, rby, iex)
subroutine r2r_exchange(iexlnk, igrnod, dx, v, vr, a, ar, ms, in, stx, str, r2r_on, dd_r2r, weight, iad_elem, fr_elem, rby, xdp, x, dd_r2r_elem, sdd_r2r_elem, off_sph_r2r, numsph_glo_r2r, nloc_dmg)
void get_name_c(char *name)
subroutine spmd_r2r_rset(m, nng, grnod, dd_r2r, weight, bufr, iad_elem, fr_elem, lrbuf, iex)
subroutine spmd_r2r_iget4(itab, nng, grnod, dd_r2r, weight, ibuf, iex, dbnbuf, ddbuf, flag)
subroutine spmd_r2r_rget3(x, nng, grnod, dd_r2r, weight, bufr)
subroutine spmd_r2r_rby(rby, nng, grnod, dd_r2r, weight, iex, bufr)
subroutine spmd_exch_r2r(a, ar, stifn, stifr, ms, iad_elem, fr_elem, size, lenr, dd_r2r, dd_r2r_elem, flag)
subroutine spmd_r2r_rset4(m, nng, grnod, dd_r2r, weight, bufr, iad_elem, fr_elem, lrbuf)
subroutine spmd_exch_work(wf, wf2)
subroutine spmd_exch_r2r_itag(itag, iad_elem, fr_elem, dd_r2r, dd_r2r_elem, lenr)
subroutine spmd_r2r_iget2(itab, nng, iex, ibuf, flag)
subroutine spmd_exch_r2r_sphoff(off_sph_r2r, iad_elem, fr_elem, dd_r2r, dd_r2r_elem, lenr)
subroutine spmd_r2r_rget(m, nng, grnod, dd_r2r, weight, bufr)
subroutine spmd_r2r_rset3b(a, nng, grnod, dd_r2r, weight, bufr, iad_elem, fr_elem, lrbuf, ms, v, wf, wf2, iex)
subroutine spmd_r2r_iget(itab, nng, grnod, dd_r2r, weight, ibuf, flag)
subroutine spmd_r2r_tagel(tagelg, tagel, len)
subroutine spmd_r2r_rset3(a, nng, grnod, dd_r2r, weight, bufr, iad_elem, fr_elem, lrbuf, iex)
subroutine spmd_exch_r2r_sph(a, iad_elem, fr_elem, dd_r2r, dd_r2r_elem, lenr)
subroutine spmd_exch_r2r_2(a, ar, v, vr, ms, in, iad_elem, fr_elem, size, wf, wf2, lenr, dd_r2r, dd_r2r_elem, weight, flag)
subroutine spmd_r2r_sync(addr)
subroutine spmd_exch_r2r_rby(npby, rby, iad_elem, fr_elem, size, lenr, dd_r2r, dd_r2r_elem, x)
subroutine spmd_r2r_rget3_dp(x, nng, grnod, dd_r2r, weight, bufr)
subroutine spmd_r2r_idef(nng, grnod, weight, iex, tlel, tleln, tcnel, tcneldb)