1 subroutine utnmhe ( lehexa, noeumi,
2 > somare, aretri, arequa,
3 > tritet, cotrte, aretet,
4 > quahex, coquhe, filhex, fhpyte,
5 > facpyr, cofapy, arepyr )
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 - Noeud Milieu d'un HExaedre
28 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . lehexa . e . 1 . numero de l'hexaedre a examiner .
33 c . noeumi . s . 1 . numero du noeud milieu .
34 c . somare . e .2*nbaret. numeros des extremites d'arete .
35 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
36 c . arequa . e .nbquto*4. numeros des 4 aretes des quadrangles .
37 c . tritet . e .nbtecf*4. numeros des triangles des tetraedres .
38 c . cotrte . e .nbtecf*4. codes des triangles des tetraedres .
39 c . aretet . e .nbteca*6. numeros des 6 aretes des tetraedres .
40 c . quahex . e .nbhecf*6. numeros des 6 quadrangles des hexaedres .
41 c . coquhe . e .nbhecf*6. codes des 6 quadrangles des hexaedres .
42 c . filhex . e . nbheto . premier fils des hexaedres .
43 c . fhpyte . e .2*nbheco. fhpyte(1,j) = numero de la 1ere pyramide .
44 c . . . . fille de l'hexaedre k tel que filhex(k) =-j.
45 c . . . . fhpyte(2,j) = numero du 1er tetraedre .
46 c . . . . fils de l'hexaedre k tel que filhex(k) = -j.
47 c . facpyr . e .nbpycf*5. numeros des 5 faces des pyramides .
48 c . cofapy . e .nbpycf*5. codes des 5 faces des pyramides .
49 c . arepyr . e .nbpyca*8. numeros des 8 aretes des pyramides .
50 c ______________________________________________________________________
53 c 0. declarations et dimensionnement
56 c 0.1. ==> generalites
71 integer lehexa, noeumi
73 integer aretri(nbtrto,3)
74 integer arequa(nbquto,4)
75 integer tritet(nbtecf,4), cotrte(nbtecf,4), aretet(nbteca,6)
76 integer quahex(nbhecf,6), filhex(nbheto)
77 integer coquhe(nbhecf,6), fhpyte(2,nbheco)
78 integer facpyr(nbpycf,5), cofapy(nbpycf,5), arepyr(nbpyca,8)
80 c 0.4. ==> variables locales
83 c f1hp = Fils 1er de l'hexaedre en numerotation Homard a l'it. N+1
85 integer listar(12), listso(8)
88 c 1. Le fils enregistre.
89 c Si positif, c'est un decoupage standard en 8 hexaedres
90 c Si negatif, c'est un decoupage de conformite en pyramides et
95 cgn print *,'f1hp =',f1hp
96 cgn print *,fhpyte(1,1),fhpyte(2,1)
99 c 2. Quand l'hexaedre est decoupe en 8 : pour trouver le noeud central,
100 c on examine le premier fils de l'hexaedre.
101 c Remarque : regarder cmrdhe pour ces conventions
106 c les aretes et les sommets de l'hexaedre fils
110 > arequa, quahex, coquhe,
113 call utsohe ( somare, listar, listso )
115 c recuperation du noeud sommet central : le huitieme sommet
120 c 3. Quand l'hexaedre est decoupe par conformite pour trouver le noeud
121 c central, on examine le premier fils de l'hexaedre, pyramide ou
123 c Remarque : regarder cmcdhe pour ces conventions
128 iaux = fhpyte(1,abs(f1hp))
129 cgn print *,'iaux =',iaux
131 c 3.1. ==> On a au moins une pyramide
133 if ( iaux.ne.0 ) then
135 c les aretes et les sommets de la 1ere pyramide fils
137 cgn print *,'==> pyramide =',iaux
139 > nbtrto, nbpycf, nbpyca,
141 > facpyr, cofapy, arepyr,
144 c recuperation du noeud sommet central : le cinquieme sommet
148 c 3.2. ==> Il n'y a que des tetraedres
152 iaux = fhpyte(2,abs(f1hp))
154 c les aretes et les sommets du 1er tetraedre fils
156 cgn print *,'==> tetraedre =',iaux
158 > nbtrto, nbtecf, nbteca,
160 > tritet, cotrte, aretet,
163 c recuperation du noeud sommet central : le premier sommet
170 cgn print *,'noeumi =',noeumi