]> SALOME platform Git repositories - modules/homard.git/blob - src/tool/Modification/mmag42.F
Salome HOME
Homard executable
[modules/homard.git] / src / tool / Modification / mmag42.F
1       subroutine mmag42 ( coonoe, somare,
2      >                    fampen, cfapen,
3      >                    nbvojm, nbpejt, nbpejs, nbjois, nbjoit,
4      >                    tbau41,
5      >                    nbfmed, numfam,
6      >                    grfmpo, grfmtl, grfmtb,
7      >                    nbgrfm, nomgro, lgnogr,
8      >                    famnum, famval,
9      >                    lifagr,
10      >                    ulbila,
11      >                    ulsort, langue, codret )
12 c ______________________________________________________________________
13 c
14 c                             H O M A R D
15 c
16 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
17 c
18 c Version originale enregistree le 18 juin 1996 sous le numero 96036
19 c aupres des huissiers de justice Simart et Lavoir a Clamart
20 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
21 c aupres des huissiers de justice
22 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
23 c
24 c    HOMARD est une marque deposee d'Electricite de France
25 c
26 c Copyright EDF 1996
27 c Copyright EDF 1998
28 c Copyright EDF 2002
29 c Copyright EDF 2020
30 c ______________________________________________________________________
31 c
32 c    Modification de Maillage - AGRegat - phase 4.2
33 c    -               -          --              - -
34 c    Taille des joints triples
35 c ______________________________________________________________________
36 c
37 c Remarque : ce programme est une copie de utb13d
38 c ______________________________________________________________________
39 c .        .     .        .                                            .
40 c .  nom   . e/s . taille .           description                      .
41 c .____________________________________________________________________.
42 c . coonoe . e   . nbnoto . coordonnees des noeuds                     .
43 c .        .     . * sdim .                                            .
44 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
45 c . fampen . e   . nbpeto . famille des pentaedres                     .
46 c . cfapen . e   . nctfpe*. codes des familles des pentaedres          .
47 c .        .     . nbfpen .   1 : famille MED                          .
48 c .        .     .        .   2 : type de pentaedres                   .
49 c .        .     .        .   3 : famille des tetraedres de conformite .
50 c .        .     .        .   4 : famille des pyramides de conformite  .
51 c . nbvojm . e   .   1    . nombre de volumes de joints multiples      .
52 c . nbpejt . e   .   1    . nombre de pentaedres de joints triples     .
53 c . nbpejs . e   .   1    . nombre de pentaedres de joints simples     .
54 c . nbjois . e   .   1    . nombre de joints simples                   .
55 c . nbjoit . e   .   1    . nombre de joints triples                   .
56 c . tbau41 . e   .4*nbvojm. Les pentaedres de joint triple, puis les   .
57 c .        .     .        . hexaedres de joint quadruple :             .
58 c .        .     .        . (1,i) : arete multiple                     .
59 c .        .     .        . (2,i) : numero du joint                    .
60 c .        .     .        . Pour le i-eme pentaedre de joint triple :  .
61 c .        .     .        . (3,i) : triangle cree cote 1er sommet      .
62 c .        .     .        . (4,i) : triangle cree cote 2nd sommet      .
63 c .        .     .        . Pour le i-eme hexaedre de joint quadruple :.
64 c .        .     .        . (3,i) : quadrangle cree cote 1er sommet    .
65 c .        .     .        . (4,i) : quadrangle cree cote 2nd sommet    .
66 c . nbfmed . e   .    1   . nombre de familles au sens MED             .
67 c . numfam . e   . nbfmed . numero des familles au sens MED            .
68 c . grfmpo . e   .0:nbfmed. pointeur des groupes des familles          .
69 c . grfmtl . e   .   *    . taille des groupes des familles            .
70 c . grfmtb . e   .10ngrouc. table des groupes des familles             .
71 c . nbgrfm . e   .    1   . nombre de groupes                          .
72 c . nomgro . e   .char*(*). noms des groupes (paquets de 10char8)      .
73 c . lgnogr . e   . nbgrfm . longueur des noms des groupes              .
74 c . famnum .  a  .   *    . famille : numero avec une valeur           .
75 c . famval .  a  .   *    . famille : la valeur                        .
76 c . lifagr .  a  .   *    . liste des familles contenant le groupe     .
77 c . ulbila . e   .   1    . unite logique d'ecriture du bilan          .
78 c . ulsort . e   .   1    . unite logique de la sortie generale        .
79 c . langue . e   .    1   . langue des messages                        .
80 c .        .     .        . 1 : francais, 2 : anglais                  .
81 c . codret .  s  .    1   . code de retour des modules                 .
82 c .        .     .        . 0 : pas de probleme                        .
83 c .        .     .        . 1 : probleme                               .
84 c .____________________________________________________________________.
85 c
86 c====
87 c 0. declarations et dimensionnement
88 c====
89 c
90 c 0.1. ==> generalites
91 c
92       implicit none
93       save
94 c
95       character*6 nompro
96       parameter ( nompro = 'MMAG42' )
97 c
98 #include "nblang.h"
99 #include "coftex.h"
100 c
101 c 0.2. ==> communs
102 c
103 #include "envex1.h"
104 c
105 #include "nombno.h"
106 #include "nombar.h"
107 #include "nombpe.h"
108 #include "envca1.h"
109 #include "dicfen.h"
110 #include "nbfami.h"
111 c
112 #include "impr02.h"
113 c
114 c 0.3. ==> arguments
115 c
116       double precision coonoe(nbnoto,sdim)
117 c
118       integer nbvojm, nbpejt, nbpejs, nbjois, nbjoit
119       integer somare(2,nbarto)
120       integer fampen(nbpeto), cfapen(nctfpe,nbfpen)
121       integer tbau41(4,nbvojm)
122 c
123       integer nbfmed, numfam(nbfmed)
124       integer grfmpo(0:nbfmed)
125       integer grfmtl(*)
126       integer nbgrfm, lgnogr(nbgrfm)
127 c
128       character*8 grfmtb(*)
129       character*8 nomgro(*)
130 c
131       integer famnum(*)
132       double precision famval(*)
133 c
134       integer  lifagr(*)
135 c
136       integer ulbila
137       integer ulsort, langue, codret
138 c
139 c 0.4. ==> variables locales
140 c
141       integer iaux, jaux
142       integer numpen
143       integer larete
144 c
145       double precision vn(3)
146       double precision daux
147 c
148       integer nbmess
149       parameter (nbmess = 30 )
150       character*80 texte(nblang,nbmess)
151 c
152 c 0.5. ==> initialisations
153 c ______________________________________________________________________
154 c
155 c====
156 c 1. messages
157 c====
158 c
159 #include "impr01.h"
160 c
161 #ifdef _DEBUG_HOMARD_
162       write (ulsort,texte(langue,1)) 'Entree', nompro
163       call dmflsh (iaux)
164 #endif
165 c
166 #include "mmag01.h"
167 c
168 #include "impr03.h"
169 c
170       codret = 0
171 c
172 c====
173 c 2. calcul des longueurs
174 c====
175 c
176 c 2.1. ==> initialisation
177 c
178       do 21 , iaux = 1 , nbjoit
179         famval(iaux) = 0.d0
180    21 continue
181 c
182 c 2.2. ==> calcul
183 c
184       do 22 , numpen = 1 , nbpejt
185 c
186         larete = tbau41(1,numpen)
187 c
188 #ifdef _DEBUG_HOMARD_
189       write (ulsort,texte(langue,4)) ' ', mess14(langue,1,1), larete
190       write (ulsort,texte(langue,18)) ' ',mess14(langue,1,7),
191      >                                tbau41(2,numpen)
192 #endif
193 c
194 c 2.2.1. ==> calcul de la longueur
195 c
196         vn(1) = coonoe(somare(2,larete),1) - coonoe(somare(1,larete),1)
197         vn(2) = coonoe(somare(2,larete),2) - coonoe(somare(1,larete),2)
198         vn(3) = coonoe(somare(2,larete),3) - coonoe(somare(1,larete),3)
199 c
200         daux = sqrt ( vn(1)*vn(1) + vn(2)*vn(2) + vn(3)*vn(3) )
201 c
202 c 2.2.3. ==> stockage dans le bon joint
203 c
204         iaux = tbau41(2,numpen) - nbjois
205         famnum(iaux) = cfapen(cofamd,fampen(numpen+nbpejs))
206         famval(iaux) = famval(iaux) + daux
207 cgn      if ( iaux.ge.1 ) then
208 cgn      write (ulsort,92010) '==> longueur =', daux
209 cgn      write (ulsort,90002) 'iaux, fampen, fammed', iaux,
210 cgn     >  fampen(numpen+nbpejs),cfapen(cofamd,fampen(numpen+nbpejs))
211 cgn      write (ulsort,92010) '==> cumul =',famval(iaux)
212 cgn      endif
213 c
214    22 continue
215 c
216 c====
217 c 3. impression
218 c====
219 #ifdef _DEBUG_HOMARD_
220       write (ulsort,*) '3. impression ; codret =', codret
221       write (ulsort,91010) (famnum(iaux),iaux=1,nbjoit)
222       write (ulsort,92010) (famval(iaux),iaux=1,nbjoit)
223 #endif
224 c
225       iaux = 3
226       jaux = 1
227 #ifdef _DEBUG_HOMARD_
228       write (ulsort,texte(langue,3)) 'UTB13E_j_triple', nompro
229 #endif
230       call utb13e ( jaux, iaux,
231      >              nbfmed, numfam,
232      >              grfmpo, grfmtl, grfmtb,
233      >              nbgrfm, nomgro, lgnogr,
234      >              nbjoit, famnum, famval,
235      >              lifagr,
236      >              ulbila,
237      >              ulsort, langue, codret )
238 c
239 c====
240 c 4. la fin
241 c====
242 c
243       if ( codret.ne.0 ) then
244 c
245 #include "envex2.h"
246 c
247       write (ulsort,texte(langue,1)) 'Sortie', nompro
248       write (ulsort,texte(langue,2)) codret
249 c
250       endif
251 c
252 #ifdef _DEBUG_HOMARD_
253       write (ulsort,texte(langue,1)) 'Sortie', nompro
254       call dmflsh (iaux)
255 #endif
256 c
257 c
258       end