1 subroutine utehex ( nbheto, nbhfal, nbhaal, nbqual,
3 > quahex, coquhe, arehex,
4 > nmprog, avappr, ulbila,
5 > ulsort, langue, codret )
6 c ______________________________________________________________________
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
12 c Version originale enregistree le 18 juin 1996 sous le numero 96036
13 c aupres des huissiers de justice Simart et Lavoir a Clamart
14 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
15 c aupres des huissiers de justice
16 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
18 c HOMARD est une marque deposee d'Electricite de France
24 c ______________________________________________________________________
26 c UTilitaire - Examen des HEXaedres
28 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . nbheto . e . 1 . nombre de hexaedres a examiner .
33 c . nbhfal . e . 1 . nombre de hexas par faces pour les allocs .
34 c . nbhaal . e . 1 . nbre de hexas par aretes pour les allocs .
35 c . nbqual . e . 1 . nombre de quadrangles pour les allocations .
36 c . somare . e . 2*nbar . numeros des extremites d'arete .
37 c . arequa . e .nbquto*4. numeros des 4 aretes des quadrangles .
38 c . quahex . e .nbhecf*6. numeros des 6 quadrangles des hexaedres .
39 c . coquhe . e .nbhecf*6. code des 6 quadrangles des hexaedres .
40 c . arehex . e .nbheca12. numeros des 12 aretes des hexaedres .
41 c . nmprog . e . char* . nom du programme a pister .
42 c . avappr . e . 1 . 1 : impression avant l'appel a "nmprog" .
43 c . . . . 2 : impression apres l'appel a "nmprog" .
44 c . ulbila . e . 1 . unite logitee d'ecriture du bilan .
45 c . ulsort . e . 1 . numero d'unite logitee de la liste standard.
46 c . langue . e . 1 . langue des messages .
47 c . . . . 1 : francais, 2 : anglais .
48 c . codret . es . 1 . code de retour des modules .
49 c . . . . 0 : pas de probleme .
50 c . . . . >0 : probleme dans le controle .
51 c ______________________________________________________________________
54 c 0. declarations et dimensionnement
57 c 0.1. ==> generalites
63 parameter ( nompro = 'UTEHEX' )
75 integer nbheto, nbhfal, nbhaal, nbqual
77 integer arequa(nbqual,4)
78 integer quahex(nbhfal,6), coquhe(nbhfal,6), arehex(nbhaal,12)
85 integer ulsort, langue, codret
87 c 0.4. ==> variables locales
91 integer lehexa, lehex0
92 integer f1, f2, f3, f4, f5, f6
93 integer listar(12), listso(8)
96 parameter ( nbmess = 20 )
97 character*80 texte(nblang,nbmess)
99 c 0.5. ==> initialisations
100 c ______________________________________________________________________
108 #ifdef _DEBUG_HOMARD_
109 write (ulsort,texte(langue,1)) 'Entree', nompro
113 texte(1,6) = '(5x,''Controle des '',i10,'' hexaedres.'')'
115 > '(''L''''hexaedre '',i10,'' a des '',a,'' identiques :'',12i10)'
117 > '(''Les aretes de l''''hexaedre '',i10,'' ne se suivent pas.'')'
119 > '(5x,''Pas de probleme dans la definition des hexaedres'',/)'
120 texte(1,17) = '(/,''Mauvais code pour '',a,'' : '',i10,/)'
121 texte(1,18) = '(/,''.. A l''''entree de '',a,'' :'',/)'
122 texte(1,19) = '(/,''.. Avant appel a '',a,'' :'',/)'
123 texte(1,20) = '(/,''.. Apres appel a '',a,'' :'',/)'
125 texte(2,6) = '(5x,''Control of '',i10,'' hexahedrons.'')'
127 > '(''Hexahedron # '',i10,'' has got similar '',a,'':'',12i10)'
129 > '(''Edges of hexahedron '',i10,'' are not following.'')'
130 texte(2,16) = '(5x,''No problem with hexaedra definition'',/)'
131 texte(2,17) = '(/,''Bad code for '',a,'' : '',i10,/)'
132 texte(2,18) = '(/,''.. At the beginning of '',a,'' :'',/)'
133 texte(2,19) = '(/,''.. Before calling '',a,'' :'',/)'
134 texte(2,20) = '(/,''.. After calling '',a,'' :'',/)'
138 #ifdef _DEBUG_HOMARD_
139 if ( avappr.ge.0 .and. avappr.le.2 ) then
140 write (ulsort,texte(langue,18+avappr)) nmprog
142 write (ulsort,texte(langue,17)) nmprog, avappr
145 write (ulsort,texte(langue,6)) nbheto
153 do 20 , lehex0 = 1 , nbheto
159 c 2.1. ==> les faces doivent etre differentes ...
161 if ( lehexa.le.nbhfal ) then
163 f1 = quahex(lehexa,1)
164 f2 = quahex(lehexa,2)
165 f3 = quahex(lehexa,3)
166 f4 = quahex(lehexa,4)
167 f5 = quahex(lehexa,5)
168 f6 = quahex(lehexa,6)
186 write (ulsort,texte(langue,7)) lehexa, mess14(langue,3,8),
187 > f1, f2, f3, f4, f5, f6
188 write (ulbila,texte(langue,7)) lehexa, mess14(langue,3,8),
189 > f1, f2, f3, f4, f5, f6
194 c 2.2. ==> les aretes doivent etre differentes ...
196 if ( codre0.eq.0 ) then
198 call utashe ( lehexa,
199 > nbqual, nbhfal, nbhaal,
201 > quahex, coquhe, arehex,
206 if ( codre0.eq.0 ) then
208 do 22 , iaux = 1 , 11
209 do 221 , jaux = iaux+1 , 12
210 if ( listar(iaux).eq.listar(jaux) ) then
216 if ( codre0.ne.0 ) then
217 write (ulsort,texte(langue,7)) lehexa, mess14(langue,3,1),
218 > (listar(iaux),iaux=1,12)
219 write (ulbila,texte(langue,7)) lehexa, mess14(langue,3,1),
220 > (listar(iaux),iaux=1,12)
225 c 2.3. ==> les aretes doivent etre conformes au modele HOMARD ...
227 if ( codre0.eq.0 ) then
232 #ifdef _DEBUG_HOMARD_
233 write (ulsort,texte(langue,3)) 'UTVAR0', nompro
235 call utvar0 ( iaux, lehexa, jaux, listar, somare,
236 > ulbila, ulsort, langue, codre0 )
240 c 2.4. ==> les sommets doivent etre differents ...
242 if ( codre0.eq.0 ) then
245 do 241 , jaux = iaux+1 , 8
246 if ( listso(iaux).eq.listso(jaux) ) then
252 if ( codre0.ne.0 ) then
253 write (ulsort,texte(langue,7)) lehexa, mess14(langue,3,-1),
254 > (listso(iaux),iaux=1,8)
255 write (ulbila,texte(langue,7)) lehexa, mess14(langue,3,-1),
256 > (listso(iaux),iaux=1,8)
261 c 2.5. ==> cumul des erreurs
263 codret = codret + codre0
267 c 2.6. ==> tout va bien
269 if ( codret.eq.0 ) then
270 write (ulsort,texte(langue,16))
271 write (ulbila,texte(langue,16))
278 if ( codret.ne.0 ) then
282 write (ulsort,texte(langue,1)) 'Sortie', nompro
283 write (ulsort,texte(langue,2)) codret
287 #ifdef _DEBUG_HOMARD_
288 write (ulsort,texte(langue,1)) 'Sortie', nompro