Salome HOME
Homard executable
[modules/homard.git] / src / tool / Modification / mmag43.F
1       subroutine mmag43 ( coonoe, somare,
2      >                    famhex, cfahex,
3      >                    nbvojm, nbhejq,
4      >                    nbjois, nbjoiq,
5      >                    tbau41,
6      >                    nbfmed, numfam,
7      >                    grfmpo, grfmtl, grfmtb,
8      >                    nbgrfm, nomgro, lgnogr,
9      >                    famnum, famval,
10      >                    lifagr,
11      >                    ulbila,
12      >                    ulsort, langue, codret )
13 c ______________________________________________________________________
14 c
15 c                             H O M A R D
16 c
17 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
18 c
19 c Version originale enregistree le 18 juin 1996 sous le numero 96036
20 c aupres des huissiers de justice Simart et Lavoir a Clamart
21 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
22 c aupres des huissiers de justice
23 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
24 c
25 c    HOMARD est une marque deposee d'Electricite de France
26 c
27 c Copyright EDF 1996
28 c Copyright EDF 1998
29 c Copyright EDF 2002
30 c Copyright EDF 2020
31 c ______________________________________________________________________
32 c
33 c    Modification de Maillage - AGRegat - phase 4.3
34 c    -               -          --              - -
35 c    Taille des joints quadruples
36 c ______________________________________________________________________
37 c
38 c Remarque : ce programme est une copie de utb13d
39 c ______________________________________________________________________
40 c .        .     .        .                                            .
41 c .  nom   . e/s . taille .           description                      .
42 c .____________________________________________________________________.
43 c . coonoe . e   . nbnoto . coordonnees des noeuds                     .
44 c .        .     . * sdim .                                            .
45 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
46 c . famhex . e   . nbheto . famille des hexaedres                      .
47 c . cfahex . e   . nctfhe*. codes des familles des hexaedres           .
48 c .        .     . nbfhex .   1 : famille MED                          .
49 c .        .     .        .   2 : type d'hexaedres                     .
50 c .        .     .        .   3 : famille des tetraedres de conformite .
51 c .        .     .        .   4 : famille des pyramides de conformite  .
52 c . nbvojm . e   .   1    . nombre de volumes de joints multiples      .
53 c . nbhejq . e   .   1    . nombre de pentaedres de joints triples     .
54 c . nbjois . e   .   1    . nombre de joints simples                   .
55 c . nbjoiq . e   .   1    . nombre de joints quadruples                .
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 = 'MMAG43' )
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 "nombhe.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, nbhejq
119       integer nbjois, nbjoiq
120       integer somare(2,nbarto)
121       integer famhex(nbheto), cfahex(nctfhe,nbfhex)
122       integer tbau41(4,nbvojm)
123 c
124       integer nbfmed, numfam(nbfmed)
125       integer grfmpo(0:nbfmed)
126       integer grfmtl(*)
127       integer nbgrfm, lgnogr(nbgrfm)
128 c
129       character*8 grfmtb(*)
130       character*8 nomgro(*)
131 c
132       integer famnum(*)
133       double precision famval(*)
134 c
135       integer  lifagr(*)
136 c
137       integer ulbila
138       integer ulsort, langue, codret
139 c
140 c 0.4. ==> variables locales
141 c
142       integer iaux, jaux
143       integer numhex
144       integer larete
145 c
146       double precision vn(3)
147       double precision daux
148 c
149       integer nbmess
150       parameter (nbmess = 30 )
151       character*80 texte(nblang,nbmess)
152 c
153 c 0.5. ==> initialisations
154 c ______________________________________________________________________
155 c
156 c====
157 c 1. messages
158 c====
159 c
160 #include "impr01.h"
161 c
162 #ifdef _DEBUG_HOMARD_
163       write (ulsort,texte(langue,1)) 'Entree', nompro
164       call dmflsh (iaux)
165 #endif
166 c
167 #include "mmag01.h"
168 c
169 #include "impr03.h"
170 c
171       codret = 0
172 c
173 #ifdef _DEBUG_HOMARD_
174         write (ulsort,texte(langue,12)) nbjois
175         write (ulsort,texte(langue,14)) nbjoiq
176 #endif
177 c
178 c====
179 c 2. calcul des longueurs
180 c====
181 c
182 c 2.1. ==> initialisation
183 c
184       do 21 , iaux = 1 , nbjoiq
185         famval(iaux) = 0.d0
186    21 continue
187 c
188 c 2.2. ==> calcul
189 c
190       do 22 , numhex = 1 , nbhejq
191 c
192         larete = tbau41(1,numhex)
193 c
194 #ifdef _DEBUG_HOMARD_
195       write (ulsort,texte(langue,4)) ' ', mess14(langue,1,1), larete
196       write (ulsort,texte(langue,18)) ' ',mess14(langue,1,7),
197      >                                tbau41(2,numhex)
198 #endif
199 c
200 c 2.2.1. ==> calcul de la longueur
201 c
202         vn(1) = coonoe(somare(2,larete),1) - coonoe(somare(1,larete),1)
203         vn(2) = coonoe(somare(2,larete),2) - coonoe(somare(1,larete),2)
204         vn(3) = coonoe(somare(2,larete),3) - coonoe(somare(1,larete),3)
205 c
206         daux = sqrt ( vn(1)*vn(1) + vn(2)*vn(2) + vn(3)*vn(3) )
207 c
208 cgn      write (ulsort,*) '==> surface =', daux
209 c
210 c 2.2.3. ==> stockage dans le bon joint
211 c
212         iaux = tbau41(2,numhex) - nbjois
213         famnum(iaux) = cfahex(cofamd,famhex(numhex))
214         famval(iaux) = famval(iaux) + daux
215 c
216    22 continue
217 c
218 c====
219 c 3. impression
220 c====
221 #ifdef _DEBUG_HOMARD_
222       write (ulsort,*) '3. impression ; codret =', codret
223 cgn      write (ulbila,*) (famval(iaux),iaux=1,nbjoiq)
224 #endif
225 c
226       iaux = 4
227       jaux = 1
228 #ifdef _DEBUG_HOMARD_
229       write (ulsort,texte(langue,3)) 'UTB13E_j_quadruple', nompro
230 #endif
231       call utb13e ( jaux, iaux,
232      >              nbfmed, numfam,
233      >              grfmpo, grfmtl, grfmtb,
234      >              nbgrfm, nomgro, lgnogr,
235      >              nbjoiq, famnum, famval,
236      >              lifagr,
237      >              ulbila,
238      >              ulsort, langue, codret )
239 c
240 c====
241 c 4. la fin
242 c====
243 c
244       if ( codret.ne.0 ) then
245 c
246 #include "envex2.h"
247 c
248       write (ulsort,texte(langue,1)) 'Sortie', nompro
249       write (ulsort,texte(langue,2)) codret
250 c
251       endif
252 c
253 #ifdef _DEBUG_HOMARD_
254       write (ulsort,texte(langue,1)) 'Sortie', nompro
255       call dmflsh (iaux)
256 #endif
257 c
258 c
259       end