1 subroutine utvois ( nomail, nhvois,
2 > voarno, vofaar, vovoar, vovofa,
4 > nbfaar, pposif, pfacar,
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 - creation des tableaux des VOISins
28 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . nomail . e . char8 . nom de l'objet maillage homard .
33 c . nhvois . es . char8 . nom de la branche Voisins .
34 c . voarno . e . 1 . pilotage des voisins des noeuds : .
35 c . . . . -1 : on detruit la table. .
36 c . . . . 0 : on ne fait rien. .
37 c . . . . 1 : on construit la table. .
38 c . . . . 2 : on construit la table et on controle .
39 c . vofaar . e . 1 . pilotage des voisins des aretes : .
40 c . . . . -1 : on detruit la table. .
41 c . . . . 0 : on ne fait rien. .
42 c . . . . 1 : on construit la table. .
43 c . . . . 2 : on construit la table et on controle .
44 c . vovoar . e . 1 . pilotage des volumes voisins des aretes : .
45 c . . . . -1 : on detruit la table. .
46 c . . . . 0 : on ne fait rien. .
47 c . . . . 1 : on construit la table. .
48 c . . . . 2 : on construit la table et on controle .
49 c . vovofa . e . 1 . pilotage des volumes voisins des faces : .
50 c . . . . -1 : on detruit la table. .
51 c . . . . 0 : on ne fait rien. .
52 c . . . . 1 : on construit la table. .
53 c . . . . 2 : on construit la table et on controle .
54 c . ppovos . s . 1 . adresse du pointeur des vois. des sommets .
55 c . pvoiso . s . 1 . adresse des voisins des sommets .
56 c . nbfaar . s . 1 . nombre cumule de faces par arete .
57 c . pposif . s . 1 . adresse du pointeur des vois. des aretes .
58 c . pfacar . s . 1 . adresse des voisins des aretes .
59 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
60 c . langue . e . 1 . langue des messages .
61 c . . . . 1 : francais, 2 : anglais .
62 c . codret . es . 1 . code de retour des modules .
63 c . . . . 0 : pas de probleme .
64 c . . . . 1 : probleme .
65 c ______________________________________________________________________
68 c 0. declarations et dimensionnement
71 c 0.1. ==> generalites
77 parameter ( nompro = 'UTVOIS' )
90 character*8 nomail, nhvois
92 integer voarno, vofaar, vovoar, vovofa
93 integer ppovos, pvoiso
94 integer nbfaar, pposif, pfacar
96 integer ulsort, langue, codret
98 c 0.4. ==> variables locales
103 character*8 nhnoeu, nhmapo, nharet, nhtria, nhquad
104 character*8 nhtetr, nhhexa, nhpyra, nhpent
106 character*8 nhsupe, nhsups
109 parameter ( nbmess = 10 )
110 character*80 texte(nblang,nbmess)
112 c 0.5. ==> initialisations
113 c ______________________________________________________________________
121 #ifdef _DEBUG_HOMARD_
122 write (ulsort,texte(langue,1)) 'Entree', nompro
125 texte(1,4) = '(5x,''Mise en place des voisins.'')'
126 texte(1,5) = '(a,'' voisins des '',a,'' : '',i6)'
128 texte(2,4) = '(5x,''Neighbourhood.'')'
129 texte(2,5) = '(a,'' closed to the '',a,'' : '',i6)'
133 #ifdef _DEBUG_HOMARD_
134 write(ulsort,texte(langue,4))
138 c 2. Allocation de la tete des voisins.
139 c Il faut le faire au depart, sinon, le programme utnomh plante.
142 if ( codret.eq.0 ) then
144 call gmobal ( nomail//'.Voisins', codret )
146 if ( codret.eq.0 ) then
147 call gmaloj ( nomail//'.Voisins', ' ', 0, iaux, codret )
149 elseif ( codret.eq.1 ) then
160 c 3. recuperation des donnees du maillage d'entree
162 #ifdef _DEBUG_HOMARD_
163 write (ulsort,90002) '3. recuperation ; codret', codret
166 if ( codret.eq.0 ) then
168 #ifdef _DEBUG_HOMARD_
169 write (ulsort,texte(langue,3)) 'UTNOMH', nompro
171 call utnomh ( nomail,
173 > degre, maconf, homolo, hierar,
174 > rafdef, nbmane, typcca, typsfr, maextr,
177 > nhnoeu, nhmapo, nharet,
179 > nhtetr, nhhexa, nhpyra, nhpent,
181 > nhvois, nhsupe, nhsups,
182 > ulsort, langue, codret)
189 #ifdef _DEBUG_HOMARD_
190 write (ulsort,90002) '4. Traitement ; codret', codret
192 c 4.1. ==> determination des aretes voisines des noeuds
194 #ifdef _DEBUG_HOMARD_
195 write(ulsort,texte(langue,5))
196 > mess14(langue,3,1), mess14(langue,3,-1), voarno
199 if ( voarno.ne.0 ) then
201 if ( codret.eq.0 ) then
203 #ifdef _DEBUG_HOMARD_
204 write (ulsort,texte(langue,3)) 'UTVGAN', nompro
207 call utvgan ( nhvois, nhnoeu, nharet,
210 > ulsort, langue, codret)
216 c 4.2. ==> determination des faces voisines des aretes
218 #ifdef _DEBUG_HOMARD_
219 write (ulsort,90002) '4.2. faces/aretes ; codret', codret
221 #ifdef _DEBUG_HOMARD_
222 write(ulsort,texte(langue,5))
223 > mess14(langue,3,8), mess14(langue,3,1), vofaar
226 if ( vofaar.ne.0 ) then
228 if ( codret.eq.0 ) then
230 #ifdef _DEBUG_HOMARD_
231 write (ulsort,texte(langue,3)) 'UTVGFA', nompro
234 call utvgfa ( nhvois, nharet, nhtria, nhquad,
236 > nbfaar, pposif, pfacar,
237 > ulsort, langue, codret )
243 c 4.3. ==> reperage des volumes s'appuyant sur chaque arete
245 #ifdef _DEBUG_HOMARD_
246 write (ulsort,90002) '4.3. volumes/aretes ; codret', codret
248 #ifdef _DEBUG_HOMARD_
249 write(ulsort,texte(langue,5))
250 > mess14(langue,3,9), mess14(langue,3,1), vovoar
253 if ( vovoar.ne.0 ) then
255 if ( codret.eq.0 ) then
257 #ifdef _DEBUG_HOMARD_
258 write (ulsort,texte(langue,3)) 'UTVGVA', nompro
260 call utvgva ( nhvois, nharet, nhtria, nhquad,
261 > nhtetr, nhhexa, nhpyra, nhpent,
263 > ulsort, langue, codret)
269 c 4.4. ==> reperage des volumes s'appuyant sur chaque face
271 #ifdef _DEBUG_HOMARD_
272 write (ulsort,90002) '4.4. volumes/faces ; codret', codret
274 #ifdef _DEBUG_HOMARD_
275 write(ulsort,texte(langue,5))
276 > mess14(langue,3,9), mess14(langue,3,8), vovofa
279 if ( vovofa.ne.0 ) then
281 if ( codret.eq.0 ) then
283 #ifdef _DEBUG_HOMARD_
284 write (ulsort,texte(langue,3)) 'UTVGVF', nompro
286 call utvgvf ( nhvois, nhtria, nhquad,
287 > nhtetr, nhhexa, nhpyra, nhpent,
289 > ulsort, langue, codret)
299 if ( codret.ne.0 ) then
303 write (ulsort,texte(langue,1)) 'Sortie', nompro
304 write (ulsort,texte(langue,2)) codret
308 #ifdef _DEBUG_HOMARD_
309 write (ulsort,texte(langue,1)) 'Sortie', nompro