1 subroutine pcceq3 ( cfanoe, famnoe, nnosho, nnosca,
2 > cfampo, fammpo, nmpsho, nmpsca,
3 > cfaare, famare, narsho, narsca,
4 > cfatri, famtri, ntrsho, ntrsca,
5 > cfaqua, famqua, nqusho, nqusca,
7 > noehom, mpohom, arehom, trihom, quahom,
9 > eqnoeu, eqmapo, eqaret, eqtria, eqquad,
10 > nbeqnn, nbeqmn, nbeqan, nbeqtn, nbeqqn,
11 > ulsort, langue, codret )
12 c ______________________________________________________________________
16 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
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
24 c HOMARD est une marque deposee d'Electricite de France
30 c ______________________________________________________________________
32 c aPres adaptation - Conversion - Creation des EQuivalences - phase 3
34 c ______________________________________________________________________
36 c remarque : on trie les mailles en ne prenant que celles qui
37 c sont vraiment des elements : cela se reconnait en
38 c utilisant les codes lies au type des elements.
40 c remarque : il vaut mieux que la boucle sur les entites soit a
41 c l'interieur car elle sera toujours plus longue que
42 c celle sur les equivalences, d'ou une meilleure
44 c ______________________________________________________________________
46 c . nom . e/s . taille . description .
47 c .____________________________________________________________________.
48 c . cfanoe . e . nctfno*. codes des familles des noeuds .
49 c . . . nbnoto . 1 : famille MED .
50 c . . . . + l : appartenance a l'equivalence l .
51 c . famnoe . e . nbnoto . famille des aretes .
52 c . nnosho . e . rsnoto . numero des noeuds dans HOMARD .
53 c . nnosca . e . rsnoto . numero des noeuds dans le code de calcul .
54 c . cfampo . e . nctfmp*. codes des familles des mailles-points .
55 c . . . nbfmpo . 1 : famille MED .
56 c . . . . 2 : type de maille-point .
57 c . . . . 3 : famille des sommets .
58 c . . . . + l : appartenance a l'equivalence l .
59 c . fammpo . e . nbmpto . famille des mailles-points .
60 c . nmpsho . e . rsmpac . numero des mailles-points dans HOMARD .
61 c . nmpsca . e . rsmpto . numero des mailles-points du calcul .
62 c . cfaare . e . nctfar*. codes des familles des aretes .
63 c . . . nbfare . 1 : famille MED .
64 c . . . . 2 : type de segment .
65 c . . . . 3 : orientation .
66 c . . . . 4 : famille d'orientation inverse .
67 c . . . . 5 : numero de ligne de frontiere .
68 c . . . . > 0 si concernee par le suivi de frontiere.
69 c . . . . <= 0 si non concernee .
70 c . . . . 6 : famille frontiere active/inactive .
71 c . . . . 7 : numero de surface de frontiere .
72 c . . . . + l : appartenance a l'equivalence l .
73 c . famare . e . nbarto . famille des aretes .
74 c . narsho . e . rsarac . numero des aretes dans HOMARD .
75 c . narsca . e . rsarto . numero des aretes du calcul .
76 c . cfatri . e . nctftr*. codes des familles des triangles .
77 c . cfatri . e . nctftr*. codes des familles des triangles .
78 c . . . nbftri . 1 : famille MED .
79 c . . . . 2 : type de triangle .
80 c . . . . 3 : numero de surface de frontiere .
81 c . . . . 4 : famille des aretes internes apres raf.
82 c . . . . + l : appartenance a l'equivalence l .
83 c . famtri . e . nbtrto . famille des triangles .
84 c . ntrsho . e . rstrac . numero des triangles dans HOMARD .
85 c . ntrsca . e . rstrto . numero des triangles du calcul .
86 c . cfaqua . e . nctfqu*. codes des familles des quadrangles .
87 c . . . nbfqua . 1 : famille MED .
88 c . . . . 2 : type de quadrangle .
89 c . . . . 3 : numero de surface de frontiere .
90 c . . . . 4 : famille des aretes internes apres raf.
91 c . . . . 5 : famille des triangles de conformite .
92 c . . . . 6 : famille de sf active/inactive .
93 c . . . . + l : appartenance a l'equivalence l .
94 c . famqua . . nbquto . famille des quadrangles .
95 c . nqusho . e . rsquac . numero des quadrangles dans HOMARD .
96 c . nqusca . e . rsquto . numero des quadrangles du calcul .
97 c . typele . e . nbelem . type des elements .
98 c . noehom . e . nbnoto . liste etendue des homologues par noeuds .
99 c . mpohom . e . nbmpto . liste etendue des homologues par ma.pts .
100 c . arehom . e . nbarto . liste etendue des homologues par aretes .
101 c . trihom . e . nbtrto . ensemble des triangles homologues .
102 c . quahom . e . nbquto . ensemble des quadrangles homologues .
103 c . eqpntr . s .5*nbequi. 5i-4 : nombre de paires de noeuds pour .
104 c . . . . l'equivalence i .
105 c . . . . 5i-3 : idem pour les mailles-points .
106 c . . . . 5i-2 : idem pour les aretes .
107 c . . . . 5i-1 : idem pour les triangles .
108 c . . . . 5i : idem pour les quadrangles .
109 c . eqnoeu . s .2*nbeqno. liste des paires de noeuds equivalents avec.
110 c . . . . la convention : eqnoeu(i)<-->eqnoeu(i+1) .
111 c . eqmapo . s .2*nbeqmp. idem pour les mailles-points .
112 c . eqaret . s .2*nbeqar. idem pour les aretes .
113 c . eqtria . s .2*nbeqtr. idem pour les triangles .
114 c . eqquad . s .2*nbeqqu. idem pour les quadrangles .
115 c . nbeqno . s . 1 . nombre total de noeuds dans les equivalen. .
116 c . nbeqmp . s . 1 . nombre total de mailles-points dans les eq..
117 c . nbeqar . s . 1 . nombre total d'aretes dans les eq. .
118 c . nbeqtr . s . 1 . nombre total de triangles dans les eq. .
119 c . nbeqqu . s . 1 . nombre total de quadrangles dans les eq. .
120 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
121 c . langue . e . 1 . langue des messages .
122 c . . . . 1 : francais, 2 : anglais .
123 c . codret . es . 1 . code de retour des modules .
124 c . . . . 0 : pas de probleme .
125 c . . . . 1 : probleme .
126 c ______________________________________________________________________
129 c 0. declarations et dimensionnement
132 c 0.1. ==> generalites
138 parameter ( nompro = 'PCCEQ3' )
159 integer nqusca(rsquto), nqusho(rsquac)
160 integer ntrsca(rstrto), ntrsho(rstrac)
161 integer nmpsca(rsmpto), nmpsho(rsmpac)
162 integer narsca(rsarto), narsho(rsarac)
163 integer nnosca(rsnoto), nnosho(rsnoac)
164 integer typele(nbelem)
166 integer cfanoe(nctfno,nbfnoe), famnoe(nbnoto)
167 integer cfampo(nctfmp,nbfmpo), fammpo(nbmpto)
168 integer cfaare(nctfar,nbfare), famare(nbarto)
169 integer cfatri(nctftr,nbftri), famtri(nbtrto)
170 integer cfaqua(nctfqu,nbfqua), famqua(nbquto)
171 integer noehom(nbnoto), mpohom(nbmpto)
172 integer arehom(nbarto), trihom(nbtrto)
173 integer quahom(nbquto)
175 integer eqpntr(5*nbequi)
176 integer eqnoeu(2*nbeqno), eqmapo(2*nbeqmp)
177 integer eqaret(2*nbeqar), eqtria(2*nbeqtr)
178 integer eqquad(2*nbeqqu)
179 integer nbeqnn, nbeqmn, nbeqan, nbeqtn, nbeqqn
181 integer ulsort, langue, codret
183 c 0.4. ==> variables locales
185 integer iaux, jaux, ideb, ifin
188 parameter ( nbmess = 10 )
189 character*80 texte(nblang,nbmess)
191 c 0.5. ==> initialisations
192 c ______________________________________________________________________
202 #ifdef _DEBUG_HOMARD_
203 write (ulsort,texte(langue,1)) 'Entree', nompro
210 c 2. a priori, aucune entite n'appartient a une equivalence
215 do 21 , iaux = ideb , ifin
219 #ifdef _DEBUG_HOMARD_
220 write (ulsort,*) 'nbnoto = ', nbnoto
221 write (ulsort,*) 'nbmapo = ', nbmapo
222 write (ulsort,*) 'nbsegm = ', nbsegm
223 write (ulsort,*) 'nbtria = ', nbtria
224 write (ulsort,*) 'nbquad = ', nbquad
230 #ifdef _DEBUG_HOMARD_
231 write (ulsort,*) '3. Les noeuds ; codret = ', codret
234 if ( nbeqno.ne.0 ) then
238 #ifdef _DEBUG_HOMARD_
239 write (ulsort,texte(langue,3)) 'PCCEQ4_no', nompro
242 > nbnoto, nctfno, nbfnoe, ncffno, ncefno,
243 > nbeqno, jaux, jaux, jaux, rsnoto,
244 > noehom, cfanoe, famnoe, nnosho, nnosca,
246 > eqpntr, eqnoeu, nbeqnn,
247 > ulsort, langue, codret )
252 c 4. Les mailles-points
254 #ifdef _DEBUG_HOMARD_
255 write (ulsort,*) '4. Les mailles-points ; codret = ', codret
258 if ( nbeqmp.ne.0 ) then
261 jaux = nbtetr + nbtria + nbquad + nbsegm
263 #ifdef _DEBUG_HOMARD_
264 write (ulsort,texte(langue,3)) 'PCCEQ4_mp', nompro
267 > nbmpto, nctfmp, nbfmpo, ncffmp, ncefmp,
268 > nbeqmp, jaux, tyhmpo, tyhmpo, nbelem,
269 > mpohom, cfampo, fammpo, nmpsho, nmpsca,
271 > eqpntr, eqmapo, nbeqmn,
272 > ulsort, langue, codret )
279 #ifdef _DEBUG_HOMARD_
280 write (ulsort,*) '5. Les aretes ; codret = ', codret
283 if ( nbeqar.ne.0 ) then
286 jaux = nbtetr + nbtria
288 #ifdef _DEBUG_HOMARD_
289 write (ulsort,texte(langue,3)) 'PCCEQ4_ar', nompro
292 > nbarto, nctfar, nbfare, ncffar, ncefar,
293 > nbeqar, jaux, tyhse1, tyhse2, nbelem,
294 > arehom, cfaare, famare, narsho, narsca,
296 > eqpntr, eqaret, nbeqan,
297 > ulsort, langue, codret )
304 #ifdef _DEBUG_HOMARD_
305 write (ulsort,*) '6. Les triangles ; codret = ', codret
308 if ( nbeqtr.ne.0 ) then
313 #ifdef _DEBUG_HOMARD_
314 write (ulsort,texte(langue,3)) 'PCCEQ4_tr', nompro
317 > nbtrto, nctftr, nbftri, ncfftr, nceftr,
318 > nbeqtr, jaux, tyhtr1, tyhtr2, nbelem,
319 > trihom, cfatri, famtri, ntrsho, ntrsca,
321 > eqpntr, eqtria, nbeqtn,
322 > ulsort, langue, codret )
327 c 7. Les quadrangles : tri selon les equivalences
329 #ifdef _DEBUG_HOMARD_
330 write (ulsort,*) '7. Les quadrangles ; codret = ', codret
333 if ( nbeqqu.ne.0 ) then
336 jaux = nbtetr + nbtria + nbsegm + nbmpto
338 #ifdef _DEBUG_HOMARD_
339 write (ulsort,texte(langue,3)) 'PCCEQ4_qu', nompro
342 > nbquto, nctfqu, nbfqua, ncffqu, ncefqu,
343 > nbeqqu, jaux, tyhqu1, tyhqu2, nbelem,
344 > quahom, cfaqua, famqua, nqusho, nqusca,
346 > eqpntr, eqquad, nbeqqn,
347 > ulsort, langue, codret )
355 if ( codret.ne.0 ) then
359 write (ulsort,texte(langue,1)) 'Sortie', nompro
360 write (ulsort,texte(langue,2)) codret
364 #ifdef _DEBUG_HOMARD_
365 write (ulsort,texte(langue,1)) 'Sortie', nompro