1 subroutine utqco2 ( qual, coonoe,
2 > are, somare, facare, posifa,
4 > tritet, cotrte, aretet, filtet, hettet )
5 c ______________________________________________________________________
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c but : calcul de la qualite d'une coquille autour d'une arete qui vient
26 c d'etre decoupee (on suppose donc que les tetraedres sont peres ou
28 c ______________________________________________________________________
30 c UTilitaire : Qualite d'une COquille (descendants d'ordre 2 au plus)
32 c ______________________________________________________________________
34 c . nom . e/s . taille . description .
35 c .____________________________________________________________________.
36 c . coonoe . e .nbnoto*3. coordonnees des noeuds .
37 c . are . e . 1 . numero de l'arete d'enroulement .
38 c . somare . es .2*nbarto. numeros des extremites d'arete .
39 c . facare . es . nbfaar . liste des faces contenant une arete .
40 c . posifa . e . nbarto . pointeur sur tableau facare .
41 c . aretri . es .nbtrto*3. numeros des 3 aretes des triangles .
42 c . voltri . e .2*nbtrto. numeros des 2 tetraedres des faces .
43 c . tritet . e .nbtecf*4. numeros des 4 triangles des tetraedres .
44 c . cotrte . e .nbtecf*4. code des 4 triangles des tetraedres .
45 c . aretet . e .nbteca*6. numeros des 6 aretes des tetraedres .
46 c . filtet . e . nbteto . premier fils des tetraedres .
47 c . hettet . e . nbtrto . historique de l'etat des tetraedres .
48 c ______________________________________________________________________
51 c 0. declarations et dimensionnement
54 c 0.1. ==> generalites
68 double precision coonoe(nbnoto,3)
71 integer somare(2,nbarto), posifa(0:nbarto), facare(nbfaar)
72 integer aretri(nbtrto,3), voltri(2,nbtrto)
73 integer tritet(nbtecf,4), cotrte(nbtecf,4), aretet(nbteca,6)
74 integer filtet(nbteto), hettet(nbteto)
76 c 0.4. ==> variables locales
80 integer nfils, ifils, nfil2, ifil2
81 integer ite, tet, te2, tef
83 double precision qual, qualte
84 double precision daux, daux0
86 c 0.5. ==> initialisations
87 c ______________________________________________________________________
91 c boucle sur les faces de la coquille
93 do 1 , ifa=posifa(are-1)+1,posifa(are)
97 c recuperation des 2 tetraedres
101 tet = voltri(ite,fac)
105 if (filtet(tet).gt.0) then
107 c premier passage (sur 2)
109 etat = mod(hettet(tet),100)
112 elseif (etat.lt.50) then
114 elseif (etat.lt.60) then
120 c qualite des descendants
122 do 111 , ifils=1,nfils
124 tef = filtet(tet)+ifils-1
126 if (filtet(tef).eq.0) then
128 c si le fils est actif : sa qualite
130 call utqtet ( tef, qualte, daux0, daux,
131 > coonoe, somare, aretri,
132 > tritet, cotrte, aretet )
133 qual = max ( qual, qualte )
136 c si le fils est inactif : petits-fils
138 etat = mod(hettet(tef),100)
141 elseif (etat.lt.50) then
143 elseif (etat.lt.60) then
148 do 1111 , ifil2=1,nfil2
149 te2 = filtet(tef)+ifil2-1
150 call utqtet ( te2, qualte, daux0, daux,
151 > coonoe, somare, aretri,
152 > tritet, cotrte, aretet )
153 qual = max ( qual, qualte )
154 qual = max ( qual, qualte )
162 filtet(tet) = -filtet(tet)