1 subroutine vcsflg ( nbfron, nbf,
2 > pointl, taigrl, nomgrl,
3 > pointe, nomgrf, numfam, nomfam,
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 aVant adaptation - Conversion - Suivi de Frontiere
28 c - Lien famille/ligne.surface - par les Groupes
30 c ______________________________________________________________________
32 c Chaque element de frontiere (ligne ou surface) dont on demande le
33 c suivi est designe par son nom.
34 c On passe en revue toutes les familles du maillage MED. Quand
35 c le nom du groupe lie a une frontiere apparait dans la description
36 c des groupes definissant la famille, on indique que la famille est
37 c liee a la frontiere courante. La sortie est donc un tableau donnant
38 c pour chaque famille MED l'eventuel numero de frontiere qui lui
40 c remarque : vcsflg et vcsfll sont des clones
41 c ______________________________________________________________________
43 c . nom . e/s . taille . description .
44 c .____________________________________________________________________.
45 c . nbfron . e . 1 . nombre de frontieres decrites .
46 c . nbf . e . 1 . nombre de familles du maillage de calcul .
47 c . pointl . e .0:nbfron. pointeur sur le tableau nomgrl .
48 c . taigrl . e . * . taille des noms des groupes des frontieres .
49 c . nomgrl . e . * . noms des groupes des frontieres .
50 c . pointf . e . 0:nbf . pointeur sur le tableau nomgrf .
51 c . nomgrf . e . * . noms des groupes des familles .
52 c . numfam . e . 1 . numero MED des familles .
53 c . nomfam . e . 10*nbf . nom des familles MED .
54 c . frofam . s . nbf . donne l'eventuel numero de frontiere .
55 c . . . . associee a chaque famille MED .
56 c . decala . e . 1 . decalage dans le stockage des numeros de fr.
57 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
58 c . langue . e . 1 . langue des messages .
59 c . . . . 1 : francais, 2 : anglais .
60 c . codret . es . 1 . code de retour des modules .
61 c . . . . 0 : pas de probleme .
62 c . . . . sinon probleme .
63 c ______________________________________________________________________
66 c 0. declarations et dimensionnement
69 c 0.1. ==> generalites
75 parameter ( nompro = 'VCSFLG' )
87 integer frofam(nbf), decala
88 integer pointl(0:nbfron), pointe(0:nbf)
93 character*8 nomfam(10,nbf)
95 integer ulsort, langue, codret
97 c 0.4. ==> variables locales
99 integer iaux, jaux, nufro, fam
101 integer lgngro, lgngrm
104 character*80 nomgro, groupm
107 parameter ( nbmess = 11 )
108 character*80 texte(nblang,nbmess)
110 c 0.5. ==> initialisations
111 c ______________________________________________________________________
119 #ifdef _DEBUG_HOMARD_
120 write (ulsort,texte(langue,1)) 'Entree', nompro
124 texte(1,4) = '(/,''Frontiere numero '',i5,/,16(''=''))'
125 texte(1,5) = '(''. Elle est definie sur le groupe : '',a)'
126 texte(1,6) = '(7x,''. Comparaison avec le groupe : '',a)'
128 > '(''.'',i5,''-eme famille, de numero MED '',i5,'', de nom '',a)'
130 > '(''Cette famille est deja liee a la frontiere '',i5)'
131 texte(1,9) = '(''On veut ajouter le groupe : '',a)'
133 > '(i5,'' probleme(s) dans la definition des frontieres.'')'
134 texte(1,11) = '(7x,''. Cette famille correspond'')'
136 texte(2,4) = '(/,''Boundary #'',i5,/,12(''=''))'
137 texte(2,5) = '(''. It is defined on group: '',a)'
138 texte(2,6) = '(7x,''. Comparizon with group: '',a)'
139 texte(2,7) = '(''.'',i5,''-th family, MED # '',i5,'', name '',a)'
141 > '(''This family is already connected to boundary'',i5)'
142 texte(2,9) = '(''Group : '',a,'' is to be added.'')'
143 texte(2,10) = '(i5,'' problem(s) in boundary definition'')'
144 texte(2,11) = '(7x,''. This family matches.'')'
151 c 2. a priori, aucune famille n'est liee a une frontiere
154 do 21 , iaux = 1, nbf
158 c On parcourt tous les liens frontiere/groupe
159 c Remarque : le decodage est analogue a celui de vcfia2
161 do 10 , nufro = 1, nbfron
163 #ifdef _DEBUG_HOMARD_
164 if ( codret.eq.0 ) then
165 write (ulsort,texte(langue,4)) nufro
170 c 3. Nom du groupe associe a ce lien
173 if ( codret.eq.0 ) then
175 c adresse du debut du groupe associe a la frontiere nufro
176 iaux = pointl(nufro-1) + 1
178 c longueur utile du nom du groupe
180 do 31 , jaux = iaux , pointl(nufro)
181 lgngro = lgngro + taigrl(jaux)
186 if ( codret.eq.0 ) then
188 c recuperation du nom du groupe associe a la frontiere nufro
189 call uts8ch ( nomgrl(iaux), lgngro, nomgro,
190 > ulsort, langue, codret )
194 #ifdef _DEBUG_HOMARD_
195 write (ulsort,texte(langue,5)) nomgro(1:lgngro)
199 c 4. On parcourt toutes les familles de mailles
202 if ( codret.eq.0 ) then
206 if ( numfam(fam).lt.0 ) then
208 #ifdef _DEBUG_HOMARD_
209 saux64( 1: 8) = nomfam(1,fam)
210 saux64( 9:16) = nomfam(2,fam)
211 saux64(17:24) = nomfam(3,fam)
212 saux64(25:32) = nomfam(4,fam)
213 saux64(33:40) = nomfam(5,fam)
214 saux64(41:48) = nomfam(6,fam)
215 saux64(49:56) = nomfam(7,fam)
216 saux64(57:64) = nomfam(8,fam)
217 call utlgut ( jaux, saux64, ulsort, langue, codret )
218 write (ulsort,texte(langue,7))
219 > fam, numfam(fam), saux64(1:jaux)
222 nbgr = (pointe(fam)-pointe(fam-1))/10
224 c 4.1. ==> on parcourt tous les groupes entrant dans la
225 c definition de la famille
229 c 4.1.1. ==> nom du groupe
231 if ( codret.eq.0 ) then
233 c adresse du debut du groupe numero gr de la famille fam
234 iaux = pointe(fam-1)+1+10*(gr-1)
236 c recuperation du nom du groupe numero gr dans la famille
238 call uts8ch ( nomgrf(iaux), 80, groupm,
239 > ulsort, langue, codret )
243 if ( codret.eq.0 ) then
245 c longueur utile du nom du groupe
246 call utlgut ( lgngrm, groupm, ulsort, langue, codret )
248 #ifdef _DEBUG_HOMARD_
249 write (ulsort,texte(langue,6)) groupm(1:lgngrm)
254 c 4.1.2. ==> si le groupe de la frontiere et le groupe courant
255 c coincident, on declare que la famille est concernee par
257 c attention, on n'autorise qu'une seule frontiere par famille
259 if ( codret.eq.0 ) then
261 if ( lgngro.eq.lgngrm ) then
263 if ( nomgro(1:lgngro).eq.groupm(1:lgngrm) ) then
265 if ( frofam(fam).eq.0 ) then
267 frofam(fam) = nufro + decala
268 #ifdef _DEBUG_HOMARD_
269 write (ulsort,texte(langue,11))
272 saux64( 1: 8) = nomfam(1,fam)
273 saux64( 9:16) = nomfam(2,fam)
274 saux64(17:24) = nomfam(3,fam)
275 saux64(25:32) = nomfam(4,fam)
276 saux64(33:40) = nomfam(5,fam)
277 saux64(41:48) = nomfam(6,fam)
278 saux64(49:56) = nomfam(7,fam)
279 saux64(57:64) = nomfam(8,fam)
280 call utlgut ( jaux, saux64, ulsort, langue, codret )
281 write (ulsort,texte(langue,7))
282 > fam, numfam(fam), saux64(1:jaux)
283 write (ulsort,texte(langue,8)) frofam(fam)
284 write (ulsort,texte(langue,9)) groupm(1:lgngrm)
304 #ifdef _DEBUG_HOMARD_
306 do 3000 , iaux = 1, nbf
307 write (ulsort,90112) 'frofam', iaux, frofam(iaux)
316 if ( codret.ne.0 ) then
320 write (ulsort,texte(langue,1)) 'Sortie', nompro
321 write (ulsort,texte(langue,2)) codret
322 write (ulsort,texte(langue,10)) codret
326 #ifdef _DEBUG_HOMARD_
327 write (ulsort,texte(langue,1)) 'Sortie', nompro