Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utcote.F
1       subroutine utcote ( letetr, bilan,
2      >                    coonoe,
3      >                    somare,
4      >                    aretri,
5      >                    tritet, cotrte, aretet,
6      >                    hettet, filtet,
7      >                    ulsort, langue, codret)
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   UTilitaire - COntroles de TEtraedres
28 c   --           --           --
29 c ______________________________________________________________________
30 c .        .     .        .                                            .
31 c .  nom   . e/s . taille .           description                      .
32 c .____________________________________________________________________.
33 c . letetr . e   .   1    . numero du tetraedre a examiner             .
34 c . bilan  .   s .   1    . 0 : tout va bien                           .
35 c .        .     .        . 1 : probleme                               .
36 c . coonoe . e   . nbnoto . coordonnees des noeuds                     .
37 c .        .     . *sdim  .                                            .
38 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
39 c . aretri . e   .nbtrto*3. numeros des 3 aretes des triangles         .
40 c . tritet . e   .nbtecf*4. numeros des triangles des tetraedres       .
41 c . cotrte . e   .nbtecf*4. codes des triangles des tetraedres         .
42 c . aretet . e   .nbteca*6. numeros des 6 aretes des tetraedres        .
43 c . hettet . e   . nbteto . historique de l'etat des tetraedres        .
44 c . filtet . e   . nbteto . premier fils des tetraedres                .
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 .        .     .        . x : probleme                               .
51 c ______________________________________________________________________
52 c
53 c====
54 c 0. declarations et dimensionnement
55 c====
56 c
57 c 0.1. ==> generalites
58 c
59       implicit none
60       save
61 c
62       character*6 nompro
63       parameter ( nompro = 'UTCOTE' )
64 c
65 #include "nblang.h"
66 c
67 c 0.2. ==> communs
68 c
69 #include "envex1.h"
70 c
71 #include "envca1.h"
72 #include "nombno.h"
73 #include "nombar.h"
74 #include "nombtr.h"
75 #include "nombte.h"
76 #include "impr02.h"
77 c
78 c 0.3. ==> arguments
79 c
80       integer letetr, bilan
81       integer somare(2,nbarto)
82       integer aretri(nbtrto,3)
83       integer tritet(nbtecf,4), cotrte(nbtecf,4), aretet(nbteca,6)
84       integer hettet(nbteto)
85       integer filtet(nbteto)
86 c
87       double precision coonoe(nbnoto,sdim)
88 c
89       integer ulsort, langue, codret
90 c
91 c 0.4. ==> variables locales
92 c
93       integer iaux, jaux
94       integer nbfils
95       integer freain, etat
96 c
97       double precision prmixt, prmixf
98 c
99       integer nbmess
100       parameter ( nbmess = 10 )
101       character*80 texte(nblang,nbmess)
102 c
103 c 0.5. ==> initialisations
104 c ______________________________________________________________________
105 c
106 c====
107 c 1. messages
108 c====
109 c
110       codret = 0
111 c
112 #include "impr01.h"
113 c
114 #ifdef _DEBUG_HOMARD_
115       write (ulsort,texte(langue,1)) 'Entree', nompro
116       call dmflsh (iaux)
117 #endif
118 c
119       texte(1,4) = '(''.. Examen du '',a,i10)'
120       texte(1,5) = '(''.. Le '',a,i10,'' est actif.'')'
121 c
122       texte(2,4) = '(''.. Examination of '',a,'' # '',i10)'
123       texte(2,5) = '(''.. The '',a,'' # '',i10,'' is active.'')'
124 c
125 #include "impr03.h"
126 c
127 c====
128 c 2. Controle du tetraedre
129 c    Le tetraedre et ses fils doivent avoir la meme orientation,
130 c    sinon c'est que un des noeuds a traverse le bord
131 c====
132 #ifdef _DEBUG_HOMARD_
133       write (ulsort,*) '2. Controle tetraedre ; codret = ', codret
134 #endif
135 c
136 #ifdef _DEBUG_HOMARD_
137       write (ulsort,texte(langue,4)) mess14(langue,1,3), letetr
138 #endif
139 c
140       etat = mod(hettet(letetr),100)
141 cgn      write (ulsort,90002) 'etat', etat
142 c
143       if ( etat.eq.0 ) then
144 c
145         codret = 1
146 c
147       else
148 c
149         bilan = 0
150 c
151 c 2.1. ==> Produit mixte du tetraedre
152 c
153 #ifdef _DEBUG_HOMARD_
154       write (ulsort,texte(langue,3)) 'UTPMTE', nompro
155 #endif
156         call utpmte ( letetr, prmixt,
157      >                coonoe, somare, aretri,
158      >                tritet, cotrte, aretet )
159 cgn      write(ulsort,*) letetr,prmixt
160 c
161 c 2.2. ==> Les fils
162 c
163         if ( etat.le.26 ) then
164           nbfils = 1
165         elseif ( etat.le.47 ) then
166           nbfils = 3
167         else
168           nbfils = 7
169         endif
170 cgn      write(ulsort,*) '   ',etat
171         freain = filtet(letetr)
172         do 221 , iaux = freain , freain+nbfils
173           jaux = iaux
174           call utpmte ( jaux, prmixf,
175      >                  coonoe, somare, aretri,
176      >                  tritet, cotrte, aretet )
177 cgn      write(ulsort,*) '   ',iaux,prmixf
178           if ( prmixt*prmixf.le.0.d0 ) then
179             bilan = 1
180             goto 29
181           endif
182   221   continue
183 c
184       endif
185 c
186    29 continue
187 c
188 c====
189 c 3. La fin
190 c====
191 c
192       if ( codret.ne.0 ) then
193 c
194 #include "envex2.h"
195 c
196       write (ulsort,texte(langue,1)) 'Sortie', nompro
197       write (ulsort,texte(langue,2)) codret
198       write (ulsort,texte(langue,5)) mess14(langue,1,3), letetr
199 c
200       endif
201 c
202 #ifdef _DEBUG_HOMARD_
203       write (ulsort,texte(langue,1)) 'Sortie', nompro
204       call dmflsh (iaux)
205 #endif
206 c
207       end