Salome HOME
Homard executable
[modules/homard.git] / src / tool / Decision / deisv3.F
1       subroutine deisv3 ( laface, tyface,
2      >                    hettri, filtri,
3      >                    hetqua, filqua,
4      >                    lgpile, tabent,
5      >                    ulsort, langue, codret )
6 c ______________________________________________________________________
7 c
8 c                             H O M A R D
9 c
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c
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
17 c
18 c    HOMARD est une marque deposee d'Electricite de France
19 c
20 c Copyright EDF 1996
21 c Copyright EDF 1998
22 c Copyright EDF 2002
23 c Copyright EDF 2020
24 c ______________________________________________________________________
25 c
26 c    traitement des DEcisions - Initialisations - par Saut - Volumes - 1
27 c                   --          -                     -      -         -
28 c ______________________________________________________________________
29 c .        .     .        .                                            .
30 c .  nom   . e/s . taille .           description                      .
31 c .____________________________________________________________________.
32 c . laface . e   .   1    . numero de la face a traiter                .
33 c . tyface . e   .   1    . type de la face a traiter                  .
34 c . hettri . e   . nbtrto . historique de l'etat des triangles         .
35 c . filtri . e   . nbtrto . premier fils des triangles                 .
36 c . hetqua . e   . nbquto . historique de l'etat des quadrangles       .
37 c . filqua . e   . nbquto . fils des quadrangles                       .
38 c . lgpile .  s  .   1    . longueur de la pile                        .
39 c . tabent .  s  .  (2,*) . tabent(1,i) = numero de la i-eme face      .
40 c .        .     .        . tabent(2,i) = type de la i-eme face        .
41 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
42 c . langue . e   .    1   . langue des messages                        .
43 c .        .     .        . 1 : francais, 2 : anglais                  .
44 c . codret . es  .    1   . code de retour des modules                 .
45 c .        .     .        . 0 : pas de probleme                        .
46 c .        .     .        . 1 : mauvais typenh                         .
47 c ______________________________________________________________________
48 c
49 c====
50 c 0. declarations et dimensionnement
51 c====
52 c
53 c 0.1. ==> generalites
54 c
55       implicit none
56       save
57 c
58       character*6 nompro
59       parameter ( nompro = 'DEISV3' )
60 c
61 #include "nblang.h"
62 c
63 c 0.2. ==> communs
64 c
65 #include "envex1.h"
66 c
67 #include "nombtr.h"
68 #include "nombqu.h"
69 c
70 c 0.3. ==> arguments
71 c
72       integer laface, tyface
73 c
74       integer hettri(nbtrto), filtri(nbtrto)
75       integer hetqua(nbquto), filqua(nbquto)
76       integer lgpile
77       integer tabent(2,*)
78 c
79       integer ulsort, langue, codret
80 c
81 c 0.4. ==> variables locales
82 c
83       integer iaux
84       integer etat, fils
85       integer nupile
86 cgn      integer glop
87 c
88       integer nbmess
89       parameter (nbmess = 10 )
90       character*80 texte(nblang,nbmess)
91 c ______________________________________________________________________
92 c
93 c====
94 c 1. initialisation
95 c====
96 c
97 c 1.1. ==> Les messages
98 c
99 #include "impr01.h"
100 c
101 #ifdef _DEBUG_HOMARD_
102       write (ulsort,texte(langue,1)) 'Entree', nompro
103       call dmflsh (iaux)
104 #endif
105 c
106       texte(1,4) =
107      > ' (''Reperage des faces actives liees a la face'',i10)'
108 c
109       texte(2,4) =
110      > '(''List of the active faces linked to the face #'',i10)'
111 c
112  1000 format ( 'Faces :',10i10)
113 #ifdef _DEBUG_HOMARD_
114       write (ulsort,texte(langue,4)) laface
115 #endif
116 c
117       codret = 0
118 c
119 c====
120 c 2. On stocke les numeros des faces, en descendant les parentes.
121 c    Au final, on stocke la premiere face mere active
122 c====
123 c
124 cgn      glop = 0
125       lgpile = 1
126       tabent(1,lgpile) = laface
127       tabent(2,lgpile) = tyface
128       nupile = 1
129 c
130     2 continue
131 c
132       laface = tabent(1,nupile)
133       tyface = tabent(2,nupile)
134 c
135 cgn      if ( glop.eq.10) then
136 cgn        write(ulsort,*)'..laface = ',laface
137 cgn      endif
138 c
139 c 2.1. ==> reperage du fils selon la face
140 c
141       fils = 0
142       if ( tyface.eq.2 ) then
143         etat = mod(hettri(laface),10)
144         if ( etat.ne.0 ) then
145           fils = filtri(laface)
146         endif
147       else
148         etat = mod(hetqua(laface),100)
149         if ( etat.ne.0 ) then
150           fils = filqua(laface)
151         endif
152       endif
153 c
154 c 2.2. ==> complement dans la pile
155 c
156       if ( fils.ne.0 ) then
157 c
158 cgn        if ( glop.eq.1) then
159 cgn          write(ulsort,*)'..  des fils'
160 cgn        endif
161         do 22 , iaux = 0, 3
162           lgpile = lgpile + 1
163           tabent(1,lgpile) = fils + iaux
164           tabent(2,lgpile) = tyface
165 cgn        if ( glop.eq.1) then
166 cgn          write(ulsort,*)'.... ajout de ',tabent(1,lgpile),
167 cgn     >         ' a la pile'
168 cgn        endif
169    22   continue
170 c
171       endif
172 c
173 c 2.3. ==> suite de l'exploration de la pile
174 c
175       nupile = nupile + 1
176       if ( nupile.le.lgpile ) then
177         goto 2
178       endif
179 #ifdef _DEBUG_HOMARD_
180 cgn        if ( glop.eq.1) then
181 cgn      write (ulsort,1000) (tabent(1,iaux),iaux=1,lgpile)
182 cgn        endif
183 #endif
184 c
185 c====
186 c 3. la fin
187 c====
188 c
189       if ( codret.ne.0 ) then
190 c
191 #include "envex2.h"
192 c
193       write (ulsort,texte(langue,1)) 'Sortie', nompro
194       write (ulsort,texte(langue,2)) codret
195 c
196       endif
197 c
198 #ifdef _DEBUG_HOMARD_
199       write (ulsort,texte(langue,1)) 'Sortie', nompro
200       call dmflsh (iaux)
201 #endif
202 c
203       end