1 subroutine cmdrpe ( aretri, decfac,
4 > disare, distri, disqua, dispen,
9 c ______________________________________________________________________
13 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
15 c Version originale enregistree le 18 juin 1996 sous le numero 96036
16 c aupres des huissiers de justice Simart et Lavoir a Clamart
17 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
18 c aupres des huissiers de justice
19 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
21 c HOMARD est une marque deposee d'Electricite de France
27 c ______________________________________________________________________
29 c Creation du Maillage - Deraffinement - Regroupement des Pentaedres
31 c ______________________________________________________________________
33 c . nom . e/s . taille . description .
34 c .____________________________________________________________________.
35 c . aretri . e .nouvtr*3. numeros des 3 aretes des triangles .
36 c . decfac . e . -nbquto. decision sur les faces (quad. + tri.) .
38 c . facpen . e .nouvpf*5. numeros des faces des pentaedres .
39 c . hetpen . e . nouvpe . historique de l'etat des pentaedres .
40 c . filpen . e . nouvpe . premier fils des pentaedres .
41 c . disare . s . nouvar . indicateurs de disparition des aretes .
42 c . distri . s . nouvtr . indicateurs de disparition des triangles .
43 c . disqua . s . nouvqu . indicateurs de disparition des quadrangles .
44 c . dispen . s . nouvpe . indicateurs de disparition des pentaedres .
45 c . disnoe . s . nouvno . indicateurs de disparition des aretes .
46 c . np2are . e . nouvar . numero des noeuds p2 milieux d'aretes .
47 c . codret . e/s . 1 . code de retour des modules .
48 c . . . . 0 : pas de probleme .
49 c ______________________________________________________________________
52 c 0. declarations et dimensionnement
55 c 0.1. ==> generalites
60 cgn character*6 nompro
61 cgn parameter ( nompro = 'CMDRPE' )
73 c remarque : "disnoe", "disare", "dispen" et "disqua" sont des
74 c tableaux temporaires destines a la suppression ulterieure des
75 c entites. par convention, une valeur 0 indique la conservation et
76 c une valeur 1 la disparition de l'entite concernee par la liste.
78 integer decfac(-nbquto:nbtrto)
79 integer aretri(nouvtr,3)
80 integer facpen(nouvpe,5)
81 integer hetpen(nouvpe), filpen(nouvpe), disare(nouvar)
82 integer distri(nouvtr), disqua(nouvqu)
83 integer dispen(nouvpe), disnoe(nouvno)
84 integer np2are(nouvar)
88 c 0.4. ==> variables locales
90 integer nf3nf4, nf4nf5, nf5nf3
91 integer pf3f1, pf3f2, pf4f1, pf4f2, pf5f1, pf5f2
92 integer pf1, pf1n7, pf1n8, pf1n9
94 integer lepent, lefils, leprem
95 integer etapen, dt, d1, d2, d3, d4, d5
97 c 0.5. ==> initialisations
100 c ______________________________________________________________________
103 c 1. traitement des pentaedres
106 do 100 , lepent = 1 , nbpepe
108 etapen = mod(hetpen(lepent),100)
110 if ( etapen.eq.80 ) then
112 c Le pentaedre est coupe en 8.
113 c Il est a reactiver dans 2 cas :
114 c . ses 5 faces sont a reactiver : decision -1 pour chacune
115 c . 4 faces sont a reactiver : decision -1 pour chacune
116 c la derniere reste coupee : decision 0
117 c donc des que la somme des decisions est <= -4
119 d1 = decfac(facpen(lepent,1))
120 d2 = decfac(facpen(lepent,2))
121 d3 = decfac(-facpen(lepent,3))
122 d4 = decfac(-facpen(lepent,4))
123 d5 = decfac(-facpen(lepent,5))
124 dt = d1 + d2 + d3 + d4 + d5
125 cgn print *,'pour penta ',lepent,', dt = ',dt
129 c 1.2.1. ==> marquage de ses huit pentaedres fils "a disparaitre"
131 leprem = filpen(lepent)
133 do 210 , lefils = leprem , leprem + 7
139 c 1.2.2. ==> marquage de ses six quadrangles internes "a disparaitre"
142 pf3f1 = facpen(lefils,3)
144 pf4f1 = facpen(lefils,4)
146 pf5f1 = facpen(lefils,5)
150 pf3f2 = facpen(lefils,3)
152 pf4f2 = facpen(lefils,4)
154 pf5f2 = facpen(lefils,5)
157 c 1.2.3. ==> marquage de ses quatre triangles internes "a disparaitre"
160 pf1n7 = facpen(lefils,2)
164 pf1n8 = facpen(lefils,2)
168 pf1n9 = facpen(lefils,2)
172 pf1 = facpen(lefils,2)
175 c 1.2.4. ==> marquage des trois des aretes internes "a disparaitre"
177 nf3nf4 = aretri(pf1,1)
179 if ( degre.eq.2 ) then
180 disnoe(np2are(nf3nf4)) = 1
183 nf4nf5 = aretri(pf1,2)
185 if ( degre.eq.2 ) then
186 disnoe(np2are(nf4nf5)) = 1
189 nf5nf3 = aretri(pf1,3)
191 if ( degre.eq.2 ) then
192 disnoe(np2are(nf5nf3)) = 1