1 subroutine utnc06 ( option,
2 > nounoe, tabaux, tbdaux,
3 > coonoe, hetnoe, arenoe,
4 > coexno, nnosho, nnosca,
8 > ulsort, langue, codret )
9 c ______________________________________________________________________
13 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
15 c Version originale enregistree le 18 juin 1996 sous le numero 96036
16 c aupres des huissiers de justice Simart et Lavoir a Clamart
17 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
18 c aupres des huissiers de justice
19 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
21 c HOMARD est une marque deposee d'Electricite de France
27 c ______________________________________________________________________
29 c UTilitaire - Non Conformite - phase 06
31 c Prise en compte des renumerotations des noeuds
32 c ______________________________________________________________________
34 c . nom . e/s . taille . description .
35 c .____________________________________________________________________.
36 c . option . e . 1 . 0 : on renumerote tout .
37 c . . . . 1 : on ne renumerote pas ngenno .
38 c . nounoe . e . nbarto . nouveau numero des noeuds .
39 c . tabaux . a . * . tableau auxiliaire entier .
40 c . tbdaux . a . * . tableau auxiliaire reel .
41 c . coonoe . e . nbnoto . coordonnees des noeuds .
43 c . hetnoe . es . nbnoto . historique de l'etat des noeuds .
44 c . arenoe . es . nbnoto . 0 pour un sommet, le numero de l'arete pour.
45 c . . . . un noeud milieu .
46 c . coexno . es . nbnoto*. codes de conditions aux limites portants .
47 c . . . nctfno . sur les noeuds .
48 c . nnosho . es . rsnoac . numero des noeuds dans HOMARD .
49 c . nnosca . es . rsnoto . numero des noeuds dans le calcul .
50 c . ngenno . es . nbnoto . nombre de generations au-dessus des noeuds .
51 c . noempo . es . nbmpto . numeros des noeuds associes aux mailles .
52 c . somare . es .2*nbarto. numeros des extremites d'arete .
53 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
54 c . langue . e . 1 . langue des messages .
55 c . . . . 1 : francais, 2 : anglais .
56 c . codret . es . 1 . code de retour des modules .
57 c . . . . 0 : pas de probleme .
58 c ______________________________________________________________________
61 c 0. declarations et dimensionnement
64 c 0.1. ==> generalites
70 parameter ( nompro = 'UTNC06' )
89 integer nounoe(0:nbnoto)
91 integer hetnoe(nbnoto), arenoe(nbnoto)
92 integer ngenno(nbnoto)
93 integer noempo(nbmpto)
94 integer somare(2,nbarto)
95 integer coexno(nbnoto,nctfno)
96 integer nnosho(rsnoac), nnosca(rsnoto)
98 double precision tbdaux(nbnoto,sdim)
99 double precision coonoe(nbnoto,sdim)
101 integer ulsort, langue, codret
103 c 0.4. ==> variables locales
110 parameter ( nbmess = 10 )
111 character*80 texte(nblang,nbmess)
113 c 0.5. ==> initialisations
114 c ______________________________________________________________________
124 #ifdef _DEBUG_HOMARD_
125 write (ulsort,texte(langue,1)) 'Entree', nompro
130 > '(''Renumerotation complete des tableaux lies aux '',a)'
132 > '(''Renumerotation des tableaux lies aux '',a,''sauf ngenno'')'
133 texte(1,6) = '(''Examen du '',a,i10)'
135 texte(2,4) = '(''Total renumbering of arrays connected to '',a)'
137 > '(''Renumbering of arrays connected to '',a,''except ngenno'')'
138 texte(2,6) = '(''Examination of '',a,i10)'
142 #ifdef _DEBUG_HOMARD_
143 if ( option.eq.0 ) then
144 write (ulsort,texte(langue,4)) mess14(langue,3,-1)
146 write (ulsort,texte(langue,5)) mess14(langue,3,-1)
151 c 2. A-t-on vraiment besoin ?
155 do 21 , iaux = 1 , nbnoto
157 if ( nounoe(iaux).ne.iaux ) then
158 cgn print *,iaux, nounoe(iaux)
166 cgn print *, 'afaire = ',afaire
171 c 3. Renumerotation des caracteristiques liees aux noeuds
173 c 3.1. ==> Coordonnees
175 if ( codret.eq.0 ) then
177 do 311 , iaux = 1 , nbnoto
178 do 3111 , jaux = 1 , sdim
179 tbdaux(iaux,jaux) = coonoe(iaux,jaux)
183 do 312 , iaux = 1 , nbnoto
185 cgn write (ulsort,*) iaux,' ==> ',nounoe(iaux)
186 if ( nounoe(iaux).ne.iaux ) then
187 #ifdef _DEBUG_HOMARD_
188 write (ulsort,texte(langue,6)) mess14(langue,1,-1), iaux
190 do 3121 , jaux = 1 , sdim
191 coonoe(nounoe(iaux),jaux) = tbdaux(iaux,jaux)
199 c 3.2. ==> Historiques de l'etat
201 if ( codret.eq.0 ) then
205 #ifdef _DEBUG_HOMARD_
206 write (ulsort,texte(langue,3)) 'UTCHNU - hetnoe', nompro
208 call utchnu ( iaux, nbnoto, nounoe,
209 > jaux, nbnoto, hetnoe,
211 > ulsort, langue, codret )
215 c 3.3. ==> Code externe sur les conditions aux limites
217 if ( codret.eq.0 ) then
220 #ifdef _DEBUG_HOMARD_
221 write (ulsort,texte(langue,3)) 'UTCHNU - coexno', nompro
223 call utchnu ( iaux, nbnoto, nounoe,
224 > nbnoto, nctfno, coexno,
226 > ulsort, langue, codret )
230 c 3.4. ==> Arete sur le noeud
232 if ( codret.eq.0 ) then
236 #ifdef _DEBUG_HOMARD_
237 write (ulsort,texte(langue,3)) 'UTCHNU - arenoe', nompro
239 call utchnu ( iaux, nbnoto, nounoe,
240 > jaux, nbnoto, arenoe,
242 > ulsort, langue, codret )
246 c 3.5. ==> Renumerotation avec le code de calcul
248 if ( codret.eq.0 ) then
252 #ifdef _DEBUG_HOMARD_
253 write (ulsort,texte(langue,3)) 'UTCHNU - nnosho', nompro
255 call utchnu ( iaux, nbnoto, nounoe,
256 > jaux, rsnoac, nnosho,
258 > ulsort, langue, codret )
262 if ( codret.eq.0 ) then
266 #ifdef _DEBUG_HOMARD_
267 write (ulsort,texte(langue,3)) 'UTCHNU - nnosca', nompro
269 call utchnu ( iaux, nbnoto, nounoe,
270 > jaux, rsnoto, nnosca,
272 > ulsort, langue, codret )
276 c 3.6. ==> Nombre de generations de l'ascendance
278 if ( codret.eq.0 ) then
280 if ( option.ne.1 ) then
284 #ifdef _DEBUG_HOMARD_
285 write (ulsort,texte(langue,3)) 'UTCHNU - ngenno', nompro
287 call utchnu ( iaux, nbnoto, nounoe,
288 > jaux, nbnoto, ngenno,
290 > ulsort, langue, codret )
297 c 4. Renumerotation des sommets definissant les aretes
298 c Il faut corriger eventuellement l'orientation des aretes
301 if ( codret.eq.0 ) then
303 #ifdef _DEBUG_HOMARD_
304 write (ulsort,texte(langue,3)) 'UTCHNU - somare', nompro
308 call utchnu ( iaux, nbnoto, nounoe,
309 > jaux, nbarto, somare,
311 > ulsort, langue, codret )
315 if ( codret.eq.0 ) then
317 do 41 , iaux = 1 , nbarto
318 if ( somare(1,iaux).gt.somare(2,iaux) ) then
319 jaux = somare(1,iaux)
320 somare(1,iaux) = somare(2,iaux)
321 somare(2,iaux) = jaux
328 c 5. Eventuellement, renumerotation des sommets definissant
332 if ( nbmpto.gt.0 ) then
334 if ( codret.eq.0 ) then
336 #ifdef _DEBUG_HOMARD_
337 write (ulsort,texte(langue,3)) 'UTCHNU - noempo', nompro
341 call utchnu ( iaux, nbnoto, nounoe,
342 > jaux, nbmpto, noempo,
344 > ulsort, langue, codret )
356 if ( codret.ne.0 ) then
360 write (ulsort,texte(langue,1)) 'Sortie', nompro
361 write (ulsort,texte(langue,2)) codret
365 #ifdef _DEBUG_HOMARD_
366 write (ulsort,texte(langue,1)) 'Sortie', nompro