Salome HOME
Homard executable
[modules/homard.git] / src / tool / Decision / deiuc0.F
1       subroutine deiuc0 ( nbval, ncmpin, usacmp,
2      >                    ensupp, enindi,
3      >                    ulsort, langue, codret)
4 c ______________________________________________________________________
5 c
6 c                             H O M A R D
7 c
8 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
9 c
10 c Version originale enregistree le 18 juin 1996 sous le numero 96036
11 c aupres des huissiers de justice Simart et Lavoir a Clamart
12 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
13 c aupres des huissiers de justice
14 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
15 c
16 c    HOMARD est une marque deposee d'Electricite de France
17 c
18 c Copyright EDF 1996
19 c Copyright EDF 1998
20 c Copyright EDF 2002
21 c Copyright EDF 2020
22 c ______________________________________________________________________
23 c
24 c traitement des DEcisions - Initialisations - Usage des CoMposantes - 0
25 c                --          -                 -         -             -
26 c ______________________________________________________________________
27 c .        .     .        .                                            .
28 c .  nom   . e/s . taille .           description                      .
29 c .____________________________________________________________________.
30 c . nbval  .  e  .    1   . nombres de valeurs                         .
31 c . ncmpin .  e  .   1    . nombre de composantes de l'indicateur      .
32 c . usacmp . e   .   1    . usage des composantes de l'indicateur      .
33 c .        .     .        . 0 : norme L2                               .
34 c .        .     .        . 1 : norme infinie -max des valeurs absolues.
35 c .        .     .        . 2 : valeur relative si une seule composante.
36 c . ensupp .  e  . nbval  . support pour les entites                   .
37 c . enindi . es  . nbval  . valeurs reelles pour les entites           .
38 c .        .     .*ncmpin .                                            .
39 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
40 c . langue . e   .    1   . langue des messages                        .
41 c .        .     .        . 1 : francais, 2 : anglais                  .
42 c . codret . es  .    1   . code de retour des modules                 .
43 c .        .     .        . 0 : pas de probleme                        .
44 c .        .     .        . 2 : probleme dans le traitement            .
45 c ______________________________________________________________________
46 c
47 c====
48 c 0. declarations et dimensionnement
49 c====
50 c
51 c 0.1. ==> generalites
52 c
53       implicit none
54       save
55 c
56       character*6 nompro
57       parameter ( nompro = 'DEIUC0' )
58 c
59 #include "nblang.h"
60 c
61 c 0.2. ==> communs
62 c
63 #include "envex1.h"
64 c
65 #include "impr02.h"
66 c
67 c 0.3. ==> arguments
68 c
69       integer nbval, ncmpin
70       integer usacmp
71       integer ensupp(nbval)
72 c
73       integer ulsort, langue, codret
74 c
75       double precision enindi(nbval,ncmpin)
76 c
77 c 0.4. ==> variables locales
78 c
79       integer iaux
80       integer nrcomp
81 c
82       double precision daux
83 c
84       integer nbmess
85       parameter (nbmess = 10 )
86       character*80 texte(nblang,nbmess)
87 c ______________________________________________________________________
88 c
89 c====
90 c 1. initialisation
91 c====
92 c
93 c 1.1. ==> Les messages
94 c
95 #include "impr01.h"
96 c
97 #ifdef _DEBUG_HOMARD_
98       write (ulsort,texte(langue,1)) 'Entree', nompro
99       call dmflsh (iaux)
100 #endif
101 c
102       texte(1,4) =' (''. Saut entre '',a)'
103 c
104       texte(2,4) = '(''. Jump between '',a)'
105 c
106       codret = 0
107 c
108 c====
109 c 2. Traitement
110 c====
111 c
112       if ( codret.eq.0 ) then
113 c
114 c 2.1. ==> norme L2
115 c
116       if ( usacmp.eq.0 ) then
117 c
118         do 21 , iaux = 1 , nbval
119 c
120           if ( ensupp(iaux).ne.0 ) then
121 c
122             daux = 0.d0
123             do 211 , nrcomp = 1 , ncmpin
124               daux = daux + enindi(iaux,nrcomp)**2
125   211       continue
126             enindi(iaux,1) = sqrt(daux)
127 c
128           endif
129 c
130    21   continue
131 c
132 c 2.2. ==> norme infinie
133 c
134       elseif ( usacmp.eq.1 ) then
135 c
136         do 22 , iaux = 1 , nbval
137 c
138           if ( ensupp(iaux).ne.0 ) then
139 c
140             daux = 0.d0
141             do 221 , nrcomp = 1 , ncmpin
142               daux = max ( daux, abs(enindi(iaux,nrcomp)) )
143   221       continue
144             enindi(iaux,1) = daux
145 c
146           endif
147 c
148    22   continue
149 c
150 c 2.3. ==> probleme
151 c
152       else
153 c
154         codret = 23
155 c
156       endif
157 c
158       endif
159 c
160 c====
161 c 3. la fin
162 c====
163 c
164       if ( codret.ne.0 ) then
165 c
166 #include "envex2.h"
167 c
168       write (ulsort,texte(langue,1)) 'Sortie', nompro
169       write (ulsort,texte(langue,2)) codret
170 c
171       endif
172 c
173 #ifdef _DEBUG_HOMARD_
174       write (ulsort,texte(langue,1)) 'Sortie', nompro
175       call dmflsh (iaux)
176 #endif
177 c
178       end