Salome HOME
Homard executable
[modules/homard.git] / src / tool / Decision / deisno.F
1       subroutine deisno ( ncmpin, nosupp, noindi,
2      >                    arsupp, arindi, nbval,
3      >                    hetare, somare,
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 - Initialisations - par Saut - NOeuds
26 c                   --          -                     -      --
27 c ______________________________________________________________________
28 c .        .     .        .                                            .
29 c .  nom   . e/s . taille .           description                      .
30 c .____________________________________________________________________.
31 c . ncmpin .  e  .   1    . nombre de composantes de l'indicateur      .
32 c . nosupp . e   . nbnoto . support pour les noeuds                    .
33 c . noindi . e   . nbnoto . valeurs reelles pour les noeuds            .
34 c . arsupp .  s  . nbarto . support pour les aretes                    .
35 c . arindi .  s  . nbarto . valeurs reelles pour les aretes            .
36 c . nbval  .  s  .    1   . nombres de valeurs pour les aretes         .
37 c . hetare . e   . nbarto . historique de l'etat des aretes            .
38 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
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 = 'DEISNO' )
58 c
59 #include "nblang.h"
60 c
61 c 0.2. ==> communs
62 c
63 #include "envex1.h"
64 c
65 #include "nombno.h"
66 #include "nombar.h"
67 #include "impr02.h"
68 c
69 c 0.3. ==> arguments
70 c
71       integer ncmpin
72       integer nosupp(nbnoto)
73       integer arsupp(nbarto)
74       integer nbval
75       integer hetare(nbarto), somare(2,nbarto)
76 c
77       integer ulsort, langue, codret
78 c
79       double precision noindi(nbnoto,ncmpin)
80       double precision arindi(nbarto,ncmpin)
81 c
82 c 0.4. ==> variables locales
83 c
84       integer iaux
85       integer noeud1, noeud2
86       integer typenh
87       integer nrcomp
88 cgn      integer glop
89 c
90       integer nbmess
91       parameter (nbmess = 10 )
92       character*80 texte(nblang,nbmess)
93 c ______________________________________________________________________
94 c
95 c====
96 c 1. initialisation
97 c====
98 c
99 c 1.1. ==> Les messages
100 c
101 #include "impr01.h"
102 c
103 #ifdef _DEBUG_HOMARD_
104       write (ulsort,texte(langue,1)) 'Entree', nompro
105       call dmflsh (iaux)
106 #endif
107 c
108       texte(1,4) =' (''. Saut entre '',a)'
109 c
110       texte(2,4) = '(''. Jump between '',a)'
111 c
112       codret = 0
113 c
114       typenh = -1
115 #ifdef _DEBUG_HOMARD_
116       write (ulsort,texte(langue,4)) mess14(langue,3,typenh)
117 #endif
118 c
119 c====
120 c 2. On affecte a chaque arete l'ecart du champ entre ses deux noeuds
121 c    extremites. On ne tient pas compte du noeud milieu en degre 2.
122 c    Attention : il ne faut s'interesser qu'aux aretes actives, sinon
123 c    on cree des sauts artificiels !
124 c====
125 c
126       if ( codret.eq.0 ) then
127 c
128 c 2.1. ==> A priori, aucune arete n'est concernee
129 c
130       do 21 , iaux = 1 , nbarto
131         arsupp(iaux) = 0
132    21 continue
133       nbval = 0
134 c
135       do 20 , iaux = 1, nbarto
136 c
137         if ( mod(hetare(iaux),10).eq.0 ) then
138 c
139 cgn        glop=0
140 cgn        if ( iaux.le.-42 ) then
141 cgn        glop = 1
142 cgn        endif
143 c
144           noeud1 = somare(1,iaux)
145           noeud2 = somare(2,iaux)
146           if ( nosupp(noeud1).ne.0 .and. nosupp(noeud2).ne.0 ) then
147 c
148           nbval = nbval + 1
149           arsupp(iaux) = 1
150           do 200 , nrcomp = 1 , ncmpin
151             arindi(iaux,nrcomp) = abs ( noindi(noeud1,nrcomp) -
152      >                                  noindi(noeud2,nrcomp) )
153   200     continue
154 cgn        if ( glop.eq.1) then
155 cgn      write(ulsort,*)'==========================='
156 cgn      write(ulsort,*)'ARETE = ',iaux
157 cgn      write(ulsort,*)'  Noeud 1 = ',noeud1,', d''indic '
158 cgn      write(ulsort,*)(noindi(noeud1,nrcomp), nrcomp = 1 , ncmpin)
159 cgn      write(ulsort,*)'  Noeud 2 = ',noeud2,', d''indic '
160 cgn      write(ulsort,*)(noindi(noeud2,nrcomp), nrcomp = 1 , ncmpin)
161 cgn      write(ulsort,*)'  ==> champ ',
162 cgn     >               (arindi(iaux,nrcomp),nrcomp=1 , ncmpin)
163 cgn        endif
164 c
165           endif
166 c
167         endif
168 c
169    20 continue
170 c
171       endif
172 c
173 c====
174 c 4. la fin
175 c====
176 c
177       if ( codret.ne.0 ) then
178 c
179 #include "envex2.h"
180 c
181       write (ulsort,texte(langue,1)) 'Sortie', nompro
182       write (ulsort,texte(langue,2)) codret
183       write (ulsort,texte(langue,5)) typenh
184 c
185       endif
186 c
187 #ifdef _DEBUG_HOMARD_
188       write (ulsort,texte(langue,1)) 'Sortie', nompro
189       call dmflsh (iaux)
190 #endif
191 c
192       end