46
47
48
53 USE intbufdef_mod
54 USE sensor_mod
55
56
57
58 USE spmd_comm_world_mod, ONLY : spmd_comm_world
59#include "implicit_f.inc"
60
61
62
63#include "spmd.inc"
64
65
66
67#include "com01_c.inc"
68#include "com04_c.inc"
69#include "com08_c.inc"
70#include "param_c.inc"
71#include "task_c.inc"
72#include "assert.inc"
73
74
75
76 INTEGER ,INTENT(IN) :: NSENSOR
77 INTEGER NBINTC,ISLEN7,IRLEN7,ISLEN11,IRLEN11,ISLEN17,IRLEN17,
78 . IRLEN7T,ISLEN7T,IRLEN20,ISLEN20 ,IRLEN20T,ISLEN20T,
79 . IRLEN20E,ISLEN20E,
80 . IPARI(NPARI,NINTER),
81 . NEWFRONT(*), INTLIST(*),
82 . ISENDTO(NINTER+1,*) ,IRCVFROM(+1,*)
83 INTEGER MODE
84 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
85 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
86
87
88
89#ifdef MPI
90 INTEGER LEN, ITYP,
91 . P, I, J, L, NIN ,IDEB, IDEB2, IDEB3, II,
92 . LENOUT, I0, NS, INTTH,
93 . ITY,
94 . SIZE, LOC_PROC, MSGTYP,
95 . MSGOFF, MSGOFF2, MSGOFF3, MSGOFF4,
96 . IERROR, IDEBUT(NSPMD+NINTER),
97 . STATUS(MPI_STATUS_SIZE),REQ_S(NSPMD),
98 . ISUBTMP(NINTER,2,NSPMD),ISUBTMP2(NINTER,2,NSPMD),
99 . IDEBUT2(NINTER), ISENS,INTERACT,
100 . IEDGE
101 INTEGER :: SIZ,IDEB_EDGE,NB_SUBINT
102 INTEGER :: INDEX_PROC
103 LOGICAL :: ONLY_INTER_7
104 DATA msgoff/1009/
105 DATA msgoff2/1010/
106 DATA msgoff3/1011/
107 DATA msgoff4/1012/
108
109
111 . startt,stopt,dist,
112 . ts
113
114
115
116 IF(nspmd==1) RETURN
117 loc_proc = ispmd+1
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 IF(mode == 1) THEN
138
140
141
142
153
154
155
156
157 DO p=1,nspmd
162 ENDDO
163 ENDIF
164
165
171
172
173
175 l = 0
176 SIZE = 4+2*nspmd
177 DO ii = 1, nbintc
178 nin = intlist(ii)
179 ity=ipari(7,nin)
180 IF(ity==7.OR.ity==10.OR.
181 . ity==22.OR.ity==23.OR.ity==24.OR.
182 . ity==20.OR.ity==11.OR.ity==17.OR.
183 . ity==25) THEN
184
185
186 interact = 0
187 isens = 0
188 IF(ity == 7.OR.ity == 11.OR.ity == 24.OR.ity == 25) THEN
189 isens = ipari(64,nin)
190 ENDIF
191 IF (isens > 0) THEN
192 ts = sensor_tab(isens)%TSTART
193 IF (tt>=ts) interact = 1
194 ELSE
195 startt= intbuf_tab(nin)%VARIABLES(3)
196 stopt = intbuf_tab(nin)%VARIABLES(11)
197 IF (startt<=tt.AND.tt<=stopt) interact = 1
198 ENDIF
199
200 dist = intbuf_tab(nin)%VARIABLES(5)
201
202
203
204
205
206
207 IF (ity == 25 .OR. (dist<=zero.AND.interact/=0))THEN
208 IF(isendto(nin,loc_proc)/=0.OR.
209 . ircvfrom(nin,loc_proc)/=0) THEN
210
211 newfront(nin) = 2
212
213
214
215
217 intbuf_tab(nin)%VARIABLES(5) = -dist
218
219
220
221
222
223 DO p = 1, nspmd
224 len =
nsnfi(nin)%P(p)
225
228 ENDDO
229 IF (ipari(36,nin)>0.AND.ipari(7,nin)/=17) THEN
231 DO p=1,nspmd
233 IF(ipari(7,nin)==25.AND. ipari(58,nin) > 0) THEN
235 ENDIF
236 ENDDO
237 END IF
238
239
240
241 ity=ipari(7,nin)
242 IF (ity == 20 .OR. (ity == 25.AND. ipari(58,nin) > 0)) THEN
243 DO p = 1, nspmd
247 END DO
248 ELSE
249 DO p = 1, nspmd
251 END DO
252 END IF
253
254 l = l + SIZE
255 ENDIF
256 ENDIF
257 ENDIF
258 ENDDO
259
260
261
262 DO p = 1, nspmd
266 only_inter_7 = .true.
267 IF (p/=loc_proc) THEN
268 DO ii = 1, nbintc
269 nin = intlist(ii)
270 ity=ipari(7,nin)
271 IF(newfront(nin)==2) THEN
272 IF(isendto(nin,p)/=0.OR.ircvfrom(nin,p)/=0) THEN
274 IF(ity/=7.AND.ity/=11) only_inter_7 = .false.
275 ENDIF
276 IF(isendto(nin,p)/=0.AND.ircvfrom(nin,loc_proc)/=0)
icomm2_send(p) = 1
277 IF(ircvfrom(nin,p)/=0.AND.isendto(nin,loc_proc)/=0)
icomm2_rcv(p) = 1
278 ENDIF
279 ENDDO
280 IF(.NOT.only_inter_7) THEN
283 ENDIF
284 END IF
286 msgtyp = msgoff
287 l = 2*nbintc
289 s
sizbuf_s(p)%P(1),l,mpi_integer,it_spmd(p),msgtyp,
291 ENDIF
292 ENDDO
293
294
296 DO p = 1, nspmd
299 msgtyp = msgoff
302 l = 2 * nbintc
304 . mpi_integer,it_spmd(p),
306
307 ENDIF
308 ENDDO
309
310
312 DO ii = 1, nbintc
313 i = intlist(ii)
314 idebut(i) = 0
315 idebut2(i) = 0
316 ENDDO
317 DO p = 1, nspmd
319 IF(len/=0) THEN
320
321 ALLOCATE(
msgbuf_s(p)%P(len),stat=ierror)
322
323 IF(ierror/=0) THEN
324 CALL ancmsg(msgid=20,anmode=aninfo)
326 ENDIF
327 ideb = 0
328 DO ii = 1, nbintc
329 nin = intlist(ii)
330
331 IF(newfront(nin)==2) THEN
332 IF(
nsnfi(nin)%P(p)>0)
THEN
333 ideb2 = idebut(nin)
334 len =
nsnfi(nin)%P(p)
335 DO i = 1, len
337 ENDDO
338 idebut(nin) = idebut(nin) + len
339 ideb = ideb + len
340 ENDIF
341 IF(ipari(7,nin) == 20 .OR. (ipari(7,nin) == 25.AND. ipari(58,nin) > 0))THEN
342 IF(
nsnfie(nin)%P(p)>0)
THEN
343 ideb2 = idebut2(nin)
345
346 DO i = 1, len
347 assert(
nsvfie(nin)%P(ideb2+i) > 0)
349 ENDDO
350 idebut2(nin) = idebut2(nin) + len
351 ideb = ideb + len
352 ENDIF
353 END IF
354 ENDIF
355 ENDDO
356 msgtyp = msgoff2
358 s
msgbuf_s(p)%P(1),ideb,mpi_integer,it_spmd(p),msgtyp,
360 ENDIF
361 ENDDO
362 ENDIF
363
364 ELSEIF( mode == 2 ) THEN
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
383
384
386 DO ii = 1, nbintc
387 nin = intlist(ii)
388 ity=ipari(7,nin)
389 IF(newfront(nin) == 2) THEN
390 IF(isendto(nin,loc_proc)/=0.OR.
391 . ircvfrom(nin,loc_proc)/=0) THEN
393 nsnsi(nin)%P(p) = len
395 IF(ity == 20 .OR. (ity == 25.AND. ipari(58,nin) > 0))THEN
399 END IF
400 ENDIF
401 ENDIF
402 ENDDO
404 IF(len>0) THEN
405 ALLOCATE(
msgbuf_r(p)%P(len),stat=ierror)
406 IF(ierror/=0) THEN
407 CALL ancmsg(msgid=20,anmode=aninfo)
409 ENDIF
410 msgtyp = msgoff2
413
414 ENDIF
415 ENDDO
416
417
418
419
420
421
422
425 ENDDO
426 DO p = 1, nspmd
429 ENDIF
430 ENDDO
431
433
434 DO p = 1, nspmd
435 idebut(p) = 0
436 ENDDO
437
438 DO ii = 1, nbintc
439 nin = intlist(ii)
440
441 IF(newfront(nin)==2) THEN
442 ideb = 0
443 IF(
ASSOCIATED(
nsvsi(nin)%P))
DEALLOCATE(
nsvsi(nin)%P)
444 len = 0
445 DO p = 1, nspmd
446 len = len +
nsnsi(nin)%P(p)
447 ENDDO
448 ierror = 0
449 IF(len>0)
ALLOCATE(
nsvsi(nin)%P(len),stat=ierror)
450 IF(ierror/=0) THEN
451 CALL ancmsg(msgid=20,anmode=aninfo)
453 ENDIF
454 DO p = 1, nspmd
455 len =
nsnsi(nin)%P(p)
456
457 IF(len>0) THEN
458 ideb2 = idebut(p)
459 DO i = 1, len
461 ENDDO
462 ideb = ideb + len
463 idebut(p) = idebut(p) + len
464 ENDIF
465 ENDDO
466
467 IF(ipari(7,nin) == 20 .OR. (ipari(7,nin) == 25.AND. ipari(58,nin) > 0) )THEN
468 ideb = 0
470 len = 0
471 DO p = 1, nspmd
472 len = len +
nsnsie(nin)%P(p)
473 ENDDO
474 ierror = 0
475 IF(len>0)
ALLOCATE(
nsvsie(nin)%P(len),stat=ierror)
476 IF(ierror/=0) THEN
477 CALL ancmsg(msgid=20,anmode=aninfo)
479 ENDIF
480 DO p = 1, nspmd
482
483 IF(len>0) THEN
484
485 ideb2 = idebut(p)
486 DO i = 1, len
489 ENDDO
490 ideb = ideb + len
491 idebut(p) = idebut(p) + len
492 ENDIF
493 ENDDO
494 END IF
495 ENDIF
496 ENDDO
497
498 DO p = 1, nspmd
501 ENDIF
505 ENDIF
506 ENDDO
507
508
510
511
512
513
514 DO p = 1, nspmd
516 DO ii = 1, nbintc
517 i = intlist(ii)
518 isubtmp(i,1,p) = 0
519 isubtmp(i,2,p) = 0
520 END DO
521 END IF
522 END DO
523 DO ii = 1, nbintc
524 nin = intlist(ii)
525
526 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
527 + ipari(7,nin)/=17) THEN
528 ideb = 0
529 DO p = 1, nspmd
530 len =
nsnsi(nin)%P(p)
531 lenout = 0
532 IF(len>0) THEN
533 DO i = 1, len
534 ns =
nsvsi(nin)%P(ideb+i)
535
536 lenout = lenout + intbuf_tab(nin)%ADDSUBS(ns+1)-
537 . intbuf_tab(nin)%ADDSUBS(ns) + 1
538 END DO
539 ideb = ideb + len
540 END IF
541 isubtmp(nin,1,p) = lenout
542 ENDDO
543 IF(ipari(7,nin) ==25 .AND. ipari(58,nin) > 0) THEN
544 ideb = 0
545 DO p=1,nspmd
546
548 lenout = 0
549 IF(len>0) THEN
550 DO i = 1, len
551 ns =
nsvsie(nin)%P(ideb+i)
552
553 lenout = lenout + intbuf_tab(nin)%ADDSUBE(ns+1)-
554 . intbuf_tab(nin)%ADDSUBE(ns) + 1
555
556
557 END DO
558 ideb = ideb + len
559 END IF
560
561 isubtmp(nin,2,p) = lenout
562 END DO
563 ENDIF
564 END IF
565 END DO
566
567 DO p = 1, nspmd
569 lenout = 0
570 DO ii = 1, nbintc
571 nin = intlist(ii)
572 lenout = lenout + isubtmp(nin,1,p)
573 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
574 + (ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25)) THEN
575 lenout = lenout + isubtmp(nin,1,p) -
nsnsi(nin)%P(p)
576 ENDIF
577 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
578 + ipari(7,nin)==25) THEN
579 IF(ipari(58,nin) /= 0) THEN
580 lenout = lenout + 2*isubtmp(nin,2,p) -
nsnsie(nin)%P(p)
581 ENDIF
582 ENDIF
583 END DO
584
586 IF(lenout>0) THEN
587
588 ALLOCATE(
msgbuf_s(p)%P(lenout),stat=ierror)
589 IF(ierror/=0) THEN
590 CALL ancmsg(msgid=20,anmode=aninfo)
592 END IF
593 msgtyp = msgoff3
594 siz = ninter * 2
596 s isubtmp(1,1,p),siz,mpi_integer,it_spmd(p),msgtyp,
597 g spmd_comm_world,req_s(p),ierror)
598 END IF
599 END IF
600 END DO
601
602
603
604 DO p = 1, nspmd
606 msgtyp = msgoff3
607 lenout = 0
608 siz = ninter * 2
609
610 CALL mpi_recv(isubtmp2(1,1,p),siz,mpi_integer,it_spmd(p),
611 . msgtyp,spmd_comm_world,status,ierror)
612 DO ii = 1, nbintc
613 nin = intlist(ii)
614
615 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
616 + ipari(7,nin)/=17) THEN
617
618 nb_subint = isubtmp2(nin,1,p) -
nsnfi(nin)%P(p)
620 lenout = lenout + isubtmp2(nin,1,p)
621 IF(ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25) THEN
622 lenout = lenout + nb_subint
623 ENDIF
624 IF(ipari(7,nin)==25) THEN
625 IF(ipari(58,nin) /= 0) THEN
627
628 lenout = lenout + 2*isubtmp2(nin,2,p) -
nsnfie(nin)%P(p)
629
630 ENDIF
631 ENDIF
632 END IF
633 END DO
634
636 IF(lenout>0) THEN
637 ALLOCATE(
msgbuf_r(p)%P(lenout),stat=ierror)
638 IF(ierror/=0) THEN
639 CALL ancmsg(msgid=20,anmode=aninfo)
641 ENDIF
642 END IF
643 ELSE
645 END IF
646 END DO
647
648 DO p = 1, nspmd
650 CALL mpi_wait(req_s(p),status,ierror)
651 END IF
652 END DO
653
654
655
656 DO p = 1, nspmd
657 idebut(p) = 0
658 END DO
659 DO ii = 1, nbintc
660 nin = intlist(ii)
661
662 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
663 + ipari(7,nin)/=17) THEN
664 ideb = 0
665 DO p = 1, nspmd
666 len =
nsnsi(nin)%P(p)
667 IF(len>0) THEN
668 i0 = idebut(p)
669 DO i = 1, len
670 ns =
nsvsi(nin)%P(ideb+i)
671 i0 = i0 + 1
672
673 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%ADDSUBS(ns+1)-
674 . intbuf_tab(nin)%ADDSUBS(ns)
675
676 DO j = intbuf_tab(nin)%ADDSUBS(ns),
677 . intbuf_tab(nin)%ADDSUBS(ns+1)-1
678 i0 = i0 + 1
679 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%LISUBS(j)
680 END DO
681 IF(ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25) THEN
682 DO j = intbuf_tab(nin)%ADDSUBS(ns),
683 . intbuf_tab(nin)%ADDSUBS(ns+1)-1
684 i0 = i0 + 1
685 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%INFLG_SUBS(j)
686 END DO
687 END IF
688 END DO
689 idebut(p) = i0
690 ideb = ideb + len
691 END IF
692 END DO
693 IF(ipari(7,nin) == 25 .AND. ipari(58,nin) /= 0)THEN
694 ideb_edge = 0
695 DO p = 1,nspmd
696
698 IF(len>0) THEN
699 i0 = idebut(p)
700 DO i = 1, len
701 ns =
nsvsie(nin)%P(ideb_edge+i)
702 i0 = i0 + 1
703
704 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%ADDSUBE(ns+1)-
705 . intbuf_tab(nin)%ADDSUBE(ns)
706
707
708
709 DO j = intbuf_tab(nin)%ADDSUBE(ns),
710 . intbuf_tab(nin)%ADDSUBE(ns+1)-1
711 i0 = i0 + 1
712 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%LISUBE(j)
713
714 END DO
715 DO j = intbuf_tab(nin)%ADDSUBE(ns),
716 . intbuf_tab(nin)%ADDSUBE(ns+1)-1
717 i0 = i0 + 1
718 msgbuf_s(p)%P(i0) = intbuf_tab(nin)%INFLG_SUBE(j)
719
720 END DO
721 END DO
722 idebut(p) = i0
723 ideb_edge = ideb_edge + len
724 END IF
725 END DO
726 ENDIF
727 END IF
728 END DO
729
730 DO p = 1, nspmd
731
733 msgtyp = msgoff4
734
737 g spmd_comm_world,req_s(p),ierror)
738 END IF
739 END DO
740
741
742
743 DO p = 1, nspmd
744
746 msgtyp = msgoff4
747
748
750 . msgtyp,spmd_comm_world,status,ierror)
751
752
753
754 END IF
755 END DO
756
757
758
759 DO p = 1, nspmd
760 idebut(p) = 0
761 END DO
762 DO ii = 1, nbintc
763 nin = intlist(ii)
764
765 IF(newfront(nin)==2.AND.ipari(36,nin)>0.AND.
766 + ipari(7,nin)/=17) THEN
768 len = 0
769 DO p = 1, nspmd
771 END DO
772 ierror = 0
773 IF(len>0) THEN
774 ALLOCATE(
lisubsfi(nin)%P(len),stat=ierror)
775 IF(ierror/=0) THEN
776 CALL ancmsg(msgid=20,anmode=aninfo)
778 END IF
779 IF(ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25) THEN
782 IF(ierror/=0) THEN
783 CALL ancmsg(msgid=20,anmode=aninfo)
785 END IF
786 END IF
787 len = 1
790 DO p = 1, nspmd
791 len = len +
nsnfi(nin)%P(p)
792 END DO
793 ALLOCATE(
addsubsfi(nin)%P(len),stat=ierror)
794 IF(ierror/=0) THEN
795 CALL ancmsg(msgid=20,anmode=aninfo)
797 END IF
798 ideb = 0
799 ideb3 = 0
801 DO p = 1, nspmd
803 DO i = 1,
nsnfi(nin)%P(p)
804 ideb2 = idebut(p)
805 ideb2 = ideb2 + 1
809 DO j = 1, len
811 END DO
812 idebut(p) = idebut(p) + len + 1
813 IF(ipari(7,nin) == 7.OR.ipari(7,nin) == 11.OR.ipari(7,nin) == 24.OR.ipari(7,nin) == 25) THEN
814 ideb2 = ideb2 + len
815 DO j = 1, len
817 END DO
818 idebut(p) = idebut(p) + len
819 END IF
820 ideb = ideb + len
821 END DO
822 ideb3 = ideb3 +
nsnfi(nin)%P(p)
823 ENDIF
824 END DO
825 ELSE
826 len = 1
829 DO p = 1, nspmd
830 len = len +
nsnfi(nin)%P(p)
831 END DO
832 ALLOCATE(
addsubsfi(nin)%P(len),stat=ierror)
833 IF(ierror/=0) THEN
834 CALL ancmsg(msgid=20,anmode=aninfo)
836 END IF
837 ideb3 = 0
839 DO p = 1, nspmd
840 DO i = 1,
nsnfi(nin)%P(p)
843 END DO
844 ideb3 = ideb3 +
nsnfi(nin)%P(p)
845 END DO
846 END IF
847 IF(ipari(7,nin) == 25 .AND. ipari(58,nin) > 0) THEN
848
850 len = 0
851 DO p = 1, nspmd
853 END DO
854 ierror = 0
855
856 IF(len>0) THEN
857 ALLOCATE(
lisubsfie(nin)%P(len),stat=ierror)
858 IF(ierror/=0) THEN
859 CALL ancmsg(msgid=20,anmode=aninfo)
861 END IF
862 IF(ipari(7,nin)==25)THEN
865 IF(ierror/=0) THEN
866 CALL ancmsg(msgid=20,anmode=aninfo)
868 END IF
869 END IF
870 len = 1
873 DO p = 1, nspmd
874 len = len +
nsnfie(nin)%P(p)
875 END DO
877
878 IF(ierror/=0) THEN
879 CALL ancmsg(msgid=20,anmode=aninfo)
881 END IF
882 ideb = 0
883 ideb3 = 0
885 DO p = 1, nspmd
887 DO i = 1,
nsnfie(nin)%P(p)
888 ideb2 = idebut(p)
889 ideb2 = ideb2 + 1
891
894
895 DO j = 1, len
897
898 END DO
899 idebut(p) = idebut(p) + len + 1
900 ideb2 = ideb2 + len
901 DO j = 1, len
903
904 END DO
905 idebut(p) = idebut(p) + len
906 ideb = ideb + len
907 END DO
908 ideb3 = ideb3 +
nsnfie(nin)%P(p)
909 ENDIF
910 END DO
911 ELSE
912 len = 1
915 DO p = 1, nspmd
916 len = len +
nsnfie(nin)%P(p)
917 END DO
919 IF(ierror/=0) THEN
920 CALL ancmsg(msgid=20,anmode=aninfo)
922 END IF
923 ideb3 = 0
925 DO p = 1, nspmd
926 DO i = 1,
nsnfie(nin)%P(p)
929 END DO
930 ideb3 = ideb3 +
nsnfie(nin)%P(p)
931 END DO
932 END IF
933 ENDIF
934 END IF
935 END DO
936
937 DO p = 1, nspmd
939 CALL mpi_wait(req_s(p),status,ierror)
941 END IF
944 END IF
945 END DO
946
947 END IF
948
949
950
951 islen7 = 0
952 irlen7 = 0
953 islen7t = 0
954 irlen7t = 0
955 islen11 = 0
956 irlen11 = 0
957 islen17 = 0
958 irlen17 = 0
959 irlen20 = 0
960 islen20 = 0
961 irlen20t = 0
962 islen20t = 0
963 irlen20e = 0
964 islen20e = 0
965
974
975 DO ii = 1, nbintc
976 nin = intlist(ii)
977
978 IF(newfront(nin)==2) newfront(nin)=0
979 ityp = ipari(7,nin)
980 intth = ipari(47,nin)
981
982
983 IF(ityp==7.OR.ityp==10.OR.ityp==22.OR.
984 . ityp==23.OR.ityp==24)THEN
985 IF(intth == 0 ) THEN
986 DO p = 1, nspmd
987 islen7 = islen7 +
nsnsi(nin)%P(p)
988 irlen7 = irlen7 +
nsnfi(nin)%P(p)
989 END DO
990
991 ELSE
992 DO p = 1, nspmd
993 islen7t = islen7t +
nsnsi(nin)%P(p)
994 irlen7t = irlen7t +
nsnfi(nin)%P(p)
995 END DO
996 ENDIF
997 ELSEIF(ityp == 11) THEN
998
999 DO p = 1, nspmd
1000 islen11 = islen11 +
nsnsi(nin)%P(p)
1001 irlen11 = irlen11 +
nsnfi(nin)%P(p)
1002 END DO
1003
1004 ELSEIF(ityp == 17) THEN
1005 DO p = 1, nspmd
1006 islen17 = islen17 +
nsnsi(nin)%P(p)
1007 irlen17 = irlen17 +
nsnfi(nin)%P(p)
1008 END DO
1009 ELSEIF(ityp == 20)THEN
1010
1011 IF(intth == 0) THEN
1012 DO p = 1, nspmd
1013 islen20 = islen20 +
nsnsi(nin)%P(p)
1014 irlen20 = irlen20 +
nsnfi(nin)%P(p)
1015 islen20e= islen20e+
nsnsie(nin)%P(p)
1016 irlen20e= irlen20e+
nsnfie(nin)%P(p)
1017 END DO
1018 ELSE
1019 DO p = 1, nspmd
1020 islen20t = islen20t +
nsnsi(nin)%P(p)
1021 irlen20t = irlen20t +
nsnfi(nin)%P(p)
1022 islen20e= islen20e+
nsnsie(nin)%P(p)
1023 irlen20e= irlen20e+
nsnfie(nin)%P(p)
1024 END DO
1025 ENDIF
1026 ELSEIF(ityp == 25)THEN
1027
1028 iedge = ipari(58,nin)
1029 IF(intth == 0) THEN
1030 DO p = 1, nspmd
1033 IF( iedge /= 0) THEN
1036 ENDIF
1037 END DO
1038 ELSE
1039 DO p = 1, nspmd
1042 IF( iedge /= 0) THEN
1045 ENDIF
1046 END DO
1047 ENDIF
1048
1049 END IF
1050 ENDDO
1051
1052
1053 ENDIF
1054
1055
1056
1057#endif
1058 RETURN
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_waitany(cnt, array_of_requests, index, status, ierr)
subroutine mpi_irecv(buf, cnt, datatype, source, tag, comm, ireq, ierr)
integer, dimension(:), allocatable icomm2_rcv
integer, dimension(:), allocatable req_recv_msg
integer, dimension(:), allocatable proc_list
integer, dimension(:), allocatable icomm2_send
integer, dimension(:), allocatable req_send_msg
integer, dimension(:), allocatable req_recv_siz
integer, dimension(:), allocatable ircom
type(int_pointer), dimension(:), allocatable sizbuf_r
integer, dimension(:), allocatable iscoms
type(int_pointer), dimension(:), allocatable sizbuf_s
integer, dimension(:), allocatable req_send_siz
integer, dimension(:), allocatable icomm2
integer, dimension(:), allocatable iscom
type(int_pointer), dimension(:), allocatable msgbuf_r
type(int_pointer), dimension(:), allocatable msgbuf_s
type(int_pointer), dimension(:), allocatable nisubsfie
type(int_pointer), dimension(:), allocatable inflg_subsfie
type(int_pointer), dimension(:), allocatable lisubsfie
type(int_pointer), dimension(:), allocatable addsubsfie
type(int_pointer), dimension(:), allocatable inflg_subsfi
type(int_pointer), dimension(:), allocatable nsvsi
type(int_pointer), dimension(:), allocatable nsnfie
type(int_pointer), dimension(:), allocatable nsnsie
type(int_pointer), dimension(:), allocatable lisubsfi
type(int_pointer), dimension(:), allocatable nsvsie
type(int_pointer), dimension(:), allocatable nsnsi
type(int_pointer), dimension(:), allocatable nisubsfi
type(int_pointer), dimension(:), allocatable nsvfi
type(int_pointer), dimension(:), allocatable nsvfie
type(int_pointer), dimension(:), allocatable addsubsfi
type(int_pointer), dimension(:), allocatable nsnfi
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)