1 subroutine utsupe ( dispen,
2 > hetpen, perpen, filpen,
5 c ______________________________________________________________________
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c UTilitaire - SUppression des PEntaedres
27 c ______________________________________________________________________
29 c . nom . e/s . taille . description .
30 c .____________________________________________________________________.
31 c . dispen . e . nouvpe . indicateurs de disparition des pentaedres .
32 c . hetpen . es . nouvpe . historique de l'etat des pentaedres .
33 c . perpen . es . nouvpe . pere des pentaedres .
34 c . filpen . es . nouvpe . premier fils des pentaedres .
35 c . ancpen . s . nouvpe . anciens numeros des pentaedres conserves .
36 c . noupen . s .0:nouvpe. nouveaux numeros des pentaedres conserves .
37 c . nbpere . s . 1 . nombre de pentaedres restants .
38 c ______________________________________________________________________
41 c 0. declarations et dimensionnement
44 c 0.1. ==> generalites
49 cgn character*6 nompro
50 cgn parameter ( nompro = 'UTSUPE' )
59 integer dispen(nouvpe)
60 integer hetpen(nouvpe), perpen(nouvpe), filpen(nouvpe)
61 integer ancpen(nouvpe), noupen(0:nouvpe)
64 c 0.4. ==> variables locales
66 integer lepent, gdpere, lepere, lefrer
67 integer etgper, htfrer, etfrer
71 c 0.5. ==> initialisations
72 c ______________________________________________________________________
75 c 1. fabrication des tableaux ancpen et noupen
81 c 1.1 generation des tableaux reciproques
83 do 100 , lepent = 1 , nbpepe
85 if ( dispen(lepent).eq.1 ) then
88 hetpen(lepent) = 100 * int( hetpen(lepent)/100 ) + 55
93 ancpen(cmptr) = lepent
94 noupen(lepent) = cmptr
100 c 1.2 nombre d'entites restantes apres suppression
101 c (pour la remise a jour du nombre d'entites du maillage)
106 c 2. modification des etats des peres des pentaedres
109 do 200 , lepent = 1 , nbpepe
111 if ( dispen(lepent).eq.1 ) then
113 c mise a zero de l'etat actuel du pere
115 lepere = perpen(lepent)
116 hetpen(lepere) = hetpen(lepere) - mod(hetpen(lepere),100)
123 c 3. modification des etats des grand-peres des pentaedres,
127 do 300 , lepent = 1 , nbpepe
129 if ( dispen(lepent).eq.1 ) then
131 c 3.1 verification de l'etat du grand-pere
133 lepere = perpen(lepent)
134 gdpere = perpen(lepere)
136 if ( gdpere.ne.0 ) then
138 iaux = mod(hetpen(gdpere),100)
139 etgper = (iaux-mod(iaux,10)) / 10
141 if ( etgper.ne.8 ) then
143 c 3.1.1 verification de l'etat des freres du pere
145 lefrer = filpen(gdpere)
148 do 310 , htfrer = lefrer , lefrer + 7
150 etfrer = mod( hetpen(htfrer) , 100)
152 if ( etfrer.ne.0 ) then
158 if ( actifs.eq.1 ) then
160 c 3.1.3 attribution de l'etat de l'entite
162 hetpen(gdpere) = hetpen(gdpere)
163 > - mod(hetpen(gdpere),100)