1 subroutine sffaff ( suifro,
2 > ncafdg, ncafan, ncfgnf, ncfgng, ncafar,
4 > ulsort, langue, codret )
5 c ______________________________________________________________________
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c Suivi de Frontiere - Frontieres AFFichage
27 c ______________________________________________________________________
29 c . nom . e/s . taille . description .
30 c .____________________________________________________________________.
31 c . suifro . e . 1 . 1 : pas de suivi de frontiere .
32 c . . . . 2x : frontiere discrete .
33 c . . . . 3x : frontiere analytique .
34 c . . . . 5x : frontiere cao .
35 c . ncafdg . e . char*8 . nom de l'objet des frontieres discretes/CAO.
36 c . . . . nom des groupes .
37 c . ncafan . e . char*8 . nom de l'objet des frontieres analytiques :.
38 c . . . . nom des groupes .
39 c . ncfgnf . es . char*8 . lien frontiere/groupe : nom des frontieres .
40 c . ncfgng . e . char*8 . lien frontiere/groupe : nom des groupes .
41 c . ncafar . e . char*8 . nom de l'objet des frontieres analytiques :.
42 c . . . . valeurs reelles .
43 c . nhsupe . e . char*8 . informations supplementaires maillage .
44 c . nhsups . e . char*8 . informations supplementaires maillage .
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 . . . . en entree = celui du module d'avant .
50 c . . . . en sortie = celui du module en cours .
51 c . . . . 0 : pas de probleme .
52 c . . . . 1 : manque de temps cpu .
53 c . . . . 2x : probleme dans les memoires .
54 c . . . . 2x : probleme dans les fichiers .
55 c . . . . 5 : mauvaises options .
56 c . . . . 6 : problemes dans les noms d'objet .
57 c ______________________________________________________________________
60 c 0. declarations et dimensionnement
63 c 0.1. ==> generalites
69 parameter ( nompro = 'SFFAFF' )
86 character*8 ncafdg, ncafan, ncfgnf, ncfgng, ncafar
87 character*8 nhsupe, nhsups
89 integer ulsort, langue, codret
91 c 0.4. ==> variables locales
93 integer iaux, jaux, kaux
95 integer adcafr, adfrgr, adnogr
96 integer pttgrd, ptngrd, pointd
97 integer adcpoi, adctai, adctab
98 integer adfpoi, adftai, adftab
99 integer adgpoi, adgtai, adgtab
100 integer nbfrdc, nbfrgr, nbfran
103 integer codre1, codre2, codre3
106 parameter ( nbmess = 10 )
107 character*80 texte(nblang,nbmess)
109 c 0.5. ==> initialisations
110 c ______________________________________________________________________
118 #ifdef _DEBUG_HOMARD_
119 write (ulsort,texte(langue,1)) 'Entree', nompro
123 texte(1,6) = '(''Nombre de frontieres discretes :'',i8)'
124 texte(1,7) = '(''Nombre de liens frontiere/groupe :'',i8)'
125 texte(1,8) = '(''Nombre de frontieres analytiques :'',i8)'
127 texte(2,6) = '(''Number of discrete boundaries :'',i8)'
128 texte(2,7) = '(''Number of links boundary/group :'',i8)'
129 texte(2,8) = '(''Number of analytical boundaries:'',i8)'
133 #ifdef _DEBUG_HOMARD_
134 write (ulsort,90002) 'suifro', suifro
138 c 2. Les frontieres discretes
140 #ifdef _DEBUG_HOMARD_
141 write (ulsort,90002) '2. Fr. discretes ; codret', codret
144 if ( ( mod(suifro,2).eq.0 ) .and.
145 > ( nbiter.eq.0 ) ) then
147 c 2.1. ==> Combien de frontieres discretes
149 #ifdef _DEBUG_HOMARD_
150 call gmprsx (nompro, ncafdg )
153 if ( codret.eq.0 ) then
155 call gmliat ( ncafdg, 1, nbfrdc, codret )
159 #ifdef _DEBUG_HOMARD_
160 write (ulsort,texte(langue,6)) nbfrdc
163 c 2.2. ==> Affichage des frontieres discretes
165 if ( nbfrdc.gt.0 ) then
167 if ( codret.eq.0 ) then
169 #ifdef _DEBUG_HOMARD_
170 call gmprsx(nompro,ncafdg//'.Pointeur')
171 call gmprsx(nompro,ncafdg//'.Taille')
172 call gmprsx(nompro,ncafdg//'.Table')
175 #ifdef _DEBUG_HOMARD_
176 write (ulsort,texte(langue,3)) 'UTADPT', nompro
178 call utadpt ( ncafdg, iaux,
180 > pointd, pttgrd, ptngrd,
181 > ulsort, langue, codret )
185 if ( codret.eq.0 ) then
186 #ifdef _DEBUG_HOMARD_
187 write (ulsort,texte(langue,3)) 'SFFAF1', nompro
189 call sffaf1 ( nbfrdc,
190 > imem(pointd), imem(pttgrd), smem(ptngrd),
191 > ulsort, langue, codret )
200 c 3. Les frontieres analytiques
202 #ifdef _DEBUG_HOMARD_
203 write (ulsort,90002) '3. Fr. analytiques; codret', codret
206 if ( ( mod(suifro,3).eq.0 ) .and.
207 > ( nbiter.eq.0 ) ) then
209 c 3.1. ==> Combien de liens frontiere/groupe ?
211 cgn call gmprsx (nompro,ncfgng )
213 if ( codret.eq.0 ) then
215 call gmliat ( ncfgnf, 1, nbfrgr, codret )
219 #ifdef _DEBUG_HOMARD_
220 write (ulsort,texte(langue,7)) nbfrgr
223 if ( nbfrgr.gt.0 ) then
225 c 3.2. ==> Description des noms des frontieres dans les liens
227 if ( codret.eq.0 ) then
229 cgn call gmprsx (nompro,ncfgnf//'.Pointeur' )
230 cgn call gmprsx (nompro,ncfgnf//'.Table' )
231 cgn call gmprsx (nompro,ncfgnf//'.Taille' )
233 #ifdef _DEBUG_HOMARD_
234 write (ulsort,texte(langue,3)) 'UTADPT', nompro
236 call utadpt ( ncfgnf, iaux,
238 > adfpoi, adftai, adftab,
239 > ulsort, langue, codret )
243 c 3.3. ==> Description des noms des groupes dans les liens
245 if ( codret.eq.0 ) then
246 cgn call gmprsx (nompro,ncfgng//'.Pointeur' )
247 cgn call gmprsx (nompro,ncfgng//'.Table' )
248 cgn call gmprsx (nompro,ncfgng//'.Taille' )
250 #ifdef _DEBUG_HOMARD_
251 write (ulsort,texte(langue,3)) 'UTADPT', nompro
253 call utadpt ( ncfgng, iaux,
255 > adgpoi, adgtai, adgtab,
256 > ulsort, langue, codret )
260 c 3.4. ==> Description des frontieres
262 #ifdef _DEBUG_HOMARD_
263 call gmprsx (nompro, ncafar )
266 if ( codret.eq.0 ) then
268 call gmadoj ( ncafar, adcafr, iaux, codret )
272 if ( codret.eq.0 ) then
273 #ifdef _DEBUG_HOMARD_
274 call gmprsx(nompro,ncafan//'.Pointeur')
275 call gmprsx(nompro,ncafan//'.Taille')
276 call gmprsx(nompro,ncafan//'.Table')
280 #ifdef _DEBUG_HOMARD_
281 write (ulsort,texte(langue,3)) 'UTADPT', nompro
283 call utadpt ( ncafan, iaux,
285 > adcpoi, adctai, adctab,
286 > ulsort, langue, codret )
287 #ifdef _DEBUG_HOMARD_
288 write (ulsort,texte(langue,8)) nbfran
293 c 3.5. ==> Affichage des frontieres analytiques
295 if ( codret.eq.0 ) then
297 #ifdef _DEBUG_HOMARD_
298 write (ulsort,texte(langue,3)) 'SFFAF2', nompro
300 call sffaf2 ( nbfrgr, nbfran,
302 > imem(adcpoi), imem(adctai), smem(adctab),
303 > imem(adfpoi), imem(adftai), smem(adftab),
304 > imem(adgpoi), imem(adgtai), smem(adgtab),
305 > ulsort, langue, codret )
314 c 4. Les frontieres CAO
316 #ifdef _DEBUG_HOMARD_
317 write (ulsort,90002) '4. frontieres CAO ; codret', codret
320 if ( ( mod(suifro,5).eq.0 ) .or.
321 > ( nbiter.ge.1 ) ) then
323 c 4.1. ==> Combien de frontieres ?
325 #ifdef _DEBUG_HOMARD_
326 call gmprsx (nompro, nhsupe//'.Tab10' )
327 call gmprsx (nompro, nhsups//'.Tab10' )
330 if ( codret.eq.0 ) then
332 call gmadoj ( nhsupe//'.Tab10', adfrgr, iaux, codre1 )
333 call gmadoj ( nhsups//'.Tab10', adnogr, iaux, codre2 )
334 call gmliat ( nhsupe, 10, nbfrgr, codre3 )
336 codre0 = min ( codre1, codre2, codre3 )
337 codret = max ( abs(codre0), codret,
338 > codre1, codre2, codre3 )
342 #ifdef _DEBUG_HOMARD_
343 write (ulsort,texte(langue,7)) nbfrgr
346 c 4.2. ==> Affichage des frontieres
348 if ( nbfrgr.gt.0 ) then
350 if ( codret.eq.0 ) then
351 #ifdef _DEBUG_HOMARD_
352 write (ulsort,texte(langue,3)) 'SFFAF3', nompro
354 call sffaf3 ( nbfrgr, imem(adfrgr), smem(adnogr),
355 > ulsort, langue, codret )
367 if ( codret.ne.0 ) then
371 write (ulsort,texte(langue,1)) 'Sortie', nompro
372 write (ulsort,texte(langue,2)) codret
376 #ifdef _DEBUG_HOMARD_
377 write (ulsort,texte(langue,1)) 'Sortie', nompro