1 subroutine vcfia2 ( ngrofi, grfipt, grfitb,
2 > nbfmed, numfam, grfmpo, grfmtb,
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 - FIltrage de l'Adaptation - phase 2
29 c Retourne les numeros des familles MED correspondant
30 c aux groupes demandes
31 c ______________________________________________________________________
33 c . nom . e/s . taille . description .
34 c .____________________________________________________________________.
35 c . ngrofi . e . 1 . nombre de groupes de filtrage .
36 c . grfipt . e .0:ngrofi. groupes de filtrage - pointeur .
37 c . grfitb . e . * . groupes de filtrage - table .
38 c . nbfmed . e . 1 . nombre de familles MED dans le maillage .
39 c . numfam . e . nbfmed . numero MED des familles .
40 c . grfmpo . e .0:nbfmed. groupes calcul - pointeur .
41 c . grfmtb . e . * . groupes calcul - table .
42 c . nbfamd . s . 1 . nombre de familles MED concernees .
43 c . tbxgro . - . ngrofi . tableau de travail .
44 c . tbxfam . s . nbfmed . tableau de travail .
45 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
46 c . langue . e . 1 . langue des messages .
47 c . . . . 1 : francais, 2 : anglais .
48 c . codret . es . 1 . code de retour des modules .
49 c . . . . 0 : pas de probleme .
50 c . . . . sinon probleme .
51 c ______________________________________________________________________
54 c 0. declarations et dimensionnement
57 c 0.1. ==> generalites
63 parameter ( nompro = 'VCFIA2' )
73 integer ngrofi, grfipt(0:ngrofi)
74 integer nbfmed, numfam(nbfmed), grfmpo(0:nbfmed)
76 integer tbxgro(ngrofi), tbxfam(nbfmed)
81 integer ulsort, langue, codret
83 c 0.4. ==> variables locales
87 integer lgngrf, lggrfi
94 parameter ( nbmess = 10 )
95 character*80 texte(nblang,nbmess)
97 c 0.5. ==> initialisations
98 c ______________________________________________________________________
106 #ifdef _DEBUG_HOMARD_
107 write (ulsort,texte(langue,1)) 'Entree', nompro
111 texte(1,4) = '(/,''Famille MED numero'',i10)'
112 texte(1,5) = '(''. Groupe'',i5,'' : '',a)'
113 texte(1,6) = '(a,''Groupe de filtrage : '',a)'
115 >'(5x,''Attention : ce groupe est inconnu dans le maillage.'')'
116 texte(1,8) = '(''Nombre de familles MED concernees :'',i10)'
117 texte(1,9) = '(''Numero de ces familles :'')'
118 texte(1,10) = '(''... Le groupe a ete trouve dans la famille.'')'
120 texte(2,4) = '(/,''MED family #'',i10)'
121 texte(2,5) = '(''. Group'',i5,'': '',a)'
122 texte(2,6) = '(a,''Filtering group: '',a)'
124 >'(5x,''Warning : this group is not known in the mesh.'')'
125 texte(2,8) = '(''Number of MED families in cause:'',i10)'
126 texte(2,9) = '(''# of those families:'')'
127 texte(2,10) = '(''... The group was found into the family.'')'
134 c 2. a priori, aucun groupe n'a ete repere
137 do 21 , nugrfi = 1 , ngrofi
142 c 3. Recherche des familles MED concernees
143 c Remarque : le decodage est analogue a celui de vcsffl
146 if ( codret.eq.0 ) then
150 c 3.1. ==> on parcourt toutes les familles MED du maillage
152 do 31 , fam = 1 , nbfmed
154 #ifdef _DEBUG_HOMARD_
155 write (ulsort,texte(langue,4)) fam
158 nbgr = (grfmpo(fam)-grfmpo(fam-1))/10
160 c 3.1.1. ==> on parcourt tous les groupes entrant dans la
161 c definition de la famille
163 do 311 , gr = 1, nbgr
165 c 3.1.1.1. ==> nom du groupe associe
166 c adresse du debut du groupe numero gr de la famille fam
167 iaux = grfmpo(fam-1)+1+10*(gr-1)
169 if ( codret.eq.0 ) then
171 c recuperation du nom du groupe numero gr dans la famille
173 call uts8ch ( grfmtb(iaux), 80, groupf,
174 > ulsort, langue, codret )
178 if ( codret.eq.0 ) then
180 c longueur utile du nom du groupe
181 call utlgut ( lgngrf, groupf, ulsort, langue, codret )
183 #ifdef _DEBUG_HOMARD_
184 write (ulsort,texte(langue,5)) gr, groupf(1:lgngrf)
188 c 3.1.1.2. ==> on parcourt tous les groupes designes pour le filtrage
190 if ( codret.eq.0 ) then
192 do 3112 , nugrfi = 1 , ngrofi
194 c 3.1.1.2.1. ==> nom du groupe associe
196 if ( codret.eq.0 ) then
198 jaux = grfipt(nugrfi-1) + 1
199 call uts8ch ( grfitb(jaux), 200, sau200,
200 > ulsort, langue, codret )
204 if ( codret.eq.0 ) then
206 call utlgut ( lggrfi, sau200, ulsort, langue, codret )
208 #ifdef _DEBUG_HOMARD_
209 write (ulsort,texte(langue,6)) '.. ', sau200(1:lggrfi)
214 c 3.1.1.2.2. ==> est-ce le meme ?
215 c si oui on memorise le numero de cette famille MED
217 if ( codret.eq.0 ) then
219 if ( lgngrf.eq.lggrfi ) then
221 if ( groupf(1:lgngrf).eq.sau200(1:lggrfi) ) then
222 #ifdef _DEBUG_HOMARD_
223 write (ulsort,texte(langue,10))
225 tbxgro(nugrfi) = tbxgro(nugrfi) + 1
226 do 3113 , jaux = 1 , nbfamd
227 if ( tbxfam(jaux).eq.numfam(fam) ) then
232 tbxfam(nbfamd) = numfam(fam)
247 #ifdef _DEBUG_HOMARD_
248 write (ulsort,texte(langue,8)) nbfamd
249 write (ulsort,texte(langue,9))
250 write (ulsort,91020) (tbxfam(iaux), iaux=1,nbfamd)
259 do 41 , nugrfi = 1 , ngrofi
261 if ( codret.eq.0 ) then
263 jaux = grfipt(nugrfi-1) + 1
265 #ifdef _DEBUG_HOMARD_
266 write (ulsort,texte(langue,5)) nugrfi, grfitb(jaux)//' ...'
269 call uts8ch ( grfitb(jaux), 200, sau200,
270 > ulsort, langue, codret )
274 if ( codret.eq.0 ) then
276 call utlgut ( lggrfi, sau200, ulsort, langue, codret )
280 if ( codret.eq.0 ) then
282 write (ulsort,texte(langue,6)) ' ', sau200(1:lggrfi)
283 if ( tbxgro(nugrfi).eq.0 ) then
284 write (ulsort,texte(langue,7))
295 if ( codret.ne.0 ) then
299 write (ulsort,texte(langue,1)) 'Sortie', nompro
300 write (ulsort,texte(langue,2)) codret
304 #ifdef _DEBUG_HOMARD_
305 write (ulsort,texte(langue,1)) 'Sortie', nompro