Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utb19c.F
1       subroutine utb19c ( choix, typenh, nbento, nbencf, nbenca,
2      >                    coonoe, somare,
3      >                    aretri, arequa,
4      >                    hetvol, facvol, cofavo, arevol,
5      >                    nbiter, tabaur,
6      >                    ulbila,
7      >                    ulsort, langue, codret )
8 c ______________________________________________________________________
9 c
10 c                             H O M A R D
11 c
12 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
13 c
14 c Version originale enregistree le 18 juin 1996 sous le numero 96036
15 c aupres des huissiers de justice Simart et Lavoir a Clamart
16 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
17 c aupres des huissiers de justice
18 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
19 c
20 c    HOMARD est une marque deposee d'Electricite de France
21 c
22 c Copyright EDF 1996
23 c Copyright EDF 1998
24 c Copyright EDF 2002
25 c Copyright EDF 2020
26 c ______________________________________________________________________
27 c
28 c    UTilitaire - Bilan - option 19 - etape c
29 c    --           -              --         -
30 c ______________________________________________________________________
31 c
32 c but : controle des diametres des volumes
33 c  remarque : utb05c et utb19c sont des clones
34 c ______________________________________________________________________
35 c .        .     .        .                                            .
36 c .  nom   . e/s . taille .           description                      .
37 c .____________________________________________________________________.
38 c . choix  . e   .   1    . choix du traitement                        .
39 c .        .     .        . 0 : creation et affichage des histogrammes .
40 c .        .     .        . 2 : sortie de la qualite des triangles     .
41 c .        .     .        . 3 : sortie de la qualite des tetraedres    .
42 c .        .     .        . 4 : sortie de la qualite des quadrangles   .
43 c .        .     .        . 6 : sortie de la qualite des hexaedres     .
44 c . typenh . e   .    1   . variantes                                  .
45 c .        .     .        .   3 : tetraedres                           .
46 c .        .     .        .   5 : pyramides                            .
47 c .        .     .        .   6 : hexaedres                            .
48 c .        .     .        .   7 : pentaedres                           .
49 c . nbento . e   .    1   . nombre d'entites                           .
50 c . coonoe . e   . nbnoto . coordonnees des noeuds                     .
51 c .        .     . * sdim .                                            .
52 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
53 c . aretri . e   .nbtrto*3. numeros des 3 aretes des triangles         .
54 c . arequa . e   .nbquto*4. numeros des 4 aretes des quadrangles       .
55 c . hetvol . e   . nbento . historique de l'etat des volumes           .
56 c . facvol . e   .nbencf**. numeros des faces des volumes              .
57 c . cofavo . e   .nbencf**. code des faces des volumes                 .
58 c . arevol . e   .nbenca**. code des aretes des volumes                .
59 c . tabaur .  s  .    *   . qualite des entites                        .
60 c . nbiter . e   .   1    . numero de l'iteration courante             .
61 c . ulbila . e   .   1    . unite logique d'ecriture du bilan          .
62 c . ulsort . e   .   1    . unite logique de la sortie generale        .
63 c . langue . e   .    1   . langue des messages                        .
64 c .        .     .        . 1 : francais, 2 : anglais                  .
65 c . codret .  s  .    1   . code de retour des modules                 .
66 c .        .     .        . 0 : pas de probleme                        .
67 c .        .     .        . 1 : probleme                               .
68 c .____________________________________________________________________.
69 c
70 c====
71 c 0. declarations et dimensionnement
72 c====
73 c
74 c 0.1. ==> generalites
75 c
76       implicit none
77       save
78 c
79       character*6 nompro
80       parameter ( nompro = 'UTB19C' )
81 c
82 #include "nblang.h"
83 c
84 c 0.2. ==> communs
85 c
86 #include "envex1.h"
87 c
88 #include "nombno.h"
89 #include "nombar.h"
90 #include "nombtr.h"
91 #include "nombqu.h"
92 #include "nombte.h"
93 #include "nombhe.h"
94 #include "nombpe.h"
95 #include "nombpy.h"
96 #include "envca1.h"
97 #include "infini.h"
98 #include "impr02.h"
99 c
100 c 0.3. ==> arguments
101 c
102       double precision coonoe(nbnoto,sdim)
103       double precision tabaur(*)
104 c
105       integer choix, typenh, nbento, nbencf, nbenca
106 c
107       integer somare(2,nbarto)
108       integer aretri(nbtrto,3), arequa(nbquto,4)
109       integer hetvol(nbento)
110       integer facvol(nbencf,*), cofavo(nbencf,*), arevol(nbenca,*)
111       integer nbiter
112 c
113       integer ulbila
114       integer ulsort, langue, codret
115 c
116 c 0.4. ==> variables locales
117 c
118       integer iaux, jaux
119       integer nbvoto
120       integer nbeexa
121       integer nbqinf
122       integer tbiau2(1)
123 c
124       double precision daux
125       double precision dauxmi, dauxma
126       double precision tbdaux(1)
127 c
128       integer nbmess
129       parameter (nbmess = 10 )
130       character*80 texte(nblang,nbmess)
131 c
132 c 0.5. ==> initialisations
133 c ______________________________________________________________________
134 c
135 c====
136 c 1. titre
137 c====
138 c
139 #include "impr01.h"
140 c
141 #ifdef _DEBUG_HOMARD_
142       write (ulsort,texte(langue,1)) 'Entree', nompro
143       call dmflsh (iaux)
144 #endif
145 c
146       texte(1,4) = '(''. Pour les '',a)'
147       texte(1,5) = '(''Diametre '',a,'' des '',a,'' : '',g12.5)'
148       texte(1,6) = '(''Type d''''entite inconnu :'',i10)'
149       texte(1,7) = '(''Nombre d''''entites examinees :'',i10)'
150 c
151       texte(2,4) = '(''. For '',a)'
152       texte(2,5) = '(''Diameter '',a,'' of '',a,'' : '',g12.5)'
153       texte(2,6) = '(''Unknown entity type :'',i10)'
154       texte(2,7) = '(''Number of examined entities :'',i10)'
155 c
156 #ifdef _DEBUG_HOMARD_
157       write (ulsort,texte(langue,4)) mess14(langue,3,typenh)
158 #endif
159 c
160       codret = 0
161 c
162       nbvoto = nbteto + nbpyto + nbheto + nbpeto
163 c
164       dauxmi = vinfpo
165       dauxma = vinfne
166 c
167       nbeexa = 0
168       nbqinf = 0
169 c
170 c====
171 c 2. tetraedres
172 c===
173 c
174       if ( typenh.eq.3 ) then
175 c
176         do 21 , iaux = 1 , nbteto
177 c
178           if ( mod(hetvol(iaux),100).eq.0 ) then
179 c
180             nbeexa = nbeexa + 1
181 c
182             jaux = iaux
183 #ifdef _DEBUG_HOMARD_
184       write (ulsort,texte(langue,3)) 'UTDTET', nompro
185 #endif
186             call utdtet ( jaux, daux,
187      >                    coonoe, somare, aretri,
188      >                    facvol, cofavo, arevol )
189 c
190             tabaur(nbeexa) = daux
191 c
192             dauxmi = min ( dauxmi, daux )
193             dauxma = max ( dauxma, daux )
194 c
195           endif
196 c
197    21   continue
198 c
199 c====
200 c 3. pyramides
201 c====
202 c
203       elseif ( typenh.eq.5 ) then
204 c
205         do 31 , iaux = 1 , nbpyto
206 c
207           if ( mod(hetvol(iaux),100).eq.0 ) then
208 c
209             nbeexa = nbeexa + 1
210 c
211             jaux = iaux
212 #ifdef _DEBUG_HOMARD_
213       write (ulsort,texte(langue,3)) 'UTDPYR', nompro
214 #endif
215             call utdpyr ( jaux, daux,
216      >                    coonoe, somare, aretri,
217      >                    facvol, cofavo, arevol )
218 c
219             tabaur(nbeexa) = daux
220 c
221             dauxmi = min ( dauxmi, daux )
222             dauxma = max ( dauxma, daux )
223 c
224           endif
225 c
226    31   continue
227 c
228 c====
229 c 4. hexaedres
230 c====
231 c
232       elseif ( typenh.eq.6 ) then
233 c
234         do 41 , iaux = 1 , nbheto
235 c
236           if ( mod(hetvol(iaux),100).eq.0 ) then
237 c
238             nbeexa = nbeexa + 1
239 c
240             jaux = iaux
241 #ifdef _DEBUG_HOMARD_
242       write (ulsort,texte(langue,3)) 'UTDHEX', nompro
243 #endif
244             call utdhex ( jaux, daux,
245      >                    coonoe, somare, arequa,
246      >                    facvol, cofavo, arevol )
247 c
248             tabaur(nbeexa) = daux
249 c
250             dauxmi = min ( dauxmi, daux )
251             dauxma = max ( dauxma, daux )
252 c
253           endif
254 c
255    41   continue
256 c
257 c====
258 c 5. pentaedres
259 c====
260 c
261       elseif ( typenh.eq.7 ) then
262 c
263         do 51 , iaux = 1 , nbpeto
264 c
265           if ( mod(hetvol(iaux),100).eq.0 ) then
266 c
267             nbeexa = nbeexa + 1
268 c
269             jaux = iaux
270 #ifdef _DEBUG_HOMARD_
271       write (ulsort,texte(langue,3)) 'UTDPEN', nompro
272 #endif
273             call utdpen ( jaux, daux,
274      >                    coonoe, somare, arequa,
275      >                    facvol, cofavo, arevol )
276 c
277             tabaur(nbeexa) = daux
278 c
279             dauxmi = min ( dauxmi, daux )
280             dauxma = max ( dauxma, daux )
281 c
282           endif
283 c
284    51   continue
285 c
286 c====
287 c 6. probleme
288 c====
289 c
290       else
291 c
292         write (ulsort,texte(langue,6)) typenh
293         codret = 1
294 c
295       endif
296 c
297 #ifdef _DEBUG_HOMARD_
298       if ( codret.eq.0 ) then
299       write (ulsort,texte(langue,5)) 'min',
300      >                               mess14(langue,3,typenh), dauxmi
301       write (ulsort,texte(langue,5)) 'max',
302      >                               mess14(langue,3,typenh), dauxma
303       write (ulsort,texte(langue,7)) nbeexa
304       endif
305 #endif
306 c
307 c====
308 c 7. impression sur la sortie standard et sur un fichier a exploiter
309 c    par xmgrace
310 c====
311 c
312       if ( codret.eq.0 ) then
313 c
314       if ( choix.eq.0 ) then
315 c
316         if ( nbeexa.gt.0 ) then
317 c
318           iaux = 0
319 c
320 #ifdef _DEBUG_HOMARD_
321           write (ulsort,texte(langue,3)) 'UTB05B', nompro
322 #endif
323           call utb05b ( iaux, typenh, nbeexa, tabaur, tbdaux,
324      >                  nbiter, rafdef, nbvoto,
325      >                  tbiau2,
326      >                  ulbila,
327      >                  ulsort, langue, codret )
328 c
329         endif
330 c
331       endif
332 c
333       endif
334 c
335 c====
336 c 8. la fin
337 c====
338 c
339       if ( codret.ne.0 ) then
340 c
341 #include "envex2.h"
342 c
343       write (ulsort,texte(langue,1)) 'Sortie', nompro
344       write (ulsort,texte(langue,2)) codret
345 c
346       endif
347 c
348 #ifdef _DEBUG_HOMARD_
349       write (ulsort,texte(langue,1)) 'Sortie', nompro
350       call dmflsh (iaux)
351 #endif
352 c
353       end