]> SALOME platform Git repositories - modules/homard.git/blob - src/tool/AP_Conversion/pcmaar.F
Salome HOME
Porting in SSL Bug12504 of non regression test
[modules/homard.git] / src / tool / AP_Conversion / pcmaar.F
1       subroutine pcmaar ( elemen, nbele0,
2      >                    somare, np2are, hetare,
3      >                    famare, cfaare,
4      >                    nnosca, narsca, narsho,
5      >                    famele, noeele, typele,
6      >                    ulsort, langue, codret )
7 c ______________________________________________________________________
8 c
9 c                             H O M A R D
10 c
11 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
12 c
13 c Version originale enregistree le 18 juin 1996 sous le numero 96036
14 c aupres des huissiers de justice Simart et Lavoir a Clamart
15 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
16 c aupres des huissiers de justice
17 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
18 c
19 c    HOMARD est une marque deposee d'Electricite de France
20 c
21 c Copyright EDF 1996
22 c Copyright EDF 1998
23 c Copyright EDF 2002
24 c Copyright EDF 2020
25 c ______________________________________________________________________
26 c
27 c    aPres adaptation - Conversion - MAillage connectivite - ARetes
28 c     -                 -            --                      --
29 c ______________________________________________________________________
30 c
31 c remarque : voir vcorie pour la definition des orientations
32 c remarque : pcmaar et pcmaa0 sont des clones
33 c ______________________________________________________________________
34 c .        .     .        .                                            .
35 c .  nom   . e/s . taille .           description                      .
36 c .____________________________________________________________________.
37 c . elemen . es  .   1    . numero du dernier element cree             .
38 c . nbele0 . e   .   1    . estimation du nombre d'elements            .
39 c . somare . e   .2*nbarto. numeros des extremites d'arete             .
40 c . np2are . e   . nbarto . numero du noeud p2 milieu d'arete          .
41 c . hetare . e   . nbarto . historique de l'etat des aretes            .
42 c . famare . e   . nbarto . famille des aretes                         .
43 c . cfaare . e   . nctfar*. codes des familles des aretes              .
44 c .        .     . nbfare .   1 : famille MED                          .
45 c .        .     .        .   2 : type de segment                      .
46 c .        .     .        .   3 : orientation                          .
47 c .        .     .        .   4 : famille d'orientation inverse        .
48 c .        .     .        .   5 : numero de ligne de frontiere         .
49 c .        .     .        .  > 0 si concernee par le suivi de frontiere.
50 c .        .     .        . <= 0 si non concernee                      .
51 c .        .     .        .   6 : famille frontiere active/inactive    .
52 c .        .     .        .   7 : numero de surface de frontiere       .
53 c .        .     .        . + l : appartenance a l'equivalence l       .
54 c . nnosca . e   . rsnoto . numero des noeuds du code de calcul        .
55 c . narsca .  s  . rsarto . numero des aretes du calcul                .
56 c . narsho .  s  . nbele0 . numero des aretes dans HOMARD              .
57 c . famele . es  . nbele0 . famille med des elements                   .
58 c . noeele . es  . nbele0 . noeuds des elements                        .
59 c .        .     . *nbmane.                                            .
60 c . typele . es  . nbele0 . type des elements                          .
61 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
62 c . langue . e   .    1   . langue des messages                        .
63 c .        .     .        . 1 : francais, 2 : anglais                  .
64 c . codret . es  .    1   . code de retour des modules                 .
65 c .        .     .        . 0 : pas de probleme                        .
66 c .        .     .        . 1 : probleme                               .
67 c ______________________________________________________________________
68 c
69 c====
70 c 0. declarations et dimensionnement
71 c====
72 c
73 c 0.1. ==> generalites
74 c
75       implicit none
76       save
77 c
78       character*6 nompro
79       parameter ( nompro = 'PCMAAR' )
80 c
81 #include "nblang.h"
82 #include "coftex.h"
83 #include "cofaar.h"
84 c
85 c 0.2. ==> communs
86 c
87 #include "envex1.h"
88 c
89 #include "impr02.h"
90 #include "envca1.h"
91 c
92 #include "nbfami.h"
93 #include "nombar.h"
94 c
95 #include "nombsr.h"
96 c
97 #include "dicfen.h"
98 c
99 c 0.3. ==> arguments
100 c
101       integer elemen
102       integer nbele0
103 c
104       integer somare(2,nbarto), np2are(nbarto)
105       integer hetare(nbarto)
106 c
107       integer cfaare(nctfar,nbfare), famare(nbarto)
108 c
109       integer nnosca(rsnoto)
110       integer narsca(rsarto), narsho(nbele0)
111 c
112       integer famele(nbele0), noeele(nbele0,nbmane)
113       integer typele(nbele0)
114 c
115       integer ulsort, langue, codret
116 c
117 c 0.4. ==> variables locales
118 c
119       integer larete
120       integer etat
121       integer iaux
122 c
123       integer nbmess
124       parameter ( nbmess = 20 )
125       character*80 texte(nblang,nbmess)
126 c
127 c 0.5. ==> initialisations
128 c ______________________________________________________________________
129 c
130 c====
131 c 1. initialisations
132 c====
133 c
134 #include "impr01.h"
135 c
136 #ifdef _DEBUG_HOMARD_
137       write (ulsort,texte(langue,1)) 'Entree', nompro
138       call dmflsh (iaux)
139 #endif
140 c
141 #include "impr03.h"
142 c
143 #include "impr06.h"
144 c
145 #ifdef _DEBUG_HOMARD_
146       write (ulsort,90002) 'nbarto', nbarto
147       write (ulsort,90002) 'rsarto', rsarto
148       write (ulsort,90002) 'nbele0', nbele0
149 #endif
150 c
151 c====
152 c 2. initialisations des renumerotations
153 c====
154 c
155       do 21 , iaux = 1 , rsarto
156         narsca(iaux) = 0
157    21 continue
158 c
159       do 22 , iaux = 1 , nbele0
160         narsho(iaux) = 0
161    22 continue
162 c
163 c====
164 c 3. Conversion en lineaire
165 c====
166 c
167       if ( degre.eq.1 ) then
168 c
169 c                           a1
170 c                  n1*-------------*n2
171 c
172         do 31 , larete = 1 , nbarto
173 c
174 #ifdef _DEBUG_HOMARD_
175       write (ulsort,texte(langue,11)) mess14(langue,2,1), larete
176       write (ulsort,texte(langue,12))
177      >                     cotyel, cfaare(cotyel,famare(larete))
178 #endif
179 c
180           if ( cfaare(cotyel,famare(larete)).ne.0 ) then
181 c
182             etat = mod( hetare(larete) , 10 )
183 c
184 #ifdef _DEBUG_HOMARD_
185       write (ulsort,texte(langue,13)) hetare(larete), etat
186 #endif
187 c
188             if ( etat.eq.0 .or. hierar.ne.0 ) then
189 c
190               elemen = elemen + 1
191 #ifdef _DEBUG_HOMARD_
192               write (ulsort,texte(langue,14)) elemen
193 #endif
194               narsho(elemen) = larete
195               narsca(larete) = elemen
196 c
197               if ( cfaare(coorfa,famare(larete)).eq.1 ) then
198                 noeele(elemen,1) = nnosca(somare(1,larete))
199                 noeele(elemen,2) = nnosca(somare(2,larete))
200               else
201                 noeele(elemen,1) = nnosca(somare(2,larete))
202                 noeele(elemen,2) = nnosca(somare(1,larete))
203               endif
204 c
205               famele(elemen) = cfaare(cofamd,famare(larete))
206               typele(elemen) = cfaare(cotyel,famare(larete))
207 c
208 #ifdef _DEBUG_HOMARD_
209             if ( elemen.eq.-12 ) then
210             write (ulsort,90002) 'famare', famare(larete)
211             write (ulsort,texte(langue,14)) elemen
212             write (ulsort,texte(langue,15))
213      >             (noeele(elemen,iaux),iaux=1,2)
214             write (ulsort,90002) 'Famille MED',famele(elemen)
215             write (ulsort,90002) 'Type MED   ',typele(elemen)
216             endif
217 #endif
218             endif
219 c
220           endif
221 c
222    31   continue
223 c
224 c====
225 c 4. Conversion en quadratique
226 c====
227 c
228       else
229 c                           a1
230 c                  n1*------*------*n4
231 c                          n2
232 c
233         do 41 , larete = 1 , nbarto
234 c
235 #ifdef _DEBUG_HOMARD_
236       write (ulsort,texte(langue,11)) mess14(langue,2,1), larete
237       write (ulsort,texte(langue,12))
238      >                     cotyel, cfaare(cotyel,famare(larete))
239 #endif
240 c
241           if ( cfaare(cotyel,famare(larete)).ne.0 ) then
242 c
243             etat = mod( hetare(larete) , 10)
244 c
245 #ifdef _DEBUG_HOMARD_
246       write (ulsort,texte(langue,13)) hetare(larete), etat
247 #endif
248 c
249             if ( etat.eq.0 .or. hierar.ne.0 ) then
250               elemen = elemen + 1
251 #ifdef _DEBUG_HOMARD_
252               write (ulsort,texte(langue,14)) elemen
253 #endif
254               narsho(elemen) = larete
255               narsca(larete) = elemen
256 c
257               if ( cfaare(coorfa,famare(larete)).eq.1 ) then
258                 noeele(elemen,1) = nnosca(somare(1,larete))
259                 noeele(elemen,2) = nnosca(somare(2,larete))
260               else
261                 noeele(elemen,1) = nnosca(somare(2,larete))
262                 noeele(elemen,2) = nnosca(somare(1,larete))
263               endif
264               noeele(elemen,3) = nnosca(np2are(larete))
265 c
266               famele(elemen) = cfaare(cofamd,famare(larete))
267               typele(elemen) = cfaare(cotyel,famare(larete))
268             endif
269 c
270           endif
271 c
272    41   continue
273 c
274       endif
275 c
276 c====
277 c 5. la fin
278 c====
279 c
280       if ( codret.ne.0 ) then
281 c
282 #include "envex2.h"
283 c
284       write (ulsort,texte(langue,1)) 'Sortie', nompro
285       write (ulsort,texte(langue,2)) codret
286 c
287       endif
288 c
289 #ifdef _DEBUG_HOMARD_
290       write (ulsort,texte(langue,1)) 'Sortie', nompro
291       call dmflsh (iaux)
292 #endif
293 c
294       end