1 subroutine utvgv3 ( nbarto, nbtrto, nbquto,
2 > nbteto, nbtecf, nbteca,
3 > nbheto, nbhecf, nbheca,
4 > nbpyto, nbpycf, nbpyca,
5 > nbpeto, nbpecf, nbpeca,
8 > tritet, cotrte, aretet,
9 > quahex, coquhe, arehex,
10 > facpyr, cofapy, arepyr,
11 > facpen, cofape, arepen,
12 > nbtear, pttear, tatear,
13 > nbhear, pthear, tahear,
14 > nbpyar, ptpyar, tapyar,
15 > nbpear, ptpear, tapear,
16 > ulsort, langue, codret )
17 c ______________________________________________________________________
21 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
23 c Version originale enregistree le 18 juin 1996 sous le numero 96036
24 c aupres des huissiers de justice Simart et Lavoir a Clamart
25 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
26 c aupres des huissiers de justice
27 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
29 c HOMARD est une marque deposee d'Electricite de France
35 c ______________________________________________________________________
37 c UTilitaire : VoisinaGes Volumes / aretes - phase 3
39 c ______________________________________________________________________
41 c determine le nombre de volumes voisins de chaque arete, par categorie
43 c pttear(i) = position du dernier voisin de l'arete i
44 c = nombre cumule de voisins pour les i 1eres aretes
45 c ______________________________________________________________________
47 c . nom . e/s . taille . description .
48 c .____________________________________________________________________.
49 c . nbarto . e . 1 . nombre total d'aretes .
50 c . nbtrto . e . 1 . nombre total de triangles .
51 c . nbquto . e . 1 . nombre total de quadrangles .
52 c . nbteto . e . 1 . nombre de tetraedres total .
53 c . nbtecf . e . 1 . nombre total de tetraedres decrits par face.
54 c . nbteca . e . 1 . nombre total de tetras decrits par aretes .
55 c . nbheto . e . 1 . nombre d'hexaedres total .
56 c . nbhecf . e . 1 . nombre d'hexaedres decrits par faces .
57 c . nbheca . e . 1 . nombre d'hexaedres decrits par aretes .
58 c . nbpyto . e . 1 . nombre de pyramides total .
59 c . nbpycf . e . 1 . nombre total de pyramides decrits par faces.
60 c . nbpyca . e . 1 . nombre total de pyras decrits par aretes .
61 c . nbpeto . e . 1 . nombre de pentaedres total .
62 c . nbpecf . e . 1 . nombre total de pentas decrits par faces .
63 c . nbpeca . e . 1 . nombre total de pentas decrits par aretes .
64 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
65 c . arequa . e .nbquto*4. numeros des 4 aretes des quadrangles .
66 c . tritet . e .nbtecf*4. numeros des 4 triangles des tetraedres .
67 c . cotrte . e .nbtecf*4. code des 4 triangles des tetraedres .
68 c . aretet . e .nbteca*6. numeros des 6 aretes des tetraedres .
69 c . quahex . e .nbhecf*6. numeros des 6 quadrangles des hexaedres .
70 c . coquhe . e .nbhecf*6. codes des 6 quadrangles des hexaedres .
71 c . arehex . e .nbheca12. numeros des 12 aretes des hexaedres .
72 c . facpyr . e .nbpycf*5. numeros des 5 faces des pyramides .
73 c . cofapy . e .nbpycf*5. codes des faces des pyramides .
74 c . arepyr . e .nbpyca*8. numeros des 8 aretes des pyramides .
75 c . facpen . e .nbpecf*5. numeros des 5 faces des pentaedres .
76 c . cofape . e .nbpecf*5. code des 5 faces des pentaedres .
77 c . arepen . e .nbpeca*9. numeros des 9 aretes des pentaedres .
78 c . nbtear . e . 1 . nombre de tetraedres voisins d'aretes .
79 c . pttear . es .0:nbarto. nombre de tetraedres voisins par aretes .
80 c . tatear . s . nbtear . tetraedres voisins par aretes .
81 c . nbhear . e . 1 . nombre d'hexaedres voisins d'aretes .
82 c . pthear . es .0:nbarto. nombre d'hexaedres voisins par aretes .
83 c . tahear . s . nbhear . hexaedres voisins par aretes .
84 c . nbpyar . e . 1 . nombre de pyramides voisines d'aretes .
85 c . ptpyar . es .0:nbarto. nombre de pyramides voisines par aretes .
86 c . tapyar . s . nbpyar . pyramides voisines par aretes .
87 c . nbpear . e . 1 . nombre de pentaedres voisins d'aretes .
88 c . ptpear . es .0:nbarto. nombre de pentaedres voisins par aretes .
89 c . tapear . s . nbpear . pentaedres voisins par aretes .
90 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
91 c . langue . e . 1 . langue des messages .
92 c . . . . 1 : francais, 2 : anglais .
93 c . codret . es . 1 . code de retour des modules .
94 c . . . . 0 : pas de probleme .
95 c . . . . non nul : probleme .
96 c ______________________________________________________________________
99 c 0. declarations et dimensionnement
102 c 0.1. ==> generalites
108 parameter ( nompro = 'UTVGV3' )
119 integer nbarto, nbtrto, nbquto
120 integer nbteto, nbtecf, nbteca
121 integer nbheto, nbhecf, nbheca
122 integer nbpyto, nbpycf, nbpyca
123 integer nbpeto, nbpecf, nbpeca
125 integer aretri(nbtrto,3)
126 integer arequa(nbquto,4)
127 integer tritet(nbtecf,4), cotrte(nbtecf,4), aretet(nbteca,6)
128 integer quahex(nbhecf,6), coquhe(nbhecf,6), arehex(nbheca,12)
129 integer facpyr(nbpycf,5), cofapy(nbpycf,5), arepyr(nbpyca,8)
130 integer facpen(nbpecf,5), cofape(nbpecf,5), arepen(nbpeca,9)
132 integer nbtear, pttear(0:nbarto), tatear(nbtear)
133 integer nbhear, pthear(0:nbarto), tahear(nbhear)
134 integer nbpyar, ptpyar(0:nbarto), tapyar(nbpyar)
135 integer nbpear, ptpear(0:nbarto), tapear(nbpear)
137 integer ulsort, langue, codret
139 c 0.4. ==> variables locales
142 integer letetr, lehexa, lapyra, lepent
146 parameter ( nbmess = 10 )
147 character*80 texte(nblang,nbmess)
148 c ______________________________________________________________________
156 #ifdef _DEBUG_HOMARD_
157 write (ulsort,texte(langue,1)) 'Entree', nompro
163 #ifdef _DEBUG_HOMARD_
164 write (ulsort,90002) 'nbtear', nbtear
165 write (ulsort,90002) 'nbhear', nbhear
166 write (ulsort,90002) 'nbpyar', nbpyar
167 write (ulsort,90002) 'nbpear', nbpear
171 c 2. decompte des tetraedres voisins d'aretes
174 if ( nbteto.gt.0 ) then
176 do 21 , letetr = 1 , nbteto
178 if ( letetr.le.nbtecf ) then
180 call utarte ( letetr,
182 > aretri, tritet, cotrte,
187 do 211 , iaux = 1 , 6
188 listar(iaux) = aretet(letetr-nbtecf,iaux)
193 do 212 , iaux = 1 , 6
195 pttear(jaux) = pttear(jaux) + 1
196 tatear(pttear(jaux)) = letetr
204 c 3. decompte des hexaedres voisins d'aretes
207 if ( nbheto.gt.0 ) then
209 do 31 , lehexa = 1 , nbheto
211 if ( lehexa.le.nbhecf ) then
213 call utarhe ( lehexa,
215 > arequa, quahex, coquhe,
220 do 311 , iaux = 1 , 12
221 listar(iaux) = arehex(lehexa-nbhecf,iaux)
226 do 312 , iaux = 1 , 12
228 pthear(jaux) = pthear(jaux) + 1
229 tahear(pthear(jaux)) = lehexa
237 c 4. decompte des pyramides voisines d'aretes
240 if ( nbpyto.gt.0 ) then
242 do 41 , lapyra = 1 , nbpyto
244 if ( lapyra.le.nbpycf ) then
246 call utarpy ( lapyra,
248 > aretri, facpyr, cofapy,
253 do 411 , iaux = 1 , 8
254 listar(iaux) = arepyr(lapyra-nbpycf,iaux)
259 do 412 , iaux = 1 , 8
261 ptpyar(jaux) = ptpyar(jaux) + 1
262 tapyar(ptpyar(jaux)) = lapyra
270 c 5. decompte des pentaedres voisins d'aretes
273 if ( nbpeto.gt.0 ) then
275 do 51 , lepent = 1 , nbpeto
277 if ( lepent.le.nbpecf ) then
279 call utarpe ( lepent,
281 > arequa, facpen, cofape,
286 do 511 , iaux = 1 , 9
287 listar(iaux) = arepen(lepent-nbpecf,iaux)
292 do 512 , iaux = 1 , 9
294 ptpear(jaux) = ptpear(jaux) + 1
295 tapear(ptpear(jaux)) = lepent
306 if ( codret.ne.0 ) then
310 write (ulsort,texte(langue,1)) 'Sortie', nompro
311 write (ulsort,texte(langue,2)) codret
315 #ifdef _DEBUG_HOMARD_
316 write (ulsort,texte(langue,1)) 'Sortie', nompro