1 subroutine utsuqu ( disqua,
2 > hetqua, perqua, filqua,
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 QUadrangles
27 c ______________________________________________________________________
29 c Attention : tous les quadrangles n'ont pas forcement un pere !
30 c en effet ceux crees en interne a des volumes
31 c sont de la premiere generation, meme s'ils
32 c sont a des niveaux > 1
33 c ______________________________________________________________________
35 c . nom . e/s . taille . description .
36 c .____________________________________________________________________.
37 c . disqua . e . nouvqu . indicateurs de disparition des quadrangles .
38 c . hetqua . es . nouvqu . historique de l'etat des quadrangles .
39 c . perqua . es . nouvqu . pere des quadrangles .
40 c . filqua . es . nouvqu . premier fils des quadrangles .
41 c . ancqua . s . nouvqu . anciens numeros des quadrangles conserves .
42 c . nouqua . s .0:nouvqu. nouveaux numeros des quadrangles conserves .
43 c . nbqure . s . 1 . nombre de quadrangles restants .
44 c ______________________________________________________________________
47 c 0. declarations et dimensionnement
50 c 0.1. ==> generalites
55 cgn character*6 nompro
56 cgn parameter ( nompro = 'UTSUQU' )
65 integer disqua(nouvqu)
66 integer hetqua(nouvqu), perqua(nouvqu), filqua(nouvqu)
67 integer ancqua(nouvqu), nouqua(0:nouvqu)
70 c 0.4. ==> variables locales
72 integer lequad, lepere, gdpere, etgper, lefrer
73 integer cmptr, e1, e2, e3, e4, et
74 c ______________________________________________________________________
77 c 1. fabrication des tableaux ancqua et nouqua
83 c 1.1 generation des tableaux reciproques
85 do 100 , lequad = 1 , nbqupe
87 if ( disqua(lequad).ne.0 ) then
90 hetqua(lequad) = 100 * int( hetqua(lequad) / 100 ) + 55
95 ancqua(cmptr) = lequad
96 nouqua(lequad) = cmptr
102 c 1.2 nombre d'entites restantes apres suppression
103 c (pour la remise a jour du nombre d'entites du maillage)
108 c 2. modification des etats des peres eventuels des quadrangles disparus
109 c Remarque : si on est parti d'un macro-maillage non conforme,
110 c certains quadrangles ont des peres adoptifs de numero
111 c negatif. Il ne faut pas changer leur etat
114 do 200 , lequad = 1 , nbqupe
116 if ( disqua(lequad).ne.0 ) then
118 c mise a zero de l'etat actuel du pere eventuel
120 lepere = perqua(lequad)
121 if ( lepere.gt.0 ) then
122 hetqua(lepere) = hetqua(lepere) - mod(hetqua(lepere),100)
130 c 3. modification des etats des eventuels grand-peres des quadrangles
131 c Remarque : si on est parti d'un macro-maillage non conforme,
132 c certains quadrangles ont des peres adoptifs de numero
133 c negatif. Il ne faut pas changer leur etat
136 do 300 , lequad = 1 , nbqupe
138 if ( disqua(lequad).ne.0 ) then
140 lepere = perqua(lequad)
142 if ( lepere.gt.0 ) then
144 gdpere = perqua(lepere)
146 if ( gdpere.gt.0 ) then
148 c 3.1 verification de l'etat du grand-pere
150 etgper = mod( hetqua(gdpere) , 100 )
152 if ( etgper.ne.4 ) then
154 c 3.1.1 verification de l'etat des freres du pere
156 lefrer = filqua(gdpere)
157 e1 = mod( hetqua(lefrer) , 100 )
158 e2 = mod( hetqua(lefrer+1) , 100 )
159 e3 = mod( hetqua(lefrer+2) , 100 )
160 e4 = mod( hetqua(lefrer+3) , 100 )
161 et = e1 + e2 + e3 + e4
163 c 3.1.2 attribution de l'etat 'coupee en 4' a l'entite
166 hetqua(gdpere) = hetqua(gdpere)
167 > - mod(hetqua(gdpere),100)