1 subroutine vcmnc2 ( nbanci, nbgemx,
2 > arreca, arrecb, noerec,
4 > coonoe, hetnoe, arenoe,
5 > coexno, nnosho, nnosca,
7 > somare, hetare, np2are,
8 > merare, filare, insoar,
9 > coexar, narsho, narsca,
13 > ngenar, ngenno, nouent, tabaux, tbdaux,
14 > ulsort, langue, codret )
15 c ______________________________________________________________________
19 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
21 c Version originale enregistree le 18 juin 1996 sous le numero 96036
22 c aupres des huissiers de justice Simart et Lavoir a Clamart
23 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
24 c aupres des huissiers de justice
25 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
27 c HOMARD est une marque deposee d'Electricite de France
33 c ______________________________________________________________________
35 c aVant adaptation - Conversion de Maillage - Non Conformite - 2
37 c Renumerotations des noeuds
38 c ______________________________________________________________________
40 c . nom . e/s . taille . description .
41 c .____________________________________________________________________.
42 c . nbanci . e . 1 . nombre d'aretes de non conformite initiale .
43 c . . . . egal au nombre d'aretes recouvrant 2 autres.
44 c . nbgemx . e . 1 . nombre maximal de generations sous une .
46 c . arreca . s .2*nbanci. liste des aretes recouvrant une autre .
47 c . arrecb . s .2*nbanci. liste des aretes recouvertes par une autre .
48 c . noerec . s . nbanci . liste initiale des noeuds de recollement .
49 c . nohman . e . char*8 . nom de l'objet maillage homard iteration n .
50 c . nhvois . e . char8 . nom de la branche Voisins .
51 c . coonoe . e . nbnoto . coordonnees des noeuds .
52 c . hetnoe . es . nbnoto . historique de l'etat des noeuds .
53 c . arenoe . es . nbnoto . 0 pour un sommet, le numero de l'arete pour.
54 c . . . . un noeud milieu .
55 c . coexno . es . nbnoto*. codes de conditions aux limites portants .
56 c . . . nctfno . sur les noeuds .
57 c . nnosho . es . rsnoac . numero des noeuds dans HOMARD .
58 c . nnosca . es . rsnoto . numero des noeuds dans le calcul .
59 c . noempo . es . nbmpto . numeros des noeuds associes aux mailles .
60 c . somare . es .2*nbarto. numeros des extremites d'arete .
61 c . hetare . es . nbarto . historique de l'etat des aretes .
62 c . np2are . es . nbarto . noeud milieux des aretes .
63 c . merare . es . nbarto . mere des aretes .
64 c . filare . es . nbarto . premiere fille des aretes .
65 c . insoar . es . nbarto . information sur les sommets des aretes .
66 c . coexar . es . nbarto*. codes de conditions aux limites portants .
67 c . . . nctfar . sur les aretes .
68 c . narsho . es . rsarac . numero des aretes dans HOMARD .
69 c . narsca . es . rsarto . numero des aretes du calcul .
70 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
71 c . arequa . e .nbquto*4. numeros des 4 aretes des quadrangles .
72 c . ppovos . es . 1 . adresse du pointeur des vois. des sommets .
73 c . pvoiso . es . 1 . adresse des voisins des sommets .
74 c . pposif . es . 1 . adresse du pointeur des vois. des aretes .
75 c . pfacar . es . 1 . adresse des voisins des aretes .
76 c . ngenar . e . nbarto . nombre de generations au-dessus des aretes .
77 c . ngenno . s . nbnoto . nombre de generations au-dessus des noeuds .
78 c . nouent . s . nbnoto . nouveau numero des noeuds .
79 c . tabaux . a . * . tableau auxiliaire .
80 c . tbdaux . a . * . tableau auxiliaire reel .
81 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
82 c . langue . e . 1 . langue des messages .
83 c . . . . 1 : francais, 2 : anglais .
84 c . codret . es . 1 . code de retour des modules .
85 c . . . . 0 : pas de probleme .
86 c . . . . 3 : probleme .
87 c ______________________________________________________________________
90 c 0. declarations et dimensionnement
93 c 0.1. ==> generalites
99 parameter ( nompro = 'VCMNC2' )
118 character*8 nohman, nhvois
120 integer nbanci, nbgemx
121 integer arreca(2*nbanci), arrecb(2*nbanci)
122 integer noerec(nbanci)
123 integer noempo(nbmpto)
124 integer hetnoe(nbnoto), arenoe(nbnoto)
125 integer coexno(nbnoto,nctfno)
126 integer nnosho(rsnoac), nnosca(rsnoto)
127 integer somare(2,nbarto), hetare(nbarto), np2are(nbarto)
128 integer filare(nbarto), merare(nbarto), insoar(nbarto)
129 integer coexar(nbarto,nctfar)
130 integer narsho(rsarac), narsca(rsarto)
131 integer aretri(nbtrto,3)
132 integer arequa(nbquto,4)
133 integer ppovos, pvoiso
134 integer pposif, pfacar
135 integer ngenar(nbarto), ngenno(nbnoto), nouent(0:nbnoto)
138 double precision tbdaux(*)
139 double precision coonoe(nbnoto,sdim)
141 integer ulsort, langue, codret
143 c 0.4. ==> variables locales
146 integer voarno, vofaar, vovoar, vovofa
151 parameter ( nbmess = 10 )
152 character*80 texte(nblang,nbmess)
154 c 0.5. ==> initialisations
155 c ______________________________________________________________________
165 #ifdef _DEBUG_HOMARD_
166 write (ulsort,texte(langue,1)) 'Entree', nompro
171 > '(''Nombre de paires de '',a,'' non-conformes :'',i10))'
172 texte(1,8) = '(''Regroupement des '',a,'' de generation'',i3)'
175 > '(''Number of pairs of non-conformal '',a,'' :'',i10))'
176 texte(2,8) = '(''Gathering of '',a,'' in generation'',i3)'
178 #ifdef _DEBUG_HOMARD_
179 write (ulsort,texte(langue,4)) mess14(langue,3,1), nbanci
183 c 2. Elaboration des generations des noeuds
186 if ( codret.eq.0 ) then
188 #ifdef _DEBUG_HOMARD_
189 write (ulsort,texte(langue,3)) 'UTNC05', nompro
193 call utnc05 ( jaux, nbanci,numfin,
196 > ngenar, ngenno, nouent,
197 > ulsort, langue, codret )
202 c 2. Renumerotation des noeuds
203 c Remarque : les generations doivent etre parcourues de la plus jeune
204 c a la plus vieille, pour tasser vers la fin de la
210 do 21 , numgen = nbgemx , 1 , -1
212 #ifdef _DEBUG_HOMARD_
213 if ( codret.eq.0 ) then
214 write (ulsort,texte(langue,8)) mess14(langue,3,-1), numgen
218 c 2.1. ==> Recherche des renumerotations
220 if ( codret.eq.0 ) then
224 #ifdef _DEBUG_HOMARD_
225 write (ulsort,texte(langue,3)) 'UTNC05', nompro
228 call utnc05 ( jaux, nbanci, numfin,
231 > ngenar, ngenno, nouent,
232 > ulsort, langue, codret )
233 cgn write(ulsort,*) 'nouent'
235 cgn write(ulsort,3333) jaux,nouent(jaux)
236 cgn 3333 format (i10,' :',i10)
241 c 2.2. ==> Prise en compte des renumerotations
243 if ( codret.eq.0 ) then
245 #ifdef _DEBUG_HOMARD_
246 write (ulsort,texte(langue,3)) 'UTNC06', nompro
251 > nouent, tabaux, tbdaux,
252 > coonoe, hetnoe, arenoe,
253 > coexno, nnosho, nnosca,
257 > ulsort, langue, codret )
262 cgn write(ulsort,*) 'ngenno(', 1,') = ',ngenno(1)
263 cgn do 2111,iaux=25300,25310
264 cgn write(ulsort,*) 'ngenno(',iaux,') = ',ngenno(iaux)
266 cgn write(ulsort,*) 'ngenno(',36917,') = ',ngenno(36917)
267 cgn write(ulsort,*) 'ngenno(',36918,') = ',ngenno(36918)
268 cgn write(ulsort,*) 'ngenno(',nbnoto,') = ',ngenno(nbnoto)
271 c 3. Renumerotation des aretes soeurs : il faut que celle de plus petit
272 c numero soit celle qui demarre sur le noeud de + petit numero
275 c 3.1. ==> Changement des renumerotations
277 if ( codret.eq.0 ) then
279 #ifdef _DEBUG_HOMARD_
280 write (ulsort,texte(langue,3)) 'UTNC03', nompro
284 call utnc03 ( jaux, nbanci, iaux,
286 > somare, filare, merare,
287 > ngenar, nouent, tabaux,
288 > ulsort, langue, codret )
292 c 3.2. ==> Prise en compte des renumerotations
294 if ( codret.eq.0 ) then
296 #ifdef _DEBUG_HOMARD_
297 write (ulsort,texte(langue,3)) 'UTNC04', nompro
300 call utnc04 ( nbanci, arreca, arrecb,
303 > somare, hetare, np2are,
304 > merare, filare, insoar,
305 > coexar, narsho, narsca,
308 > ulsort, langue, codret )
313 c 4. Stockage du noeud commun aux aretes de recollement
316 if ( codret.eq.0 ) then
318 #ifdef _DEBUG_HOMARD_
319 write (ulsort,texte(langue,3)) 'UTNC07', nompro
322 call utnc07 ( nbanci,
323 > noerec, arreca, arrecb,
325 > ulsort, langue, codret )
330 c 5. Mise a jour des aretes voisines des noeuds
333 if ( codret.eq.0 ) then
340 #ifdef _DEBUG_HOMARD_
341 write (ulsort,texte(langue,3)) 'UTVOIS', nompro
343 call utvois ( nohman, nhvois,
344 > voarno, vofaar, vovoar, vovofa,
346 > nbfaar, pposif, pfacar,
347 > ulsort, langue, codret )
355 if ( codret.ne.0 ) then
359 write (ulsort,texte(langue,1)) 'Sortie', nompro
360 write (ulsort,texte(langue,2)) codret
364 #ifdef _DEBUG_HOMARD_
365 write (ulsort,texte(langue,1)) 'Sortie', nompro