Salome HOME
Homard executable
[modules/homard.git] / src / tool / Decision / delis1.F
1       subroutine delis1 ( option,
2      >                    decare, decfac,
3      >                    posifa, facare, hetare, merare,
4      >                    hettri, nivtri,
5      >                    hetqua, nivqua,
6      >                    ulsort, langue, codret )
7 c ______________________________________________________________________
8 c
9 c                             H O M A R D
10 c
11 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
12 c
13 c Version originale enregistree le 18 juin 1996 sous le numero 96036
14 c aupres des huissiers de justice Simart et Lavoir a Clamart
15 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
16 c aupres des huissiers de justice
17 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
18 c
19 c    HOMARD est une marque deposee d'Electricite de France
20 c
21 c Copyright EDF 1996
22 c Copyright EDF 1998
23 c Copyright EDF 2002
24 c Copyright EDF 2020
25 c ______________________________________________________________________
26 c
27 c traitement des DEcisions - LISte des decisions - 1
28 c                --          ---                   -
29 c     On utilise ce programme de debogage en modifiant le
30 c     contenu des tableaux lisare et listri.
31 c     Remarque : Les appels ont lieu seulement en mode DEBUG
32 c ______________________________________________________________________
33 c .        .     .        .                                            .
34 c .  nom   . e/s . taille .           description                      .
35 c .____________________________________________________________________.
36 c . option . e   .   1    . x2 : affichage total                       .
37 c .        .     .        . x3 : les mailles a raffiner                .
38 c .        .     .        . x5 : les mailles a reactiver               .
39 c . decare . e   . nbarto . decisions des aretes                       .
40 c . decfac . e   . -nbquto. decision sur les faces (quad. + tri.)      .
41 c .        .     . :nbtrto.                                            .
42 c . posifa . e   . nbarto . pointeur sur tableau facare                .
43 c . facare . e   . nbfaar . liste des faces contenant une arete        .
44 c . hetare . e   . nbarto . historique de l'etat des aretes            .
45 c . merare . e   . nbarto . mere des aretes                            .
46 c . hettri . e   . nbtrto . historique de l'etat des triangles         .
47 c . nivtri . e   . nbtrto . niveau des triangles                       .
48 c . hetqua . e   . nbquto . historique de l'etat des quadrangles       .
49 c . nivqua . e   . nbquto . niveau des quadrangles                     .
50 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
51 c . langue . e   .    1   . langue des messages                        .
52 c .        .     .        . 1 : francais, 2 : anglais                  .
53 c . codret . es  .    1   . code de retour des modules                 .
54 c .        .     .        . 0 : pas de probleme                        .
55 c .        .     .        . sinon, probleme                            .
56 c ______________________________________________________________________
57 c
58 c====
59 c 0. declarations et dimensionnement
60 c====
61 c
62 c 0.1. ==> generalites
63 c
64       implicit none
65       save
66 c
67       character*6 nompro
68       parameter ( nompro = 'DELIS1' )
69 c
70 #include "nblang.h"
71 c
72 c 0.2. ==> communs
73 c
74 #include "envex1.h"
75 c
76 #include "nombar.h"
77 #include "nombtr.h"
78 #include "nombqu.h"
79 c
80 c 0.3. ==> arguments
81 c
82       integer option
83       integer decfac(-nbquto:nbtrto)
84       integer decare(0:nbarto)
85       integer posifa(0:nbarto), facare(nbfaar)
86       integer hetare(nbarto), merare(nbarto)
87       integer hettri(nbtrto), nivtri(nbtrto)
88       integer hetqua(nbquto), nivqua(nbquto)
89 c
90       integer ulsort, langue, codret
91 c
92 c 0.4. ==> variables locales
93 c
94       integer iaux, jaux
95 c
96       integer nbrqua, nbrtri, nbrare
97 c
98       integer nbrq, nbrt, nbra
99       parameter ( nbrq = 1 )
100       parameter ( nbrt = 1 )
101       parameter ( nbra = 1 )
102 c
103       integer lisqua(nbrt)
104       integer listri(nbrt)
105       integer lisare(nbra)
106 c
107       logical toutqu, touttr, toutar
108 c
109       integer nbmess
110       parameter ( nbmess = 10 )
111       character*80 texte(nblang,nbmess)
112 c
113 c 0.5. ==> initialisations
114 c
115       data lisqua /
116      >  1
117      >/
118 c
119       data listri /
120      >  1
121      >/
122 c
123       data lisare /
124      >  1
125      >/
126 c
127       data toutqu / .true. /
128       data touttr / .true. /
129       data toutar / .true. /
130 c ______________________________________________________________________
131 c
132 c====
133 c 1. initialisations
134 c====
135 c
136 #include "impr01.h"
137 c
138 #ifdef _DEBUG_HOMARD_
139       write (ulsort,texte(langue,1)) 'Entree', nompro
140       call dmflsh (iaux)
141 #endif
142 c
143 #include "impr03.h"
144 c
145 #ifdef _DEBUG_HOMARD_
146       write(ulsort,90002) 'option', option
147 #endif
148 c
149       codret = 0
150 c
151 c 1.2. ==> On fait une fausse utilisation des variables pour
152 c     eviter des messages de ftnchek
153 c
154       iaux = posifa(0)
155       iaux = max(iaux,facare(1))
156       iaux = max(iaux,hetare(1))
157       iaux = max(iaux,abs(merare(1)))
158 c
159 c====
160 c 2. les triangles
161 c====
162 #ifdef _DEBUG_HOMARD_
163       write(ulsort,99001) 'touttr', touttr
164       write(ulsort,90002) 'nbtrto', nbtrto
165       write(ulsort,90002) 'nbrt  ', nbrt
166 #endif
167 c
168       if ( nbtrto.ne.0 ) then
169 c
170       if ( touttr ) then
171         nbrtri = nbtrto
172       else
173         nbrtri = min(nbrt,nbtrto)
174       endif
175 c
176       if ( mod(option,2).eq.0 ) then
177 c
178 20000 format (
179      > //,'decisions sur les triangles',/,
180      > '   Triangle! Dec ! Etat ! Niv.')
181 21000 format (i10,' ! ',i3,' ! ',i4,' ! ',i2)
182 c
183       write (ulsort,20000)
184 c
185 cc      do 21 , iaux = 1 , nbrtri
186 cc        listri(iaux) = iaux
187 cc   21 continue
188 c
189       do 221 , iaux = 1 , nbrtri
190         if ( touttr ) then
191           jaux = iaux
192         else
193           jaux = listri(iaux)
194         endif
195         write (ulsort,21000) jaux, decfac(jaux),
196      >  hettri(jaux), nivtri(jaux)
197   221 continue
198 c
199       endif
200 c
201       if ( mod(option,3).eq.0 ) then
202 c
203       do 222 , iaux = 1 , nbrtri
204         if ( touttr ) then
205           jaux = iaux
206         else
207           jaux = listri(iaux)
208         endif
209         if ( decfac(jaux).eq.2 ) then
210           write(ulsort,90015) 'Triangle', jaux, ' a decouper'
211         endif
212   222 continue
213 c
214       endif
215 c
216       if ( mod(option,5).eq.0 ) then
217 c
218       do 223 , iaux = 1 , nbrtri
219         if ( touttr ) then
220           jaux = iaux
221         else
222           jaux = listri(iaux)
223         endif
224         if ( decfac(jaux).eq.-1 ) then
225           write(ulsort,90015) 'Triangle', jaux, ' a reactiver'
226         endif
227   223 continue
228 c
229       endif
230 c
231       endif
232 c
233 c====
234 c 3. les quadrangles
235 c====
236 #ifdef _DEBUG_HOMARD_
237       write(ulsort,99001) 'toutqu', toutqu
238       write(ulsort,90002) 'nbquto', nbquto
239       write(ulsort,90002) 'nbrq  ', nbrq
240 #endif
241 c
242       if ( nbquto.ne.0 ) then
243 c
244       if ( toutqu ) then
245         nbrqua = nbquto
246       else
247         nbrqua = min(nbrq,nbquto)
248       endif
249 c
250       if ( mod(option,2).eq.0 ) then
251 c
252 30000 format (
253      > //,'decisions sur les quadrangles',/,
254      > ' quadrangle! Dec ! Etat ! Niv.')
255 31000 format (i10,' ! ',i3,' ! ',i4,' ! ',i2)
256
257       write (ulsort,30000)
258 c
259 cc      do 31 , iaux = 1 , nbrqua
260 cc        lisqua(iaux) = iaux
261 cc   31 continue
262 c
263       do 321 , iaux = 1 , nbrqua
264         if ( toutqu ) then
265           jaux = iaux
266         else
267           jaux = lisqua(iaux)
268         endif
269         write (ulsort,31000) jaux, decfac(-jaux),
270      >  hetqua(jaux), nivqua(jaux)
271   321 continue
272 c
273       endif
274 c
275       if ( mod(option,3).eq.0 ) then
276 c
277       do 322 , iaux = 1 , nbrqua
278         if ( toutqu ) then
279           jaux = iaux
280         else
281           jaux = lisqua(iaux)
282         endif
283         if ( decfac(-jaux).eq.2 ) then
284           write(ulsort,90015) 'Quadrangle', jaux,
285      >                        ' a decouper, de niveau', nivqua(jaux)
286         endif
287   322 continue
288 c
289       endif
290 c
291       if ( mod(option,5).eq.0 ) then
292 c
293       do 323 , iaux = 1 , nbrqua
294         if ( toutqu ) then
295           jaux = iaux
296         else
297           jaux = lisqua(iaux)
298         endif
299         if ( decfac(-jaux).eq.-1 ) then
300           write(ulsort,90015) 'Quadrangle', jaux,
301      >                        ' a reactiver, de niveau', nivqua(jaux)
302         endif
303   323 continue
304 c
305       endif
306 c
307       endif
308 c
309 c====
310 c 4. Les aretes
311 c====
312 #ifdef _DEBUG_HOMARD_
313       write(ulsort,99001) 'toutar', toutar
314       write(ulsort,90002) 'nbarto', nbarto
315       write(ulsort,90002) 'nbra  ', nbra
316 #endif
317 c
318       if ( toutar ) then
319         nbrare = nbarto
320       else
321         nbrare = min(nbra,nbarto)
322       endif
323 c
324       if ( mod(option,2).eq.0 ) then
325 c
326 40000 format (//,'decisions sur les aretes',/,
327      > '  Arete  ! Dec ! Etat ')
328 41000 format (i8,' ! ',i3,' ! ',i4)
329 c
330       write (ulsort,40000)
331 c
332 cc      do 41 , iaux = 1 , nbrare
333 cc        lisare(iaux) = iaux
334 cc   41 continue
335 c
336       do 42 , iaux = 1 , nbrare
337         if ( toutar ) then
338           jaux = iaux
339         else
340           jaux = lisare(iaux)
341         endif
342         write (ulsort,41000) jaux, decare(jaux),
343      >  hetare(jaux)
344    42 continue
345 c
346       endif
347 c
348       if ( mod(option,3).eq.0 ) then
349 c
350       do 422 , iaux = 1 , nbrare
351         if ( toutar ) then
352           jaux = iaux
353         else
354           jaux = lisare(iaux)
355         endif
356         if ( decare(jaux).eq.2 ) then
357           write(ulsort,90015) 'Arete', jaux, ' a decouper'
358         endif
359   422 continue
360 c
361       endif
362 c
363       if ( mod(option,5).eq.0 ) then
364 c
365       do 423 , iaux = 1 , nbrare
366         if ( toutar ) then
367           jaux = iaux
368         else
369           jaux = lisare(iaux)
370         endif
371         if ( decare(jaux).eq.-1 ) then
372           write(ulsort,90015) 'Arete', jaux, ' a reactiver'
373         endif
374   423 continue
375 c
376       endif
377 c
378 c====
379 c 4. la fin
380 c====
381 c
382       if ( codret.ne.0 ) then
383 c
384 #include "envex2.h"
385 c
386       write (ulsort,texte(langue,1)) 'Sortie', nompro
387       write (ulsort,texte(langue,2)) codret
388 c
389       endif
390 c
391 #ifdef _DEBUG_HOMARD_
392       write (ulsort,texte(langue,1)) 'Sortie', nompro
393       call dmflsh (iaux)
394 #endif
395 c
396       end