39
40
41
42
44 USE intbufdef_mod
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "scr17_c.inc"
55#include "com04_c.inc"
56
57
58
59 INTEGER ITAB(*) , NOD2RTMS(*), NOD2RTMM(*), KAD(*), TAGLINS(*), TAGLINM(*), IADD(*)
60 INTEGER NRTM, NRTM0, NSN, NISUBS, NISUBM, NOINT, NI, NT19, NRTS, NTY, MAXRTMS
61 INTEGER NOM_OPT(LNOPT1,*)
62 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
63
64
65
66 INTEGER I,J,K,JGRN,ISU,ISU1,ISU2,
67 . JSUB, KSUB, NNE, IS, ISV, CUR, ID1,
68 . NEXT, IM, KM, JAD, IN, II, N,STAT,K1,K2,INOD,IFNRT
69 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
70 INTEGER ISLIN1,ISLIN2,FOUND,FOUND_LINE
71
72 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
73 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
74 TYPE (SURF_) , DIMENSION(NSLIN) :: IGRSLIN
75
76
77
78 INTEGER BITSET
80
81
82
83
84 intbuf_tab(ni)%ADDSUBS(1:nrts+1) = 0
85 intbuf_tab(ni)%ADDSUBM(1:nrtm+1) = 0
86
87 intbuf_tab(ni)%INFLG_SUBS(1:nisubs)=0
88 intbuf_tab(ni)%INFLG_SUBM(1:nisubm)=0
89
90
91 IF ((nty==11).AND.(nt19==0)) THEN
92
93
94
95
96
97 iadd(1:numnod+1) = 0
98 DO is=1,nrts
99 in =intbuf_tab(ni)%IRECTS(2*(is-1)+1)
100 iadd(in) =iadd(in)+1
101 in =intbuf_tab(ni)%IRECTS(2*(is-1)+2)
102 iadd(in) =iadd(in)+1
103 END DO
104
105 cur=1
106 DO i=1,numnod
107 next =cur+iadd(i)
108 iadd(i) =cur
109 cur =next
110 END DO
111 iadd(numnod+1)=cur
112
113 DO i=1,numnod
114 kad(i)=iadd(i)
115 END DO
116
117 DO is=1,nrts
118 in =intbuf_tab(ni)%IRECTS(2*(is-1)+1)
119 nod2rtms(kad(in)) = is
120 kad(in) = kad(in) + 1
121 in =intbuf_tab(ni)%IRECTS(2*(is-1)+2)
122 nod2rtms(kad(in)) = is
123 kad(in) = kad(in) + 1
124 ENDDO
125
126 ksub=0
127 DO jsub=1,nintsub
128 id1=nom_opt(1,ninter+jsub)
129 CALL fretitl2(titr1,nom_opt(lnopt1-ltitr+1,ninter+jsub),ltitr)
130 IF(nom_opt(2,ninter+jsub) == noint .AND. nom_opt(5,ninter+jsub) == 1)THEN
131 ksub=ksub+1
132
133 intbuf_tab(ni)%LISUB(ksub) = jsub
134 intbuf_tab(ni)%TYPSUB(ksub) = 1
135
136 islin1 =nom_opt(4,ninter+jsub)
137 nne =igrslin(islin1)%NSEG
138
139 DO i=1,nne
140 in=igrslin(islin1)%NODES(i,1)
141 km=0
142
143 DO jad=iadd(in),iadd(in+1)-1
144 is = nod2rtms(jad)
145 found_line = 0
146 DO j=1,2
147 ii=igrslin(islin1)%NODES(i,j)
148 found=0
149 DO k=1,2
150 IF(intbuf_tab(ni)%IRECTS(2*(is-1)+k)==ii) found=1
151 END DO
152 found_line = found_line + found
153 END DO
154 IF (found_line==2) THEN
155 km=is
156 EXIT
157 ENDIF
158 ENDDO
159
160 IF(km==0)THEN
162 . msgtype=msgerror,
163 . anmode=aninfo_blind_1,
164 . i1=id1,
165 . c1=titr1,
166 . i2=itab(igrslin(islin1)%NODES(i,1)),
167 . i3=itab(igrslin(islin1)%NODES(i
168 . i4=noint)
169 ELSE
170 intbuf_tab(ni)%ADDSUBS(km)=intbuf_tab(ni)%ADDSUBS(km)+1
171 END IF
172 END DO
173
174
175
176
177 ELSEIF(nom_opt(2,ninter+jsub) == 0
178 . .AND. nom_opt(5,ninter+jsub) == 1) THEN
179
180 ksub=ksub+1
181
182
183 intbuf_tab(ni)%LISUB (ksub) = jsub
184
185
186
187
188 taglins(1:maxrtms) = 0
189
190 isu2 =nom_opt(6,ninter+jsub)
191 IF(isu2/=0)THEN
192 intbuf_tab(ni)%TYPSUB(ksub) = 2
193 DO i=1,igrsurf(isu2)%NSEG
194
195 DO inod=1,2
196 in=igrsurf(isu2)%NODES(i,2*inod)
197 DO jad=iadd(in),iadd(in+1)-1
198 is = nod2rtms(jad)
199 found_line = 0
200 DO j=1,2
201 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
202 found=0
203 DO k=1,4
204 IF(igrsurf(isu2)%NODES(i,k)==ii) found=1
205 END DO
206 found_line = found_line + found
207 END DO
208 IF ((found_line==2).AND.(taglins(is)==0)) THEN
209 intbuf_tab(ni)%ADDSUBS(is)=intbuf_tab(ni)%ADDSUBS(is)+1
210
211 taglins(is) = 1
212 ENDIF
213 ENDDO
214 ENDDO
215
216 ENDDO
217 ENDIF
218
219 isu1 =nom_opt(3,ninter+jsub)
220 IF(isu1/=0)THEN
221 intbuf_tab(ni)%TYPSUB(ksub) = 3
222 DO i=1,igrsurf(isu1)%NSEG
223
224 DO inod=1,2
225 in=igrsurf(isu1)%NODES(i,2*inod)
226 DO jad=iadd(in),iadd(in+1)-1
227 is = nod2rtms(jad)
228 found_line = 0
229 DO j=1,2
230 ii=intbuf_tab(ni)%IRECTS(2*(is
231 found=0
232 DO k=1,4
233 IF(igrsurf(isu1)%NODES(i,k)==ii) found=1
234 END DO
235 found_line = found_line + found
236 END DO
237 IF ((found_line==2).AND.(taglins(is)==0)) THEN
238 intbuf_tab(ni)%ADDSUBS(is)=intbuf_tab(ni)%ADDSUBS(is)+1
239
240 taglins(is) = 1
241 ENDIF
242 ENDDO
243 ENDDO
244
245 ENDDO
246 ENDIF
247
248
249
250 END IF
251 END DO
252
253
254
255 cur=1
256 DO is=1,nrts
257 next =cur+intbuf_tab(ni)%ADDSUBS(is)
258 intbuf_tab(ni)%ADDSUBS(is)=cur
259 cur =next
260 END DO
261 intbuf_tab(ni)%ADDSUBS(nrts+1)=cur
262
263
264 DO is=1,nrts
265 kad(is)=intbuf_tab(ni)%ADDSUBS(is)
266 END DO
267
268
269
270 ksub=0
271 DO jsub=1,nintsub
272 IF(nom_opt(2,ninter+jsub)==noint
273 . .AND.nom_opt(5,ninter+jsub)==1)THEN
274 ksub=ksub+1
275
276 islin1 =nom_opt(4,ninter+jsub)
277 nne =igrslin(islin1)%NSEG
278
279 DO i=1,nne
280 in=igrslin(islin1)%NODES(i,1)
281 km=0
282
283 DO jad=iadd(in),iadd(in+1)-1
284 is = nod2rtms(jad)
285 found_line = 0
286 DO j=1,2
287 ii=igrslin(islin1)%NODES(i,j
288 found=0
289 DO k=1,2
290 IF(intbuf_tab(ni)%IRECTS(2*(is-1)+k)==ii) found=1
291 END DO
292 found_line = found_line + found
293 END DO
294 IF (found_line==2) THEN
295 km=is
296 EXIT
297 ENDIF
298 ENDDO
299
300 IF(km/=0)THEN
301 intbuf_tab(ni)%LISUBS(kad(is))=ksub
302 kad(is)=kad(is)+1
303 END IF
304 END DO
305
306
307
308 ELSEIF(nom_opt(2,ninter+jsub) == 0
309 . .AND. nom_opt(5,ninter+jsub) == 1) THEN
310
311 ksub=ksub+1
312
313
314 intbuf_tab(ni)%LISUB (ksub) = jsub
315
316
317
318
319 taglins(1:maxrtms) = 0
320
321 isu2 =nom_opt(6,ninter+jsub)
322 IF(isu2/=0)THEN
323 DO i=1,igrsurf(isu2)%NSEG
324
325 DO inod=1,2
326 in=igrsurf(isu2)%NODES(i,2*inod)
327 DO jad=iadd(in),iadd(in+1)-1
328 is = nod2rtms(jad)
329 found_line = 0
330 DO j=1,2
331 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
332 found=0
333 DO k=1,4
334 IF(igrsurf(isu2)%NODES(i,k)==ii) found=1
335 END DO
336 found_line = found_line + found
337 END DO
338
339 IF (found_line==2)THEN
340 IF(taglins(is)==0) THEN
341 intbuf_tab(ni)%INFLG_SUBS(kad(is))=
342 .
bitset(intbuf_tab(ni)%INFLG_SUBS(kad(is)),0)
343 intbuf_tab(ni)%LISUBS(kad(is))=ksub
344 kad(is)=kad(is)+1
345
346 taglins(is) = 1
347 ELSE
348 intbuf_tab(ni)%INFLG_SUBS(kad(is)-1)=
349 .
bitset(intbuf_tab(ni)%INFLG_SUBS(kad(is)-1),0)
350 ENDIF
351 ENDIF
352 ENDDO
353 ENDDO
354
355 ENDDO
356 ENDIF
357
358 isu1 =nom_opt(3,ninter+jsub)
359 IF(isu1/=0)THEN
360 DO i=1,igrsurf(isu1)%NSEG
361
362 DO inod=1,2
363 in=igrsurf(isu1)%NODES(i,2*inod)
364 DO jad=iadd(in),iadd(in+1)-1
365 is = nod2rtms(jad)
366 found_line = 0
367 DO j=1,2
368 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
369 found=0
370 DO k=1,4
371 IF(igrsurf(isu1)%NODES(i,k)==ii) found
372 END DO
373 found_line = found_line + found
374 END DO
375 IF (found_line==2)THEN
376 IF(taglins(is)==0) THEN
377 intbuf_tab(ni)%INFLG_SUBS(kad(is))=
378 .
bitset(intbuf_tab(ni)%INFLG_SUBS(kad(is)),1)
379 intbuf_tab(ni)%LISUBS(kad(is))=ksub
380 kad(is)=kad(is)+1
381
382 taglins(is) = 1
383 ELSE
384 intbuf_tab(ni)%INFLG_SUBS(kad(is)-1)=
385 .
bitset(intbuf_tab(ni)%INFLG_SUBS(kad(is)-1),1)
386 ENDIF
387 ENDIF
388 ENDDO
389
390 ENDDO
391
392 ENDDO
393 ENDIF
394
395
396 END IF
397 END DO
398
399
400
401 iadd(1:numnod+1) = 0
402 DO im=1,nrtm
403 in =intbuf_tab(ni)%IRECTM(2*(im-1)+1)
404 iadd(in) =iadd(in)+1
405 in =intbuf_tab(ni)%IRECTM(2*(im-1)+2)
406 iadd(in) =iadd(in)+1
407 END DO
408
409 cur=1
410 DO i=1,numnod
411 next =cur+iadd(i)
412 iadd(i) =cur
413 cur =next
414 END DO
415 iadd(numnod+1)=cur
416
417 DO i=1,numnod
418 kad(i)=iadd(i)
419 END DO
420
421 DO im=1,nrtm
422 in =intbuf_tab(ni)%IRECTM(2*(im-1)+1)
423 nod2rtmm(kad(in)) = im
424 kad(in) = kad(in) + 1
425 in =intbuf_tab(ni)%IRECTM(2*(im-1)+2)
426 nod2rtmm(kad(in)) = im
427 kad(in) = kad(in) + 1
428 ENDDO
429
430 ksub=0
431 DO jsub=1,nintsub
432 id1=nom_opt(1,ninter+jsub)
434 . nom_opt(lnopt1-ltitr+1,ninter+jsub),ltitr)
435 IF(nom_opt(2,ninter+jsub)==noint
436 . .AND.nom_opt(5,ninter+jsub)==1)THEN
437 ksub=ksub+1
438
439 islin2 =nom_opt(3,ninter+jsub)
440 nne =igrslin(islin2)%NSEG
441
442 DO i=1,nne
443 in=igrslin(islin2)%NODES(i,1)
444 km=0
445
446 DO jad=iadd(in),iadd(in+1)-1
447 im = nod2rtmm(jad)
448 found_line = 0
449 DO j=1,2
450 ii=igrslin(islin2)%NODES(i,j)
451 found=0
452 DO k=1,2
453 IF(intbuf_tab(ni)%IRECTM(2*(im-1)+k)==ii) found=1
454 END DO
455 found_line = found_line + found
456 END DO
457 IF (found_line==2) THEN
458 km=im
459 EXIT
460 ENDIF
461 ENDDO
462
463 IF(km==0)THEN
465 . msgtype=msgerror,
466 . anmode=aninfo_blind_1,
467 . i1=id1,
468 . c1=titr1,
469 . i2=itab(igrslin(islin2)%NODES(i,1)),
470 . i3=itab(igrslin(islin2)%NODES(i,2)),
471 . i4=noint)
472 ELSE
473 intbuf_tab(ni)%ADDSUBM(km)=intbuf_tab(ni)%ADDSUBM(km)+1
474 END IF
475 END DO
476
477
478
479
480 ELSEIF(nom_opt(2,ninter+jsub) == 0
481 . .AND. nom_opt(5,ninter+jsub) == 1) THEN
482
483 ksub=ksub+1
484
485
486 intbuf_tab(ni)%LISUB (ksub) = jsub
487
488
489
490
491 taglinm(1:maxrtms) = 0
492
493 isu1 =nom_opt(3,ninter+jsub)
494 IF(isu1/=0)THEN
495 DO i=1,igrsurf(isu1)%NSEG
496
497 DO inod=1,2
498 in=igrsurf(isu1)%NODES(i,2*inod)
499 DO jad=iadd(in),iadd(in+1)-1
500 im = nod2rtmm(jad)
501 found_line = 0
502 DO j=1,2
503 ii=intbuf_tab(ni)%IRECTM(2*(is-1)+j)
504 found=0
505 DO k=1,4
506 IF(igrsurf(isu1)%NODES(i,k)==ii) found=1
507 END DO
508 found_line = found_line + found
509 END DO
510 IF ((found_line==2).AND.(taglinm(im)==0)) THEN
511 intbuf_tab(ni)%ADDSUBM(im)=intbuf_tab(ni)%ADDSUBM(im)+1
512
513 taglinm(im) = 1
514 ENDIF
515 ENDDO
516 ENDDO
517
518 ENDDO
519
520 ENDIF
521
522 isu2 =nom_opt(6,ninter+jsub)
523 IF(isu2/=0)THEN
524 DO i=1,igrsurf(isu2)%NSEG
525
526 DO inod=1,2
527 in=igrsurf(isu2)%NODES(i,2*inod)
528 DO jad=iadd(in),iadd(in+1)-1
529 im = nod2rtmm(jad)
530 found_line = 0
531 DO j=1,2
532 ii=intbuf_tab(ni)%IRECTM(2*(is-1)+j)
533 found=0
534 DO k=1,4
535 IF(igrsurf(isu2)%NODES(i,k)==ii
536 END DO
537 found_line = found_line + found
538 END DO
539 IF ((found_line==2).AND.(taglinm(im)==0)) THEN
540 intbuf_tab(ni)%ADDSUBM(im)=intbuf_tab(ni)%ADDSUBM(im)+1
541
542 taglinm(im) = 1
543 ENDIF
544 ENDDO
545 ENDDO
546
547 ENDDO
548
549 ENDIF
550
551
552 END IF
553 END DO
554
555 cur=1
556 DO im=1,nrtm
557 next =cur+intbuf_tab(ni)%ADDSUBM(im)
558 intbuf_tab(ni)%ADDSUBM(im)=cur
559 cur =next
560 END DO
561 intbuf_tab(ni)%ADDSUBM(nrtm+1)=cur
562
563
564 DO im=1,nrtm
565 kad(im)=intbuf_tab(ni)%ADDSUBM(im)
566 END DO
567
568
569
570 ksub=0
571 DO jsub=1,nintsub
572 IF(nom_opt(2,ninter+jsub)==noint
573 . .AND.nom_opt(5,ninter+jsub)==1)THEN
574 ksub=ksub+1
575
576 islin2 =nom_opt(3,ninter+jsub)
577 nne =igrslin(islin2)%NSEG
578
579 DO i=1,nne
580 in=igrslin(islin2)%NODES(i,1)
581 km=0
582
583 DO jad=iadd(in),iadd(in+1)-1
584 im = nod2rtmm(jad)
585 found_line = 0
586 DO j=1,2
587 ii=igrslin(islin2)%NODES(i,j)
588 found=0
589 DO k=1,2
590 IF(intbuf_tab(ni)%IRECTM(2*(im-1)+k)==ii) found=1
591 END DO
592 found_line = found_line + found
593 END DO
594 IF (found_line==2) THEN
595 km=im
596 EXIT
597 ENDIF
598 ENDDO
599
600 IF(km/=0)THEN
601 intbuf_tab(ni)%LISUBM(kad(im))=ksub
602 kad(im)=kad(im)+1
603 END IF
604 END DO
605
606
607
608
609
610 ELSEIF(nom_opt(2,ninter+jsub) == 0
611 . .AND. nom_opt(5,ninter+jsub) == 1) THEN
612
613 ksub=ksub+1
614
615
616 intbuf_tab(ni)%LISUB (ksub) = jsub
617
618
619
620
621 taglinm(1:maxrtms) = 0
622
623 isu1 =nom_opt(3,ninter+jsub)
624 IF(isu1/=0)THEN
625 DO i=1,igrsurf(isu1)%NSEG
626
627 DO inod=1,2
628 in=igrsurf(isu1)%NODES(i,2*inod)
629 DO jad=iadd(in),iadd(in+1)-1
630 im = nod2rtmm(jad)
631 found_line = 0
632 DO j=1,2
633 ii=intbuf_tab(ni)%IRECTM(2*(is-1)+j)
634 found=0
635 DO k=1,4
636 IF(igrsurf(isu1)%NODES(i,k)==ii) found=1
637 END DO
638 found_line = found_line + found
639 END DO
640
641 IF (found_line==2)THEN
642 IF(taglinm(im)==0) THEN
643 intbuf_tab(ni)%INFLG_SUBM(kad(im))=
644 .
bitset(intbuf_tab(ni)%INFLG_SUBM(kad(im)),1)
645 intbuf_tab(ni)%LISUBM(kad(im))=ksub
646 kad(im)=kad(im)+1
647
648 taglinm(im) = 1
649 ELSE
650 intbuf_tab(ni)%INFLG_SUBM(kad(im)-1)=
651 .
bitset(intbuf_tab(ni)%INFLG_SUBM(kad(im)-1),1)
652 ENDIF
653 ENDIF
654 ENDDO
655 ENDDO
656
657 ENDDO
658 ENDIF
659
660 isu2 =nom_opt(6,ninter+jsub)
661 IF(isu2/=0)THEN
662 DO i=1,igrsurf(isu2)%NSEG
663
664 DO inod=1,2
665 in=igrsurf(isu2)%NODES(i,2*inod)
666 DO jad=iadd(in),iadd(in+1)-1
667 im = nod2rtmm(jad)
668 found_line = 0
669 DO j=1,2
670 ii=intbuf_tab(ni)%IRECTM(2*(is-1)+j)
671 found=0
672 DO k=1,4
673 IF(igrsurf(isu2)%NODES(i,k)==ii) found=1
674 END DO
675 found_line = found_line + found
676 END DO
677
678 IF (found_line==2)THEN
679 IF(taglinm(im)==0) THEN
680 intbuf_tab(ni)%INFLG_SUBM(kad(im))=
681 .
bitset(intbuf_tab(ni)%INFLG_SUBM(kad(im)),0)
682 intbuf_tab(ni)%LISUBM(kad(im))=ksub
683 kad(im)=kad(im)+1
684
685
686 ELSE
687 intbuf_tab(ni)%INFLG_SUBM(kad(im)-1)=
688 .
bitset(intbuf_tab(ni)%INFLG_SUBM(kad(im)-1),0)
689 ENDIF
690 ENDIF
691 ENDDO
692 ENDDO
693
694 ENDDO
695 ENDIF
696
697
698 END IF
699 END DO
700
701
702
703 ELSEIF ((nty==11).AND.(nt19>0)) THEN
704
705
706
707
708
709 iadd(1:numnod+1) = 0
710 DO is=1,nrts
711 in =intbuf_tab(ni)%IRECTS(2*(is-1)+1)
712 iadd(in) =iadd(in)+1
713 in =intbuf_tab(ni)%IRECTS(2*(is-1)+2)
714 iadd(in) =iadd(in)+1
715 END DO
716
717 cur=1
718 DO i=1,numnod
719 next =cur+iadd(i)
720 iadd(i) =cur
721 cur =next
722 END DO
723 iadd(numnod+1)=cur
724
725 DO i=1,numnod
726 kad(i)=iadd(i)
727 END DO
728
729 DO is=1,nrts
730 in =intbuf_tab(ni)%IRECTS(2*(is-1)+1)
731 nod2rtms(kad(in)) = is
732 kad(in) = kad(in) + 1
733 in =intbuf_tab(ni)%IRECTS(2*(is-1)+2)
734 nod2rtms(kad(in)) = is
735 kad(in) = kad(in) + 1
736 ENDDO
737
738 ksub=0
739 DO jsub=1,nintsub
740 id1=nom_opt(1,ninter+jsub)
742 . nom_opt(lnopt1-ltitr+1,ninter+jsub),ltitr)
743 IF(nom_opt(2,ninter+jsub)==noint
744 . .AND.nom_opt(5,ninter+jsub)==1)THEN
745 ksub=ksub+1
746
747 intbuf_tab(ni)%LISUB(ksub) = jsub
748 intbuf_tab(ni)%TYPSUB(ksub) = 1
749
750 isu =nom_opt(4,ninter+jsub)
751 nne =igrsurf(isu)%NSEG
752 taglins(1:maxrtms) = 0
753
754 DO i=1,nne
755 DO inod=1,2
756 in=igrsurf(isu)%NODES(i,2*inod)
757 DO jad=iadd(in),iadd(in+1)-1
758 is = nod2rtms(jad)
759 found_line = 0
760 DO j=1,2
761 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
762 found=0
763 DO k=1,4
764 IF(igrsurf(isu)%NODES(i,k)==ii) found=1
765 END DO
766 found_line = found_line + found
767 END DO
768 IF ((found_line==2).AND.(taglins(is)==0)) THEN
769 intbuf_tab(ni)%ADDSUBS(is)=intbuf_tab(ni)%ADDSUBS(is)+1
770
771 taglins(is) = 1
772 ENDIF
773 ENDDO
774 ENDDO
775 END DO
776
777
778
779 ELSEIF(nom_opt(2,ninter+jsub) == 0
780 . .AND. nom_opt(5,ninter+jsub) == 1) THEN
781
782 ksub=ksub+1
783
784
785 intbuf_tab(ni)%LISUB (ksub) = jsub
786
787
788
789
790 taglins(1:maxrtms) = 0
791
792 isu2 =nom_opt(6,ninter+jsub)
793 IF(isu2/=0)THEN
794 intbuf_tab(ni)%TYPSUB(ksub) = 2
795 DO i=1,igrsurf(isu2)%NSEG
796
797 DO inod=1,2
798 in=igrsurf(isu2)%NODES(i,2*inod)
799 DO jad=iadd(in),iadd(in+1)-1
800 is = nod2rtms(jad)
801 found_line = 0
802 DO j=1,2
803 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
804 found=0
805 DO k=1,4
806 IF(igrsurf(isu2)%NODES(i,k)==ii) found=1
807 END DO
808 found_line = found_line + found
809 END DO
810 IF ((found_line==2).AND.(taglins(is)==0)) THEN
811 intbuf_tab(ni)%ADDSUBS(is)=intbuf_tab(ni)%ADDSUBS(is)+1
812
813 taglins(is) = 1
814 ENDIF
815 ENDDO
816 ENDDO
817
818 ENDDO
819
820 ENDIF
821
822 isu1 =nom_opt(3,ninter+jsub)
823 IF(isu1/=0)THEN
824 intbuf_tab(ni)%TYPSUB(ksub) = 3
825 DO i=1,igrsurf(isu1)%NSEG
826
827 DO inod=1,2
828 in=igrsurf(isu1)%NODES(i,2*inod)
829 DO jad=iadd(in),iadd(in+1)-1
830 is = nod2rtms(jad)
831 found_line = 0
832 DO j=1,2
833 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
834 found=0
835 DO k=1,4
836 IF(igrsurf(isu1)%NODES(i,k)==ii) found=1
837 END DO
838 found_line = found_line + found
839 END DO
840 IF ((found_line==2).AND.(taglins(is)==0)) THEN
841 intbuf_tab(ni)%ADDSUBS(is)=intbuf_tab(ni)%ADDSUBS(is)+1
842
843 taglins(is) = 1
844 ENDIF
845 ENDDO
846 ENDDO
847
848 ENDDO
849
850 ENDIF
851
852
853
854 END IF
855 END DO
856
857 cur=1
858 DO is=1,nrts
859 next =cur+intbuf_tab(ni)%ADDSUBS(is)
860 intbuf_tab(ni)%ADDSUBS(is)=cur
861 cur =next
862 END DO
863 intbuf_tab(ni)%ADDSUBS(nrts+1)=cur
864
865
866 DO is=1,nrts
867 kad(is)=intbuf_tab(ni)%ADDSUBS(is)
868 END DO
869
870
871
872 ksub=0
873 DO jsub=1,nintsub
874 IF(nom_opt(2,ninter+jsub)==noint
875 . .AND.nom_opt(5,ninter+jsub)==1)THEN
876 ksub=ksub+1
877
878 isu =nom_opt(4,ninter+jsub)
879 nne =igrsurf(isu)%NSEG
880 taglins(1:maxrtms) = 0
881
882 DO i=1,nne
883 DO inod=1,2
884 in=igrsurf(isu)%NODES(i,2*inod)
885 DO jad=iadd(in),iadd(in+1)-1
886 is = nod2rtms(jad)
887 found_line = 0
888 DO j=1,2
889 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
890 found=0
891 DO k=1,4
892 IF(igrsurf(isu)%NODES(i,k)==ii) found=1
893 END DO
894 found_line = found_line + found
895 END DO
896 IF ((found_line==2).AND.(taglins(is)==0)) THEN
897 intbuf_tab(ni)%LISUBS(kad(is))=ksub
898 kad(is)=kad(is)+1
899
900 taglins(is) = 1
901 ENDIF
902 ENDDO
903 ENDDO
904 END DO
905
906
907 ELSEIF(nom_opt(2,ninter+jsub) == 0
908 . .AND. nom_opt(5,ninter+jsub) == 1) THEN
909
910 ksub=ksub+1
911
912
913 intbuf_tab(ni)%LISUB (ksub) = jsub
914
915
916
917
918 taglins(1:maxrtms) = 0
919
920 isu2 =nom_opt(6,ninter+jsub)
921 IF(isu2/=0)THEN
922 DO i=1,igrsurf(isu2)%NSEG
923
924 DO inod=1,2
925 in=igrsurf(isu2)%NODES(i,2*inod)
926 DO jad=iadd(in),iadd(in+1)-1
927 is = nod2rtms(jad)
928 found_line = 0
929 DO j=1,2
930 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
931 found=0
932 DO k=1,4
933 IF(igrsurf(isu2)%NODES(i,k)==ii) found=1
934 END DO
935 found_line = found_line + found
936 END DO
937
938 IF (found_line==2)THEN
939 IF(taglins(is)==0) THEN
940 intbuf_tab(ni)%INFLG_SUBS(kad(is))=
941 .
bitset(intbuf_tab(ni)%INFLG_SUBS(kad(is)),0)
942 intbuf_tab(ni)%LISUBS(kad(is))=ksub
943 kad(is)=kad(is)+1
944
945 taglins(is) = 1
946 ELSE
947 intbuf_tab(ni)%INFLG_SUBS(kad(is)-1)=
948 .
bitset(intbuf_tab(ni)%INFLG_SUBS(kad(is)-1),0)
949 ENDIF
950 ENDIF
951 ENDDO
952 ENDDO
953
954 ENDDO
955
956 ENDIF
957
958 isu1 =nom_opt(3,ninter+jsub)
959 IF(isu1/=0)THEN
960 DO i=1,igrsurf(isu1)%NSEG
961
962 DO inod=1,2
963 in=igrsurf(isu1)%NODES(i,2*inod)
964 DO jad=iadd(in),iadd(in+1)-1
965 is = nod2rtms(jad)
966 found_line = 0
967 DO j=1,2
968 ii=intbuf_tab(ni)%IRECTS(2*(is-1)+j)
969 found=0
970 DO k=1,4
971 IF(igrsurf(isu1)%NODES(i,k)==ii) found=1
972 END DO
973 found_line = found_line + found
974 END DO
975
976 IF (found_line==2)THEN
977 IF(taglins(is)==0) THEN
978 intbuf_tab(ni)%INFLG_SUBS
980 intbuf_tab(ni)%LISUBS(kad(is))=ksub
981 kad(is)=kad(is)+1
982
983 taglins(is) = 1
984 ELSE
985 intbuf_tab(ni)%INFLG_SUBS(kad(is)-1)=
986 .
bitset(intbuf_tab(ni)%INFLG_SUBS(kad(is)-1),1)
987 ENDIF
988 ENDIF
989 ENDDO
990 ENDDO
991
992 ENDDO
993
994 ENDIF
995 END IF
996 END DO
997
998
999
1000 iadd(1:numnod+1) = 0
1001 DO im=1,nrtm
1002 in =intbuf_tab(ni)%IRECTM(2*(im-1)+1)
1003 iadd(in) =iadd(in)+1
1004 in =intbuf_tab(ni)%IRECTM(2*(im-1)+2)
1005 iadd(in) =iadd(in)+1
1006 END DO
1007
1008 cur=1
1009 DO i=1,numnod
1010 next =cur+iadd(i)
1011 iadd(i) =cur
1012 cur =next
1013 END DO
1014 iadd(numnod+1)=cur
1015
1016 DO i=1,numnod
1017 kad(i)=iadd(i)
1018 END DO
1019
1020 DO im=1,nrtm
1021 in =intbuf_tab(ni)%IRECTM(2*(im-1)+1)
1022 nod2rtmm(kad(in)) = im
1023 kad(in) = kad(in) + 1
1024 in =intbuf_tab(ni)%IRECTM(2*(im-1)+2)
1025 nod2rtmm(kad(in)) = im
1026 kad(in) = kad(in) + 1
1027 ENDDO
1028
1029 ksub=0
1030 DO jsub=1,nintsub
1031 id1=nom_opt(1,ninter+jsub)
1033 . nom_opt(lnopt1-ltitr+1,ninter+jsub),ltitr)
1034 IF(nom_opt(2,ninter+jsub)==noint
1035 . .AND.nom_opt(5,ninter+jsub)==1)THEN
1036 ksub=ksub+1
1037
1038 isu =nom_opt(3,ninter+jsub)
1039 nne =igrsurf(isu)%NSEG
1040 taglinm(1:maxrtms) = 0
1041
1042 DO i=1,nne
1043 DO inod=1,2
1044 in=igrsurf(isu)%NODES(i,2*inod)
1045 DO jad=iadd(in),iadd(in+1)-1
1046 im = nod2rtmm(jad)
1047 found_line = 0
1048 DO j=1,2
1049 ii=intbuf_tab(ni)%IRECTM(2*(im-1)+j)
1050 found=0
1051 DO k=1,4
1052 IF(igrsurf(isu)%NODES(i,k)==ii) found=1
1053 END DO
1054 found_line = found_line + found
1055 END DO
1056 IF ((found_line==2).AND.(taglinm(im)==0)) THEN
1057 intbuf_tab(ni)%ADDSUBM(im)=intbuf_tab(ni)%ADDSUBM(im)+1
1058
1059 taglinm(im) = 1
1060 ENDIF
1061 ENDDO
1062 ENDDO
1063 END DO
1064
1065
1066 ELSEIF(nom_opt(2,ninter+jsub) == 0
1067 . .AND. nom_opt(5,ninter+jsub) == 1) THEN
1068
1069 ksub=ksub+1
1070
1071
1072 intbuf_tab(ni)%LISUB (ksub) = jsub
1073
1074
1075
1076
1077 taglinm(1:maxrtms) = 0
1078
1079 isu1 =nom_opt(3,ninter+jsub)
1080 IF(isu1/=0)THEN
1081 DO i=1,igrsurf(isu1)%NSEG
1082
1083 DO inod=1,2
1084 in=igrsurf(isu1)%NODES(i,2*inod)
1085 DO jad=iadd(in),iadd(in+1)-1
1086 im = nod2rtmm(jad)
1087 found_line = 0
1088 DO j=1,2
1089 ii=intbuf_tab(ni)%IRECTM(2*(is-1)+j)
1090 found=0
1091 DO k=1,4
1092 IF(igrsurf(isu1)%NODES(i,k)==ii) found=1
1093 END DO
1094 found_line = found_line + found
1095 END DO
1096 IF ((found_line==2).AND.(taglinm(im)==0)) THEN
1097 intbuf_tab(ni)%ADDSUBM(im)=intbuf_tab(ni)%ADDSUBM(im)+1
1098
1099 taglinm(im) = 1
1100 ENDIF
1101
1102 ENDDO
1103 ENDDO
1104
1105 ENDDO
1106
1107 ENDIF
1108
1109
1110 isu2 =nom_opt(6,ninter+jsub)
1111 IF(isu2/=0)THEN
1112 DO i=1,igrsurf(isu2)%NSEG
1113
1114 DO inod=1,2
1115 in=igrsurf(isu2)%NODES(i,2*inod)
1116 DO jad=iadd(in),iadd(in+1)-1
1117 im = nod2rtmm(jad)
1118 found_line = 0
1119 DO j=1,2
1120 ii=intbuf_tab(ni)%IRECTM(2*(is-1)+j)
1121 found=0
1122 DO k=1,4
1123 IF(igrsurf(isu2)%NODES(i,k)==ii) found=1
1124 END DO
1125 found_line = found_line + found
1126 END DO
1127 IF ((found_line==2).AND.(taglinm(im)==0)) THEN
1128 intbuf_tab(ni)%ADDSUBM(im)=intbuf_tab(ni)%ADDSUBM(im)+1
1129
1130 taglinm(im) = 1
1131 ENDIF
1132 ENDDO
1133 ENDDO
1134
1135 ENDDO
1136
1137 ENDIF
1138
1139
1140 END IF
1141 END DO
1142
1143 cur=1
1144 DO im=1,nrtm
1145 next =cur+intbuf_tab(ni)%ADDSUBM(im)
1146 intbuf_tab(ni)%ADDSUBM(im)=cur
1147 cur =next
1148 END DO
1149 intbuf_tab(ni)%ADDSUBM(nrtm+1)=cur
1150
1151 DO im=1,nrtm
1152 kad(im)=intbuf_tab(ni)%ADDSUBM(im)
1153 END DO
1154
1155
1156
1157 ksub=0
1158 DO jsub=1,nintsub
1159 IF(nom_opt(2,ninter+jsub)==noint
1160 . .AND.nom_opt(5,ninter+jsub)==1)THEN
1161 ksub=ksub+1
1162
1163 isu =nom_opt(3,ninter+jsub)
1164 nne =igrsurf(isu)%NSEG
1165 taglinm(1:maxrtms) = 0
1166
1167 DO i=1,nne
1168 DO inod=1,2
1169 in=igrsurf(isu)%NODES(i,2*inod)
1170 DO jad=iadd(in),iadd(in+1)-1
1171 im = nod2rtmm(jad)
1172 found_line = 0
1173 DO j=1,2
1174 ii=intbuf_tab(ni)%IRECTM(2*(im-1)+j)
1175 found=0
1176 DO k=1,4
1177 IF(igrsurf(isu)%NODES(i,k)==ii) found=1
1178 END DO
1179 found_line = found_line + found
1180 END DO
1181 IF ((found_line==2).AND.(taglinm(im)==0)) THEN
1182 intbuf_tab(ni)%LISUBM(kad(im))=ksub
1183 kad(im)=kad(im)+1
1184
1185 taglinm(im) = 1
1186 ENDIF
1187 ENDDO
1188 ENDDO
1189 END DO
1190
1191
1192
1193 ELSEIF(nom_opt(2,ninter+jsub) == 0
1194 . .AND. nom_opt(5,ninter+jsub) == 1) THEN
1195
1196 ksub=ksub+1
1197
1198
1199 intbuf_tab(ni)%LISUB (ksub) = jsub
1200
1201
1202
1203
1204 taglinm(1:maxrtms) = 0
1205
1206 isu1 =nom_opt(3,ninter+jsub)
1207 IF(isu1/=0)THEN
1208 intbuf_tab(ni)%TYPSUB(ksub) = 3
1209 DO i=1,igrsurf(isu1)%NSEG
1210
1211 DO inod=1,2
1212 in=igrsurf(isu1)%NODES(i,2*inod)
1213 DO jad=iadd(in),iadd(in+1)-1
1214 im = nod2rtmm(jad)
1215 found_line = 0
1216 DO j=1,2
1217 ii=intbuf_tab(ni)%IRECTM(2*(is-1)+j)
1218 found=0
1219 DO k=1,4
1220 IF(igrsurf(isu1)%NODES(i,k)==ii) found=1
1221 END DO
1222 found_line = found_line + found
1223 END DO
1224 IF (found_line==2)THEN
1225 IF(taglinm(im)==0) THEN
1226 intbuf_tab(ni)%INFLG_SUBM(kad(im))=
1227 .
bitset(intbuf_tab(ni)%INFLG_SUBM(kad(im)),1)
1228 intbuf_tab(ni)%LISUBM(kad(im))=ksub
1229 kad(im)=kad(im)+1
1230
1231 taglinm(im) = 1
1232 ELSE
1233 intbuf_tab(ni)%INFLG_SUBM(kad(im)-1)=
1234 .
bitset(intbuf_tab(ni)%INFLG_SUBM(kad(im)-1),1)
1235 ENDIF
1236 ENDIF
1237 ENDDO
1238 ENDDO
1239
1240 ENDDO
1241 ENDIF
1242
1243 isu2 =nom_opt
1244 IF(isu2/=0)THEN
1245 intbuf_tab(ni)%TYPSUB(ksub) = 3
1246 DO i=1,igrsurf(isu2)%NSEG
1247
1248 DO inod=1,2
1249 in=igrsurf
1250 DO jad=iadd(in),iadd(in+1)-1
1251 im = nod2rtmm(jad)
1252 found_line = 0
1253 DO j=1,2
1254 ii=intbuf_tab(ni)%IRECTM(2*(is-1)+j)
1255 found=0
1256 DO k=1,4
1257 IF(igrsurf(isu2)%NODES(i,k)==ii) found=1
1258 END DO
1259 found_line = found_line + found
1260 END DO
1261 IF (found_line==2)THEN
1262 IF(taglinm(im)==0) THEN
1263 intbuf_tab(ni)%INFLG_SUBM(kad(im))=
1264 .
bitset(intbuf_tab(ni)%INFLG_SUBM(kad(im)),0)
1265 intbuf_tab(ni)%LISUBM(kad(im))=ksub
1266 kad(im)=kad(im)+1
1267
1268 taglinm(im) = 1
1269 ELSE
1270 intbuf_tab(ni)%INFLG_SUBM(kad(im)-1)=
1271 .
bitset(intbuf_tab(ni)%INFLG_SUBM(kad(im)-1),0)
1272 ENDIF
1273 ENDIF
1274 ENDDO
1275 ENDDO
1276
1277 ENDDO
1278 ENDIF
1279
1280 END IF
1281 END DO
1282
1283 ENDIF
1284
1285
1286 RETURN
integer function bitset(i, n)
integer, parameter nchartitle
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)