1 subroutine utb07a ( hetare,
2 > hettri, nivtri, pertri,
6 > hettet, tritet, pertet, pthepe,
7 > hethex, quahex, perhex,
8 > hetpyr, facpyr, perpyr, pphepe,
9 > hetpen, facpen, perpen,
22 > ulsort, langue, codret )
23 c ______________________________________________________________________
27 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
29 c Version originale enregistree le 18 juin 1996 sous le numero 96036
30 c aupres des huissiers de justice Simart et Lavoir a Clamart
31 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
32 c aupres des huissiers de justice
33 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
35 c HOMARD est une marque deposee d'Electricite de France
41 c ______________________________________________________________________
43 c UTilitaire - Bilan sur le maillage - option 07
45 c ______________________________________________________________________
47 c Nombre de mailles du calcul qui sont actives.
48 c ______________________________________________________________________
50 c . nom . e/s . taille . description .
51 c .____________________________________________________________________.
52 c . hetare . e . nbarto . historique de l'etat des aretes .
53 c . voltri . e .2*nbtrto. numeros des 2 volumes par triangle .
54 c . . . . voltri(i,k) definit le i-eme voisin de k .
55 c . . . . 0 : pas de voisin .
56 c . . . . j>0 : tetraedre j .
57 c . . . . j<0 : pyramide/pentaedre dans pypetr(1/2,j).
58 c . hettri . e . nbtrto . historique de l'etat des triangles .
59 c . nivtri . e . nbtrto . niveau des triangles .
60 c . pertri . e . nbtrto . pere des triangles .
61 c . hetqua . e . nbquto . historique de l'etat des quadrangles .
62 c . nivqua . e . nbquto . niveau des quadrangles .
63 c . volqua . e .2*nbquto. numeros des 2 volumes par quadrangle .
64 c . . . . volqua(i,k) definit le i-eme voisin de k .
65 c . . . . 0 : pas de voisin .
66 c . . . . j>0 : hexaedre j .
67 c . . . . j<0 : pyramide/pentaedre dans pypequ(1/2,j).
68 c . hettet . e . nbteto . historique de l'etat des tetraedres .
69 c . tritet . e .nbtecf*4. numeros des 4 triangles des tetraedres .
70 c . pertet . e . nbteto . pere des tetraedres .
71 c . . . . si pertet(i) > 0 : numero du tetraedre .
72 c . . . . si pertet(i) < 0 : -numero dans pthepe .
73 c . pthepe . e . * . si i <= nbheco : numero de l'hexaedre .
74 c . . . . si non : numero du pentaedre .
75 c . hethex . e . nbheto . historique de l'etat des hexaedres .
76 c . quahex . e .nbhecf*6. numeros des 6 quadrangles des hexaedres .
77 c . perhex . e . nbheto . pere des hexaedres .
78 c . hetpyr . e . nbpyto . historique de l'etat des pyramides .
79 c . facpyr . e .nbpycf*5. numeros des 5 faces des pyramides .
80 c . perpyr . e . nbpyto . pere des pyramides .
81 c . . . . si perpyr(i) > 0 : numero de la pyramide .
82 c . . . . si perpyr(i) < 0 : -numero dans pphepe .
83 c . pphepe . e . * . si i <= nbheco : numero de l'hexaedre .
84 c . . . . si non : numero du pentaedre .
85 c . hetpen . e . nbpeto . historique de l'etat des pentaedres .
86 c . facpen . e .nbpecf*5. numeros des 5 faces des pentaedres .
87 c . perpen . e . nbpeto . pere des pentaedres .
88 c . posifa . e .0:nbarto. pointeur sur tableau facare .
89 c . facare . e . nbfaar . liste des faces contenant une arete .
90 c . cfanoe . e . nctfno*. codes des familles des noeuds .
91 c . . . nbnoto . 1 : famille MED .
92 c . . . . + l : appartenance a l'equivalence l .
93 c . famnoe . e . nbnoto . famille des aretes .
94 c . cfampo . e . nctfmp*. codes des familles des mailles-points .
95 c . . . nbfmpo . 1 : famille MED .
96 c . . . . 2 : type de maille-point .
97 c . . . . 3 : famille des sommets .
98 c . . . . + l : appartenance a l'equivalence l .
99 c . fammpo . e . nbmpto . famille des mailles-points .
100 c . cfaare . e . nctfar*. codes des familles des aretes .
101 c . . . nbfare . 1 : famille MED .
102 c . . . . 2 : type de segment .
103 c . . . . 3 : orientation .
104 c . . . . 4 : famille d'orientation inverse .
105 c . . . . 5 : numero de ligne de frontiere .
106 c . . . . > 0 si concernee par le suivi de frontiere.
107 c . . . . <= 0 si non concernee .
108 c . . . . 6 : famille frontiere active/inactive .
109 c . . . . 7 : numero de surface de frontiere .
110 c . . . . + l : appartenance a l'equivalence l .
111 c . famtri . e . nbtrto . famille des triangles .
112 c . cfatri . e . nctftr*. codes des familles des triangles .
113 c . . . nbftri . 1 : famille MED .
114 c . . . . 2 : type de triangle .
115 c . . . . 3 : numero de surface de frontiere .
116 c . . . . 4 : famille des aretes internes apres raf.
117 c . . . . + l : appartenance a l'equivalence l .
118 c . famqua . e . nbquto . famille des quadrangles .
119 c . cfaqua . e . nctfqu*. codes des familles des quadrangles .
120 c . . . nbfqua . 1 : famille MED .
121 c . . . . 2 : type de quadrangle .
122 c . . . . 3 : numero de surface de frontiere .
123 c . . . . 4 : famille des aretes internes apres raf.
124 c . . . . 5 : famille des triangles de conformite .
125 c . . . . 6 : famille de sf active/inactive .
126 c . . . . + l : appartenance a l'equivalence l .
127 c . famtet . e . nbteto . famille des tetraedres .
128 c . cfatet . . nctfte. codes des familles des tetraedres .
129 c . . . nbftet . 1 : famille MED .
130 c . . . . 2 : type de tetraedres .
131 c . . . . + l : appartenance a l'equivalence l .
132 c . famhex . e . nbheto . famille des hexaedres .
133 c . cfahex . . nctfhe. codes des familles des hexaedres .
134 c . . . nbfhex . 1 : famille MED .
135 c . . . . 2 : type d'hexaedres .
136 c . . . . 3 : famille des tetraedres de conformite .
137 c . . . . 4 : famille des pyramides de conformite .
138 c . fampyr . e . nbpyto . famille des pyramides .
139 c . cfapyr . . nctfpy. codes des familles des pyramides .
140 c . . . nbfpyr . 1 : famille MED .
141 c . . . . 2 : type de pyramides .
142 c . fampen . e . nbpeto . famille des pentaedres .
143 c . cfapen . . nctfpe. codes des familles des pentaedres .
144 c . . . nbfpen . 1 : famille MED .
145 c . . . . 2 : type de pentaedres .
146 c . . . . 3 : famille des tetraedres de conformite .
147 c . . . . 4 : famille des pyramides de conformite .
148 c . tabaui . a .-nivsu-1. tableau de travail .
150 c . ulbila . e . 1 . unite logique d'ecriture du bilan .
151 c . ulsort . e . 1 . unite logique de la sortie generale .
152 c . langue . e . 1 . langue des messages .
153 c . . . . 1 : francais, 2 : anglais .
154 c . codret . s . 1 . code de retour des modules .
155 c . . . . 0 : pas de probleme .
156 c . . . . 1 : probleme .
157 c .____________________________________________________________________.
160 c 0. declarations et dimensionnement
163 c 0.1. ==> generalites
169 parameter ( nompro = 'UTB07A' )
196 integer hetare(nbarto)
197 integer hettri(nbtrto), nivtri(nbtrto), pertri(nbtrto)
198 integer voltri(2,nbtrto)
199 integer hetqua(nbquto), nivqua(nbquto)
200 integer volqua(2,nbquto)
201 integer posifa(0:nbarto), facare(nbfaar)
202 integer hettet(nbteto), tritet(nbtecf,4)
203 integer pertet(nbteto), pthepe(*)
204 integer hethex(nbheto), quahex(nbhecf,6)
205 integer perhex(nbheto)
206 integer hetpyr(nbpyto), facpyr(nbpycf,5)
207 integer perpyr(nbpyto), pphepe(*)
208 integer hetpen(nbpeto), facpen(nbpecf,5)
209 integer perpen(nbpeto)
211 integer famnoe(nbnoto), cfanoe(nctfno,nbfnoe)
212 integer fammpo(nbmpto), cfampo(nctfmp,nbfmpo)
213 integer famare(nbarto), cfaare(nctfar,nbfare)
214 integer famtri(nbtrto), cfatri(nctftr,nbftri)
215 integer famqua(nbquto), cfaqua(nctfqu,nbfqua)
216 integer famtet(nbteto), cfatet(nctfte,nbftet)
217 integer famhex(nbheto), cfahex(nctfhe,nbfhex)
218 integer fampyr(nbpyto), cfapyr(nctfpy,nbfpyr)
219 integer fampen(nbpeto), cfapen(nctfpe,nbfpen)
221 integer tabaui(-nivsup-1:nivsup+1)
224 integer ulsort, langue, codret
226 c 0.4. ==> variables locales
228 integer iaux, jaux, ideb, ifin
229 integer lenoeu, lamapo, larete, letria, lequad, letetr
230 integer lehexa, lapyra, lepent
233 integer nbaret, nbarbt, nbarit
234 integer nbfabt, nbfavt
236 integer pos, fac1, fac2, vois1, vois2
237 integer nbeqno, nbeqmp, nbeqar, nbeqtr, nbeqqu
239 double precision niveau
244 parameter (nbmess = 10 )
245 character*80 texte(nblang,nbmess)
246 character*54 mess54(nblang,nbmess)
248 character*43 mess43(nblang,100)
250 c 0.5. ==> initialisations
251 c ______________________________________________________________________
259 #ifdef _DEBUG_HOMARD_
260 write (ulsort,texte(langue,1)) 'Entree', nompro
265 > '(//,3x,''NOMBRE D''''ENTITES DU CALCUL'',/,3x,26(''=''),/)'
268 > '(//,3x,''NUMBER OF CALCULATION ENTITIES'',/,3x,30(''=''),/)'
271 write (ulbila,texte(langue,4))
274 > ' Le maillage presente des homologues. '
276 mess43(1,1) = 'Nombre total '
277 mess43(1,3) = '. dont sommets d''aretes '
278 mess43(1,4) = '. dont milieux d''aretes '
279 mess43(1,5) = '. dont noeuds internes aux mailles '
280 mess43(1,6) = '. dont noeuds isoles '
281 mess43(1,7) = '. dont noeuds uniquement mailles ignorees '
282 mess43(1,8) = '. dont noeuds uniquement mailles-points '
284 mess43(1,10) = '. dont aretes isolees '
285 mess43(1,11) = '. dont aretes de bord de regions 2D '
286 mess43(1,12) = '. dont aretes internes aux faces/volumes '
288 mess43(1,20) = '. dont triangles de regions 2D '
289 mess43(1,21) = '. dont triangles de bord '
290 mess43(1,22) = '. dont triangles internes aux volumes '
292 mess43(1,30) = '. dont quadrangles de regions 2D '
293 mess43(1,31) = '. dont quadrangles de bord '
294 mess43(1,32) = '. dont quadrangles internes aux volumes '
296 mess43(1,60) = 'Paires de '
297 c 1234567890123456789012345678901234567890123
300 > ' The mesh implies homologous condition. '
302 mess43(2,1) = 'Total number '
303 mess43(2,3) = '. included vertices of edges '
304 mess43(2,4) = '. included centers of edges '
305 mess43(2,5) = '. included internal nodes '
306 mess43(2,6) = '. included isolated nodes '
307 mess43(2,7) = '. included only ignored meshes nodes '
308 mess43(2,8) = '. included only mesh-point nodes '
310 mess43(2,10) = '. included isolated edges '
311 mess43(2,11) = '. included boundaries of 2D areas '
312 mess43(2,12) = '. included internal in faces/volumes '
314 mess43(2,20) = '. included triangles of 2D areas '
315 mess43(2,21) = '. included boundary triangles '
316 mess43(2,22) = '. included internal triangles '
318 mess43(2,30) = '. included quadrangles of 2D areas '
319 mess43(2,31) = '. included boundary quadrangles '
320 mess43(2,32) = '. included internal quadrangles '
322 mess43(2,60) = 'Pairs of '
323 c 1234567890123456789012345678901234567890123
325 10100 format(/,5x,60('*'))
326 10200 format( 5x,60('*'))
328 11100 format( 5x,'* ',a54,' *')
329 11200 format( 5x,'* ',21x,a14,21x,' *')
331 12200 format( 5x,'* ',a43,' * ', i10,' *')
337 #ifdef _DEBUG_HOMARD_
338 write (ulsort,90002) 'lg de tabaui = nivsup', nivsup
345 #ifdef _DEBUG_HOMARD_
346 write (ulsort,90002) '2. nbnoto',nbnoto
350 ideb = nctfno - ncefno + 1
353 do 21 , lenoeu = 1, nbnoto
355 do 211 , iaux = ideb , ifin
356 if ( cfanoe(iaux,famnoe(lenoeu)).ne.0 ) then
364 write (ulbila,11200) mess14(langue,4,-1)
366 write (ulbila,12200) mess43(langue,1), nbnoto
368 > nbnois.ne.0 .or. nbnoei.ne.0 .or. nbnomp.ne.0 ) then
369 write (ulbila,12200) mess43(langue,3), nbnop1
371 if ( degre.eq.2 ) then
372 write (ulbila,12200) mess43(langue,4), nbnop2
374 if ( mod(mailet,2).eq.0 .or.
375 > mod(mailet,3).eq.0 .or.
376 > mod(mailet,5).eq.0 ) then
377 write (ulbila,12200) mess43(langue,5), nbnoim
379 if ( nbnois.ne.0 ) then
380 write (ulbila,12200) mess43(langue,6), nbnois
382 if ( nbnoei.ne.0 ) then
383 write (ulbila,12200) mess43(langue,7), nbnoei
385 if ( nbnomp.ne.0 ) then
386 write (ulbila,12200) mess43(langue,8), nbnomp
394 #ifdef _DEBUG_HOMARD_
395 write (ulsort,90002) '3. nbmpto',nbmpto
398 if ( nbmpto.ne.0 ) then
402 ideb = nctfmp - ncefmp + 1
405 do 31 , lamapo = 1, nbmpto
407 if ( cfampo(cotyel,fammpo(lamapo)).ne.0 ) then
411 do 311 , iaux = ideb , ifin
412 if ( cfampo(iaux,fammpo(lamapo)).ne.0 ) then
421 if ( nbmapo.ne.0 ) then
424 write (ulbila,11200) mess14(langue,4,0)
426 write (ulbila,12200) mess43(langue,1), nbmapo
436 c on rappelle que la caracteristique numero cotyel des aretes est
437 c nulle si ce n'etait pas une maille du calcul.
438 c si c'est une maille de calcul, la caracteristique vaut le type
439 c correspondant a celui du code de calcul associe.
441 c on definit une arete de bord comme etant une arete ayant :
442 c . une seule face voisine,
443 c . deux faces voisines :
444 c . deux triangles dont l'un est le pere de l'autre : cas du
445 c decoupage de conformite provenant de l'arete de bord ; cela n'a
446 c lieu qu'avec des homologues.
447 c . un triangle et un quadrangle qui en est le pere des autres : cas
448 c du decoupage non conforme d'un quadrangle de bord.
450 #ifdef _DEBUG_HOMARD_
451 write (ulsort,90002) '4. nbarto',nbarto
458 ideb = nctfar - ncefar + 1
461 do 41 , larete = 1, nbarto
463 if ( cfaare(cotyel,famare(larete)).ne.0 ) then
465 etat = mod(hetare(larete) , 10 )
467 if ( etat.eq.0 ) then
472 if ( posifa(larete-1)+2.eq.posifa(larete) ) then
476 if ( fac1.gt.0 .and. fac2.gt.0 ) then
477 vois1 = min(fac1,fac2)
478 vois2 = max(fac1,fac2)
479 if ( pertri(vois2).eq.vois1 ) then
482 elseif ( fac1.gt.0 .and. fac2.lt.0 ) then
483 if ( pertri(fac1).eq.fac2 ) then
486 elseif ( fac1.lt.0 .and. fac2.gt.0 ) then
487 if ( pertri(fac2).eq.fac1 ) then
491 elseif ( posifa(larete-1)+1.eq.posifa(larete) ) then
493 elseif ( posifa(larete-1)+1.gt.posifa(larete) ) then
501 do 411 , iaux = ideb , ifin
502 if ( cfaare(iaux,famare(larete)).ne.0 ) then
513 if ( nbaret.ne.0 ) then
516 write (ulbila,11200) mess14(langue,4,1)
518 write (ulbila,12200) mess43(langue,1), nbaret
519 if ( nbtrto.ne.0 .or. nbquto.ne.0 ) then
520 write (ulbila,12200) mess43(langue,10), nbarit
521 write (ulbila,12200) mess43(langue,11), nbarbt
522 write (ulbila,12200) mess43(langue,12), nbaret-nbarit-nbarbt
531 c on rappelle que la caracteristique numero 2 des faces est nulle si
532 c ce n'etait pas une maille du calcul.
533 c si c'est une maille de calcul, la caracteristique vaut le type
534 c correspondant a celui du code de calcul associe.
535 c Un triangle de bord est un triangle ayant un et un seul
537 c Le stockage etant different de la dimension deux, le tableau
538 c voltri ne garde que le volume fils.
540 #ifdef _DEBUG_HOMARD_
541 write (ulsort,90002) '5. nbtrto',nbtrto
544 if ( nbtrto.ne.0 ) then
546 do 51 , iaux = -nivsup-1, nivsup+1
550 nbvolu = nbteto + nbpyto + nbpeto
555 ideb = nctftr - nceftr + 1
558 do 52 , letria = 1, nbtrto
560 if ( cfatri(cotyel,famtri(letria)).ne.0 ) then
562 etat = mod(hettri(letria) , 10 )
564 if ( etat.eq.0 ) then
567 iaux = nivtri(letria)
568 if ( letria.gt.nbtrpe ) then
571 tabaui(iaux) = tabaui(iaux) + 1
573 if ( nbvolu.ne.0 ) then
575 if ( voltri(1,letria).ne.0 ) then
576 if ( voltri(2,letria).eq.0 ) then
585 do 521 , iaux = ideb , ifin
586 if ( cfatri(iaux,famtri(letria)).ne.0 ) then
597 if ( jaux.ne.0 ) then
600 write (ulbila,11200) mess14(langue,4,2)
602 write (ulbila,12200) mess43(langue,1), jaux
603 if ( nbvolu.ne.0 ) then
604 write (ulbila,12200) mess43(langue,20), jaux-nbfabt-nbfavt
605 write (ulbila,12200) mess43(langue,21), nbfabt
606 write (ulbila,12200) mess43(langue,22), nbfavt
609 if ( nbiter.ge.1 ) then
610 call utb07b ( tabaui, ulbila,
611 > ulsort, langue, codret )
623 c on rappelle que la caracteristique numero 2 des faces est nulle si
624 c ce n'etait pas une maille du calcul.
625 c si c'est une maille de calcul, la caracteristique vaut le type
626 c correspondant a celui du code de calcul associe.
627 c Un quadrangle de bord est un quadrangle ayant un et un seul
629 c Le stockage etant different de la dimension deux, le tableau
630 c volqua ne garde que le volume fils.
632 #ifdef _DEBUG_HOMARD_
633 write (ulsort,90002) '6. nbquto',nbquto
636 if ( nbquto.ne.0 ) then
638 do 61 , iaux = -nivsup-1, nivsup+1
642 nbvolu = nbheto + nbpyto + nbpeto
647 ideb = nctfqu - ncefqu + 1
650 do 62 , lequad = 1, nbquto
652 if ( cfaqua(cotyel,famqua(lequad)).ne.0 ) then
654 etat = mod(hetqua(lequad),100)
656 if ( etat.eq.0 ) then
659 iaux = nivqua(lequad)
660 if ( lequad.gt.nbqupe ) then
663 tabaui(iaux) = tabaui(iaux) + 1
665 if ( nbvolu.ne.0 ) then
667 if ( volqua(1,lequad).ne.0 ) then
668 if ( volqua(2,lequad).eq.0 ) then
677 do 621 , iaux = ideb , ifin
678 if ( cfaqua(iaux,famqua(lequad)).ne.0 ) then
689 if ( jaux.ne.0 ) then
692 write (ulbila,11200) mess14(langue,4,4)
694 write (ulbila,12200) mess43(langue,1), jaux
695 if ( nbvolu.ne.0 ) then
696 write (ulbila,12200) mess43(langue,30), jaux-nbfabt-nbfavt
697 write (ulbila,12200) mess43(langue,31), nbfabt
698 write (ulbila,12200) mess43(langue,32), nbfavt
701 if ( nbiter.ge.1 ) then
702 call utb07b ( tabaui, ulbila,
703 > ulsort, langue, codret )
716 #ifdef _DEBUG_HOMARD_
717 write (ulsort,90002) '7. nbteto, nbtepe, nbtecf, nbteca',
718 > nbteto, nbtepe, nbtecf, nbteca
721 if ( nbteto.ne.0 ) then
723 do 70 , iaux = -nivsup-1, nivsup+1
729 c 7.1. ==> Les tetraedres de depart ou issus d'un decoupage en 8
730 c Les faces sont toutes du meme niveau
731 c Remarque : ils sont toujours decrits par faces
733 do 71 , letetr = 1, nbtepe
735 if ( cfatet(cotyel,famtet(letetr)).ne.0 ) then
737 etat = mod(hettet(letetr),100)
739 if ( etat.eq.0 ) then
742 iaux = nivtri(tritet(letetr,1))
743 tabaui(iaux) = tabaui(iaux) + 1
750 cgn write (ulsort,90002) 'jaux', jaux
752 c 7.2. ==> Les tetraedres issus d'un decoupage de conformite
753 c Remarque : ils sont toujours actifs
755 do 72 , letetr = nbtepe+1 , nbteto
757 call utntet ( letetr, niveau,
758 > tritet, pertet, pthepe,
763 iaux = -int(niveau) - 1
764 tabaui(iaux) = tabaui(iaux) + 1
767 cgn write (ulsort,90002) 'jaux', jaux
769 if ( jaux.ne.0 ) then
772 write (ulbila,11200) mess14(langue,4,3)
774 write (ulbila,12200) mess43(langue,1), jaux
776 if ( nbiter.ge.1 ) then
777 call utb07b ( tabaui, ulbila,
778 > ulsort, langue, codret )
791 #ifdef _DEBUG_HOMARD_
792 write (ulsort,90002) '8. nbheto, nbhecf',nbheto, nbhecf
795 if ( nbheto.ne.0 ) then
797 do 80 , iaux = -nivsup-1, nivsup+1
803 c 8.1. ==> Les hexaedres de depart ou issus d'un decoupage en 8
804 c Les faces sont toutes du meme niveau
805 c Remarque : ils sont toujours decrits par faces
807 do 81 , lehexa = 1, nbhepe
809 if ( cfahex(cotyel,famhex(lehexa)).ne.0 ) then
811 etat = mod(hethex(lehexa),1000)
813 if ( etat.eq.0 ) then
816 iaux = nivqua(quahex(lehexa,1))
817 tabaui(iaux) = tabaui(iaux) + 1
825 c 8.2. ==> Les hexaedres issus d'un decoupage de conformite
826 c Remarque : ils sont toujours actifs
828 do 82 , lehexa = nbhepe+1 , nbheto
830 call utnhex ( lehexa, niveau,
835 iaux = -int(niveau) - 1
836 tabaui(iaux) = tabaui(iaux) + 1
842 if ( jaux.ne.0 ) then
845 write (ulbila,11200) mess14(langue,4,6)
847 write (ulbila,12200) mess43(langue,1), jaux
849 if ( nbiter.ge.1 ) then
850 call utb07b ( tabaui, ulbila,
851 > ulsort, langue, codret )
864 #ifdef _DEBUG_HOMARD_
865 write (ulsort,90002) '9. nbpyto, nbpype, nbpycf, nbpyca',
866 > nbpyto, nbpype, nbpycf, nbpyca
869 if ( nbpyto.ne.0 ) then
871 do 90 , iaux = -nivsup-1, nivsup+1
877 c 9.1. ==> Les pyramides de depart ou issues d'un decoupage en 8
878 c Les faces sont toutes du meme niveau
879 c Remarque : elles sont toujours decrites par faces
881 do 91 , lapyra = 1, nbpype
882 cgn write (ulsort,90002) 'pyramide',lapyra
884 if ( cfapyr(cotyel,fampyr(lapyra)).ne.0 ) then
886 etat = mod(hetpyr(lapyra),100)
888 if ( etat.eq.0 ) then
891 iaux = nivtri(facpyr(lapyra,1))
892 tabaui(iaux) = tabaui(iaux) + 1
899 cgn write (ulsort,90002) 'jaux', jaux
900 cgn write (ulsort,*) '************************'
902 c 9.2. ==> Les pyramides issues d'un decoupage de conformite
903 c Remarque : elles sont toujours actives
905 do 92 , lapyra = nbpype+1 , nbpyto
906 cgn write (ulsort,90002) 'pyramide',lapyra
907 cgn write (ulsort,90002) 'jaux',jaux
909 call utnpyr ( lapyra, niveau,
910 > facpyr, perpyr, pphepe,
915 iaux = -int(niveau) - 1
916 tabaui(iaux) = tabaui(iaux) + 1
919 cgn write (ulsort,90002) 'jaux', jaux
921 if ( jaux.ne.0 ) then
924 write (ulbila,11200) mess14(langue,4,5)
926 write (ulbila,12200) mess43(langue,1), jaux
928 if ( nbiter.ge.1 ) then
929 call utb07b ( tabaui, ulbila,
930 > ulsort, langue, codret )
943 #ifdef _DEBUG_HOMARD_
944 write (ulsort,90002) '10. nbpeto, nbpecf',nbpeto, nbpecf
947 if ( nbpeto.ne.0 ) then
949 do 100 , iaux = -nivsup-1, nivsup+1
955 c 10.1. ==> Les pentaedres de depart ou issus d'un decoupage en 8
956 c Les faces sont toutes du meme niveau
957 c Remarque : ils sont toujours decrits par faces
959 do 101 , lepent = 1, nbpepe
961 if ( cfapen(cotyel,fampen(lepent)).ne.0 ) then
963 etat = mod(hetpen(lepent),100)
965 if ( etat.eq.0 ) then
968 iaux = nivtri(facpen(lepent,1))
969 tabaui(iaux) = tabaui(iaux) + 1
977 c 10.2. ==> Les pentaedres issus d'un decoupage de conformite
978 c Remarque : ils sont toujours actifs
980 do 102 , lepent = nbpepe+1 , nbpeto
982 call utnpen ( lepent, niveau,
987 iaux = -int(niveau) - 1
988 tabaui(iaux) = tabaui(iaux) + 1
994 if ( jaux.ne.0 ) then
997 write (ulbila,11200) mess14(langue,4,7)
999 write (ulbila,12200) mess43(langue,1), jaux
1001 if ( nbiter.ge.1 ) then
1002 call utb07b ( tabaui, ulbila,
1003 > ulsort, langue, codret )
1006 write (ulbila,10200)
1013 c 11. reperage des homologues
1016 #ifdef _DEBUG_HOMARD_
1017 write (ulsort,90002) '11. homolo',homolo
1020 if ( homolo.ne.0 ) then
1022 write (ulbila,10100)
1023 write (ulbila,11100) mess54(langue,1)
1024 write (ulbila,10200)
1025 saux43 = mess43(langue,60)
1026 if (nbeqno.gt.0) then
1027 saux43(11:24) = mess14(langue,3,-1)
1028 write (ulbila,12200) saux43, nbeqno/2
1030 if (nbeqmp.gt.0) then
1031 saux43(11:24) = mess14(langue,3,0)
1032 write (ulbila,12200) saux43, nbeqmp/2
1034 if (nbeqar.gt.0) then
1035 saux43(11:24) = mess14(langue,3,1)
1036 write (ulbila,12200) saux43, nbeqar/2
1038 if ( nbeqtr.gt.0 ) then
1039 saux43(11:24) = mess14(langue,3,2)
1040 write (ulbila,12200) saux43, nbeqtr/2
1042 if ( nbeqqu.gt.0 ) then
1043 saux43(11:24) = mess14(langue,3,4)
1044 write (ulbila,12200) saux43, nbeqqu/2
1046 write (ulbila,10200)
1054 #ifdef _DEBUG_HOMARD_
1055 write (ulsort,90002) '12. codret',codret
1058 if ( codret.ne.0 ) then
1062 write (ulsort,texte(langue,1)) 'Sortie', nompro
1063 write (ulsort,texte(langue,2)) codret
1067 #ifdef _DEBUG_HOMARD_
1068 write (ulsort,texte(langue,1)) 'Sortie', nompro