38
39
40
41 USE my_alloc_mod
44 USE intbufdef_mod
45 USE multi_fvm_mod
47
48
49
50#include "implicit_f.inc"
51#include "assert.inc"
52
53
54
55#include "com01_c.inc"
56#include "com04_c.inc"
57#include "param_c.inc"
58
59 TYPE intermasurfep
60 INTEGER, DIMENSION(:), POINTER :: P
61 END TYPE intermasurfep
62
63
64
65 INTEGER PROC, IPARI(NPARI,*), LEN_IA, ITAB(*)
66 INTEGER :: NINDX_TAG,NUMNOD_L
67 INTEGER, DIMENSION(*), INTENT(IN) :: NODLOCAL
68 INTEGER, DIMENSION(*), INTENT(INOUT) :: TAG,INDX_TAG
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 TYPE(INTERSURFP),INTENT(IN) :: INTERCEP(3,NINTER)
87 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
88 TYPE(MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
89 INTEGER, INTENT(in) :: LEN_CEP
90 INTEGER, DIMENSION(LEN_CEP), INTENT(in) :: CEP
91
92
93
94 INTEGER NLOCAL
96
97
98
99 INTEGER NI, P, K, L, ITYP, INACTI, NSN, NMN, NRTS, NRTM,
100 . N, N1, N2, N3, N4, NRTM_L,
101 . I_STOK, NODFI, E, MULTIMP, IDEB, IFQ,
102 . NISUB, NISUBS, NISUBM, INTTH, NL, N1L, N2L, N3L, N4L,
103 . NLINS, NLINM, NSNE, NMNE, NLN, NN,INTFRIC,
104 . WORK(70000),KD(50),JD(50),I,J,IEDGE4,INTNITSCHE,MY_NODE,
105 . CPT1,CPT2,P1,P2,PROC1,PROC2,SE1,PLOC,ND,FLAGREMN,LREMNORMAX
106 INTEGER IT,ID
107 INTEGER, DIMENSION(:),ALLOCATABLE :: NSNFI
108 INTEGER, DIMENSION(:),ALLOCATABLE :: NUMP
109 INTEGER, DIMENSION(:),ALLOCATABLE :: NMNFI
110 INTEGER :: IEDGE,NEDGE,NEDGE_KEPT,ILEV
111 INTEGER, PARAMETER :: E_IBUF_SIZE = 13
112 LOGICAL INACTI_CASE
113
114 INTEGER, DIMENSION(:),ALLOCATABLE :: TAGE, NSNLOCAL, NSNP, NSVFI,
115 . NRTSLOCAL, NRTSP, INDEX, PFI,
116 . ITAFI, ITAFI2
117 INTEGER, DIMENSION(:,:),ALLOCATABLE :: CLEF,IRTLMFI2,IRTLMFI
118
119 INTEGER, DIMENSION(:),ALLOCATABLE :: PLIST
120 INTEGER, DIMENSION(:),ALLOCATABLE :: TAB1,TAB2
121 INTEGER SPLIST
122 INTEGER, DIMENSION(:),ALLOCATABLE :: TABZERO
123 INTEGER, DIMENSION(:), ALLOCATABLE :: LEDGE_FIE
124 INTEGER :: INTER_LAW151
125 LOGICAL :: INTER18_LAW151
126
127 CALL my_alloc(nsnfi,nspmd)
128 CALL my_alloc(nump,nspmd)
129 CALL my_alloc(nmnfi,nspmd)
130
131
132 DO ni =1, ninter
133 nindx_tag = 0
134 ityp = ipari(7,ni)
135 inacti = ipari(22,ni)
136 inter_law151 = ipari(14,ni)
137 inter18_law151 = .false.
138
139 IF(ityp==7.AND.inacti==7.AND.inter_law151==151) inter18_law151 = .true.
140
141 IF(ityp==7.OR.ityp==10.OR.ityp==11.OR.
142 . (ityp==17.AND.ipari(33,ni)==0).OR.ityp==20.OR.
143 . ityp==22.OR.ityp==23.OR.ityp==24.OR.ityp==25)THEN
144
145 DO p = 1, nspmd
146 nsnfi(p) = 0
147 END DO
149 len_ia = len_ia + nspmd
150 IF(((inacti/=5.AND.inacti/=6.AND.inacti/=7).OR.
151 . ityp==10).AND.ityp/=23.AND.inacti/=-1) THEN
152
154 len_ia = len_ia + nspmd
155 ELSE
156 nrts = ipari(3,ni)
157 nrtm = ipari(4,ni)
158 nsn = ipari(5,ni)
159 nmn = ipari(6,ni)
160 multimp= ipari(23,ni)
161 intth = ipari(47,ni)
162 intfric = ipari(72,ni)
163 flagremn =ipari(63,ni)
164 lremnormax =ipari(82,ni)
165 intnitsche = ipari(86,ni)
166
167 nsne = 0
168 iedge4 = 0
169
170 IF(ityp==7.OR.ityp==22.OR.ityp==23.OR.ityp==24.OR.
171 . ityp==25)THEN
172
173 IF(ityp==24) THEN
174 nsne = ipari(55,ni)
175 iedge4 = ipari(59,ni)
176 ENDIF
177 i_stok = intbuf_tab(ni)%I_STOK(1)
178
179
180
181
182
183
184
185
186 ALLOCATE(nsnlocal(nsn))
187 ALLOCATE(nsnp(nsn))
188 ALLOCATE(nsvfi(nsn))
189 ALLOCATE(pfi(nsn))
190 ALLOCATE(itafi(nsn))
191 ALLOCATE(tage(nrtm))
192 IF (ityp==24) ALLOCATE(irtlmfi(2,nsn))
193 IF (ityp==25) THEN
194 ALLOCATE(irtlmfi(4,nsn))
195 irtlmfi(1:4,1:nsn)=0
196 END IF
197 DO p = 1, nspmd
198 nump(p) = 0
199 END DO
200
201
202
203
204 ALLOCATE(plist(nspmd))
205 plist(1:nspmd) = -1
206 DO k=1,nsn
207 n = intbuf_tab(ni)%NSV(k)
208 nsnlocal(k) = 0
209 IF(tag(n)==0) THEN
210 splist=0
211 ploc = 0
212 IF(inter18_law151) THEN
213 IF(cep(n)==proc) ploc = 1
214 splist = 1
215 plist(1) = cep(n) + 1
216 ELSE
217 IF(n<=numnod) THEN
219 ploc = 0
220 IF(nodlocal(n)/=0.AND.nodlocal(n)<=numnod_l) ploc = 1
221 ELSE
222
223 ploc = 0
224 se1 = intbuf_tab(ni)%IS2SE(2*(n-numnod-1)+1)
225 plist(1)=intercep(2,ni)%P(se1)
226 splist=1
227 IF(plist(1)==proc+1)ploc=1
228 ENDIF
229 ENDIF
230 DO i=1,splist
231 p=plist(i)
232 nump(p) = nump(p)+1
233 ENDDO
234
235 IF(ploc==1) THEN
236 nsnlocal(k) = nump(proc+1)
237 nsnp(k) = proc+1
238 ELSE
239 p = plist(1)
240 nsnlocal(k) = nump(p)
241 nsnp(k) = p
242 ENDIF
243 tag(n) = 1
244 nindx_tag = nindx_tag + 1
245 indx_tag(nindx_tag) = n
246 ENDIF
247 ENDDO
248
249 DEALLOCATE(plist)
250
251 nrtm_l = 0
252 DO k=1,nrtm
253
254 tage(k) = 0
255 IF(intercep(1,ni)%P(k)==proc+1)THEN
256 nrtm_l = nrtm_l + 1
257 tage(k) = nrtm_l
258 ENDIF
259 ENDDO
260
261 nodfi = 0
262 DO p = 1, nspmd
263 nsnfi(p) = 0
264 END DO
265
266 DO k = 1, i_stok
267 e = intbuf_tab(ni)%CAND_E(k)
268 IF (tage(e)/=0) THEN
269 n = intbuf_tab(ni)%CAND_N(k)
270
271 inacti_case = .false.
272 nd = intbuf_tab(ni)%NSV(n)
273 IF (nd <= numnod)THEN
274 my_node = intbuf_tab(ni)%NSV(n)
275 IF(nodlocal( my_node )==0.OR.nodlocal( my_node )>numnod_l ) inacti_case=.true.
276 ELSE
277 se1 = intbuf_tab(ni)%IS2SE(2*(nd-numnod-1)+1)
278 IF (intercep(2,ni)%P(se1)/=(proc+1) ) inacti_case=.true.
279 ENDIF
280
281
282 IF(inacti_case .EQV. .true.) THEN
283
284 IF(nsnp(n)>0) THEN
285 p = nsnp(n)
286 nsnp(n) = -p
287 nsnfi(p) = nsnfi(p) + 1
288 nodfi = nodfi + 1
289 nsvfi(nodfi) = nsnlocal(n)
290 nd = intbuf_tab(ni)%NSV(n)
291 IF(nd<=numnod)THEN
292 itafi(nodfi) = itab(nd)
293 ELSE
294 itafi(nodfi) = intbuf_tab(ni)%IS2ID(nd-numnod)
295 ENDIF
296 IF(ityp==24)THEN
297 irtlmfi(1,nodfi)=intbuf_tab(ni)%IRTLM(2*(n-1)+1)
298 irtlmfi(2,nodfi)=intbuf_tab(ni)%IRTLM(2*(n-1)+2)
299 ENDIF
300 IF(ityp==25)THEN
301 irtlmfi(1,nodfi)=intbuf_tab(ni)%IRTLM(4*(n-1)+1)
302 irtlmfi(2,nodfi)=intbuf_tab(ni)%IRTLM(4*(n-1)+2)
303 irtlmfi(3,nodfi)=intbuf_tab(ni)%IRTLM(4*(n-1)+3)
304 irtlmfi(4,nodfi)=intbuf_tab(ni)%IRTLM(4*(n-1)+4)
305 ENDIF
306 pfi(nodfi) = p
307 END IF
308 END IF
309 END IF
310 END DO
311
312
313 IF(nodfi>0) THEN
314 ALLOCATE(index(2*nodfi))
315 ALLOCATE(clef(2,nodfi))
316 IF(ityp==24)ALLOCATE(irtlmfi2(2,nodfi))
317 IF(ityp==25)ALLOCATE(irtlmfi2(4,nodfi))
318 ALLOCATE(itafi2(nodfi))
319 DO k = 1, nodfi
320 clef(1,k)=pfi(k)
321 clef(2,k)=nsvfi(k)
322 itafi2(k) = itafi(k)
323 IF(ityp==24)THEN
324 irtlmfi2(1,k)= irtlmfi(1,k)
325 irtlmfi2(2,k)= irtlmfi(2,k)
326 ENDIF
327 IF(ityp==25)THEN
328 irtlmfi2(1,k)= irtlmfi(1,k)
329 irtlmfi2(2,k)= irtlmfi(2,k)
330 irtlmfi2(3,k)= irtlmfi(3,k)
331 irtlmfi2(4,k)= irtlmfi(4,k)
332 ENDIF
333 END DO
334 CALL my_orders(0,work,clef,index,nodfi,2)
335 DO k = 1, nodfi
336 nsvfi(k) = clef(2,index(k))
337 itafi(k) = itafi2(index(k))
338 pfi(k) = clef(1,index(k))
339 IF(ityp==24)THEN
340 irtlmfi(1,k)=irtlmfi2(1,index(k))
341 irtlmfi(2,k)=irtlmfi2(2,index(k))
342 ENDIF
343 IF(ityp==25)THEN
344 irtlmfi(1,k)=irtlmfi2(1,index(k))
345 irtlmfi(2,k)=irtlmfi2(2,index(k))
346 irtlmfi(3,k)=irtlmfi2(3,index(k))
347 irtlmfi(4,k)=irtlmfi2(4,index(k))
348 ENDIF
349 END DO
350 DEALLOCATE(index)
351 DEALLOCATE(clef)
352 DEALLOCATE(itafi2)
353 IF(ityp==24.OR.ityp==25) DEALLOCATE(irtlmfi2)
354 END IF
355 DEALLOCATE(pfi)
356
358 len_ia = len_ia + nspmd
360 len_ia = len_ia + nodfi
361
363 len_ia = len_ia + nodfi
364
366 len_ia = len_ia + nodfi
367
368 IF (intth>0) THEN
370 len_ia = len_ia + nodfi
371 ENDIF
372
373 IF (intfric>0) THEN
375 len_ia = len_ia + nodfi
376 ENDIF
377 IF(ityp==24)THEN
378
380 len_ia = len_ia + nodfi*2
381
383 len_ia = len_ia + nodfi
384
386 len_ia = len_ia + nodfi
387 IF(iedge4>0)THEN
388
394 len_ia = len_ia + 5*nodfi
395
396
398 len_ia = len_ia + nodfi
399
401 len_ia = len_ia + nodfi
402
404 len_ia = len_ia + nodfi
405
408 len_ia = len_ia + 2* nodfi
409
410 ENDIF
411 IF(intnitsche>0)
CALL write_i_c(nsvfi,3*nodfi)
412 ENDIF
413
414 IF(ityp==25)THEN
415
417 len_ia = len_ia + nodfi
418
420 len_ia = len_ia + nodfi*4
421
423 len_ia = len_ia + nodfi
424
425 IF(flagremn == 2.AND.nodfi>0) THEN
426 ALLOCATE(tabzero(nodfi+1))
427 tabzero(1:nodfi+1) = 0
429 len_ia = len_ia + nodfi + 1
430 DEALLOCATE(tabzero)
431 ENDIF
432
433 ENDIF
434
435
436 DEALLOCATE(nsnlocal)
437 DEALLOCATE(nsnp)
438 DEALLOCATE(nsvfi)
439 DEALLOCATE(itafi)
440 DEALLOCATE(tage)
441 IF (ityp==24.OR.ityp==25)DEALLOCATE(irtlmfi)
442
443
444 ELSEIF(ityp==11)THEN
445
446 i_stok = intbuf_tab(ni)%I_STOK(1)
447 ALLOCATE(nrtslocal(nrts))
448 ALLOCATE(nrtsp(nrts))
449 ALLOCATE(nsvfi(nrts))
450 ALLOCATE(pfi(nrts))
451 ALLOCATE(tage(nrtm))
452 DO p = 1, nspmd
453 nump(p) = 0
454 END DO
455
456 ALLOCATE(tab1(nspmd),tab2(nspmd))
457 DO k=1,nrts
458 n1 = intbuf_tab(ni)%IRECTS(2*(k-1)+1)
459 n2 = intbuf_tab(ni)%IRECTS(2*(k-1)+2)
460
463
464 nrtslocal(k) = 0
465 IF(cpt1>0.AND.cpt2>0) THEN
466 DO p1 = 1,cpt1
467 proc1 = tab1(p1)
468 DO p2 = 1,cpt2
469 proc2 = tab1(p2)
470 IF((proc1==proc+1).AND.(proc2==proc+1)) THEN
471 nump(proc+1) = nump(proc+1) + 1
472 nrtslocal(k) = nump(proc+1)
473 nrtsp(k) = proc+1
474 ELSEIF((proc1==proc2).AND.(nrtslocal(k)==0)) THEN
475 nump(proc1) = nump(proc1) + 1
476 nrtslocal(k) = nump(proc1)
477 nrtsp(k) = proc1
478 ENDIF
479 ENDDO
480 ENDDO
481 ENDIF
482
483 END DO
484 DEALLOCATE(tab1,tab2)
485
486 nrtm_l = 0
487 DO k=1,nrtm
488 tage(k) = 0
489 IF(intercep(1,ni)%P(k)==proc+1)THEN
490 nrtm_l = nrtm_l + 1
491 tage(k) = nrtm_l
492 ENDIF
493 ENDDO
494
495 nodfi = 0
496 DO p = 1, nspmd
497 nsnfi(p) = 0
498 END DO
499
500 DO k = 1, i_stok
501 e = intbuf_tab(ni)%CAND_E(k)
502 IF (tage(e)/=0) THEN
503 l = intbuf_tab(ni)%CAND_N(k)
504 n1 = intbuf_tab(ni)%IRECTS((l-1)*2+1)
505 n2 = intbuf_tab(ni)%IRECTS((l-1)*2+2)
506 IF((nodlocal( n1 )==0.OR.nodlocal( n1 )>numnod_l).AND.
507 + (nodlocal( n2 )==0.OR.nodlocal( n2 )>numnod_l) ) THEN
508 IF(nrtsp(l)>0)THEN
509 p = nrtsp(l)
510 nrtsp(l) = -p
511 nsnfi(p) = nsnfi(p) + 1
512 nodfi = nodfi + 1
513 nsvfi(nodfi) = nrtslocal(l)
514 pfi(nodfi) = p
515 END IF
516 END IF
517 END IF
518 END DO
519
520 IF(nodfi>0) THEN
521 ALLOCATE(index(2*nodfi))
522 ALLOCATE(clef(2,nodfi))
523 DO k = 1, nodfi
524 clef(1,k)=pfi(k)
525 clef(2,k)=nsvfi(k)
526 END DO
527 CALL my_orders(0,work,clef,index,nodfi,2)
528 DO k = 1, nodfi
529 nsvfi(k) = clef(2,index(k))
530 pfi(k) = clef(1,index(k))
531 END DO
532 DEALLOCATE(index)
533 DEALLOCATE(clef)
534 END IF
535 DEALLOCATE(pfi)
536
539
541
543
544 IF (intth>0) THEN
546 len_ia = len_ia + nodfi
547 ENDIF
548
549 IF (intfric>0) THEN
551 len_ia = len_ia + nodfi
552 ENDIF
553
554 DEALLOCATE(nrtslocal)
555 DEALLOCATE(nrtsp)
556 DEALLOCATE(nsvfi)
557 DEALLOCATE(tage)
558
559 ELSEIF(ityp==20)THEN
560
561 ifq = ipari(31,ni)
562 nln = ipari(35,ni)
563 nisub = ipari(36,ni)
564 nisubs = ipari(37,ni)
565 nisubm = ipari(38,ni)
566 intth = ipari(47,ni)
567
568 i_stok = intbuf_tab(ni)%I_STOK(1)
569 ALLOCATE(nsnlocal(nsn))
570 ALLOCATE(nsnp(nsn))
571 ALLOCATE(nsvfi(nsn))
572 ALLOCATE(pfi(nsn))
573 ALLOCATE(tage(nrtm))
574
575 DO p = 1, nspmd
576 nump(p) = 0
577 END DO
578
579 DO k=1,nsn
580 nl= intbuf_tab(ni)%NSV(k)
581 n = intbuf_tab(ni)%NLG(
nl)
582
583 nsnlocal(k) = 0
584 IF(tag(n)==0) THEN
585 IF(nodlocal( n )/=0.AND.nodlocal( n )<=numnod_l) THEN
586 nump(proc+1) = nump(proc+1) + 1
587 nsnlocal(k) = nump(proc+1)
588 nsnp(k) = proc+1
589 ENDIF
590
591 DO p = 1, nspmd
592 IF(p/=proc+1.AND.
nlocal(n,p)==1)
THEN
593 nump(p) = nump(p) + 1
594 IF(nsnlocal(k)==0) THEN
595 nsnlocal(k) = nump(p)
596 nsnp(k) = p
597 END IF
598 END IF
599 END DO
600
601 tag(n) = 1
602 nindx_tag = nindx_tag + 1
603 indx_tag(nindx_tag) = n
604 END IF
605 END DO
606
607 nrtm_l = 0
608 DO k=1,nrtm
609 tage(k) = 0
610 IF(intercep(1,ni)%P(k)==proc+1) THEN
611 nrtm_l = nrtm_l + 1
612 tage(k) = nrtm_l
613 ENDIF
614 ENDDO
615
616 nodfi = 0
617 DO p = 1, nspmd
618 nsnfi(p) = 0
619 END DO
620
621 DO k = 1, i_stok
622 e = intbuf_tab(ni)%CAND_E(k)
623 IF (tage(e)/=0) THEN
624 n = intbuf_tab(ni)%CAND_N(k)
625 nl = intbuf_tab(ni)%NSV(n)
626 nn = intbuf_tab(ni)%NLG(
nl)
627 IF(nodlocal( nn )==0.OR.nodlocal( nn )>numnod_l) THEN
628
629 IF(nsnp(n)>0) THEN
630 p = nsnp(n)
631 nsnp(n) = -p
632 nsnfi(p) = nsnfi(p) + 1
633 nodfi = nodfi + 1
634 nsvfi(nodfi) = nsnlocal(n)
635 pfi(nodfi) = p
636 END IF
637 END IF
638 END IF
639 END DO
640
641 IF(nodfi>0) THEN
642 ALLOCATE(index(2*nodfi))
643 ALLOCATE(clef(2,nodfi))
644 DO k = 1, nodfi
645 clef(1,k)=pfi(k)
646 clef(2,k)=nsvfi(k)
647 END DO
648 CALL my_orders(0,work,clef,index,nodfi,2)
649 DO k = 1, nodfi
650 nsvfi(k) = clef(2,index(k))
651 pfi(k) = clef(1,index(k))
652 END DO
653 DEALLOCATE(index)
654 DEALLOCATE(clef)
655 END IF
656 DEALLOCATE(pfi)
657
659 len_ia = len_ia + nspmd
661 len_ia = len_ia + nodfi
662
664 len_ia = len_ia + nodfi
665
667 len_ia = len_ia + nodfi
668
670 len_ia = len_ia + nodfi
671
672 IF (intth>0) THEN
674 len_ia = len_ia + nodfi
675 ENDIF
676
677 DEALLOCATE(nsnlocal)
678 DEALLOCATE(nsnp)
679 DEALLOCATE(nsvfi)
680 DEALLOCATE(tage)
681 END IF
682
683 END IF
684
685 IF (ityp==20)THEN
686
687 DO p = 1, nspmd
688 nsnfi(p) = 0
689 END DO
691 inacti = ipari(22,ni)
692 IF(inacti/=5.AND.inacti/=6.AND.inacti/=7) THEN
693
695 ELSE
696 nrts = ipari(3,ni)
697 nrtm = ipari(4,ni)
698 nsn = ipari(5,ni)
699 nmn = ipari(6,ni)
700 multimp= ipari(23,ni)
701 ifq = ipari(31,ni)
702 nln = ipari(35,ni)
703 nisub = ipari(36,ni)
704 nisubs = ipari(37,ni)
705 nisubm = ipari(38,ni)
706
707 intth = ipari(47,ni)
708
709 nlins = ipari(51,ni)
710 nlinm = ipari(52,ni)
711 nsne = ipari(55,ni)
712 nmne = ipari(56,ni)
713
714 i_stok = intbuf_tab(ni)%I_STOK_E(1)
715 ALLOCATE(nrtslocal(nlins))
716 ALLOCATE(nrtsp(nlins))
717 ALLOCATE(nsvfi(nlins))
718 ALLOCATE(pfi(nlins))
719 ALLOCATE(tage(nlinm))
720 DO p = 1, nspmd
721 nump(p) = 0
722 END DO
723 DO k=1,nlins
724 n1l = intbuf_tab(ni)%IXLINS(2*(k-1)+1)
725 n2l = intbuf_tab(ni)%IXLINS(2*(k-1)+2)
726 n1 = intbuf_tab(ni)%NLG(n1l)
727 n2 = intbuf_tab(ni)%NLG(n2l)
728
729 nrtslocal(k) = 0
730 IF( (nodlocal( n1 )/=0.AND.nodlocal( n1 )<=numnod_l).AND.
731 + (nodlocal( n2 )/=0.AND.nodlocal( n2 )<=numnod_l) ) THEN
732 nump(proc+1) = nump(proc+1) + 1
733 nrtslocal(k) = nump(proc+1)
734 nrtsp(k) = proc+1
735 END IF
736
737 DO p = 1, nspmd
738 IF(p/=proc+1.AND.
nlocal(n1,p)==1.AND.
740 IF(nrtslocal(k)==0) THEN
741 nump(p) = nump(p) + 1
742 nrtslocal(k) = nump(p)
743 nrtsp(k) = p
744 GOTO 2400
745 END IF
746 END IF
747 END DO
748 2400 CONTINUE
749 END DO
750
751 nrtm_l = 0
752 DO k=1,nlinm
753 tage(k) = 0
754 IF(intercep(2,ni)%P(k)==proc+1) THEN
755 nrtm_l = nrtm_l + 1
756 tage(k) = nrtm_l
757 END IF
758 END DO
759
760 nodfi = 0
761 DO p = 1, nspmd
762 nsnfi(p) = 0
763 END DO
764
765 DO k = 1, i_stok
766 e = intbuf_tab(ni)%LCAND_S(k)
767 IF (tage(e)/=0) THEN
768 l = intbuf_tab(ni)%IXLINS(k)
769 n1l = intbuf_tab(ni)%IXLINS((l-1)*2+1)
770 n2l = intbuf_tab(ni)%IXLINS((l-1)*2+2)
771 n1 = intbuf_tab(ni)%NLG(n1l)
772 n2 = intbuf_tab(ni)%NLG(n2l)
773 IF( (nodlocal( n1 )==0.OR.nodlocal( n1 )>numnod_l).AND.
774 + (nodlocal( n2 )==0.OR.nodlocal( n2 )>numnod_l) ) THEN
775 IF(nrtsp(l)>0)THEN
776 p = nrtsp(l)
777 nrtsp(l) = -p
778 nsnfi(p) = nsnfi(p) + 1
779 nodfi = nodfi + 1
780 nsvfi(nodfi) = nrtslocal(l)
781 pfi(nodfi) = p
782 END IF
783 END IF
784 END IF
785 END DO
786
787 IF(nodfi>0) THEN
788 ALLOCATE(index(2*nodfi))
789 ALLOCATE(clef(2,nodfi))
790 DO k = 1, nodfi
791 clef(1,k)=pfi(k)
792 clef(2,k)=nsvfi(k)
793 END DO
794 CALL my_orders(0,work,clef,index,nodfi,2)
795 DO k = 1, nodfi
796 nsvfi(k) = clef(2,index(k))
797 pfi(k) = clef(1,index(k))
798 END DO
799 DEALLOCATE(index)
800 DEALLOCATE(clef)
801 END IF
802 DEALLOCATE(pfi)
803
806
808
810
811 DEALLOCATE(nrtslocal)
812 DEALLOCATE(nrtsp)
813 DEALLOCATE(nsvfi)
814 DEALLOCATE(tage)
815 END IF
816 END IF
817
818 iedge = ipari(58,ni)
819 ilev = ipari(20,ni)
820
821 IF( ityp == 25 .AND. iedge /= 0) THEN
822 nedge = ipari(68,ni)
823 nrtm = ipari(4,ni)
824 nsnfi(1:nspmd) = 0
827 nedge_kept =
i25_fie(ni,proc+1)%NEDGE_TOT
828 nodfi = 2 * nedge_kept
829 ALLOCATE(ledge_fie(nodfi*e_ibuf_size))
830 ledge_fie(1:nodfi*e_ibuf_size) = 0
831 IF(nedge_kept > 0) THEN
833
834
835
836
837 DO k = 1, nedge_kept
839 assert(j > 0)
840 ledge_fie(e_ibuf_size*(k-1) + 1) = intbuf_tab(ni)%LEDGE(8 + (j-1)*nledge)
841 ledge_fie(e_ibuf_size*(k-1) + 2) = intbuf_tab(ni)%LEDGE(1 + (j-1)*nledge)
842 ledge_fie(e_ibuf_size*(k-1) + 3) = intbuf_tab(ni)%LEDGE(2 + (j-1)*nledge)
843 ledge_fie(e_ibuf_size*(k-1) + 4) = intbuf_tab(ni)%LEDGE(3+ (j-1)*nledge)
844 ledge_fie(e_ibuf_size*(k-1) + 5) = intbuf_tab(ni)%LEDGE(4+ (j-1)*nledge)
845 ledge_fie(e_ibuf_size*(k-1) + 6) = intbuf_tab(ni)%LEDGE(5+ (j-1)*nledge)
846 ledge_fie(e_ibuf_size*(k-1) + 7) = intbuf_tab(ni)%LEDGE(6+ (j-1)*nledge
847 ledge_fie(e_ibuf_size*(k-1) + 8) = intbuf_tab(ni)%LEDGE(7+ (j
848
849 ledge_fie(e_ibuf_size*(k-1) + 9) = itab(ledge_fie(e_ibuf_size*(k-1) + 6))
850
851 ledge_fie(e_ibuf_size*(k-1) +10) = itab(ledge_fie
852
853 ledge_fie(e_ibuf_size*(k-1) +11) = intbuf_tab(ni)%LEDGE(10 + (j-1)*nledge)
854
855 ledge_fie(e_ibuf_size*(k-1) +12) = 0
856
857 IF(ilev == 2) THEN
858 ledge_fie(e_ibuf_size*(k-1) +13) = intbuf_tab(ni)%EBINFLG(j)
859 ELSE
860 ledge_fie(e_ibuf_size*(k-1) +13) = 0
861 ENDIF
862 ENDDO
863 nsne = e_ibuf_size*nedge_kept
865
866 IF (intfric>0) THEN
868 ENDIF
869 ENDIF
870 DEALLOCATE(ledge_fie)
871
872 ENDIF ! type25+edge
873
874 IF(ipari(36,ni)>0.AND.ityp/=17) THEN
875
876 nump(1:nspmd) = 0
878 IF(ityp == 25 .AND. ipari(58,ni) > 0) THEN
879
881 ENDIF
882 END IF
883
884 END IF
885
886
887 IF(ityp==21 ) THEN
888 intth = ipari(47,ni)
889 IF(intth==2.OR.ipari(95,ni) > 0) THEN
890
891 DO p = 1, nspmd
892 nmnfi(p) = 0
893 END DO
895 len_ia = len_ia + nspmd
896
898 len_ia = len_ia + nspmd
899
900 ENDIF
901 ENDIF
902
903
904
905 IF(nindx_tag>0)THEN
906 DO it=1,nindx_tag
909 ENDDO
910 ENDIF
911
912
913
914 END DO
915
916 DEALLOCATE(nsnfi)
917 DEALLOCATE(nump)
918 DEALLOCATE(nmnfi)
919
920 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
type(i25_fie_), dimension(:,:), allocatable i25_fie
character *2 function nl()
void write_i_c(int *w, int *len)