Salome HOME
Homard executable
[modules/homard.git] / src / tool / Decision / deinti.F
1       subroutine deinti ( typenh,
2      >                    usacmp, nbenti, suppor, indica,
3      >                    indtab, tabind,
4      >                    ulsort, langue, codret)
5 c ______________________________________________________________________
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 traitement des DEcisions - INitialisation - Tableau des Indicateurs
26 c                --          --               -           -
27 c ______________________________________________________________________
28 c .        .     .        .                                            .
29 c .  nom   . e/s . taille .           description                      .
30 c .____________________________________________________________________.
31 c . typenh . e   .   1    . type d'entites concernees                  .
32 c .        .     .        . 0 : noeuds                                 .
33 c .        .     .        . 1 : aretes                                 .
34 c .        .     .        . 2 : triangles                              .
35 c .        .     .        . 3 : tetraedres                             .
36 c .        .     .        . 4 : quadrangles                            .
37 c .        .     .        . 5 : pyramides                              .
38 c .        .     .        . 6 : hexaedres                              .
39 c .        .     .        . 7 : pentaedres                             .
40 c . usacmp . e   .   1    . usage des composantes de l'indicateur      .
41 c .        .     .        . 0 : norme L2                               .
42 c .        .     .        . 1 : norme infinie -max des valeurs absolues.
43 c .        .     .        . 2 : valeur relative si une seule composante.
44 c . nbenti . e   .   1    . nombre d'entites pour les entites          .
45 c . suppor . e   . nbenti . support pour les entites                   .
46 c . indica . e   . nbenti . valeurs pour les entites                   .
47 c . indtab . es  .   1    . dernier indice affecte dans tabind         .
48 c . tabind . es  .   *    . tableau de l'indicateur                    .
49 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
50 c . langue . e   .    1   . langue des messages                        .
51 c .        .     .        . 1 : francais, 2 : anglais                  .
52 c . codret . es  .    1   . code de retour des modules                 .
53 c .        .     .        . 0 : pas de probleme                        .
54 c .        .     .        . 2 : probleme dans le traitement            .
55 c .        .     .        . 3 : les seuils sont mal definis            .
56 c .        .     .        . 4 : nombres d'entites incoherents          .
57 c ______________________________________________________________________
58 c
59 c====
60 c 0. declarations et dimensionnement
61 c====
62 c
63 c 0.1. ==> generalites
64 c
65       implicit none
66       save
67 c
68       character*6 nompro
69       parameter ( nompro = 'DEINTI' )
70 c
71 #include "nblang.h"
72 c
73 c 0.2. ==> communs
74 c
75 #include "envex1.h"
76 c
77 #include "impr02.h"
78 c
79 c 0.3. ==> arguments
80 c
81       integer typenh
82       integer usacmp
83       integer nbenti
84       integer suppor(nbenti)
85       integer indtab
86 c
87       double precision indica(nbenti)
88       double precision tabind(*)
89 c
90       integer ulsort, langue, codret
91 c
92 c 0.4. ==> variables locales
93 c
94       integer iaux
95 c
96       integer nbmess
97       parameter (nbmess = 11 )
98       character*80 texte(nblang,nbmess)
99 c ______________________________________________________________________
100 c
101 c====
102 c 1. initialisation
103 c====
104 c
105 c 1.1. ==> Les messages
106 c
107 #include "impr01.h"
108 c
109 #ifdef _DEBUG_HOMARD_
110       write (ulsort,texte(langue,1)) 'Entree', nompro
111       call dmflsh (iaux)
112 #endif
113 c
114       texte(1,4) = '(''Prise en compte des valeurs pour les '',a))'
115       texte(1,5) =
116      >'(''. Nombre d''''entites designees par le support :'',i10)'
117       texte(1,9) = '(''. Norme L2 des composantes.'')'
118       texte(1,10) = '(''. Norme infinie des composantes.'')'
119       texte(1,11) = '(''. Valeur relative de la composante.'')'
120 c
121       texte(2,4) = '(''Values for the '',a))'
122       texte(2,5) =
123      >'(''. Number of entities declared by support of error :'',i10)'
124       texte(2,9) = '(''. L2 norm of components.'')'
125       texte(2,10) = '(''. Infinite norm of components.'')'
126       texte(2,11) = '(''. Relative value for the component.'')'
127 c
128 #ifdef _DEBUG_HOMARD_
129       write (ulsort,texte(langue,4)) mess14(langue,3,typenh)
130 #endif
131 c
132 c====
133 c 2. si on s'interesse a la valeur absolue de l'indicateur d'erreur,
134 c    on remplace sa valeur
135 c====
136 c
137 #ifdef _DEBUG_HOMARD_
138       write (ulsort,texte(langue,9+usacmp))
139 #endif
140 c
141       if ( usacmp.ne.2 ) then
142 c
143         do 21 , iaux = 1, nbenti
144           if ( suppor(iaux).ne.0 ) then
145             indica(iaux) = abs(indica(iaux))
146           endif
147    21   continue
148 c
149       endif
150 c
151 c====
152 c 3. compactage
153 c          le tableau d'indicateur peut comporter des trous. Le tableau
154 c          suppor indique pour chaque entite si elle comporte un
155 c          indicateur d'erreur, 1, ou si c'est sans objet, 0.
156 c          on tasse alors le tableau d'indicateur de indica vers ntrav1
157 c====
158 c
159 #ifdef _DEBUG_HOMARD_
160       write (ulsort,*) '3. compactage, codret = ',codret
161 #endif
162 c
163 c        Exemple :
164 c          numero entite : 1    2    3    4    5    6  ==> nbenti = 6
165 c          indica        : NaN  3.8  4.2  NaN  NaN  2.3
166 c         apres compactage :
167 c          ntrav1        : 3.8  4.2  2.3  NaN  NaN  NaN
168 c          ntrav2        : 2    3    6    NaN  NaN  NaN ==> iaux = 3
169 c
170       if ( codret.eq.0 ) then
171 c
172       do 31 , iaux = 1, nbenti
173         if ( suppor(iaux).ne.0 ) then
174           indtab = indtab + 1
175           tabind(indtab) = indica(iaux)
176         endif
177    31 continue
178 #ifdef _DEBUG_HOMARD_
179       write (ulsort,texte(langue,5)) indtab
180 #endif
181 cgn    write (ulsort, * )'================== indica ========='
182 cgn    write (ulsort, 1401 )(iaux,indica(iaux),iaux=1,nbenti)
183 cgn    write (ulsort, * )'================== suppor ========='
184 cgn    write (ulsort, 1400 )(iaux,suppor(iaux),iaux=1,nbenti)
185 cgn    print * ,'================== ptrav1 ========='
186 cgn    print 1401 ,(iaux,tabind(iaux),iaux=1,indtab)
187 c
188       endif
189 c
190 c====
191 c 4. la fin
192 c====
193 c
194       if ( codret.ne.0 ) then
195 c
196 #include "envex2.h"
197 c
198       write (ulsort,texte(langue,1)) 'Sortie', nompro
199       write (ulsort,texte(langue,2)) codret
200 c
201       endif
202 c
203 #ifdef _DEBUG_HOMARD_
204       write (ulsort,texte(langue,1)) 'Sortie', nompro
205       call dmflsh (iaux)
206 #endif
207 c
208       end