Salome HOME
Homard executable
[modules/homard.git] / src / tool / Utilitaire / utb13d.F
1       subroutine utb13d ( coonoe,
2      >                    somare, hetare,
3      >                    famare, cfaare,
4      >                    nbfmed, numfam,
5      >                    grfmpo, grfmtl, grfmtb,
6      >                    nbgrfm, nomgro, lgnogr,
7      >                    famnum, famval,
8      >                    lifagr,
9      >                    ulbila,
10      >                    ulsort, langue, codret )
11 c ______________________________________________________________________
12 c
13 c                             H O M A R D
14 c
15 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
16 c
17 c Version originale enregistree le 18 juin 1996 sous le numero 96036
18 c aupres des huissiers de justice Simart et Lavoir a Clamart
19 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
20 c aupres des huissiers de justice
21 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
22 c
23 c    HOMARD est une marque deposee d'Electricite de France
24 c
25 c Copyright EDF 1996
26 c Copyright EDF 1998
27 c Copyright EDF 2002
28 c Copyright EDF 2020
29 c ______________________________________________________________________
30 c
31 c    UTilitaire - Bilan sur le maillage - option 13 - phase d
32 c    --           -                              --         -
33 c ______________________________________________________________________
34 c
35 c longueurs des sous-domaines du maillage de calcul
36 c ______________________________________________________________________
37 c .        .     .        .                                            .
38 c .  nom   . e/s . taille .           description                      .
39 c .____________________________________________________________________.
40 c . coonoe . e   . nbnoto . coordonnees des noeuds                     .
41 c .        .     . * sdim .                                            .
42 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
43 c . hetare . e   . nbarto . historique de l'etat des aretes            .
44 c . famare . e   . nbarto . famille des aretes                         .
45 c . cfaare . e   . nctfar*. codes des familles des aretes              .
46 c .        .     . nbfare .   1 : famille MED                          .
47 c .        .     .        .   2 : type de segment                      .
48 c .        .     .        .   3 : orientation                          .
49 c .        .     .        .   4 : famille d'orientation inverse        .
50 c .        .     .        .   5 : numero de ligne de frontiere         .
51 c .        .     .        .  > 0 si concernee par le suivi de frontiere.
52 c .        .     .        . <= 0 si non concernee                      .
53 c .        .     .        .   6 : famille frontiere active/inactive    .
54 c .        .     .        .   7 : numero de surface de frontiere       .
55 c .        .     .        . + l : appartenance a l'equivalence l       .
56 c . famtri . e   . nbtrto . famille des triangles                      .
57 c . nbfmed . e   .    1   . nombre de familles au sens MED             .
58 c . numfam . e   . nbfmed . numero des familles au sens MED            .
59 c . grfmpo . e   .0:nbfmed. pointeur des groupes des familles          .
60 c . grfmtl . e   .   *    . taille des groupes des familles            .
61 c . grfmtb . e   .10ngrouc. table des groupes des familles             .
62 c . nbgrfm . e   .    1   . nombre de groupes                          .
63 c . nomgro . e   .char*(*). noms des groupes (paquets de 10char8)      .
64 c . lgnogr . e   . nbgrfm . longueur des noms des groupes              .
65 c . famnum .  a  .   *    . famille : numero avec une valeur           .
66 c . famval .  a  .   *    . famille : la valeur                        .
67 c . lifagr .  a  .   *    . liste des familles contenant le groupe     .
68 c . ulbila . e   .   1    . unite logique d'ecriture du bilan          .
69 c . ulsort . e   .   1    . unite logique de la sortie generale        .
70 c . langue . e   .    1   . langue des messages                        .
71 c .        .     .        . 1 : francais, 2 : anglais                  .
72 c . codret .  s  .    1   . code de retour des modules                 .
73 c .        .     .        . 0 : pas de probleme                        .
74 c .        .     .        . 1 : probleme                               .
75 c .____________________________________________________________________.
76 c
77 c====
78 c 0. declarations et dimensionnement
79 c====
80 c
81 c 0.1. ==> generalites
82 c
83       implicit none
84       save
85 c
86       character*6 nompro
87       parameter ( nompro = 'UTB13D' )
88 c
89 #include "nblang.h"
90 #include "coftex.h"
91 c
92 c 0.2. ==> communs
93 c
94 #include "nbfami.h"
95 #include "nombno.h"
96 #include "nombar.h"
97 #include "envca1.h"
98 c
99 #include "dicfen.h"
100 #include "impr02.h"
101 c
102 c 0.3. ==> arguments
103 c
104       double precision coonoe(nbnoto,sdim)
105 c
106       integer somare(2,nbarto), hetare(nbarto)
107 c
108       integer famare(nbarto), cfaare(nctfar,nbfare)
109 c
110       integer nbfmed, numfam(nbfmed)
111       integer grfmpo(0:nbfmed)
112       integer grfmtl(*)
113       integer nbgrfm, lgnogr(nbgrfm)
114 c
115       character*8 grfmtb(*)
116       character*8 nomgro(*)
117 c
118       integer famnum(*)
119       double precision famval(*)
120 c
121       integer  lifagr(*)
122 c
123       integer ulbila
124       integer ulsort, langue, codret
125 c
126 c 0.4. ==> variables locales
127 c
128       integer iaux, jaux, kaux
129       integer larete
130       integer etat
131       integer famnbv
132 c
133       double precision daux
134 c
135       integer nbmess
136       parameter (nbmess = 20 )
137       character*80 texte(nblang,nbmess)
138 c
139 c 0.5. ==> initialisations
140 c ______________________________________________________________________
141 c
142 c====
143 c 1. messages
144 c====
145 c
146 #include "impr01.h"
147 c
148 #ifdef _DEBUG_HOMARD_
149       write (ulsort,texte(langue,1)) 'Entree', nompro
150       call dmflsh (iaux)
151 #endif
152 c
153       texte(1,4) = '(''Nombre de '',a,'' actifs : '',i8)'
154       texte(1,5) = '(''. Examen du '',a,i8)'
155       texte(1,6) = '(''... Longueur du '',a,i8,'' :'',g14.6)'
156       texte(1,7) = '(''..... Stockage'',i8,'' pour la famille '',i8)'
157 c
158       texte(2,4) = '(''Number of active '',a,'' : '',i8)'
159       texte(2,5) = '(''. Examination of '',a,''#'',i8)'
160       texte(2,6) = '(''... Length of '',a,''#'',i8,'' :'',g14.6)'
161       texte(2,7) = '(''..... Save'',i8,'' for familiy # '',i8)'
162 c
163 #include "impr03.h"
164 c
165 #ifdef _DEBUG_HOMARD_
166       write (ulsort,texte(langue,4)) mess14(langue,3,1), nbarac
167 #endif
168 c
169       codret = 0
170 c
171 c====
172 c 2. calcul des longueurs des aretes
173 c====
174 c
175 c 2.1. ==> initialisation
176 c
177       famnbv = 0
178 c
179       if ( nbarac.gt.0 ) then
180 c
181         do 21 , iaux = 1 , nbarac
182           famnum(iaux) = 0
183           famval(iaux) = 0.d0
184    21   continue
185 c
186         do 22 , larete = 1, nbarto
187 c
188 #ifdef _DEBUG_HOMARD_
189       write (ulsort,texte(langue,5)) mess14(langue,1,1), larete
190 #endif
191 c
192           if ( cfaare(cotyel,famare(larete)).ne.0 ) then
193 c
194           etat = mod( hetare(larete) , 10 )
195 c
196           if ( etat.eq.0 ) then
197 c
198 c 2.2.1. ==> longueur de l'arete courante
199 c
200 #ifdef _DEBUG_HOMARD_
201       write (ulsort,texte(langue,3)) 'UTLGAR', nompro
202 #endif
203             call utlgar ( larete, coonoe, somare,
204      >                    daux,
205      >                    ulsort, langue, codret )
206 c
207 #ifdef _DEBUG_HOMARD_
208       write (ulsort,texte(langue,6)) mess14(langue,1,1), larete, daux
209 #endif
210 c
211 c 4.2.2. ==> stockage dans la bonne famille
212 c
213             jaux = 0
214             do 222 , iaux = 1 , famnbv
215               if ( famnum(iaux).eq.cfaare(cofamd,famare(larete)) ) then
216                 jaux = iaux
217                 goto 223
218               endif
219   222       continue
220             famnbv = famnbv + 1
221             jaux = famnbv
222             famnum(jaux) = cfaare(cofamd,famare(larete))
223 #ifdef _DEBUG_HOMARD_
224             write (ulsort,texte(langue,7)) jaux, famnum(jaux)
225 #endif
226 c
227   223       continue
228 c
229             famval(jaux) = famval(jaux) + daux
230 c
231           endif
232 c
233           endif
234 c
235    22   continue
236 c
237       endif
238 c
239 c====
240 c 3. impression
241 c====
242 #ifdef _DEBUG_HOMARD_
243       write (ulsort,*) '3. impression ; codret =', codret
244       write (ulsort,90002) 'famnbv', famnbv
245 #endif
246 c
247       if ( famnbv.ne.0 ) then
248 c
249       iaux = 1
250       kaux = 1
251 #ifdef _DEBUG_HOMARD_
252       write (ulsort,texte(langue,3)) 'UTB13E_are', nompro
253 #endif
254       call utb13e ( kaux, iaux,
255      >              nbfmed, numfam,
256      >              grfmpo, grfmtl, grfmtb,
257      >              nbgrfm, nomgro, lgnogr,
258      >              famnbv, famnum, famval,
259      >              lifagr,
260      >              ulbila,
261      >              ulsort, langue, codret )
262 c
263       endif
264 c
265       end