1 subroutine infc33 ( numcas, nbcomp, nbentc,
2 > profil, vafoti, vafotr,
3 > tritet, cotrte, aretet,
4 > pertet, pthepe, ntetca,
10 > ulsort, langue, codret )
11 c ______________________________________________________________________
15 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
17 c Version originale enregistree le 18 juin 1996 sous le numero 96036
18 c aupres des huissiers de justice Simart et Lavoir a Clamart
19 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
20 c aupres des huissiers de justice
21 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
23 c HOMARD est une marque deposee d'Electricite de France
29 c ______________________________________________________________________
30 c INformation - inFormations Complementaires - phase 33
32 c Valeurs sur les tetraedres
33 c ______________________________________________________________________
35 c . nom . e/s . taille . description .
36 c .____________________________________________________________________.
37 c . numcas . e . 1 . numero du cas en cours de traitement .
38 c . . . . 1 : niveau .
39 c . . . . 2 : qualite .
40 c . . . . 3 : diametre .
41 c . . . . 4 : parente .
42 c . . . . 5 : voisins des recollements .
43 c . nbcomp . e . 1 . nombre de composantes .
44 c . nbentc . e . 1 . nombre total d'entites du calcul .
45 c . profil . s . nbentc . pour chaque entite du calcul : .
46 c . . . . 0 : l'entite est absente du profil .
47 c . . . . 1 : l'entite est presente dans le profil .
48 c . vafoti . s . nbentc . tableau temporaire de la fonction .
49 c . vafotr . s . nbentc . tableau temporaire de la fonction .
50 c . tritet . e .nbtecf*4. numeros des 4 triangles des tetraedres .
51 c . cotrte . e .nbtecf*4. code des 4 triangles des tetraedres .
52 c . aretet . e .nbteca*6. numeros des 6 aretes des tetraedres .
53 c . pertet . e . nbteto . pere des tetraedres .
54 c . . . . si pertet(i) > 0 : numero du tetraedre .
55 c . . . . si pertet(i) < 0 : -numero dans pthepe .
56 c . pthepe . e . * . si i <= nbheco : numero de l'hexaedre .
57 c . . . . si non : numero du pentaedre .
58 c . ntetca . e . * . nro des tetraedres dans le calcul .
59 c . coonoe . e . nbnoto . coordonnees des noeuds .
61 c . somare . e .2*nbarto. numeros des extremites d'arete .
62 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
63 c . nivtri . e . nbtrto . niveau dans le raffinement/deraffinement .
64 c . nivqua . e . nbquto . niveau dans le raffinement/deraffinement .
65 c . quahex . e .nbhecf*6. numeros des 6 quadrangles des hexaedres .
66 c . facpen . e .nbpecf*5. numeros des 5 faces des pentaedres .
67 c . npterc . e . 1 . nombre de paires de tetraedres recolles .
68 c . tetrec . e .3*npterc. paires des tetra. voisins faces a recoller .
69 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
70 c . langue . e . 1 . langue des messages .
71 c . . . . 1 : francais, 2 : anglais .
72 c . codret . es . 1 . code de retour des modules .
73 c . . . . 0 : pas de probleme .
74 c . . . . 5 : mauvais type de code de calcul associe .
75 c ______________________________________________________________________
78 c 0. declarations et dimensionnement
81 c 0.1. ==> generalites
87 parameter ( nompro = 'INFC33' )
107 integer nbcomp, nbentc
108 integer profil(nbentc)
109 integer vafoti(nbentc)
110 integer tritet(nbtecf,4), cotrte(nbtecf,4), aretet(nbteca,6)
111 integer pertet(nbteto), pthepe(*), ntetca(*)
112 integer somare(2,nbarto)
113 integer aretri(nbtrto,3), nivtri(nbtrto)
114 integer nivqua(nbquto)
115 integer quahex(nbhecf,6)
116 integer facpen(nbpecf,5)
117 integer npterc, tetrec(3,npterc)
119 double precision coonoe(nbnoto,sdim)
120 double precision vafotr(nbentc)
122 integer ulsort, langue, codret
124 c 0.4. ==> variables locales
126 integer iaux, jaux, kaux, laux
129 double precision niveau, qualit, qualij, volume, diamet
132 parameter ( nbmess = 10 )
133 character*80 texte(nblang,nbmess)
135 c 0.5. ==> initialisations
136 c ______________________________________________________________________
145 #ifdef _DEBUG_HOMARD_
146 write (ulsort,texte(langue,1)) 'Entree', nompro
149 texte(1,4) = '(''.. Valeurs sur les '',a)'
151 texte(2,4) = '(''.. Values over the '',a)'
153 #ifdef _DEBUG_HOMARD_
154 write (ulsort,texte(langue,4)) mess14(langue,3,3)
155 write (ulsort,90002) 'numcas', numcas
156 write (ulsort,90002) 'nbteto', nbteto
157 write (ulsort,90002) 'nbtepe', nbtepe
158 write (ulsort,90002) 'nbtecf', nbtecf
159 write (ulsort,90002) 'nbcomp', nbcomp
160 write (ulsort,90002) 'nbentc', nbentc
161 write (ulsort,90002) 'npterc', npterc
170 do 21 , iaux = 1 , nbentc
178 if ( numcas.eq.1 ) then
180 c 3.1. ==> Les tetraedres de depart ou issus d'un decoupage en 8
181 c Les faces sont toutes du meme niveau
182 c Remarque : ils sont toujours decrits par faces
184 do 31 , iaux = 1 , nbtepe
186 cgn write (ulsort,90015) 'ntetca(',iaux,') =', ntetca(iaux)
189 if ( jaux.ne.0 ) then
190 cgn write (ulsort,90015) 'nivtri(',iaux,') =', nivtri(tritet(iaux,1))
191 vafotr(jaux) = dble(nivtri(tritet(iaux,1)))
197 c 3.2. ==> Les tetraedres issus d'un decoupage de conformite
198 c Remarque : ils sont toujours actifs
200 do 32 , iaux = nbtepe+1 , nbteto
202 call utntet ( iaux, niveau,
203 > tritet, pertet, pthepe,
208 vafotr(jaux) = niveau
217 elseif ( numcas.eq.2 ) then
219 do 41 , iaux = 1 , nbteto
222 if ( jaux.ne.0 ) then
224 call utqtet ( kaux, qualit, qualij, volume,
225 > coonoe, somare, aretri,
226 > tritet, cotrte, aretet )
227 vafotr(jaux) = qualit
237 elseif ( numcas.eq.3 ) then
239 do 51 , iaux = 1 , nbteto
242 if ( jaux.ne.0 ) then
244 call utdtet ( kaux, diamet,
245 > coonoe, somare, aretri,
246 > tritet, cotrte, aretet )
247 vafotr(jaux) = diamet
258 elseif ( numcas.eq.4 ) then
260 do 61 , iaux = 1 , nbteto
263 if ( jaux.ne.0 ) then
264 vafoti(jaux) = pertet(iaux)
271 c 7. Voisins par recollement
274 elseif ( numcas.eq.5 ) then
276 c 7.1. ==> On met des valeurs nulles par defaut
278 do 71 , iaux = 1 , nbteto
281 if ( jaux.ne.0 ) then
282 indice = nbcomp*(jaux-1) + 1
283 do 711 , kaux = 1 , nbcomp
292 c 7.2. ==> Percours des paires enregistrees
294 do 72 , iaux = 1 , npterc
296 jaux = tetrec(1,iaux)
297 kaux = tetrec(2,iaux)
298 cgn write (ulsort,90002) 'iaux, jaux, kaux, face',
299 cgn > iaux, jaux, kaux, tetrec(3,iaux)
301 if ( jaux.ne.0 ) then
302 indice = nbcomp*(jaux-1) + 1
303 if ( vafoti(indice).eq.0 ) then
304 vafoti(indice) = kaux
305 vafoti(indice+1) = tetrec(3,iaux)
310 if ( kaux.ne.0 ) then
311 indice = nbcomp*(kaux-1) + 1
313 if ( vafoti(indice).eq.0 ) then
314 vafoti(indice) = jaux
315 vafoti(indice+1) = tetrec(3,iaux)
326 cgn do 73 , iaux = 1,nbentc
327 cgn write(ulsort,90112)'profil',iaux,profil(iaux)
328 cgn write (ulsort,90002) 'indices', nbcomp*(iaux-1)+1,nbcomp*iaux
329 cgn write(ulsort,90112)'vafoti',iaux,
330 cgn >(vafoti(jaux),jaux=nbcomp*(iaux-1)+1,nbcomp*iaux)
339 if ( codret.ne.0 ) then
343 write (ulsort,texte(langue,1)) 'Sortie', nompro
344 write (ulsort,texte(langue,2)) codret
348 #ifdef _DEBUG_HOMARD_
349 write (ulsort,texte(langue,1)) 'Sortie', nompro