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, MSGOFF,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, MSGTYP, 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)
170!||--- called by ------------------------------------------------------
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)
240!||====================================================================
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, BUFSIZ,
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,LOC_PROC, MSGTYP, BUFSIZ,
460 . STATUS(MPI_STATUS_SIZE)
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,(*),ITAB(*),FLAG
538 INTEGER , P, N, 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)
611!||====================================================================
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, , 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)
690!||====================================================================
694!||--- calls -----------------------------------------------------
703 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
704#include "implicit_f.inc"
712#include "com01_c.inc"
722 INTEGER I, P, N, IERROR, MSGOFF,LOC_PROC, MSGTYP
737 s addr,bufsiz,mpi_character,it_spmd(p),msgtyp,
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(*),WEIGHT(*),IAD_ELEM(2,*),FR_ELEM(*)
795 INTEGER I, J, P, N, L, IERROR, , ISHIFT,
796 . LOC_PROC, , BUFSIZ, SIZ, INB, NB_NOD, NOD, LSEND,
797 . req_r(nspmd), req_s(nspmd),iad_send(nspmd+1),dbl,
798 . iad_recv(nspmd+1), status(mpi_status_size), itag(numnod)
806 l = dd_r2r(1)+
dbn(iex,1)
808 IF((dd_r2r(p)+
dbn(iex,p))>0)
THEN
809 bufsiz = dd_r2r(p)+
dbn(iex,p)
812 s bufr(l+1),bufsiz,real,it_spmd(p),msgtyp,
813 g spmd_comm_world,ierror)
814 l = l + dd_r2r(p)+
dbn(iex,p)
821 s bufr,bufsiz,real,it_spmd(1),msgtyp,
822 g spmd_comm_world,status,ierror)
828 dbl = dd_r2r(loc_proc)
845!||====================================================================
849!||--- calls -----------------------------------------------------
854 1 M ,NNG ,GRNOD, DD_R2R, WEIGHT,
855 2 BUFR ,IAD_ELEM,FR_ELEM, LRBUF )
859 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
860#include "implicit_f.inc"
868#include "com01_c.inc"
869#include "com04_c.inc"
875 . GRNOD(*),DD_R2R(*),WEIGHT(*),IAD_ELEM(2,*),FR_ELEM(*)
882 INTEGER I, J, P, N, L, IERROR, MSGOFF, ISHIFT,
883 . LOC_PROC, MSGTYP, BUFSIZ, SIZ, INB, NB_NOD, NOD, LSEND,
884 . REQ_R(NSPMD), REQ_S(NSPMD),IAD_SEND(NSPMD+1),
885 . IAD_RECV(NSPMD+1), STATUS(MPI_STATUS_SIZE), ITAG(NUMNOD)
895 IF((dd_r2r(p))>0)
THEN
899 s bufr(l+1),bufsiz,real,it_spmd(p),msgtyp,
900 g spmd_comm_world,ierror)
904 ELSEIF(dd_r2r(loc_proc)>0)
THEN
905 bufsiz = dd_r2r(loc_proc)
908 s bufr,bufsiz,real,it_spmd(1),msgtyp,
909 g spmd_comm_world,status,ierror)
934!||--- calls -----------------------------------------------------
936!||
rad2r_mod ../engine/share/modules/rad2r.f
940 1 A ,NNG ,GRNOD, DD_R2R, WEIGHT,
941 2 BUFR ,IAD_ELEM,FR_ELEM, LRBUF,IEX )
949 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
950#include "implicit_f.inc"
958#include "com01_c.inc"
959#include "com04_c.inc"
964 INTEGER NNG,LRBUF,IEX,
965 . GRNOD(*),DD_R2R(*),WEIGHT(*),IAD_ELEM(2,*),FR_ELEM(
972 INTEGER I, J, P, N, L, IERROR, MSGOFF, ISHIFT,DBL,
973 . LOC_PROC, MSGTYP, BUFSIZ, SIZ, INB, NB_NOD, NOD, LSEND,
974 . REQ_R(NSPMD), REQ_S(NSPMD),IAD_SEND(NSPMD+1),
975 . IAD_RECV(NSPMD+1), STATUS(MPI_STATUS_SIZE), ITAG(NUMNOD)
983 l = dd_r2r(1)+
dbn(iex,1)
985 IF((dd_r2r(p)+
dbn(iex,p))>0)
THEN
986 bufsiz = (dd_r2r(p)+
dbn(iex,p))*3
989 s bufr(1,l+1),bufsiz,real
990 g spmd_comm_world,ierror)
991 l = l + dd_r2r(p)+
dbn(iex,p)
998 s bufr,bufsiz,real,it_spmd(1),msgtyp,
999 g spmd_comm_world,status,ierror)
1006 dbl = dd_r2r(loc_proc)
1010 IF(weight(n)==1)
THEN
1017 a(1,n) = bufr(1,dbl)
1018 a(2,n) = bufr(2,dbl)
1019 a(3,n) = bufr(3,dbl)
1027!||====================================================================
1029!||--- called by ------------------------------------------------------
1031!||--- calls ----------------------------------------------
1034!|| spmd_comm_world_mod ../engine/source/mpi/spmd_comm_world
1037 1 A ,NNG ,GRNOD, DD_R2R,WEIGHT,
1038 2 BUFR ,IAD_ELEM,FR_ELEM, LRBUF ,MS ,
1047 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1048#include "implicit_f.inc"
1056#include "com01_c.inc"
1057#include "com04_c.inc"
1058#include "task_c.inc"
1062 INTEGER NNG,LRBUF,IEX,
1063 . GRNOD(*),DD_R2R(*),WEIGHT(*),IAD_ELEM(2,*),FR_ELEM(*)
1065 . bufr(3,*), a(3,*), ms(*), v(3,*), wf, wf2
1073(NSPMD+1), STATUS(MPI_STATUS_SIZE), ITAG(NUMNOD)
1075 . DF1, DF2, DF3, RBUF(LRBUF)
1084 IF(loc_proc==1)
THEN
1085 l = dd_r2r(1)+
dbn(iex,1)
1087 IF((dd_r2r(p)+
dbn(iex,p))>0)
THEN
1088 bufsiz = (dd_r2r(p)+
dbn(iex,p))*3
1091 s bufr(1,l+1),bufsiz,real,it_spmd(p),msgtyp,
1092 g spmd_comm_world,ierror)
1093 l = l + dd_r2r(p)+
dbn(iex,p)
1100 s bufr,bufsiz,real,it_spmd(1),msgtyp,
1101 g spmd_comm_world,status,ierror)
1105 dbl = dd_r2r(loc_proc)
1109 IF(weight(n)==1)
THEN
1111 df1 = ms(n)*bufr(1,l)-a(1,n)
1112 df2 = ms(n)*bufr(2,l)-a(2,n)
1113 df3 = ms(n)*bufr(3,l)-a(3,n)
1114 a(1,n) = ms(n)*bufr(1,l)
1115 a(2,n) = ms(n)*bufr(2,l)
1116 a(3,n) = ms(n)*bufr(3,l)
1118 wf = wf + (df1*v(1,n)+df2*v(2,n)+df3*v(3,n))/two
1119 wf2= wf2+ (df1*a(1,n)+df2*a(2,n)+df3*a(3,n))/(two*ms(n))
1122 df1 = ms(n)*bufr(1,dbl)-a(1,n)
1123 df2 = ms(n)*bufr(2,dbl)-a(2,n)
1124 df3 = ms(n)*bufr(3,dbl)-a(3,n)
1125 a(1,n) = ms(n)*bufr(1,dbl)
1126 a(2,n) = ms(n)*bufr(2,dbl)
1127 a(3,n) = ms(n)*bufr(3,dbl)
1132 IF(loc_proc==1)
THEN
1136 s wfb,1,real,it_spmd(p),msgtyp,
1137 g spmd_comm_world,status,ierror)
1143 s wf,1,real,it_spmd(1),msgtyp,
1144 g spmd_comm_world,ierror)
1149 IF(loc_proc==1)
THEN
1153 s wfb,1,real,it_spmd(p),msgtyp,
1154 g spmd_comm_world,status,ierror)
1160 s wf2,1,real,it_spmd(1),msgtyp,
1161 g spmd_comm_world,ierror)
1177 1 A ,AR ,STIFN,STIFR ,MS ,
1178 2 IAD_ELEM ,FR_ELEM, SIZE,
1179 3 LENR ,DD_R2R,DD_R2R_ELEM,FLAG)
1184 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1185#include "implicit_f.inc"
1193#include "com01_c.inc"
1194#include "task_c.inc"
1195#include "tabsiz_c.inc"
1199 INTEGER IAD_ELEM(2,*),FR_ELEM(*), SIZE, LENR,
1200 . DD_R2R(NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),FLAG
1202 . A(3,*),AR(3,*),STIFN(*),STIFR(*),MS(*)
1207 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
1209 . STATUS(MPI_STATUS_SIZE),
1210 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
1211 . REQ_R(NSPMD),REQ_S(NSPMD),OFFSET,MSGOFF
1219 loc_proc = ispmd + 1
1224 siz = size*(dd_r2r(i+1,2)-dd_r2r(i,2))
1228 s rbuf(l),siz,real,it_spmd(i),msgtyp,
1229 g spmd_comm_world,req_r(i),ierror)
1240#include "vectorize.inc"
1241 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1242 nod = dd_r2r_elem(j)
1245 sbuf(l+1) = a(2,nod)
1246 sbuf(l+2) = a(3,nod)
1247 sbuf(l+3) = ar(1,nod)
1248 sbuf(l+4) = ar(2,nod)
1249 sbuf(l+5) = ar(3,nod)
1251 sbuf(l ) = stifn(nod)
1252 sbuf(l+1) = stifr(nod)
1257#include "vectorize.inc"
1258 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1259 nod = dd_r2r_elem(j)
1262 sbuf(l+1) = a(2,nod)
1263 sbuf(l+2) = a(3,nod)
1265 sbuf(l ) = stifn(nod)
1280 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1282 siz = iad_send(i+1)-iad_send(i)
1285 s sbuf(l),siz,real,it_spmd(i),msgtyp,
1286 g spmd_comm_world,req_s(i),ierror)
1293 offset = dd_r2r(nspmd+1,1)-1
1296 nb_nod = dd_r2r(i+1,2)-dd_r2r(i,2)
1298 CALL mpi_wait(req_r(i),status,ierror)
1302#include "vectorize.inc"
1303 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1304 nod = dd_r2r_elem(offset+j)
1307 a(2,nod) = rbuf(l+1)
1308 a(3,nod) = rbuf(l+2)
1310 ar(2,nod)= rbuf(l+4)
1311 ar(3,nod)= rbuf(l+5)
1314 stifr(nod)= rbuf(l+1)
1319#include "vectorize.inc"
1320 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1321 nod = dd_r2r_elem(offset
1324 a(2,nod) = rbuf(l+1)
1325 a(3,nod) = rbuf(l+2)
1340 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1341 CALL mpi_wait(req_s(i),status,ierror)
1358 1 A ,AR, V, VR ,MS , IN,
1359 2 IAD_ELEM ,FR_ELEM, SIZE, WF, WF2,
1360 3 LENR ,DD_R2R,DD_R2R_ELEM,WEIGHT,FLAG)
1365 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1366#include "implicit_f.inc"
1374#include
"com01_c.inc"
1375#include "task_c.inc"
1376#include "tabsiz_c.inc"
1380 INTEGER (2,*),FR_ELEM(*), SIZE, LENR,
1381 . DD_R2R(NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),FLAG,
1384 . A(3,*),AR(3,*), V(3,*),VR(3,*),MS(*),IN(*),
1390 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
1392 . STATUS(MPI_STATUS_SIZE),
1393 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
1394 . REQ_R(NSPMD),REQ_S(NSPMD),OFFSET,MSGOFF
1397 . SBUF(SIZE*LENR ),DF1,DF2,DF3,DF4,DF5,DF6
1402 LOC_PROC = ispmd + 1
1407 siz = size*(dd_r2r(i+1,2)-dd_r2r(i,2))
1411 s rbuf(l),siz,real,it_spmd(i),msgtyp,
1412 g spmd_comm_world,req_r(i),ierror)
1423#include "vectorize.inc"
1424 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1425 nod = dd_r2r_elem(j)
1427 sbuf(l+1) = a(2,nod)
1428 sbuf(l+2) = a(3,nod)
1429 sbuf(l+3) = ar(1,nod)
1430 sbuf(l+4) = ar(2,nod)
1431 sbuf(l+5) = ar(3,nod)
1439#include "vectorize.inc"
1440 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1441 nod = dd_r2r_elem(j)
1443 sbuf(l+1) = a(2,nod)
1444 sbuf(l+2) = a(3,nod)
1461 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1463 siz = iad_send(i+1)-iad_send(i)
1466 s sbuf(l),siz,real,it_spmd(i),msgtyp,
1467 g spmd_comm_world,req_s(i),ierror)
1474 offset = dd_r2r(nspmd+1,1)-1
1477 nb_nod = dd_r2r(i+1,2)-dd_r2r(i,2)
1479 CALL mpi_wait(req_r(i),status,ierror)
1483#include "vectorize.inc"
1484 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1485 nod = dd_r2r_elem(offset+j)
1486 IF(weight(nod)==1)
THEN
1487 df1 = rbuf(l)-a(1,nod)
1488 df2 = rbuf(l+1)-a(2,nod)
1489 df3 = rbuf(l+2)-a(3,nod)
1490 df4 = rbuf(l+3)-ar(1,nod)
1491 df5 = rbuf(l+4)-ar(2,nod)
1492 df6 = rbuf(l+5)-ar(3,nod)
1495 a(2,nod) = rbuf(l+1)
1496 a(3,nod) = rbuf(l+2)
1497 ar(1,nod)= rbuf(l+3)
1498 ar(2,nod)= rbuf(l+4)
1499 ar(3,nod)= rbuf(l+5)
1506 IF(weight(nod)==1)
THEN
1507 wf = wf + (df1*v(1,nod)+df2*v(2,nod)+
1509 wf2= wf2+ (df1*a(1,nod)+df2*a(2,nod)+
1510 . df3*a(3,nod))/(two*ms(nod))
1511 wf = wf + (df4*vr(1,nod)+df5*vr(2,nod)+
1512 . df6*vr(3,nod))/two
1513 wf2= wf2+ (df4*ar(1,nod)+df5*ar(2,nod)+
1514 . df6*ar(3,nod))/(two*in(nod))
1518#include "vectorize.inc"
1519 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1520 nod = dd_r2r_elem(offset+j)
1521 IF(weight(nod)==1)
THEN
1522 df1 = rbuf(l)-a(1,nod)
1523 df2 = rbuf(l+1)-a(2,nod)
1524 df3 = rbuf(l+2)-a(3,nod)
1527 a(2,nod) = rbuf(l+1)
1528 a(3,nod) = rbuf(l+2)
1534 IF(weight(nod)==1)
THEN
1535 wf = wf + (df1*v(1,nod)+df2*v(2,nod)+
1537 wf2= wf2+ (df1*a(1,nod)+df2*a(2,nod)+
1538 . df3*a(3,nod))/(two*ms(nod))
1550 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1551 CALL mpi_wait(req_s(i),status,ierror)
1568 1 NPBY , RBY ,IAD_ELEM ,FR_ELEM, SIZE,
1569 2 LENR ,DD_R2R,DD_R2R_ELEM ,X)
1574 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1575#include "implicit_f.inc"
1576#include "param_c.inc"
1584#include "com01_c.inc"
1585#include "com04_c.inc"
1586#include "task_c.inc"
1587#include "tabsiz_c.inc"
1591 INTEGER IAD_ELEM(2,*),FR_ELEM(*), SIZE, LENR,
1592 . dd_r2r(nspmd+1,sdd_r2r),dd_r2r_elem(*),
1596 DOUBLE PRECISION X(3,*)
1601 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
1603 . STATUS(MPI_STATUS_SIZE),
1604 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
1605 . REQ_R(NSPMD),(NSPMD),OFFSET,IDRBY,MSGOFF
1607 . RBUF(SIZE*LENR ),SBUF(SIZE*LENR )
1612 LOC_PROC = ispmd + 1
1617 siz = size*(dd_r2r(i+1,2)-dd_r2r(i,2))
1621 s rbuf(l),siz,mpi_double_precision,it_spmd(i),
1622 g msgtyp,spmd_comm_world,req_r(i),ierror)
1633#include "vectorize.inc"
1634 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1636 nod = dd_r2r_elem(j)
1638 IF (npby(1,k)==nod) idrby = k
1642 sbuf(l+k-1) = rby(k,idrby)
1644 sbuf(l+26-1) = x(1,nod)
1645 sbuf(l+27-1) = x(2,nod)
1646 sbuf(l+28-1) = x(3,nod)
1664 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1666 siz = iad_send(i+1)-iad_send(i)
1669 s sbuf(l),siz,mpi_double_precision,it_spmd(i),
1670 g msgtyp,spmd_comm_world,req_s(i),ierror)
1677 offset = dd_r2r(nspmd+1,1)-1
1680 nb_nod = dd_r2r(i+1,2)-dd_r2r(i,2)
1682 CALL mpi_wait(req_r(i),status,ierror)
1685#include "vectorize.inc"
1686 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1688 nod = dd_r2r_elem(offset+j)
1690 IF (npby(1,k)==nod) idrby = k
1694 rby(k,idrby) = rbuf(l+k-1)
1696 x(1,nod) = rbuf(l+26-1)
1697 x(2,nod) = rbuf(l+27-1)
1698 x(3,nod) = rbuf(l+28-1)
1710 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1711 CALL mpi_wait(req_s(i),status,ierror)
1736 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1737#include "implicit_f.inc"
1745#include "com01_c.inc"
1746#include "task_c.inc"
1756 INTEGER P, IERROR, MSGOFF,LOC_PROC,
1757 . msgtyp,status(mpi_status_size)
1766 IF(loc_proc==1)
THEN
1770 s wfb,1,real,it_spmd(p),msgtyp,
1771 g spmd_comm_world,status,ierror)
1777 s wf,1,real,it_spmd(1),msgtyp,
1778 g spmd_comm_world,ierror)
1783 IF(loc_proc==1)
THEN
1787 s wfb,1,real,it_spmd(p),msgtyp,
1788 g spmd_comm_world,status,ierror)
1794 s wf2,1,real,it_spmd(1),msgtyp,
1795 g spmd_comm_world,ierror)
1804!||--- called by ------------------------------------------------------
1809!||====================================================================
1814 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1815#include "implicit_f.inc"
1823#include "com01_c.inc"
1824#include "task_c.inc"
1828 INTEGER TAGELG(*),TAGEL(*),LEN(*)
1833 INTEGER I, P, N, L, IERROR, MSGOFF,LOC_PROC, MSGTYP, BUFSIZ,
1834 . STATUS(MPI_STATUS_SIZE)
1841 IF(loc_proc==1)
THEN
1842 DO i=1,len(loc_proc)
1850 s tagelg(l+1),len(p),mpi_integer,it_spmd(p),msgtyp,
1851 g spmd_comm_world,status,ierror)
1855 ELSEIF(len(loc_proc)>0)
THEN
1858 s tagel,len(loc_proc),mpi_integer,it_spmd(1),msgtyp,
1859 g spmd_comm_world,ierror)
1870!||--- calls -----------------------------------------------------
1875 1 ITAG,IAD_ELEM ,FR_ELEM,DD_R2R,DD_R2R_ELEM,LENR)
1880 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1881#include "implicit_f.inc"
1889#include "com01_c.inc"
1890#include "com04_c.inc"
1891#include "task_c.inc"
1892#include "tabsiz_c.inc"
1896 INTEGER IAD_ELEM(2,*),FR_ELEM(*),
1897 . DD_R2R(NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),FLAG,
1903 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR
1906 . iad_send(nspmd+1),iad_recv(nspmd+1),
1907 . req_r(nspmd),req_s(nspmd),offset,
1908 . sbuf(2*lenr),rbuf(2*lenr), msgoff
1913 loc_proc = ispmd + 1
1918 siz = 2*(dd_r2r(i+1,2)-dd_r2r(i,2))
1922 s rbuf(l),siz,mpi_integer,it_spmd(i),msgtyp,
1923 g spmd_comm_world,req_r(i),ierror)
1933#include "vectorize.inc"
1934 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
1935 nod = dd_r2r_elem(j)
1937 sbuf(l+1) = itag(numnod+nod)
1949 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1951 siz = iad_send(i+1)-iad_send(i)
1954 s sbuf(l),siz,mpi_integer,it_spmd(i),msgtyp,
1955 g spmd_comm_world,req_s(i),ierror)
1962 offset = dd_r2r(nspmd+1,1)-1
1965 nb_nod = dd_r2r(i+1,2)-dd_r2r(i,2)
1967 CALL mpi_wait(req_r(i),status,ierror)
1969#include "vectorize.inc"
1970 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
1971 nod = dd_r2r_elem(offset
1973 itag(numnod+nod) = rbuf(l+1)
1984 IF(dd_r2r(i+1,1)-dd_r2r(i,1)>0)
THEN
1985 CALL mpi_wait(req_s(i),status,ierror)
2006 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
2007#include "implicit_f.inc"
2015#include "com01_c.inc"
2016#include "task_c.inc"
2017#include "tabsiz_c.inc"
2021 INTEGER IAD_ELEM(2,*),FR_ELEM(*),
2022 . (NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),LENR
2029 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
2031 . STATUS(MPI_STATUS_SIZE),
2032 . iad_send(nspmd+1),iad_recv(nspmd+1),
2033 . req_r(nspmd),req_s(nspmd),offset
2035 . rbuf(3*lenr ),sbuf(3*lenr )
2039 loc_proc = ispmd + 1
2042 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
2045 siz = 3*(dd_r2r(i+1,1)-dd_r2r(i,1))
2047 msgtyp = 10000 + nspmd*(i-1) + loc_proc
2049 s rbuf(l),siz,real,it_spmd(i),msgtyp,
2050 g spmd_comm_world,req_r(i),ierror)
2058 offset = dd_r2r(nspmd+1,1)-1
2061#include "vectorize.inc"
2062 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
2063 nod = dd_r2r_elem(offset+j)
2065 sbuf(l+1) = a(2,nod)
2066 sbuf(l+2) = a(3,nod)
2078 IF(dd_r2r(i+1,2)-dd_r2r(i,2)>0)
THEN
2079 msgtyp = 10000 + nspmd*(loc_proc-1) + i
2080 siz = iad_send(i+1)-iad_send(i)
2083 s sbuf(l),siz,real,it_spmd(i),msgtyp,
2084 g spmd_comm_world,req_s(i),ierror)
2092 nb_nod = dd_r2r(i+1,1)-dd_r2r(i,1)
2094 CALL mpi_wait(req_r(i),status,ierror)
2096#include "vectorize.inc"
2097 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
2098 nod = dd_r2r_elem(j)
2100 a(2,nod) = rbuf(l+1)
2101 a(3,nod) = rbuf(l+2)
2112 IF(dd_r2r(i+1,2)-dd_r2r(i,2)>0)
THEN
2113 CALL mpi_wait(req_s(i),status,ierror)
2126!||--- uses -----------------------------------------------------
2128!||====================================================================
2130 1 FR_ELEM,DD_R2R,DD_R2R_ELEM,LENR)
2134 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
2135#include "implicit_f.inc"
2143#include "com01_c.inc"
2144#include "task_c.inc"
2145#include "tabsiz_c.inc"
2149 INTEGER OFF_SPH_R2R(*),IAD_ELEM(2,*),
2150 . FR_ELEM(*),DD_R2R(NSPMD+1,SDD_R2R),DD_R2R_ELEM(*),LENR
2155 INTEGER MSGTYP,I,,LOC_PROC,IERROR,
2157 . status(mpi_status_size),
2158 . iad_send(nspmd+1),iad_recv(nspmd+1),
2159 . req_r(nspmd),req_s(nspmd),offset,
2160 . rbuf(lenr ),sbuf(lenr )
2164 loc_proc = ispmd + 1
2169 siz = dd_r2r(i+1,1)-dd_r2r(i,1)
2171 msgtyp = 10000 + nspmd*(i-1) + loc_proc
2173 s rbuf(l),siz,mpi_integer,it_spmd(i),msgtyp,
2174 g spmd_comm_world,req_r(i),ierror)
2182 offset = dd_r2r(nspmd+1,1)-1
2185#include "vectorize.inc"
2186 DO j=dd_r2r(i,2),dd_r2r(i+1,2)-1
2187 nod = dd_r2r_elem(offset+j)
2188 sbuf(l) = off_sph_r2r(nod)
2200 IF(dd_r2r(i+1,2)-dd_r2r(i,2)>0)
THEN
2201 msgtyp = 10000 + nspmd*(loc_proc-1) + i
2202 siz = iad_send(i+1)-iad_send
2205 s sbuf(l),siz,mpi_integer,it_spmd(i),msgtyp,
2206 g spmd_comm_world,req_s(i),ierror)
2214 nb_nod = dd_r2r(i+1,1)-dd_r2r(i,1)
2216 CALL mpi_wait(req_r(i),status,ierror)
2218#include "vectorize.inc"
2219 DO j=dd_r2r(i,1),dd_r2r(i+1,1)-1
2220 nod = dd_r2r_elem(j)
2221 off_sph_r2r(nod) = rbuf(l)
2232 IF(dd_r2r(i+1,2)-dd_r2r(i,2)>0)
THEN
2233 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_mass_rby_spmd(idp, nng, grnod, ms, in, dd_r2r, nglob, weight, flag_rot, npby, rby, addr)
subroutine r2r_init(iexlnk, itab, igrnod, x, ms, in, dd_r2r, weight, iad_elem, fr_elem, addcnel, cnel, ixc, iparg, icodt, icodr, ibfv, dx, rby, npby, xdp, stifn, stifr, dd_r2r_elem, sdd_r2r_elem, weight_md, ilenxv, numsph_glo_r2r, flg_sphinout_r2r, ipari, 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)