1 subroutine utnhex ( lehexa, niveau,
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 : Niveau d'un HEXaedre
26 c ______________________________________________________________________
28 c . nom . e/s . taille . description .
29 c .____________________________________________________________________.
30 c . lehexa . e . 1 . numero de l'hexaedre a examiner .
31 c . niveau . s . 1 . niveau .
32 c . quahex . e .nbhecf*6. numeros des 6 quadrangles des hexaedres .
33 c . perhex . e . nbheto . pere des hexaedres .
34 c . nivqua . e . nbquto . niveau dans le raffinement/deraffinement .
35 c ______________________________________________________________________
38 c 0. declarations et dimensionnement
41 c 0.1. ==> generalites
53 double precision niveau
56 integer quahex(nbhecf,6), perhex(nbheto)
57 integer nivqua(nbquto)
59 c 0.4. ==> variables locales
61 integer lafac1, lafac2, lafac3, lafac4, lafac5, lafac6
65 c 0.5. ==> initialisations
69 cgn write(*,90002) 'nbhema, nbhecf, nbheto', nbhema, nbhecf, nbheto
70 cgn write(*,90002) 'nbheco', nbheco
73 c 1. Du maillage initial
76 if ( lehexa.le.nbhema ) then
86 c 2.1. ==> Si l'hexaedre est decrit par faces :
87 c le plus haut niveau de ses faces
89 if ( lehexa.le.nbhecf ) then
91 lafac1 = quahex(lehexa,1)
92 lafac2 = quahex(lehexa,2)
93 lafac3 = quahex(lehexa,3)
94 lafac4 = quahex(lehexa,4)
95 lafac5 = quahex(lehexa,5)
96 lafac6 = quahex(lehexa,6)
97 jaux = max(nivqua(lafac1),nivqua(lafac2),nivqua(lafac3),
98 > nivqua(lafac4),nivqua(lafac5),nivqua(lafac6))
100 c 2.2. ==> Si l'hexaedre est decrit par aretes :
101 c son niveau est le niveau du pere augmente d'un cran
105 iaux = perhex(lehexa)
107 if ( iaux.gt.0 ) then
110 write(*,90002) 'lehexa, iaux', lehexa, iaux
111 write(*,*) 'arret dans utnhex'
114 cgn write(*,90002) 'iaux, lepere', iaux, lepere
116 if ( iaux.gt.0 ) then
118 lafac1 = quahex(lepere,1)
119 lafac2 = quahex(lepere,2)
120 lafac3 = quahex(lepere,3)
121 lafac4 = quahex(lepere,4)
122 lafac5 = quahex(lepere,5)
123 lafac6 = quahex(lepere,6)
124 jaux = max(nivqua(lafac1),nivqua(lafac2),nivqua(lafac3),
125 > nivqua(lafac4),nivqua(lafac5),nivqua(lafac6))
133 cgn write(*,90002) '==> jaux',jaux
137 c 3. Si l'hexaedre est de conformite, on prend le niveau
138 c intermediaire immediatement inferieur
141 if ( lehexa.gt.nbhepe ) then
142 niveau = niveau - 0.5d0
146 cgn write(*,90004) '==> niveau',niveau