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