Salome HOME
Homard executable
[modules/homard.git] / src / tool / AV_Conversion / vcmmen.F
1       subroutine vcmmen ( nbeled, nbelef,
2      >                    nbmaid, nbmaif,
3      >                    noeele, fameel, typele, nuelex,
4      >                    numfam,
5      >                    grfmpo, grfmtl, grfmtb,
6      >                    tbaux1, tbaux2, tbaux3,
7      >                    ulsort, langue, codret )
8 c ______________________________________________________________________
9 c
10 c                             H O M A R D
11 c
12 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
13 c
14 c Version originale enregistree le 18 juin 1996 sous le numero 96036
15 c aupres des huissiers de justice Simart et Lavoir a Clamart
16 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
17 c aupres des huissiers de justice
18 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
19 c
20 c    HOMARD est une marque deposee d'Electricite de France
21 c
22 c Copyright EDF 1996
23 c Copyright EDF 1998
24 c Copyright EDF 2002
25 c Copyright EDF 2020
26 c ______________________________________________________________________
27 c
28 c    aVant adaptation - Conversion de Maillage - MENage
29 c     -                 -             -          ---
30 c ______________________________________________________________________
31 c .        .     .        .                                            .
32 c .  nom   . e/s . taille .           description                      .
33 c .____________________________________________________________________.
34 c . nbeled . e   .   1    . nombre d'elements au debut                 .
35 c . nbelef .  s  .   1    . nombre d'elements a la fin                 .
36 c . nbmaid . e   .   1    . nombre de mailles au debut                 .
37 c . nbmaif .  s  .   1    . nombre de mailles a la fin                 .
38 c . noeele . es  . nbeled . noeuds des elements                        .
39 c .        .     .*nbmane .                                            .
40 c . fameel . es  . nbeled . famille med des elements                   .
41 c . typele . es  . nbeled . type des elements pour le code de calcul   .
42 c . nuelex . es  . nbelem . numerotation des elements en exterieur     .
43 c . tbaux1 . aux . nbeled . tableau de travail                         .
44 c . tbaux2 . aux . nbfmed . tableau de travail                         .
45 c . tbaux3 . aux . nbfmed . tableau de travail                         .
46 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
47 c . langue . e   .    1   . langue des messages                        .
48 c .        .     .        . 1 : francais, 2 : anglais                  .
49 c . codret . es  .    1   . code de retour des modules                 .
50 c .        .     .        . 0 : pas de probleme                        .
51 c .        .     .        . 3 : probleme                               .
52 c ______________________________________________________________________
53 c
54 c====
55 c 0. declarations et dimensionnement
56 c====
57 c
58 c 0.1. ==> generalites
59 c
60       implicit none
61       save
62 c
63       character*6 nompro
64       parameter ( nompro = 'VCMMEN' )
65 c
66 #include "consts.h"
67 c
68 #include "nblang.h"
69 c
70 c 0.2. ==> communs
71 c
72 #include "envex1.h"
73 c
74 #include "envca1.h"
75 #include "nbutil.h"
76 #include "impr02.h"
77 c
78 c 0.3. ==> arguments
79 c
80       integer nbeled, nbelef
81       integer nbmaid, nbmaif
82       integer noeele(nbeled,nbmane)
83       integer fameel(nbeled), typele(nbeled), nuelex(nbelem)
84       integer numfam(nbfmed), grfmpo(0:nbfmed), grfmtl(*)
85       integer tbaux1(nbeled), tbaux2(nbfmed), tbaux3(nbfmed)
86 c
87       character*8 grfmtb(*)
88 c
89       integer ulsort, langue, codret
90 c
91 c 0.4. ==> variables locales
92 c
93       integer iaux, jaux, kaux, laux
94       integer nbfami, indice
95 c
96       character*80 nomgro
97 c
98       integer nbmess
99       parameter ( nbmess = 10 )
100       character*80 texte(nblang,nbmess)
101 c
102 c 0.5. ==> initialisations
103 c ______________________________________________________________________
104 c
105 c====
106 c 1. preliminaires
107 c====
108 c
109 c 1.1. ==> messages
110 c
111 #include "impr01.h"
112 c
113 #ifdef _DEBUG_HOMARD_
114       write (ulsort,texte(langue,1)) 'Entree', nompro
115       call dmflsh (iaux)
116 #endif
117 c
118       texte(1,4) = '(''Groupe : '',a)'
119       texte(1,5) = '(''Numero dans le calcul   : '',i10)'
120       texte(1,6) = '(''Famille MED : '',i4,'' ; type : '',i4)'
121 c
122       texte(2,4) = '(''Group: '',a)'
123       texte(2,5) = '(''# in calculation    : '',i10)'
124       texte(2,6) = '(''MED family : '',i4,'' ; type : '',i4)'
125 c
126 #include "impr03.h"
127 c
128       codret = 0
129 c
130       nbfami = 0
131 c
132 c====
133 c 2. on passe en revue chaque groupe de mailles doubles
134 c====
135 #ifdef _DEBUG_HOMARD_
136       write (ulsort,90002) 'nbfmed', nbfmed
137 #endif
138 c
139 c 2.1. ==> Famille du groupe 'R_20_b'
140 c
141       nomgro = blan80
142       nomgro(1:6) = 'R_20_b'
143 #ifdef _DEBUG_HOMARD_
144       write (ulsort,texte(langue,4)) nomgro
145 #endif
146 c
147 #ifdef _DEBUG_HOMARD_
148       write (ulsort,texte(langue,3)) 'UTFMGR', nompro
149 #endif
150       call utfmgr ( nomgro, jaux, tbaux3,
151      >              nbfmed, numfam,
152      >              grfmpo, grfmtl, grfmtb,
153      >              ulsort, langue, codret )
154 c
155 cgn      write (ulsort,90002) '==> nombre de familles', jaux
156       do 21 , iaux = 1 , jaux
157         nbfami = nbfami + 1
158         tbaux2(nbfami) = tbaux3(iaux)
159    21 continue
160 c
161 c 2.2. ==> Familles des groupes 'CAV_xx_b'
162 c
163       do 22 , iaux = 1 , 20
164 c
165         if ( codret.eq.0 ) then
166 c
167         nomgro = blan80
168         nomgro(1:8) = 'CAV_00_b'
169         if ( iaux.le.9 ) then
170           write(nomgro(6:6),'(i1)') iaux
171         else
172           write(nomgro(5:6),'(i2)') iaux
173         endif
174 #ifdef _DEBUG_HOMARD_
175       write (ulsort,texte(langue,4)) nomgro
176 #endif
177 c
178 #ifdef _DEBUG_HOMARD_
179       write (ulsort,texte(langue,3)) 'UTFMGR', nompro
180 #endif
181         call utfmgr ( nomgro, jaux, tbaux3,
182      >                nbfmed, numfam,
183      >                grfmpo, grfmtl, grfmtb,
184      >                ulsort, langue, codret )
185 cgn      write (ulsort,90002) '==> nombre de familles', jaux
186         do 221 , kaux = 1 , jaux
187           nbfami = nbfami + 1
188           tbaux2(nbfami) = tbaux3(kaux)
189   221   continue
190 c
191         endif
192 c
193    22 continue
194 c
195 #ifdef _DEBUG_HOMARD_
196       write(ulsort,91020) (tbaux2(iaux),iaux=1,nbfami)
197 #endif
198 c
199 c====
200 c 3. on passe en revue chaque maille
201 c====
202 #ifdef _DEBUG_HOMARD_
203       write(ulsort,90002) nompro//'-nbeled', nbeled
204       write(ulsort,90002) nompro//'-nbmaid', nbmaid
205 #endif
206 c
207       kaux = 0
208 c
209       do 31 , iaux = 1 , nbeled
210 c
211         indice = 0
212         do 311 , jaux = 1 , nbfami
213           if ( fameel(iaux).eq.tbaux2(jaux) ) then
214             indice = jaux
215             goto 312
216           endif
217   311   continue
218 c
219   312   continue
220 c
221         if ( indice.eq.0 ) then
222 c
223           tbaux1(iaux) = iaux
224 c
225 cgn        write (ulsort,texte(langue,6)) fameel(iaux), typele(iaux)
226         else
227 c
228           tbaux1(iaux) = 0
229 cgn          write (ulsort,texte(langue,5)) iaux
230           kaux = kaux + 1
231 c
232         endif
233 c
234    31 continue
235 c
236       nbelef = nbeled - kaux
237       nbmaif = nbmaid - kaux
238 #ifdef _DEBUG_HOMARD_
239       write(ulsort,90002) nompro//'-nbelef', nbelef
240       write(ulsort,90002) nompro//'-nbmaif', nbmaif
241 #endif
242 c
243 c====
244 c 4. consequences
245 c====
246 #ifdef _DEBUG_HOMARD_
247       write (ulsort,*) '4. consequences ; codret = ', codret
248 #endif
249 c
250       jaux = 1
251       do 41 , iaux = 1 , nbelef
252 c
253 c       recherche du 1er element a garder
254         laux = jaux
255         do 411 , kaux = laux , nbeled
256           if ( tbaux1(kaux).ne.0 ) then
257             jaux = kaux
258             goto 412
259           endif
260   411   continue
261 c
262   412   continue
263 c
264 c       transfert des valeurs des tableaux
265         do 413 , kaux = 1 , nbmane
266           noeele(iaux,kaux) = noeele(jaux,kaux)
267   413   continue
268         fameel(iaux) = fameel(jaux)
269         typele(iaux) = typele(jaux)
270         nuelex(iaux) = nuelex(jaux)
271 c
272 c       decalage
273         jaux = jaux + 1
274 c
275    41 continue
276 c
277 c====
278 c 5. la fin
279 c====
280 c
281       if ( codret.ne.0 ) then
282 c
283 #include "envex2.h"
284 c
285       write (ulsort,texte(langue,1)) 'Sortie', nompro
286       write (ulsort,texte(langue,2)) codret
287 c
288       endif
289 c
290 #ifdef _DEBUG_HOMARD_
291       write (ulsort,texte(langue,1)) 'Sortie', nompro
292       call dmflsh (iaux)
293 #endif
294 c
295       end