32!|| spmd_wait ../engine/source/mpi/spmd_wait.f90
38 1 X ,NBRCVOIS,NBSDVOIS,LNRCVOIS,LNSDVOIS,
44#include "implicit_f.inc"
53 INTEGER NBRCVOIS(*), NBSDVOIS(*), LNRCVOIS(*), LNSDVOIS(*),
61 INTEGER I, IDEB, IDEB2, MSGOFF, MSGTYP,IAD_RECV(NSPMD),
62 . REQ_S(NSPMD), REQ_R(NSPMD),
63 . loc_proc, n, nn, nbirecv, irindex(nspmd), ii, index,
80 IF(nbrcvois(i)>0)
THEN
84 CALL spmd_irecv(wa(ideb2+1),len,it_spmd(i),msgtyp,req_r(nbirecv))
96 wa(ideb2+3*(n-1)+1) = x(1,nn)
97 wa(ideb2+3*(n-1)+2) = x(2,nn)
98 wa(ideb2+3*(n-1)+3) = x(3,nn)
100 CALL spmd_isend(wa(ideb2+1),len*3,it_spmd(i),msgtyp,req_s(i))
102 ideb2 = ideb2 + 3*len
108 CALL spmd_waitany(nbirecv,req_r,index)
112 DO n = 1, nbrcvois(i)
113 nn = lnrcvois(ideb+n)
114 x(1,nn) = wa(ideb2+3*(n-1))
115 x(2,nn) = wa(ideb2+3*(n-1)+1)
116 x(3,nn) = wa(ideb2+3*(n-1)+2)
121 IF(nbsdvois(i)>0)
THEN
122 CALL spmd_wait(req_s(i))
131!||--- called by ------------------------------------------------------
133!||--- calls -----------------------------------------------------
140 . LNRCVOIS,LNSDVOIS,LENCOM)
145#include "implicit_f.inc"
153#include "com01_c.inc"
158 INTEGER NBRCVOIS(*), NBSDVOIS(*), LNRCVOIS(*), LNSDVOIS(*),
160 my_real X(3,*), D(3,*), W(3,*)
165 INTEGER I, , IDEB2, MSGOFF, MSGTYP,IAD_RECV(NSPMD),
166 . REQ_S(NSPMD), REQ_R(NSPMD),
167 . LOC_PROC, N, NN, NBIRECV, IRINDEX(NSPMD), II, INDEX,
182 iad_recv(i) = ideb2+1
183 IF(nbrcvois(i)>0)
THEN
184 nbirecv = nbirecv + 1
187 CALL spmd_irecv(wa(ideb2+1),len,it_spmd(i),msgtyp,req_r(nbirecv))
198 nn = lnsdvois(ideb+n)
199 wa(ideb2+9*(n-1)+1) = x(1,nn)
200 wa(ideb2+9*(n-1)+2) = x(2,nn)
201 wa(ideb2+9*(n-1)+3) = x(3,nn)
202 wa(ideb2+9*(n-1)+4) = d(1,nn)
203 wa(ideb2+9*(n-1)+5) = d(2,nn)
204 wa(ideb2+9*(n-1)+6) = d(3,nn)
205 wa(ideb2+9*(n-1)+7) = w(1,nn)
206 wa(ideb2+9*(n-1)+8) = w(2,nn)
207 wa(ideb2+9*(n-1)+9) = w(3,nn)
209 CALL spmd_isend(wa(ideb2+1),len*9,it_spmd(i),msgtyp,req_s(i))
211 ideb2 = ideb2 + 9*len
217 CALL spmd_waitany(nbirecv,req_r,index)
221 DO n = 1, nbrcvois(i)
222 nn = lnrcvois(ideb+n)
223 x(1,nn) = wa(ideb2+9*(n-1))
224 x(2,nn) = wa(ideb2+9*(n-1)+1)
225 x(3,nn) = wa(ideb2+9*(n-1)+2)
226 d(1,nn) = wa(ideb2+9*(n-1)+3)
227 d(2,nn) = wa(ideb2+9*(n-1)+4)
228 d(3,nn) = wa(ideb2+9*(n-1)+5)
229 w(1,nn) = wa(ideb2+9*(n-1)+6)
230 w(2,nn) = wa(ideb2+9*(n-1)+7)
231 w(3,nn) = wa(ideb2+9*(n-1)+8)
236 IF(nbsdvois(i)>0)
THEN
237 CALL spmd_wait(req_s(i))
259 1 T ,VAL2 ,NERCVOIS,NESDVOIS,LERCVOIS,
265#include "implicit_f.inc"
273#include "com01_c.inc"
278 INTEGER NERCVOIS(*), NESDVOIS(*), LERCVOIS(*), LESDVOIS(*),
280 my_real T(*), VAL2(*)
285 INTEGER I, IDEB, IDEB2, MSGOFF, MSGTYP,IAD_RECV(NSPMD),
286 . REQ_S(), REQ_R(NSPMD),
287 . LOC_PROC, N, NN, NBIRECV, IRINDEX(NSPMD), II, INDEX,
303 iad_recv(i) = ideb2+1
304 IF(nercvois(i)>0)
THEN
305 nbirecv = nbirecv + 1
308 CALL spmd_irecv(wa(ideb2+1),len,it_spmd(i),msgtyp,req_r(nbirecv))
319 nn = lesdvois(ideb+n)
320 wa(ideb2+2*(n-1)+1) = t(nn)
321 wa(ideb2+2*(n-1)+2) = val2(nn)
323 CALL spmd_isend(wa(ideb2+1),len*2,it_spmd(i),msgtyp,req_s(i))
325 ideb2 = ideb2 + 2*len
331 CALL spmd_waitany(nbirecv,req_r,index)
335 DO n = 1, nercvois(i)
336 nn = lercvois(ideb+n)
337 t(nn) = wa(ideb2+2*(n-1))
338 val2(nn) = wa(ideb2+2*(n-1)+1)
343 IF(nesdvois(i)>0)
THEN
344 CALL spmd_wait(req_s(i))
373 1 PHI ,NERCVOIS,NESDVOIS,LERCVOIS,
379#include "implicit_f.inc"
387#include "com01_c.inc"
392 INTEGER NERCVOIS(*), NESDVOIS(*), LERCVOIS(*), LESDVOIS(*),LENCOM
398 INTEGER I, IDEB, IDEB2, MSGOFF, MSGTYP,IAD_RECV(NSPMD),
399 . req_s(nspmd), req_r(nspmd),
400 . loc_proc, n, nn, nbirecv, irindex(nspmd), ii, index,
415 iad_recv(i) = ideb2+1
416 IF(nercvois(i)>0)
THEN
417 nbirecv = nbirecv + 1
420 CALL spmd_irecv(wa(ideb2+1),len,it_spmd(i),msgtyp,req_r(nbirecv))
431 nn = lesdvois(ideb+n)
432 wa(ideb2+n) = phi(nn)
434 CALL spmd_isend(wa(ideb2+1),len,it_spmd(i),msgtyp,req_s(i))
441 CALL spmd_waitany(nbirecv,req_r,index)
444 DO n = 1, nercvois(i)
445 nn = lercvois(ideb+n)
451 IF(nesdvois(i)>0)
THEN
452 CALL spmd_wait(req_s(i))
472 1 PHI ,NERCVOIS,NESDVOIS,LERCVOIS,
478#include "implicit_f.inc"
486#include "com01_c.inc"
487#include "com04_c.inc"
493 INTEGER NERCVOIS(*), NESDVOIS(*), LERCVOIS(*), LESDVOIS(*),LENCOM
494 my_real (NUMELS+NSVOIS,6)
499 INTEGER I, IDEB, IDEB2, , MSGTYP,IAD_RECV(NSPMD),
500 . REQ_S(NSPMD), REQ_R(),
501 . , N, NN, NBIRECV, IRINDEX(NSPMD), II, INDEX,
517 iad_recv(i) = ideb2+1
518 IF(nercvois(i)>0)
THEN
519 nbirecv = nbirecv + 1
522 CALL spmd_irecv(wa(1,ideb2+1),len*6,it_spmd(i),msgtyp,req_r(nbirecv))
533 nn = lesdvois(ideb+n)
534 wa(1,ideb2+n) = phi(nn,1)
535 wa(2,ideb2+n) = phi(nn,2)
536 wa(3,ideb2+n) = phi(nn,3)
537 wa(4,ideb2+n) = phi(nn,4)
538 wa(5,ideb2+n) = phi(nn,5)
539 wa(6,ideb2+n) = phi(nn,6)
541 CALL spmd_isend(wa(1,ideb2+1),len*6,it_spmd(i),msgtyp,req_s(i))
548 CALL spmd_waitany(nbirecv,req_r,index)
551 DO n = 1, nercvois(i)
552 nn = lercvois(ideb+n)
553 phi(nn,1) = wa(1,ideb+n)
554 phi(nn,2) = wa(2,ideb+n)
555 phi(nn,3) = wa(3,ideb+n)
556 phi(nn,4) = wa(4,ideb+n)
557 phi(nn,5) = wa(5,ideb+n)
558 phi(nn,6) = wa(6,ideb+n)
563 IF(nesdvois(i)>0)
THEN
564 CALL spmd_wait(req_s(i))
573!||====================================================================
575!||--- called by ------------------------------------------------------
584 1 PHI ,NERCVOIS,NESDVOIS,LERCVOIS,
590#include "implicit_f.inc"
598#include "com01_c.inc"
599#include "com04_c.inc"
605 INTEGER NERCVOIS(*), NESDVOIS(*), LERCVOIS(*), LESDVOIS(*), LENCOM
606 my_real PHI(NUMELQ+NQVOIS,4)
611 INTEGER I, IDEB, IDEB2, MSGOFF, MSGTYP,IAD_RECV(NSPMD),
612 . REQ_S(NSPMD), REQ_R(NSPMD),
613 . LOC_PROC, N, NN, NBIRECV, IRINDEX(NSPMD), , INDEX,
629 iad_recv(i) = ideb2+1
630 IF(nercvois(i)>0)
THEN
631 nbirecv = nbirecv + 1
634 CALL spmd_irecv(wa(1,ideb2+1),len*4,it_spmd(i),msgtyp,req_r(nbirecv))
645 nn = lesdvois(ideb+n)
646 wa(1,ideb2+n) = phi(nn,1)
647 wa(2,ideb2+n) = phi(nn,2)
648 wa(3,ideb2+n) = phi(nn,3)
649 wa(4,ideb2+n) = phi(nn,4)
651 CALL spmd_isend(wa(1,ideb2+1),len*4,it_spmd(i),msgtyp,req_s(i))
658 CALL spmd_waitany(nbirecv,req_r,index)
661 DO n = 1, nercvois(i)
662 nn = lercvois(ideb+n)
663 phi(nn,1) = wa(1,ideb+n)
664 phi(nn,2) = wa(2,ideb+n)
665 phi(nn,3) = wa(3,ideb+n)
666 phi(nn,4) = wa(4,ideb+n)
671 IF(nesdvois(i)>0)
THEN
672 CALL spmd_wait(req_s(i))
686!||--- calls -----------------------------------------------------
693 1 PHI ,NERCVOIS,NESDVOIS,LERCVOIS,
699#include "implicit_f.inc"
707#include "com01_c.inc"
713 INTEGER NERCVOIS(*), NESDVOIS(*), (*), LESDVOIS(*), LENCOM
719 INTEGER I, NDIM, IDEB, , MSGOFF, MSGTYP,IAD_RECV(NSPMD),
720 . REQ_S(NSPMD), REQ_R(NSPMD),
721 . LOC_PROC, , NN, NBIRECV, IRINDEX(NSPMD), II, INDEX,
737 iad_recv(i) = ideb2+1
738 IF(nercvois(i)>0)
THEN
739 nbirecv = nbirecv + 1
742 CALL spmd_irecv(wa(1,ideb2+1),len*dim,it_spmd(i),msgtyp,req_r(nbirecv))
753 nn = lesdvois(ideb+n)
755 wa(ndim,ideb2+n) = phi(dim * (nn - 1) + ndim)
758 CALL spmd_isend(wa(1,ideb2+1),len*dim,it_spmd(i),msgtyp,req_s(i))
765 CALL spmd_waitany(nbirecv,req_r,index)
768 DO n = 1, nercvois(i)
769 nn = lercvois(ideb+n)
771 phi(dim * (nn - 1) + ndim) = wa(ndim,ideb+n)
777 IF(nesdvois(i)>0)
THEN
778 CALL spmd_wait(req_s(i))
786!||====================================================================
797 1 PHI ,NERCVOIS,NESDVOIS,LERCVOIS,LESDVOIS,
803#include "implicit_f.inc"
811#include
"com01_c.inc"
812#include "com04_c.inc"
818 INTEGER NERCVOIS(*), NESDVOIS(*), LERCVOIS(*), LESDVOIS(*),
819 . PHI(NUMELS+NSVOIS,8), LENCOM
824 INTEGER I, IDEB, IDEB2, MSGOFF, MSGTYP,IAD_RECV(NSPMD),
825 . REQ_S(NSPMD), REQ_R(NSPMD),
826 . LOC_PROC, N, NN, NBIRECV, IRINDEX(NSPMD), II, INDEX,
840 iad_recv(i) = ideb2+1
841 IF(nercvois(i)>0)
THEN
842 nbirecv = nbirecv + 1
846 s wa(1,ideb2+1),len*8,it_spmd(i),msgtyp,
858 nn = lesdvois(ideb+n)
859 wa(1,ideb2+n) = phi(nn,1)
860 wa(2,ideb2+n) = phi(nn,2)
861 wa(3,ideb2+n) = phi(nn,3)
862 wa(4,ideb2+n) = phi(nn,4)
863 wa(5,ideb2+n) = phi(nn,5)
864 wa(6,ideb2+n) = phi(nn,6)
865 wa(7,ideb2+n) = phi(nn,7)
866 wa(8,ideb2+n) = phi(nn,8)
870 s wa(1,ideb2+1),len*8,it_spmd(i),msgtyp,
879 CALL spmd_waitany(nbirecv,req_r,index)
882 DO n = 1, nercvois(i)
883 nn = lercvois(ideb+n)
884 phi(nn,1) = wa(1,ideb+n)
885 phi(nn,2) = wa(2,ideb+n)
886 phi(nn,3) = wa(3,ideb+n)
887 phi(nn,4) = wa(4,ideb+n)
888 phi(nn,5) = wa(5,ideb+n)
889 phi(nn,6) = wa(6,ideb+n)
890 phi(nn,7) = wa(7,ideb+n)
891 phi(nn,8) = wa(8,ideb+n)
896 IF(nesdvois(i)>0)
THEN
897 CALL spmd_wait(req_s(i))
917 1 PHI ,NERCVOIS,NESDVOIS,LERCVOIS,LESDVOIS,
923#include "implicit_f.inc"
931#include "com01_c.inc"
932#include "com04_c.inc"
938 INTEGER NERCVOIS(*), NESDVOIS(*), LERCVOIS(*), LESDVOIS(*),
939 . PHI(NUMELQ+NQVOIS,4), LENCOM
944 INTEGER I, IDEB, IDEB2, MSGOFF, MSGTYP,IAD_RECV(NSPMD),
945 . REQ_S(NSPMD), REQ_R(NSPMD),
946 . LOC_PROC, N, NN, NBIRECV, IRINDEX(NSPMD), II, INDEX,
960 iad_recv(i) = ideb2+1
961 IF(nercvois(i)>0)
THEN
962 nbirecv = nbirecv + 1
966 s wa(1,ideb2+1),len*4,it_spmd(i),msgtyp,
978 nn = lesdvois(ideb+n)
979 wa(1,ideb2+n) = phi(nn,1)
980 wa(2,ideb2+n) = phi(nn,2)
981 wa(3,ideb2+n) = phi(nn,3)
982 wa(4,ideb2+n) = phi(nn,4)
985 s wa(1,ideb2+1),len*4,it_spmd(i),msgtyp,
994 CALL spmd_waitany(nbirecv,req_r,index)
997 DO n = 1, nercvois(i)
998 nn = lercvois(ideb+n)
999 phi(nn,1) = wa(1,ideb+n)
1000 phi(nn,2) = wa(2,ideb+n)
1001 phi(nn,3) = wa(3,ideb+n)
1002 phi(nn,4) = wa(4,ideb+n)
1007 IF(nesdvois(i)>0)
THEN
1008 CALL spmd_wait(req_s(i))
1028 1 LBVOIS ,IPARG ,ELBUF_TAB,PM ,IXS,
1029 2 IXQ ,NERCVOIS,NESDVOIS,LERCVOIS,LESDVOIS,
1039#include "implicit_f.inc"
1047#include "com01_c.inc"
1048#include "com04_c.inc"
1049#include "task_c.inc"
1050#include "param_c.inc"
1054 INTEGER IPARG(NPARG,*),IXS(NIXS,
1057 my_real lbvois(6,*), pm(npropm,*)
1058 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
1063 INTEGER I,II,JJ,IDEB,IDEB2,MSGOFF,MSGTYP,IAD_RECV(NSPMD),
1064 . REQ_S(NSPMD), REQ_R(NSPMD),
1065 . LOC_PROC, N, NN, NBIRECV, (NSPMD), INDEX,
1066 . LEN, ML, NI, KTY, , MFT, IS,
1067 . KB1, KB2, KB3 ,KB4 ,KB10, KB11, KB12, KKB2,
1068 . G_PLA,G_RK,L_RE,L_TEMP,KK(6),K
1070 my_real WA(6*LENCOM)
1071 my_real ELBUF(10000)
1072 TYPE(G_BUFEL_) ,
POINTER :: GBUF
1073 TYPE(L_BUFEL_) ,
POINTER :: LBUF
1085 iad_recv(i) = ideb2+1
1086 IF(nercvois(i)>0)
THEN
1087 nbirecv = nbirecv + 1
1088 irindex(nbirecv) = i
1091 s wa(ideb2+1) , len, it_spmd(i) , msgtyp,
1106 nn = lesdvois(ideb+n)
1109 ml=nint(pm(19,ixs(1,nn)))
1111 ml=nint(pm(19,ixq(1,nn)))
1116 gbuf => elbuf_tab(ni)%GBUF
1117 lbuf => elbuf_tab(ni)%BUFLY(1)%LBUF(1,1,1)
1121 IF( (kty == 1.OR.kty == 2).AND.(nn<=klt+mft) .AND. nn>mft)
THEN
1122 g_pla = elbuf_tab(ni)%GBUF%G_PLA
1123 g_rk = elbuf_tab(ni)%GBUF%G_RK
1124 l_re = elbuf_tab(ni)%BUFLY(1)%L_RE
1125 l_temp= elbuf_tab(ni)%BUFLY(1)%L_TEMP
1132 wa(ii+1) =-(gbuf%SIG(kk(1)+is)+gbuf%SIG(kk(2)+is)+ gbuf%SIG(kk(3)+is))*third
1133 wa(ii+2) = gbuf%EINT(is)
1134 wa(ii+3) = gbuf%RHO(is)
1136 wa(ii+4) = gbuf%PLA(is)
1137 ELSEIF (g_rk > 0)
THEN
1138 wa(ii+4) = gbuf%RK(is)
1143 wa(ii+5) = lbuf%TEMP(is)
1148 wa(ii+6) = lbuf%RE(is)
1165 s wa(ideb2+1) ,len*6 ,it_spmd(i) , msgtyp,
1168 ideb2 = ideb2 + 6*len
1174 CALL spmd_waitany(nbirecv,req_r,index)
1178 DO n = 1, nercvois(i)
1180 nn = lercvois(ideb+n)-numels-numelq
1181 lbvois(1,nn) = wa(jj)
1182 lbvois(2,nn) = wa(jj+1)
1183 lbvois(3,nn) = wa(jj+2)
1184 lbvois(4,nn) = wa(jj+3)
1185 lbvois(5,nn) = wa(jj+4)
1186 lbvois(6,nn) = wa(jj+5)
1191 IF(nesdvois(i)>0)
THEN
1192 CALL spmd_wait(req_s(i))
1204!||--- calls -----------------------------------------------------
1208!||====================================================================
1218#include "implicit_f.inc"
1226#include "com01_c.inc"
1227#include "task_c.inc"
1231 INTEGER IAD_ELEM(2,*), FR_ELEM(*), NALE(*),
1239 INTEGER MSGTYP,I,NOD,LOC_PROC,SIZ,J, L
1240 INTEGER IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),REQ_R(NSPMD),REQ_S(NSPMD), MSGOFF
1241 my_real RBUF(SIZE*LENR), SBUF(SIZE*LENR)
1248 LOC_PROC = ispmd + 1
1253 siz = size*(iad_elem(1,i+1)-iad_elem(1,i))
1257 s rbuf(l),siz,it_spmd(i),msgtyp,
1267#include "vectorize.inc"
1268 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1270 IF(iabs(nale(nod)) == 1)
THEN
1271 sbuf(l ) = wa(1,nod)
1272 sbuf(l+1) = wa(2,nod)
1273 sbuf(l+2) = wa(3,nod)
1274 sbuf(l+3) = wb(1,nod)
1275 sbuf(l+4) = wb(2,nod)
1276 sbuf(l+5) = wb(3,nod)
1284 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
1286 siz = iad_send(i+1)-iad_send(i)
1289 s sbuf(l),siz,it_spmd(i),msgtyp,
1297 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
1298 CALL spmd_wait(req_r(i))
1300#include "vectorize.inc"
1301 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1303 IF(iabs(nale(nod)) == 1)
THEN
1304 wa(1,nod) = wa(1,nod) + rbuf(l )
1305 wa(2,nod) = wa(2,nod) + rbuf(l+1)
1306 wa(3,nod) = wa(3,nod) + rbuf(l+2)
1307 wb(1,nod) = wb(1,nod) + rbuf(l+3)
1308 wb(2,nod) = wb(2,nod) + rbuf(l+4)
1309 wb(3,nod) = wb(3,nod) + rbuf(l+5)
1319 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
1320 .
CALL spmd_wait(req_s(i))
1328!||====================================================================
1340 1 FSKY ,FSKYV ,IAD_ELEM,FR_ELEM,NALE,
1341 2 ADDCNE,PROCNE,FR_NBCC ,SIZE ,LENR,
1351#include "implicit_f.inc"
1359#include "com01_c.inc"
1360#include "task_c.inc"
1361#include "parit_c.inc"
1365 INTEGER IAD_ELEM(2,*),FR_ELEM(*),FR_NBCC(2
1371 INTEGER MSGTYP,I,NOD,LOC_PROC,SIZ,J,L,CC,NBIRECV,
1373 . IAD_SEND(NSPMD+1),IAD_RECV(+1),
1374 . REQ_R(),REQ_S(NSPMD),IRINDEX(NSPMD),MSGOFF
1375 my_real RBUF(SIZE*LENR+1), SBUF(SIZE*LENS)
1382 LOC_PROC = ispmd + 1
1389 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
1391 siz = size*fr_nbcc(2,i)
1392 nbirecv = nbirecv + 1
1393 irindex(nbirecv) = i
1395 s rbuf(l),siz,it_spmd(i),msgtyp,
1405 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1407 IF(iabs(nale(nod)) == 1)
THEN
1408 IF(ivector == 1)
THEN
1410 DO cc = addcne(nod),addcne(nod+1)-1
1411 IF(procne(cc) == loc_proc)
THEN
1412 sbuf(l) = fsky(1,cc)
1413 sbuf(l+1) = fsky(2,cc)
1414 sbuf(l+2) = fsky(3,cc)
1415 sbuf(l+3) = fsky(4,cc)
1416 sbuf(l+4) = fsky(5,cc)
1417 sbuf(l+5) = fsky(6,cc)
1428 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
1429 siz = iad_send(i+1)-iad_send(i)
1433 s sbuf(l),siz,it_spmd(i),msgtyp,
1441 CALL spmd_waitany(nbirecv,req_r,index)
1444 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1446 IF(iabs(nale(nod)) == 1)
THEN
1447 IF(ivector == 1)
THEN
1449 DO cc = addcne(nod), addcne(nod+1)-1
1450 IF(procne(cc) == i)
THEN
1451 fsky(1,cc) = rbuf(l)
1452 fsky(2,cc) = rbuf(l+1)
1453 fsky(3,cc) = rbuf(l+2)
1454 fsky(4,cc) = rbuf(l+3)
1455 fsky(5,cc) = rbuf(l+4)
1456 fsky(6,cc) = rbuf(l+5)
1468 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
1469 siz = iad_send(i+1)-iad_send(i)
1470 CALL spmd_wait(req_s(i))
1496#include "implicit_f.inc"
1504#include "task_c.inc"
1514 INTEGER MSGTYP,INFO,I,K,ATID,ATAG,ALEN
1521 CALL SPMD_REDUCE(V,VTMP,LEN,
1522 . SPMD_MIN,IT_SPMD(1))
1524 IF (ISPMD == 0) then
1553#include "implicit_f.inc"
1561#include "com01_c.inc"
1562#include "task_c.inc"
1566 INTEGER IAD_ELEM(2,*), FR_ELEM(*), SIZE, LENR, NTAG(*)
1571 INTEGER MSGTYP,I,,LOC_PROC,NB_NOD,
1573 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
1574 . REQ_R(NSPMD),REQ_S(NSPMD),
1575 . RBUF(LENR), SBUF(LENR) ,MSGOFF
1587 siz = iad_elem(1,i+1)-iad_elem(1,i)
1591 s rbuf(l),siz,it_spmd(i),msgtyp,
1601#include "vectorize.inc"
1602 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1604 IF(ntag(nod)>0)
THEN
1606 sbuf(l) = ntag(nod)-1
1616 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
1618 siz = iad_send(i+1)-iad_send(i)
1621 s sbuf(l),siz,it_spmd(i),msgtyp,
1629 nb_nod = iad_elem(1,i+1)-iad_elem(1,i)
1631 CALL spmd_wait(req_r(i))
1633#include "vectorize.inc"
1634 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1636 ntag(nod) = ntag(nod)+rbuf(l)
1643 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
1644 .
CALL spmd_wait(req_s(i))
1662!||====================================================================
1673#include "implicit_f.inc"
1681#include "com01_c.inc"
1682#include "task_c.inc"
1686 INTEGER NPSEGCOM(*), LSEGCOM(*), FLAG, SIZE
1687 TYPE(t_segvar) :: SEGVAR
1692 INTEGER I, IDEB, IDEB2, MSGOFF, MSGTYP,IAD_RECV(NSPMD),
1693 . REQ_R(NSPMD), IRINDEX(NSPMD),
1694 . LOC_PROC, N, KK, NN, NBIRECV, , INDEX, LEN
1696 my_real WA(SIZE*ALE%GLOBAL%NVCONV)
1712 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_rho)
THEN
1713 wa(ale%GLOBAL%NVCONV*(n-1)+nn
1717 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_eint)
THEN
1718 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%EINT(kk)
1722 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_rk)
THEN
1723 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%RK(kk)
1727 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_re)
THEN
1728 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%RE(kk)
1732 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_uvar)
THEN
1733 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%UVAR(kk)
1738 s wa ,len*ale%GLOBAL%NVCONV,it_spmd
1746 iad_recv(i) = ideb+1
1747 IF(npsegcom(i)>0)
THEN
1748 nbirecv = nbirecv + 1
1749 irindex(nbirecv) = i
1750 len = ale%GLOBAL%NVCONV*npsegcom(i)
1752 s wa(ideb+1),len,it_spmd(i),msgtyp,
1760 CALL spmd_waitany(nbirecv,req_r,index)
1762 ideb2 = iad_recv(i)-1
1763 ideb = ideb2 / ale%GLOBAL%NVCONV
1764 DO n = 1, npsegcom(i)
1765 kk = lsegcom(ideb+n)
1768 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_rho)
THEN
1769 segvar%RHO(kk) = wa(ideb2+ale%GLOBAL%NVCONV
1773 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_eint)
THEN
1774 segvar%EINT(kk) = wa(ideb2+ale%GLOBAL%NVCONV*(n-1)+nn)
1778 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_rk)
THEN
1779 segvar%RK(kk) = wa(ideb2+ale%GLOBAL%NVCONV*(n-1)+nn)
1783 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_re)
THEN
1784 segvar%RE(kk) = wa(ideb2+ale%GLOBAL%NVCONV*(n-1)+nn)
1788 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_uvar)
THEN
1789 segvar%UVAR(kk) = wa(ideb2+ale%GLOBAL%NVCONV*(n-1)+nn)
1805 s wa,len*ale%GLOBAL%NVCONV,it_spmd(1),msgtyp)
1810 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_rho)
THEN
1811 segvar%RHO(kk) = wa(ale%GLOBAL%NVCONV*(n-1)+nn)
1815 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_eint)
THEN
1816 segvar%EINT(kk) = wa(ale%GLOBAL%NVCONV*(n-1)+nn)
1820 IF(nn <= ale%GLOBAL%NVCONV
THEN
1821 segvar%RK(kk) = wa(ale%GLOBAL%NVCONV*(n-1)+nn)
1825 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_re)
THEN
1826 segvar%RE(kk) = wa(ale%GLOBAL%NVCONV*(n-1)+nn)
1830 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_uvar)
THEN
1831 segvar%UVAR(kk) = wa(ale%GLOBAL%NVCONV*(n-1)+nn)
1844 kk = lsegcom(ideb+n)
1847 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_rho)
THEN
1848 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%RHO(kk)
1852 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_eint)
THEN
1853 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%EINT(kk)
1857 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_rk)
THEN
1858 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%RK(kk)
1862 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_re)
THEN
1863 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%RE(kk)
1867 IF(nn <= ale%GLOBAL%NVCONV .AND. segvar%has_uvar)
THEN
1868 wa(ale%GLOBAL%NVCONV*(n-1)+nn) = segvar%UVAR(kk)
1874 s wa ,len*ale%GLOBAL%NVCONV,it_spmd(i),msgtyp)
1888!||--- called by ------------------------------------------------------
1890!||--- calls -----------------------------------------------------
1892!||--- uses -----------------------------------------------------
1902#include "implicit_f.inc"
1910#include "com01_c.inc"
1911#include "com04_c.inc"
1912#include "task_c.inc"
1913#include "param_c.inc"
1917 INTEGER IAD_ELEM(2,*), FR_ELEM(*), ISIZXV
1919 TYPE(t_ebcs_tab),
INTENT(IN) :: EBCS_TAB
1924 INTEGER MSGTYP,I, NOD,LOC_PROC, ,
1925 . SIZ, L, E_LEN, ICOMV, KK, TYP, J
1926 my_real WA(3*ISIZXV)
1932 LOC_PROC = ispmd + 1
1938 typ =ebcs_tab%tab(i)%poly%type
1939 IF(typ == 4.OR.typ == 5) icomv = 1
1942 IF(icomv == 0)
RETURN
1947#include
"vectorize.inc"
1948 DO j=iad_elem(2,i),iad_elem(1,i+1)-1
1962 IF(iad_elem(1,i+1)-iad_elem(2,i)>0)
THEN
1964 siz = e_len*(iad_elem(1,i+1)-iad_elem(2,i))
1966 s wa(l),siz,it_spmd(i),msgtyp)
1975 IF(icomv == 0)
RETURN
1977 siz = e_len*(iad_elem(1,2)-iad_elem(2,1))
1982 s wa,siz,it_spmd(1),msgtyp)
1983#include "vectorize.inc"
1984 DO j=iad_elem(2,1),iad_elem(1,2)-1
1999!||====================================================================
2012 1 LBVOIS ,IPARG ,ELBUF_TAB ,PM ,IXS ,
2013 2 IXQ ,NERCVOIS ,NESDVOIS ,LERCVOIS ,LESDVOIS,
2014 3 LENCOM ,IPM ,BUFMAT)
2020 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas, m51_iflg6_size
2024#include "implicit_f.inc"
2032#include "com01_c.inc"
2033#include "com04_c.inc"
2034#include "task_c.inc"
2035#include "param_c.inc"
2039 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
2041 INTEGER :: (NPARG,*),IXS(NIXS,*), IXQ(NIXQ,*),
2042 . (*), NESDVOIS(*), LERCVOIS(*), LESDVOIS(*),
2043 . LENCOM, IPM(NPROPMI,*)
2044 my_real :: lbvois(m51_iflg6_size,*), pm(npropm,*), bufmat(*)
2050 INTEGER :: I,II,JJ,IDEB,IDEB2,MSGOFF,MSGTYP,IAD_RECV(NSPMD),
2051 . (NSPMD), REQ_R(NSPMD),
2052 . LOC_PROC, N, NN, NBIRECV, IRINDEX(NSPMD), INDEX,
2053 . LEN, ML, NI, KTY, , MFT, IS,
2054 . KB1, KB2, KB3 ,KB4 ,KB10, KB11, KB12, KKB2,
2055 . G_PLA,G_RK,L_RE,L_TEMP,IMAT,IADBUF,IFLG,NELG,ITRIMAT,KK,KJ(6),K
2059 my_real :: WA(M51_IFLG6_SIZE*LENCOM), ELBUF(10000)
2061 TYPE(G_BUFEL_) ,
POINTER :: GBUF
2062 TYPE(L_BUFEL_) ,
POINTER :: LBUF
2063 TYPE(BUF_MAT_) ,
POINTER :: MBUF
2073 iad_recv(i) = ideb2+1
2074 IF(nercvois(i)>0)
THEN
2075 nbirecv = nbirecv + 1
2076 irindex(nbirecv) = i
2077 len = m51_iflg6_size*nercvois(i)
2079 s wa(ideb2+1) , len , it_spmd(i) , msgtyp,
2093 ii = ideb2+m51_iflg6_size*(n-1)
2094 nn = lesdvois(ideb+n)
2096 ml = nint(pm(19,ixs(1,nn)))
2099 ml = nint(pm(19,ixq(1,nn)))
2102 iadbuf = ipm(7,imat)
2104 IF(ml==51)iflg = nint(bufmat(iadbuf-1+31))
2108 gbuf => elbuf_tab(ni)%GBUF
2109 lbuf => elbuf_tab(ni)%BUFLY(1)%LBUF(1,1,1)
2111 lbuf => elbuf_tab(ni)%BUFLY(1)%LBUF(1,1,1)
2115 IF( (kty == 1.OR.kty == 2).AND.(nn<=klt+mft) .AND. nn>mft)
THEN
2116 l_temp = elbuf_tab(ni)%BUFLY(1)%L_TEMP
2122 wa(ii+1) = -(gbuf%SIG(kj(1)+is)+gbuf%SIG(kj(2)+is)+gbuf%SIG(kj(3)+is))*third
2123 wa(ii+2) = gbuf%EINT(is)
2124 wa(ii+3) = gbuf%RHO(is)
2126 wa(ii+4) = lbuf%TEMP(is)
2130 wa(ii+5) = lbuf%SSP(is)
2132 IF(elbuf_tab(ni)%BUFLY(1)%L_PLA > 0)wa(ii+6) = lbuf%PLA(is)
2137 kk = m51_n0phas + (itrimat-1)*m51_nvphas
2138 iadbuf=18 ; wa(ii+07) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2139 iadbuf=1 ; wa(ii+08) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2140 iadbuf=8 ; wa(ii+09) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2141 iadbuf=9 ; wa(ii+10) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2142 iadbuf=16 ; wa(ii+11) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2143 iadbuf=14 ; wa(ii+12) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2144 iadbuf=15 ; wa(ii+13) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2146 kk = m51_n0phas + (itrimat-1)*m51_nvphas
2147 iadbuf=18 ; wa(ii+14) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2148 iadbuf=1 ; wa(ii+15) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2149 iadbuf=8 ; wa(ii+16) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2150 iadbuf=9 ; wa(ii+17) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2151 iadbuf=16 ; wa(ii+18) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2152 iadbuf=14 ; wa(ii+19) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2153 iadbuf=15 ; wa(ii+20) = mbuf%VAR(nelg*(iadbuf+kk-1)+is
2155 kk = m51_n0phas + (itrimat-1)*m51_nvphas
2156 iadbuf=18 ; wa(ii+21) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2157 iadbuf=1 ; wa(ii+22) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2158 iadbuf=8 ; wa(ii+23) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2159 iadbuf=9 ; wa(ii+24) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2160 iadbuf=16 ; wa(ii+25) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2161 iadbuf=14 ; wa(ii+26) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2162 iadbuf=15 ; wa(ii+27) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2164 kk = m51_n0phas + (itrimat-1)*m51_nvphas
2165 iadbuf=18 ; wa(ii+28) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2166 iadbuf=1 ; wa(ii+29) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2167 iadbuf=8 ; wa(ii+30) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2168 iadbuf=9 ; wa(ii+31) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2169 iadbuf=16 ; wa(ii+32) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2170 iadbuf=14 ; wa(ii+33) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2171 iadbuf=15 ; wa(ii+34) = mbuf%VAR(nelg*(iadbuf+kk-1)+is)
2173 wa(ii+35) = mbuf%VAR(nelg*3+is)
2175 iadbuf = ipm(7,imat)
2176 wa(ii+37) = 51 + 100*nint(bufmat(iadbuf-1+276+4))
2178 . + 10000*nint(bufmat(iadbuf-1+276+2))
2179 . + 100000*nint(bufmat(iadbuf-1+276+1))
2186 wa(ii+1:ii+m51_iflg6_size) = zero
2192 s wa(ideb2+1),len*m51_iflg6_size,it_spmd(i),msgtyp,
2195 ideb2 = ideb2 + m51_iflg6_size*len
2200 CALL spmd_waitany(nbirecv,req_r,index)
2203 ideb = (ideb2-1)/m51_iflg6_size
2204 DO n = 1, nercvois(i)
2205 jj = ideb2+m51_iflg6_size*(n-1)
2206 nn = lercvois(ideb+n)-numels
2207 lbvois(1:m51_iflg6_size,nn) = wa(jj+0:jj+m51_iflg6_size-1)
2211 IF(nesdvois(i)>0)
THEN
2212 CALL spmd_wait(req_s(i))
subroutine alemain(timers, pm, geo, x, a, v, ms, wa, elbuf_tab, bufmat, partsav, tf, val2, veul, fv, stifn, fsky, eani, phi, fill, dfill, alph, skew, w, d, dsave, asave, dt2t, dt2save, xcell, iparg, npc, ixs, ixq, ixtg, iads, ifill, icodt, iskew, ims, iadq, neltst, ityptst, iparts, ipartq, itask, nodft, nodlt, nbrcvois, temp, fsavsurf, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, isizxv, iad_elem, fr_elem, fskym, msnf, ipari, segvar, itab, iskwn, diffusion, iresp, volmon, fsav, igrsurf, neltsa, ityptsa, weight, npsegcom, lsegcom, ipm, igeo, itabm1, lenqmv, nv46, aglob, gresav, grth, igrth, lgauge, gauge, mssa, dmels, igaup, ngaup, table, ms0, xdp, igrnod, sfem_nodvar, fskyi, isky, s_sfem_nodvar, intbuf_tab, ixt, igrv, agrav, sensors, lgrav, condnsky, condn, ms_2d, multi_fvm, igrtruss, igrbric, nloc_dmg, id_global_vois, face_vois, ebcs_tab, ale_connectivity, mat_elem, h3d_data, dt, output, need_comm_inter18, idtmins, idtmin, maxfunc, imon_mat, userl_avail, impl_s, idyna, python, matparam, glob_therm)
subroutine spmd_extag(ntag, iad_elem, fr_elem, lenr)
subroutine spmd_envois(dim, phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_e4vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_glob_dmin9(v, len)
subroutine spmd_init_ebcs(v, isizxv, iad_elem, fr_elem, ebcs_tab)
subroutine spmd_exalew_pon(fsky, fskyv, iad_elem, fr_elem, nale, addcne, procne, fr_nbcc, size, lenr, lens)
subroutine spmd_xvois(x, nbrcvois, nbsdvois, lnrcvois, lnsdvois, lencom)
subroutine spmd_wvois(x, d, w, nbrcvois, nbsdvois, lnrcvois, lnsdvois, lencom)
subroutine spmd_exalew(wa, wb, iad_elem, fr_elem, nale, size, lenr)
subroutine spmd_evois(t, val2, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_i8vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_segcom(segvar, npsegcom, lsegcom, size, flag)
subroutine spmd_i4vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_e6vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_l51vois(lbvois, iparg, elbuf_tab, pm, ixs, ixq, nercvois, nesdvois, lercvois, lesdvois, lencom, ipm, bufmat)
subroutine spmd_e1vois(phi, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_l11vois(lbvois, iparg, elbuf_tab, pm, ixs, ixq, nercvois, nesdvois, lercvois, lesdvois, lencom)
subroutine spmd_ibcast(tabi, tabr, n1, n2, from, add)