Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utad03.F
1       subroutine utad03 ( option, nhenti,
2      >                    nbenci, nbenrc, numead,
3      >                    adenra, adenrb,
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    UTilitaire - ADresses - phase 03
26 c    --           --               --
27 c ______________________________________________________________________
28 c   Recuperation d'informations pour le recollement non conforme
29 c   d'une entite HOM_Enti
30 c   Remarque : le code de retour en entree ne doit pas etre ecrase
31 c              brutalement ; il doit etre cumule avec les operations
32 c              de ce programme
33 c ______________________________________________________________________
34 c .        .     .        .                                            .
35 c .  nom   . e/s . taille .           description                      .
36 c .____________________________________________________________________.
37 c . option . e   .   1    . option de pilotage des infos. a recuperer  .
38 c .        .     .        . c'est un multiple des entiers suivants :   .
39 c .        .     .        .  2 : nombre de non conformites initiales   .
40 c .        .     .        .  3 : nbre d'entites / recollement unitaire .
41 c .        .     .        .  5 : numero de la mere adoptive            .
42 c .        .     .        .  7 : aretes recouvrant une autre           .
43 c .        .     .        . 11 : aretes recouvertes par une autre      .
44 c . nhenti . e   . char8  . nom de l'objet decrivant l'entite          .
45 c . nbenci .   s .    1   . nombre de non conformites initiales        .
46 c . nbenrc .   s .    1   . nombre d'entites par recollement unitaire  .
47 c . numead .   s .   1    . numero de la mere adoptive                 .
48 c . adenra .   s .  1     . liste des entites recouvrant une autre     .
49 c . adenrb .   s .  1     . liste des entites recouvertes par une autre.
50 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
51 c . langue . e   .    1   . langue des messages                        .
52 c .        .     .        . 1 : francais, 2 : anglais                  .
53 c . codret . es  .    1   . code de retour des modules                 .
54 c ______________________________________________________________________
55 c
56 c====
57 c 0. declarations et dimensionnement
58 c====
59 c
60 c 0.1. ==> generalites
61 c
62       implicit none
63       save
64 c
65       character*6 nompro
66       parameter ( nompro = 'UTAD03' )
67 c
68 #include "nblang.h"
69 c
70 c 0.2. ==> communs
71 c
72 #include "envex1.h"
73 c
74 c 0.3. ==> arguments
75 c
76       character*8 nhenti
77 c
78       integer option
79       integer nbenci, nbenrc, numead
80       integer adenra, adenrb
81 c
82       integer ulsort, langue, codret
83 c
84 c 0.4. ==> variables locales
85 c
86       integer iaux
87       integer codava
88       integer codre0
89       integer codre1, codre2, codre3, codre4, codre5
90       logical existe
91 c
92       integer nbmess
93       parameter ( nbmess = 10 )
94       character*80 texte(nblang,nbmess)
95 c
96 c 0.5. ==> initialisations
97 c ______________________________________________________________________
98 c
99 c====
100 c 1. messages
101 c====
102 c
103 c 1.3. ==> les messages
104 c
105 #include "impr01.h"
106 c
107 #ifdef _DEBUG_HOMARD_
108       write (ulsort,texte(langue,1)) 'Entree', nompro
109       call dmflsh (iaux)
110 #endif
111 c
112       texte(1,4) = '(''Adresses relatives aux recollements'')'
113       texte(1,5) = '(''Option :'',i10)'
114       texte(1,6) = '(''Codes de retour'',20i3)'
115 c
116       texte(2,4) = '(''Adresses for glue'')'
117       texte(2,5) = '(''Option :'',i10)'
118       texte(2,6) = '(''Error codes'',20i3)'
119 c
120 #ifdef _DEBUG_HOMARD_
121       write (ulsort,texte(langue,4))
122       write (ulsort,texte(langue,5)) option
123       call gmprsx (nompro,nhenti//'.Recollem')
124       call dmflsh (iaux)
125 #endif
126 c
127       codava = codret
128       codret = 0
129 c
130 c====
131 c 2. Structure generale
132 c====
133 c
134       call gmobal ( nhenti//'.Recollem', codre0 )
135       if ( codre0.eq.0 ) then
136         nbenci = 0
137         nbenrc = -1
138         numead = 0
139         existe = .false.
140       elseif ( codre0.eq.1 ) then
141         existe = .true.
142       else
143         nbenci = -1
144         existe = .false.
145         codret = max ( abs(codre0), codret )
146       endif
147 c
148 c====
149 c 3. Nombre de non conformites initiales
150 c====
151 #ifdef _DEBUG_HOMARD_
152       write (ulsort,*) '3. Nbr non conformites init ; codret = ', codret
153 #endif
154 c
155       if ( option.gt.0 ) then
156 c
157       if ( mod(option,2).eq.0 ) then
158 c
159         if ( existe ) then
160 c
161           call gmliat ( nhenti//'.Recollem', 1, nbenci, codre1 )
162 c
163           codret = max ( abs(codre1), codret )
164 c
165         endif
166 c
167       endif
168 c
169       endif
170 c
171 c====
172 c 4. Recherche des informations
173 c====
174 #ifdef _DEBUG_HOMARD_
175       write (ulsort,*) '4. Recherche informations ; codret = ', codret
176 #endif
177 c
178       if ( option.gt.0 ) then
179 c
180 c 4.1. ==> Nombre d'entites par recollement unitaire
181 c
182       if ( mod(option,3).eq.0 ) then
183 c
184         if ( existe ) then
185 c
186           call gmliat ( nhenti//'.Recollem', 2, nbenrc, codre2 )
187 c
188           codret = max ( abs(codre2), codret )
189 c
190         else
191 c
192           if ( mod(option,2).ne.0 ) then
193             codret = max ( 41, codret )
194           endif
195 c
196         endif
197 c
198       endif
199 c
200 c 4.2. ==> Numero de la mere adoptive
201 c          Remarque : si la structure n'existe pas, on renvoie 0 pour
202 c          ne pas perturber le reste
203 c
204       if ( mod(option,5).eq.0 ) then
205 c
206         if ( existe ) then
207 c
208           call gmliat ( nhenti//'.Recollem', 3, numead, codre3 )
209 c
210           codret = max ( abs(codre3), codret )
211 c
212         else
213 c
214           numead = 0
215 c
216         endif
217 c
218       endif
219 c
220 c 4.3. ==> liste des entites recouvrant une autre
221 c
222       if ( mod(option,7).eq.0 ) then
223 c
224         if ( existe ) then
225 c
226           call gmadoj ( nhenti//'.Recollem.ListeA',
227      >                  adenra, iaux, codre4 )
228 c
229           codret = max ( abs(codre4), codret )
230 c
231         else
232 c
233           if ( mod(option,2).ne.0 ) then
234             codret = max ( 43, codret )
235           endif
236 c
237         endif
238 c
239       endif
240 c
241 c 4.4. ==> Liste des entites recouvertes par une autre
242 c
243       if ( mod(option,11).eq.0 ) then
244 c
245         if ( existe ) then
246 c
247           call gmadoj ( nhenti//'.Recollem.ListeB',
248      >                  adenrb, iaux, codre5 )
249 c
250           codret = max ( abs(codre5), codret )
251 c
252         else
253 c
254           if ( mod(option,2).ne.0 ) then
255             codret = max ( 44, codret )
256           endif
257 c
258         endif
259 c
260       endif
261 c
262       endif
263 c
264 c====
265 c 5. la fin
266 c====
267 c
268       if ( codret.ne.0 ) then
269 c
270 #include "envex2.h"
271 c
272       write (ulsort,texte(langue,1)) 'Sortie', nompro
273       write (ulsort,texte(langue,5)) option
274       write (ulsort,texte(langue,2)) codret
275       if ( existe ) then
276         write (ulsort,texte(langue,6)) codre0,
277      >                            codre1, codre2, codre3, codre4, codre5
278 c
279       else
280 c
281       codret = codava
282 c
283       endif
284 c
285       endif
286 c
287 #ifdef _DEBUG_HOMARD_
288       write (ulsort,texte(langue,1)) 'Sortie', nompro
289       call dmflsh (iaux)
290 #endif
291 c
292       end