Salome HOME
Merge branch 'vsr/evol_01_fixes'
[modules/homard.git] / src / tool / Suivi_Frontiere / sfbatr.F
1       subroutine sfbatr ( lenoeu, larete, letria,
2      >                    somare,
3      >                    facare, posifa,
4      >                    hettri, aretri, filtri,
5      >                    ulsort, langue, codret )
6 c ______________________________________________________________________
7 c                             H O M A R D
8 c
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c
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
16 c
17 c    HOMARD est une marque deposee d'Electricite de France
18 c
19 c Copyright EDF 1996
20 c Copyright EDF 1998
21 c Copyright EDF 2002
22 c Copyright EDF 2020
23 c ______________________________________________________________________
24 c
25 c   Suivi de Frontiere - Bascule d'Arete pour un TRiangle
26 c   -        -           -         -             --
27 c ______________________________________________________________________
28 c .        .     .        .                                            .
29 c .  nom   . e/s . taille .           description                      .
30 c .____________________________________________________________________.
31 c . lenoeu . e   .    1   . noeud en cours d'examen                    .
32 c . larete . e   .    1   . arete en cours d'examen                    .
33 c . letria . e   .    1   . triangle en cours d'examen                 .
34 c . somare . es  .2*nbarto. numeros des extremites d'arete             .
35 c . facare . e   . nbfaar . liste des faces contenant une arete        .
36 c . posifa . e   . nbarto . pointeur sur tableau facare                .
37 c . hettri . es  . nbtrto . historique de l'etat des triangles         .
38 c . aretri . es  .nbtrto*3. numeros des 3 aretes des triangles         .
39 c . filtri . e   . nbtrto . premier fils des triangles                 .
40 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
41 c . langue . e   .    1   . langue des messages                        .
42 c .        .     .        . 1 : francais, 2 : anglais                  .
43 c . codret . es  .    1   . code de retour des modules                 .
44 c .        .     .        . 0 : pas de probleme                        .
45 c .        .     .        . x : probleme                               .
46 c ______________________________________________________________________
47 c
48 c====
49 c 0. declarations et dimensionnement
50 c====
51 c
52 c 0.1. ==> generalites
53 c
54       implicit none
55       save
56 c
57       character*6 nompro
58       parameter ( nompro = 'SFBATR' )
59 c
60 #include "nblang.h"
61 c
62 c 0.2. ==> communs
63 c
64 #include "envex1.h"
65 #include "impr02.h"
66 c
67 #include "nombar.h"
68 #include "nombtr.h"
69 c
70 c 0.3. ==> arguments
71 c
72       integer lenoeu, larete, letria
73 c
74       integer somare(2,nbarto)
75       integer posifa(0:nbarto), facare(nbfaar)
76       integer hettri(nbtrto), aretri(nbtrto,3), filtri(nbtrto)
77 c
78       integer ulsort, langue, codret
79 c
80 c 0.4. ==> variables locales
81 c
82       integer iaux
83 c
84       integer sn
85       integer arep
86       integer inloc,  iploc,  iqloc
87 c
88       integer nbmess
89       parameter ( nbmess = 10 )
90       character*80 texte(nblang,nbmess)
91 c
92 c 0.5. ==> initialisations
93 c ______________________________________________________________________
94 c
95 c====
96 c 1. messages
97 c====
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) = '(a,'':'',i10)'
107       texte(1,5) = '(a,'' du triangle'',i10'' :'',3i10)'
108       texte(1,7) = '(''Annulation du SF pour le noeud : '',i10)'
109 c
110       texte(2,4) = '(a,'' # :'',i10)'
111       texte(2,5) = '(a,'' of triangle #'',i10'' :'',3i10)'
112       texte(2,7) = '(''Cancellation of BF for node # : '',i10)'
113 c
114 #ifdef _DEBUG_HOMARD_
115       write (ulsort,texte(langue,4)) mess14(langue,2,-1), lenoeu
116       write (ulsort,texte(langue,4)) mess14(langue,2, 1), larete
117       write (ulsort,texte(langue,4)) mess14(langue,2, 2), letria
118 #endif
119 c
120       codret = 0
121 c
122 c====
123 c 2. Bascule
124 c====
125 c
126 c 2.1. ==> reperage local des aretes
127 c
128       if ( larete.eq.aretri(letria,1) ) then
129         inloc = 1
130         iploc = 2
131         iqloc = 3
132       elseif ( larete.eq.aretri(letria,2) ) then
133         inloc = 2
134         iploc = 3
135         iqloc = 1
136       else
137         inloc = 3
138         iploc = 1
139         iqloc = 2
140       endif
141 c
142 c 2.2. ==> reperage local des sommets
143 c
144       arep = aretri(letria,iploc)
145 c
146       if ( somare(1,larete).eq.somare(1,arep) ) then
147         sn = somare(2,arep)
148       elseif ( somare(1,larete).eq.somare(2,arep) ) then
149         sn = somare(1,arep)
150       elseif ( somare(2,larete).eq.somare(1,arep) ) then
151         sn = somare(2,arep)
152       else
153         sn = somare(1,arep)
154       endif
155 c
156 c 2.3. ==> Programme specifique
157 c
158 #ifdef _DEBUG_HOMARD_
159       write (ulsort,texte(langue,3)) 'SFBATT', nompro
160 #endif
161       call sfbatt ( lenoeu, sn, letria,
162      >              inloc, iploc, iqloc,
163      >              somare, facare, posifa,
164      >              filtri, aretri, hettri )
165 c
166 c====
167 c 3. la fin
168 c====
169 c
170       if ( codret.ne.0 ) then
171 c
172 #include "envex2.h"
173 c
174       write (ulsort,texte(langue,1)) 'Sortie', nompro
175       write (ulsort,texte(langue,2)) codret
176 c
177       endif
178 c
179 #ifdef _DEBUG_HOMARD_
180       write (ulsort,texte(langue,1)) 'Sortie', nompro
181       call dmflsh (iaux)
182 #endif
183 c
184       end