1 subroutine utqhex ( lehexa, qualit, qualij, volume,
2 > coonoe, somare, arequa,
3 > quahex, coquhe, arehex )
4 c ______________________________________________________________________
8 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c Version originale enregistree le 18 juin 1996 sous le numero 96036
11 c aupres des huissiers de justice Simart et Lavoir a Clamart
12 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
13 c aupres des huissiers de justice
14 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c HOMARD est une marque deposee d'Electricite de France
22 c ______________________________________________________________________
24 c UTilitaire : Qualite d'un HEXaedre
26 c ______________________________________________________________________
28 c . max de la qualite des tetraedres inclus
29 c . Jacobien normalise
30 c ______________________________________________________________________
32 c . nom . e/s . taille . description .
33 c .____________________________________________________________________.
34 c . lehexa . e . 1 . numero de l'hexaedre a examiner .
35 c . qualit . s . 1 . qualite des tetraedres inclus .
36 c . qualij . s . 1 . qualite par le jacobien normalise .
37 c . volume . s . 1 . volume .
38 c . coonoe . e . nbnoto . coordonnees des noeuds .
40 c . somare . e .2*nbarto. numeros des extremites d'arete .
41 c . arequa . e .nbquto*4. numeros des 4 aretes des quadrangles .
42 c . hethex . e . nbheto . historique de l'etat des hexaedres .
43 c . quahex . e .nbhecf*6. numeros des 6 quadrangles des hexaedres .
44 c . coquhe . e .nbhecf*6. codes des 6 quadrangles des hexaedres .
45 c . arehex . e .nbheca12. numeros des 12 aretes des hexaedres .
46 c ______________________________________________________________________
49 c 0. declarations et dimensionnement
52 c 0.1. ==> generalites
69 double precision qualit, qualij, volume
70 double precision coonoe(nbnoto,3)
73 integer somare(2,nbarto)
74 integer arequa(nbquto,4)
75 integer quahex(nbhecf,6), coquhe(nbhecf,6), arehex(nbheca,12)
77 c 0.4. ==> variables locales
81 integer listar(12), listso(8)
82 integer s1, s2, s3, s4, s5, s6, s7,s8
85 double precision of1(3),of2(3),of3(3),of4(3),of5(3),of6(3)
86 double precision centr(3), qual(24), volu(24)
89 c 1. les aretes et les sommets
93 > nbquto, nbhecf, nbheca,
95 > quahex, coquhe, arehex,
108 c 2. les points caracteristiques
110 c Le centre de l'hexaedre
111 centr(1) = unshu*(coonoe(s1,1)+coonoe(s2,1)
112 > + coonoe(s3,1)+coonoe(s4,1)+coonoe(s5,1)
113 > + coonoe(s6,1)+coonoe(s7,1)+coonoe(s8,1) )
114 centr(2) = unshu*(coonoe(s1,2)+coonoe(s2,2)
115 > + coonoe(s3,2)+coonoe(s4,2)+coonoe(s5,2)
116 > + coonoe(s6,2)+coonoe(s7,2)+coonoe(s8,2) )
117 centr(3) = unshu*(coonoe(s1,3)+coonoe(s2,3)
118 > + coonoe(s3,3)+coonoe(s4,3)+coonoe(s5,3)
119 > + coonoe(s6,3)+coonoe(s7,3)+coonoe(s8,3) )
120 c Le centre de la face 1
121 of1(1) = unsqu*(coonoe(s1,1)+coonoe(s2,1)
122 > + coonoe(s3,1)+coonoe(s4,1))
123 of1(2) = unsqu*(coonoe(s1,2)+coonoe(s2,2)
124 > + coonoe(s3,2)+coonoe(s4,2))
125 of1(3) = unsqu*(coonoe(s1,3)+coonoe(s2,3)
126 > + coonoe(s3,3)+coonoe(s4,3))
127 c Le centre de la face 2
128 of2(1) = unsqu*(coonoe(s1,1)+coonoe(s2,1)
129 > + coonoe(s5,1)+coonoe(s6,1))
130 of2(2) = unsqu*(coonoe(s1,2)+coonoe(s2,2)
131 > + coonoe(s5,2)+coonoe(s6,2))
132 of2(3) = unsqu*(coonoe(s1,3)+coonoe(s2,3)
133 > + coonoe(s5,3)+coonoe(s6,3))
134 c Le centre de la face 3
135 of3(1) = unsqu*(coonoe(s1,1)+coonoe(s4,1)
136 > + coonoe(s6,1)+coonoe(s7,1))
137 of3(2) = unsqu*(coonoe(s1,2)+coonoe(s4,2)
138 > + coonoe(s6,2)+coonoe(s7,2))
139 of3(3) = unsqu*(coonoe(s1,3)+coonoe(s4,3)
140 > + coonoe(s6,3)+coonoe(s7,3))
141 c Le centre de la face 4
142 of4(1) = unsqu*(coonoe(s2,1)+coonoe(s3,1)
143 > + coonoe(s5,1)+coonoe(s8,1))
144 of4(2) = unsqu*(coonoe(s2,2)+coonoe(s3,2)
145 > + coonoe(s5,2)+coonoe(s8,2))
146 of4(3) = unsqu*(coonoe(s2,3)+coonoe(s3,3)
147 > + coonoe(s5,3)+coonoe(s8,3))
148 c Le centre de la face 5
149 of5(1) = unsqu*(coonoe(s3,1)+coonoe(s4,1)
150 > + coonoe(s7,1)+coonoe(s8,1))
151 of5(2) = unsqu*(coonoe(s3,2)+coonoe(s4,2)
152 > + coonoe(s7,2)+coonoe(s8,2))
153 of5(3) = unsqu*(coonoe(s3,3)+coonoe(s4,3)
154 > + coonoe(s7,3)+coonoe(s8,3))
155 c Le centre de la face 6
156 of6(1) = unsqu*(coonoe(s5,1)+coonoe(s6,1)
157 > + coonoe(s7,1)+coonoe(s8,1))
158 of6(2) = unsqu*(coonoe(s5,2)+coonoe(s6,2)
159 > + coonoe(s7,2)+coonoe(s8,2))
160 of6(3) = unsqu*(coonoe(s5,3)+coonoe(s6,3)
161 > + coonoe(s7,3)+coonoe(s8,3))
164 c 3. volume et qualite des tetraedres
167 c 4 qual de tetra touchant la face 1
168 call utqte2 ( qual( 1), volu( 1), coonoe, s1, s2, centr, of1 )
169 call utqte2 ( qual( 2), volu( 2), coonoe, s2, s3, centr, of1 )
170 call utqte2 ( qual( 3), volu( 3), coonoe, s3, s4, centr, of1 )
171 call utqte2 ( qual( 4), volu( 4), coonoe, s1, s4, centr, of1 )
172 c 4 qual( de tetra touchant la face 2
173 call utqte2 ( qual( 5), volu( 5), coonoe, s1, s2, centr, of2 )
174 call utqte2 ( qual( 6), volu( 6), coonoe, s2, s5, centr, of2 )
175 call utqte2 ( qual( 7), volu( 7), coonoe, s5, s6, centr, of2 )
176 call utqte2 ( qual( 8), volu( 8), coonoe, s1, s6, centr, of2 )
177 c 4 qual( de tetra touchant la face 3
178 call utqte2 ( qual( 9), volu( 9), coonoe, s1, s4, centr, of3 )
179 call utqte2 ( qual(10), volu(10), coonoe, s4, s7, centr, of3 )
180 call utqte2 ( qual(11), volu(11), coonoe, s6, s7, centr, of3 )
181 call utqte2 ( qual(12), volu(12), coonoe, s1, s6, centr, of3 )
182 c 4 qual( de tetra touchant la face 4
183 call utqte2 ( qual(13), volu(13), coonoe, s2, s3, centr, of4 )
184 call utqte2 ( qual(14), volu(14), coonoe, s3, s8, centr, of4 )
185 call utqte2 ( qual(15), volu(15), coonoe, s5, s8, centr, of4 )
186 call utqte2 ( qual(16), volu(16), coonoe, s2, s5, centr, of4 )
187 c 4 qual( de tetra touchant la face 5
188 call utqte2 ( qual(17), volu(17), coonoe, s3, s4, centr, of5 )
189 call utqte2 ( qual(18), volu(18), coonoe, s4, s7, centr, of5 )
190 call utqte2 ( qual(19), volu(19), coonoe, s7, s8, centr, of5 )
191 call utqte2 ( qual(20), volu(20), coonoe, s3, s8, centr, of5 )
192 c 4 qual( de tetra touchant la face 6
193 call utqte2 ( qual(21), volu(21), coonoe, s5, s6, centr, of6 )
194 call utqte2 ( qual(22), volu(22), coonoe, s6, s7, centr, of6 )
195 call utqte2 ( qual(23), volu(23), coonoe, s7, s8, centr, of6 )
196 call utqte2 ( qual(24), volu(24), coonoe, s5, s8, centr, of6 )
200 do 10 , iaux = 2 , 24
201 if (qual(iaux).gt.qualit) then
204 volume = volume + volu(iaux)
208 c 4. qualite par le jacobien normalise
210 c 4.1. ==> Liens sommet/aretes
252 c 4.2. ==> fonction generique
256 call utqjno ( iaux, aresom, daux,
257 > listar, listso, somare, coonoe,
259 cgn write(1,*) '==> qualij : ', qualij