34 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
35#include "implicit_f.inc"
50 INTEGER NSTRF(*), WEIGHT(*)
52 . x(3,*), ms(*), wa(*)
57 INTEGER MSGOFF,INFO,I,J,K,L,NELSEG,NNOD,NELC,NELTG,
58 . NN,P,ATID,ATAG,ALEN,IDEB,SIZ,K0,K1,K2,A_AR,IFRAM,
59 . REM_PROC,MSGTYP,REM_PROC2,MSGTYP2,,N2,N3,NOD,
60 . SENDTO(PARASIZ),RECVFR(PARASIZ),LOC_PROC,NB_NOD,
61 . REQ_R(PARASIZ),BUFSIZ,IALL
62 INTEGER STATUS(MPI_STATUS_SIZE),IERROR
63 SAVE sendto,recvfr,bufsiz
74 bufsiz = nsect * 3 * a_ar
86 neltg = nstrf(k1+4+3*nelc)
87 IF (weight(n1)==1.OR.weight(n2)==1.OR.weight(n3)==1)
91 IF (nelc+neltg/=0.AND.(weight(n1)==0.OR.weight(n2)==0
92 + .OR.weight(n3)==0.))
THEN
106 rem_proc = mod(loc_proc + i-1,nspmd)+1
108 rem_proc2 = mod(loc_proc+nspmd-i-1,nspmd)+1
111 IF(rem_proc/=loc_proc.OR.rem_proc2/=loc_proc)
THEN
113 s wa,siz,real,it_spmd(rem_proc),msgtyp,
114 r wa(ideb),siz,real,it_spmd(rem_proc2),msgtyp2,
115 g spmd_comm_world,status,ierror)
117 IF (rem_proc2/=loc_proc)
THEN
119 sendto(rem_proc2) = sendto(rem_proc2) +
120 + nint(wa(j)*wa(ideb+nsect+j-1))
121 recvfr(rem_proc2) = recvfr(rem_proc2) +
122 + nint(wa(nsect+j)*wa(ideb+j-1))
132 s wa(1+i*bufsiz),bufsiz,real,it_spmd(i),msgtyp,
133 g spmd_comm_world,req_r(i),ierror)
143 IF (weight(n1)==1)
THEN
150 IF (weight(n2)==1)
THEN
157 IF (weight(n3)==1)
THEN
173 s wa,siz,real,it_spmd(i),msgtyp,
174 g spmd_comm_world,ierror)
182 CALL mpi_wait(req_r(i),status,ierror)
205 IF (ifram<=10.OR.n1/=0)
THEN
206 bufsiz = bufsiz + 3*a_ar
208 IF(mod(ifram,10)==1)
THEN
209 bufsiz = bufsiz + nnod*a_ar
210 ELSEIF( mod(ifram,10)==2)
THEN
211 bufsiz = bufsiz + 2*nnod*a_ar
226 k2 = k0+30+nstrf(k0+14)
227 nelseg = nstrf(k0+7)+nstrf(k0+8)+nstrf(k0+9)+nstrf(k0+10)+
228 + nstrf(k0+11)+nstrf(k0+12)+nstrf(k0+13)
230 IF (ifram<=10.OR.n1/=0)
THEN
231 IF (weight(n1)==1.OR.weight(n2)==1.OR.weight(n3)==1)
235 IF (nelseg/=0.AND.(weight(n1)==0.OR.weight(n2)==0
236 + .OR.weight(n3)==zero))
THEN
240 IF(mod(ifram,10)==1.OR.mod(ifram,10)==2)
THEN
243 IF (weight(nstrf(k2+nn-1))==1)
THEN
249 IF (nelseg/=0.AND.iall==0)
THEN
263 rem_proc = mod(loc_proc + i-1,nspmd)+1
265 rem_proc2 = mod(loc_proc+nspmd-i-1,nspmd)+1
268 IF(rem_proc/=loc_proc.OR.rem_proc2/=loc_proc)
THEN
270 s wa,siz,real,it_spmd(rem_proc),msgtyp,
271 r wa(ideb),siz,real,it_spmd(rem_proc2),msgtyp2,
272 g spmd_comm_world,status,ierror)
275 IF (rem_proc2/=loc_proc)
THEN
277 sendto(rem_proc2) = sendto(rem_proc2) +
278 + nint(wa(j)*wa(ideb+nsect+j-1))
279 recvfr(rem_proc2) = recvfr(rem_proc2) +
280 + nint(wa(nsect+j)*wa(ideb+j-1))
290 s wa(1+i*bufsiz),bufsiz,real,it_spmd(i),msgtyp,
291 g spmd_comm_world,req_r(i),ierror)
302 k2 = k0+30+nstrf(k0+14)
303 nelseg = nstrf(k0+7)+nstrf(k0+8)+nstrf(k0+9)+nstrf(k0+10)+
304 + nstrf(k0+11)+nstrf(k0+12)+nstrf(k0+13)
307 IF (ifram<=10.OR.n1/=0)
THEN
308 IF (weight(n1)==1)
THEN
315 IF (weight(n2)==1)
THEN
322 IF (weight(n3)==1)
THEN
331 IF(mod(ifram,10)==1)
THEN
334 IF (weight(n3)==1)
THEN
343 ELSEIF( mod(ifram,10)==2)
THEN
346 IF (weight(n3)==1)
THEN
370 s wa,siz,real,it_spmd(i),msgtyp,
371 g spmd_comm_world,ierror)
380 CALL mpi_wait(req_r(i),status,ierror)
413 2 FR_SEC,IAD_SEC,LSEND1,LRECV1,LSEND2,
419 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
420#include "implicit_f.inc"
428#include "com01_c.inc"
429#include "com04_c.inc"
434 INTEGER NSTRF(*), (*), FR_SEC(+1,*), IAD_SEC(4,*),
435 . LSEND1, , LRECV1, LRECV2,WEIGHT_MD(*)
437 . x(3,*), ms(*), xsec(4,3,*)
442 INTEGER LOC_PROC,A_AR,N,L,I,J,II,K,M,JJ, LEN,A_AR2,
443 . MSGTYP,MSGOFF,MSGOFF2,SIZ,IDEBR,IDEBS,ICC,IFRAM,
444 . ierror, nbirecv, nbisend, index, nbrby, nbnod,
445 . pmain, ideb, lens, lenr, k0, k2, n1, n2, n3, nnod,
447 . iad_send(nspmd+1),iad_recv(nspmd+1),
448 . req_r(nspmd), req_s(nspmd),
449 . irindex(nspmd), isindex(nspmd),
450 . status(mpi_status_size),iad_stmp(nspmd)
454 parameter(a_ar2 = 13)
456 . mas, xxc, yyc ,zzc, dsec(nsect),
457 . sbuf(a_ar*lsend1),sbuf2(a_ar2*lsend2),
458 . rbuf(a_ar*lrecv1),rbuf2(a_ar2*lrecv2)
470 IF(iad_sec(2,i)>0)
THEN
472 nbirecv = nbirecv + 1
474 siz = iad_sec(2,i)*a_ar
476 s rbuf(idebr),siz,real,it_spmd(i),msgtyp,
477 g spmd_comm_world,req_r(nbirecv),ierror)
481 IF(iad_sec(1,i)>0)
THEN
482 nbisend = nbisend + 1
484 siz = iad_sec(1,i)*a_ar
486 iad_stmp(i)=iad_send(i)
489 iad_recv(nspmd+1) = idebr
495 pmain = fr_sec(nspmd+1,i)
500 k2 = k0+30+nstrf(k0+14)
501 nelseg = nstrf(k0+7)+nstrf(k0+8)+nstrf(k0+9)+nstrf(k0+10)+
502 + nstrf(k0+11)+nstrf(k0+12)+nstrf(k0+13)
504 IF(pmain>0.AND.loc_proc/=pmain)
THEN
506 IF (ifram<=10.OR.n1/=0)
THEN
508 IF(weight(n1)==1)
THEN
518 IF(weight(n2)==1)
THEN
528 IF(weight(n3)==1)
THEN
538 IF(mod(ifram,10)==1)
THEN
545 IF (weight_md(n)==1)
THEN
560 ELSEIF(mod(ifram,10)==2)
THEN
568 IF (weight_md(n)==1)
THEN
588 IF (ifram<=10.OR.n1/=0)
THEN
590 IF(weight(n1)==1)
THEN
591 xsec(1,1,i) = x(1,n1)
592 xsec(1,2,i) = x(2,n1)
593 xsec(1,3,i) = x(3,n1)
597 IF(weight(n2)==1)
THEN
598 xsec(2,1,i) = x(1,n2)
599 xsec(2,2,i) = x(2,n2)
600 xsec(2,3,i) = x(3,n2)
604 IF(weight(n3)==1)
THEN
605 xsec(3,1,i) = x(1,n3)
606 xsec(3,2,i) = x(2,n3)
607 xsec(3,3,i) = x(3,n3)
611 IF(mod(ifram,10)==1)
THEN
618 IF (weight_md(n)==1)
THEN
630 ELSEIF(mod(ifram,10)==2)
THEN
638 IF (weight_md(n)==1)
THEN
658 siz = iad_stmp(i)-iad_send(i)
662 s sbuf(idebs),siz,real,it_spmd(i),msgtyp,
663 g spmd_comm_world,req_s(i),ierror)
667 CALL mpi_waitany(nbirecv,req_r,index,status,ierror)
671 pmain = fr_sec(nspmd+1,n)
672 IF(loc_proc==pmain)
THEN
676 nn = nint(rbuf(ideb+(k-1)*a_ar ))
678 xsec(1,1,n) = rbuf(ideb+(k-1)*a_ar+1)
679 xsec(1,2,n) = rbuf(ideb+(k-1)*a_ar+2)
680 xsec(1,3,n) = rbuf(ideb+(k-1)*a_ar+3)
682 xsec(2,1,n) = rbuf(ideb+(k-1)*a_ar+1)
683 xsec(2,2,n) = rbuf(ideb+(k-1)*a_ar+2)
684 xsec(2,3,n) = rbuf(ideb+(k-1)*a_ar+3)
686 xsec(3,1,n) = rbuf(ideb+(k-1)*a_ar+1)
687 xsec(3,2,n) = rbuf(ideb+(k-1)*a_ar+2)
688 xsec(3,3,n) = rbuf(ideb+(k-1)*a_ar+3)
689 ELSEIF(nn==4.OR.nn==5)
THEN
690 xsec(4,1,n) = xsec(4,1,n)+rbuf(ideb+(k-1)*a_ar+1)
691 xsec(4,2,n) = xsec(4,2,n)+rbuf(ideb+(k-1)*a_ar+2)
692 xsec(4,3,n) = xsec(4,3,n)+rbuf(ideb+(k-1)*a_ar+3)
693 dsec(n) = dsec(n) + rbuf(ideb+(k-1)*a_ar+4)
696 ideb = ideb + a_ar*nb
710 pmain = fr_sec(nspmd+1,n)
712 IF(loc_proc==pmain)
THEN
713 IF(mod(ifram,10)==1.OR.mod(ifram,10)==2)
THEN
715 xsec(4,1,n) = xsec(4,1,n)/dsec(n)
716 xsec(4,2,n) = xsec(4,2,n)/dsec(n)
717 xsec(4,3,n) = xsec(4,3,n)/dsec(n)
728 IF(iad_sec(4,i)>0)
THEN
730 nbirecv = nbirecv + 1
732 siz = iad_sec(4,i)*a_ar2
734 s rbuf2(idebr),siz,real,it_spmd(i),msgtyp,
735 g spmd_comm_world,req_r(nbirecv),ierror)
741 IF(iad_sec(3,nspmd+1)>0)
THEN
745 pmain = fr_sec(nspmd+1,n)
750 IF(loc_proc==pmain)
THEN
752 IF (ifram<=10.OR.n1/=0)
THEN
753 sbuf2(l+2) = xsec(1,1,n)
754 sbuf2(l+3) = xsec(1,2,n)
755 sbuf2(l+4) = xsec(1,3,n)
756 sbuf2(l+5) = xsec(2,1,n)
757 sbuf2(l+6) = xsec(2,2,n)
758 sbuf2(l+7) = xsec(2,3,n)
759 sbuf2(l+8) = xsec(3,1,n)
760 sbuf2(l+9) = xsec(3,2,n)
761 sbuf2(l+10)= xsec(3,3,n)
773 IF(mod(ifram,10)==1.OR.mod(ifram,10)==2)
THEN
774 sbuf2(l+11) = xsec(4,1,n)
775 sbuf2(l+12) = xsec(4,2,n)
776 sbuf2(l+13) = xsec(4,3,n)
788 IF(iad_sec(3,i)>0)
THEN
790 nbisend = nbisend + 1
793 s sbuf2,l,real,it_spmd(i),msgtyp,
794 g spmd_comm_world,req_s(i),ierror)
800 CALL mpi_waitany(nbirecv,req_r,index,status,ierror)
806 xsec(1,1,n) = rbuf2(l+1)
807 xsec(1,2,n) = rbuf2(l+2)
808 xsec(1,3,n) = rbuf2(l+3)
809 xsec(2,1,n) = rbuf2(l+4)
810 xsec(2,2,n) = rbuf2(l+5)
811 xsec(2,3,n) = rbuf2(l+6)
812 xsec(3,1,n) = rbuf2(l+7)
813 xsec(3,2,n) = rbuf2(l+8)
814 xsec(3,3,n) = rbuf2(l+9)
815 xsec(4,1,n) = rbuf2(l+10)
816 xsec(4,2,n) = rbuf2(l+11)
817 xsec(4,3,n) = rbuf2(l+12)
824 CALL mpi_wait(req_s(i),status,ierror)
841 2 IAD_CUT,NSIZE ,NNODG,WEIGHT,IFLG )
845 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
846#include "implicit_f.inc"
854#include "com01_c.inc"
859 INTEGER NSTRF(*), WEIGHT(*), RG_CUT(*), IAD_CUT(*),
860 . NNOD, NSIZE, NNODG, IFLG
867 INTEGER LOC_PROC,N,L,I,K,LEN,II,INDEX,NB,
868 . MSGTYP,MSGOFF,SIZ,IDEBR,
869 . IERROR, NBIRECV,IDEB,
870 . iad_recv(nspmd+1),req_r(nspmd),irindex(nspmd),
871 . status(mpi_status_size)
874 . sbuf((3*iflg+1)*nnod),rbuf((3*iflg+1)*nsize),
875 . secbufg(3*iflg,nnodg)
882 IF(loc_proc/=1.AND.nnod>0)
THEN
887 IF(weight(n)==1)
THEN
888 sbuf(l+1) = rg_cut(k)
901 IF(weight(n)==1)
THEN
902 sbuf(l+1) = rg_cut(k)
911 CALL mpi_send(sbuf,l,real,it_spmd(1),msgtyp,
912 . spmd_comm_world,ierror)
913 ELSEIF(loc_proc==1)
THEN
919 IF(iad_cut(i)>0)
THEN
921 nbirecv = nbirecv + 1
923 siz = iad_cut(i)*(1+iflg*3)
925 s rbuf(idebr),siz,real,it_spmd(i),msgtyp,
926 g spmd_comm_world,req_r(nbirecv),ierror)
930 iad_recv(nspmd+1) = idebr
935 IF(weight(n)==1)
THEN
937 secbufg(1,i) = d(1,n)
938 secbufg(2,i) = d(2,n)
939 secbufg(3,i) = d(3,n)
940 secbufg(4,i) = dr(1,n)
941 secbufg(5,i) = dr(2,n)
942 secbufg(6,i) = dr(3,n)
948 IF(weight(n)==1)
THEN
951 secbufg(2,i) = d(2,n)
952 secbufg(3,i) = d(3,n)
958 CALL mpi_waitany(nbirecv,req_r,index,status,ierror)
966 i = nint(rbuf(ideb+(k-1)*len))
967 secbufg(1,i) = rbuf(ideb+(k-1)*len+1)
968 secbufg(2,i) = rbuf(ideb+(k-1)*len+2)
969 secbufg(3,i) = rbuf(ideb+(k-1)*len+3)
970 secbufg(4,i) = rbuf(ideb+(k-1)*len+4)
971 secbufg(5,i) = rbuf(ideb+(k-1)*len+5)
972 secbufg(6,i) = rbuf(ideb+(k-1)*len+6)
976 i = nint(rbuf(ideb+(k-1)*len))
977 secbufg(1,i) = rbuf(ideb+(k-1)*len+1)
978 secbufg(2,i) = rbuf(ideb+(k-1)*len+2)
979 secbufg(3,i) = rbuf(ideb+(k-1)*len+3)
1029 2 NSIZE ,NNODG,WEIGHT ,IFLG )
1033 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1034#include "implicit_f.inc"
1042#include "com01_c.inc"
1043#include "task_c.inc"
1047 INTEGER NSTRF(*), WEIGHT(*), RG_CUT(*), IAD_CUT(*),
1048 . NNOD, NSIZE, NNODG, IFLG
1055 INTEGER LOC_PROC,N,L,I,K,LEN,II,INDEX,NB,
1056 . MSGTYP,MSGOFF,SIZ,IDEBR,
1057 . IERROR, NBIRECV,IDEB,
1058 . IAD_RECV(NSPMD+1),REQ_R(NSPMD),IRINDEX(),
1059 . status(mpi_status_size)
1062 . sbuf((3*iflg+1)*nnod),rbuf((3*iflg+1)*nsize),
1063 . secbufg(3*iflg,nnodg)
1068 loc_proc = ispmd + 1
1070 IF(loc_proc/=1.AND.nnod>0)
THEN
1075 IF(weight(n)==1)
THEN
1076 sbuf(l+1) = rg_cut(k)
1077 sbuf(l+2) = secfcum(1,n)
1078 sbuf(l+3) = secfcum(2,n)
1079 sbuf(l+4) = secfcum(3,n)
1080 sbuf(l+5) = secfcum(5,n)
1081 sbuf(l+6) = secfcum(6,n)
1082 sbuf(l+7) = secfcum(7,n)
1086 ELSEIF(iflg==1)
THEN
1089 IF(weight(n)==1)
THEN
1090 sbuf(l+1) = rg_cut(k)
1091 sbuf(l+2) = secfcum(1,n)
1092 sbuf(l+3) = secfcum(2,n)
1093 sbuf(l+4) = secfcum(3,n)
1099 CALL mpi_send(sbuf,l,real,it_spmd(1),msgtyp,
1100 . spmd_comm_world,ierror)
1101 ELSEIF(loc_proc==1)
THEN
1107 IF(iad_cut(i)>0)
THEN
1109 nbirecv = nbirecv + 1
1110 irindex(nbirecv) = i
1111 siz = iad_cut(i)*(1+iflg*3)
1113 s rbuf(idebr),siz,real,it_spmd(i),msgtyp,
1114 g spmd_comm_world,req_r(nbirecv),ierror)
1118 iad_recv(nspmd+1) = idebr
1133 secbufg(1,i) = secfcum(1,n)
1134 secbufg(2,i) = secfcum(2,n
1135 secbufg(3,i) = secfcum(3,n)
1136 secbufg(4,i) = secfcum(5,n)
1137 secbufg(5,i) = secfcum(6,n)
1138 secbufg(6,i) = secfcum(7,n)
1140 ELSEIF(iflg==1)
THEN
1150 secbufg(1,i) = secfcum(1,n)
1151 secbufg(2,i) = secfcum(2,n)
1152 secbufg(3,i) = secfcum(3,n)
1157 CALL mpi_waitany(nbirecv,req_r,index,status,ierror)
1165 i = nint(rbuf(ideb+(k-1)*len))
1166 secbufg(1,i) = secbufg(1,i) + rbuf(ideb+(k-1)*len+1)
1167 secbufg(2,i) = secbufg(2,i) + rbuf(ideb+(k-1)*len+2)
1168 secbufg(3,i) = secbufg(3,i) + rbuf(ideb+(k-1)*len+3)
1169 secbufg(4,i) = secbufg(4,i) + rbuf(ideb+(k-1)*len+4)
1170 secbufg(5,i) = secbufg(5,i) + rbuf(ideb+(k-1)*len+5)
1171 secbufg(6,i) = secbufg(6,i) + rbuf(ideb+(k-1)*len+6)
1175 i = nint(rbuf(ideb+(k-1)*len))
1176 secbufg(1,i) = secbufg(1,i) + rbuf(ideb+(k-1)*len+1)
1177 secbufg(2,i) = secbufg(2,i) + rbuf(ideb+(k-1)*len+2)
1178 secbufg(3,i) = secbufg(3,i) + rbuf(ideb+(k-1)*len+3)
1198 ELSEIF(iflg==1)
THEN
1227 2 LENR ,NNOD,WEIGHT)
1232 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1233#include "implicit_f.inc"
1241#include "com01_c.inc"
1242#include "task_c.inc"
1246 INTEGER NSTRF(*), IAD_ELEM(2,*), (*), WEIGHT(*),
1254 INTEGER MSGTYP,I,NOD,LOC_PROC,IERROR,
1256 . STATUS(MPI_STATUS_SIZE),
1257 . IAD_SEND(NSPMD+1),IAD_RECV(NSPMD+1),
1258 . REQ_R(NSPMD),REQ_S(NSPMD),MSGOFF
1260 . rbuf(size*lenr), sbuf(size*lenr)
1265 loc_proc = ispmd + 1
1269 siz = size*(iad_elem(1,i+1)-iad_elem(1,i))
1273 s rbuf(l),siz,real,it_spmd(i),msgtyp,
1274 g spmd_comm_world,req_r(i),ierror)
1283#include "vectorize.inc"
1284 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1286 sbuf(l ) = secfcum(1,nod)
1287 sbuf(l+1) = secfcum(2,nod)
1288 sbuf(l+2) = secfcum(3,nod)
1289 sbuf(l+3) = secfcum(5,nod)
1290 sbuf(l+4) = secfcum(6,nod)
1291 sbuf(l+5) = secfcum(7,nod)
1295#include "vectorize.inc"
1296 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1298 sbuf(l ) = secfcum(1,nod)
1299 sbuf(l+1) = secfcum(2,nod)
1300 sbuf(l+2) = secfcum(3,nod)
1311 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
1313 siz = iad_send(i+1)-iad_send(i)
1316 s sbuf(l),siz,real,it_spmd(i),msgtyp,
1317 g spmd_comm_world,req_s(i),ierror)
1323 nb_nod = iad_elem(1,i+1)-iad_elem(1,i)
1325 CALL mpi_wait(req_r(i),status,ierror)
1328#include "vectorize.inc"
1329 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1331 secfcum(1,nod) = secfcum(1,nod) + rbuf(l)
1332 secfcum(2,nod) = secfcum(2,nod) + rbuf(l+1)
1333 secfcum(3,nod) = secfcum(3,nod) + rbuf(l+2)
1334 secfcum(5,nod) = secfcum(5,nod) + rbuf(l+3)
1335 secfcum(6,nod) = secfcum(6,nod) + rbuf(l+4)
1336 secfcum(7,nod) = secfcum(7,nod) + rbuf(l+5)
1340#include "vectorize.inc"
1341 DO j=iad_elem(1,i),iad_elem(1,i+1)-1
1343 secfcum(1,nod) = secfcum(1,nod) + rbuf(l)
1345 secfcum(3,nod) = secfcum(3,nod) + rbuf(l
1355#include "vectorize.inc"
1358 secfcum(1,nod) = secfcum(1,nod)*weight(nod)
1360 secfcum(3,nod) = secfcum(3,nod)*weight(nod)
1361 secfcum(5,nod) = secfcum(5,nod)*weight(nod)
1362 secfcum(6,nod) = secfcum(6,nod
1363 secfcum(7,nod) = secfcum(7,nod)*weight(nod)
1366#include "vectorize.inc"
1369 secfcum(1,nod) = secfcum(1,nod)*weight(nod)
1370 secfcum(2,nod) = secfcum(2,nod)*weight(nod)
1371 secfcum(3,nod) = secfcum(3,nod)*weight(nod)
1376 IF(iad_elem(1,i+1)-iad_elem(1,i)>0)
THEN
1377 CALL mpi_wait(req_s(i),status,ierror)
1394 2 FR_CUT ,IAD_CUT,IFLG )
1398 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
1399#include "implicit_f.inc"
1407#include "com01_c.inc"
1408#include "task_c.inc"
1412 INTEGER FR_CUT(*),IAD_CUT(*),
1415 . SECBUFG(*), SECBUF1(*), SECBUF2(*)
1420 INTEGER LOC_PROC,N,L,I,K,LEN,P,NN,N0,OFFG,
1421 . MSGTYP,MSGOFF,SIZ,IDEBR,
1422 . IERROR, NBIRECV,IDEB,
1423 . IAD_RECV(NSPMD+1),
1424 . STATUS(MPI_STATUS_SIZE)
1427 . sbuf(6*iflg*nnodg),rbuf(6*iflg*nnod)
1431 loc_proc = ispmd + 1
1433 IF(loc_proc==1)
THEN
1437 IF(iad_cut(1)/=0)
THEN
1442 secbuf1(6*i-5) = secbufg((n-1)*6+1)
1443 secbuf1(6*i-4) = secbufg((n-1)*6+2)
1444 secbuf1(6*i-3) = secbufg((n-1)*6+3)
1445 secbuf1(6*i-2) = secbufg((n-1)*6+4)
1446 secbuf1(6*i-1) = secbufg((n-1)*6+5)
1447 secbuf1(6*i) = secbufg((n-1)*6+6)
1448 secbuf2(6*i-5) = secbufg(offg+(n-1)*6+1)
1449 secbuf2(6*i-4) = secbufg(offg+(n-1)*6+2)
1450 secbuf2(6*i-3) = secbufg(offg+(n-1)*6+3)
1451 secbuf2(6*i-2) = secbufg(offg+(n-1)*6+4)
1452 secbuf2(6*i-1) = secbufg(offg+(n-1)*6+5)
1453 secbuf2(6*i) = secbufg(offg+(n-1)*6+6)
1455 ELSEIF(iflg==1)
THEN
1458 secbuf1(6*i-5) = secbufg((n-1)*6+1)
1459 secbuf1(6*i-4) = secbufg((n-1)*6+2)
1460 secbuf1(6*i-3) = secbufg((n-1)*6+3)
1461 secbuf1(6*i-2) = secbufg((n-1)*6+4)
1462 secbuf1(6*i-1) = secbufg((n-1)*6+5)
1463 secbuf1(6*i) = secbufg((n-1)*6+6)
1470 IF(iad_cut(p)/=0)
THEN
1476 sbuf(l+1) = secbufg((n-1)*6+1)
1477 sbuf(l+2) = secbufg((n-1)*6+2)
1478 sbuf(l+3) = secbufg((n-1)*6+3)
1479 sbuf(l+4) = secbufg((n-1)*6+4)
1480 sbuf(l+5) = secbufg((n-1)*6+5)
1481 sbuf(l+6) = secbufg((n-1)*6+6)
1482 sbuf(l+7) = secbufg(offg+(n-1)*6+1)
1483 sbuf(l+8) = secbufg(offg+(n-1)*6+2)
1484 sbuf(l+9) = secbufg(offg+(n-1)*6+3)
1485 sbuf(l+10)= secbufg(offg+(n-1)*6+4)
1486 sbuf(l+11)= secbufg(offg+(n-1)*6+5)
1487 sbuf(l+12)= secbufg(offg+(n-1)*6+6)
1490 ELSEIF(iflg==1)
THEN
1493 sbuf(l+1) = secbufg((n-1)*6+1)
1494 sbuf(l+2) = secbufg((n-1)*6+2)
1496 sbuf(l+4) = secbufg((n-1)*6+4)
1497 sbuf(l+5) = secbufg((n-1)*6+5)
1498 sbuf(l+6) = secbufg((n-1)*6+6)
1504 CALL mpi_send(sbuf,l,real,it_spmd(p),msgtyp,
1505 . spmd_comm_world,ierror)
1508 ELSEIF(loc_proc/=1.AND.nnod>0)
THEN
1512 s rbuf,siz,real,it_spmd(1),msgtyp,
1513 g spmd_comm_world,status,ierror)
1518 secbuf1(6*i-5) = rbuf(l+1)
1519 secbuf1(6*i-4) = rbuf(l+2)
1520 secbuf1(6*i-3) = rbuf(l+3)
1521 secbuf1(6*i-2) = rbuf(l+4)
1522 secbuf1(6*i-1) = rbuf(l+5)
1523 secbuf1(6*i) = rbuf(l+6)
1524 secbuf2(6*i-5) = rbuf(l+7)
1525 secbuf2(6*i-4) = rbuf(l+8)
1526 secbuf2(6*i-3) = rbuf(l+9)
1527 secbuf2(6*i-2) = rbuf(l+10)
1528 secbuf2(6*i-1) = rbuf(l+11)
1529 secbuf2(6*i) = rbuf(l+12)
1532 ELSEIF(iflg==1)
THEN
1535 secbuf1(6*i-5) = rbuf(l+1)
1536 secbuf1(6*i-4) = rbuf(l+2)
1537 secbuf1(6*i-3) = rbuf(l+3)
1538 secbuf1(6*i-2) = rbuf(l+4)
1539 secbuf1(6*i-1) = rbuf(l+5)
1540 secbuf1(6*i) = rbuf(l+6)