1 subroutine utsute ( distet,
2 > hettet, pertet, filtet,
10 c ______________________________________________________________________
14 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
16 c Version originale enregistree le 18 juin 1996 sous le numero 96036
17 c aupres des huissiers de justice Simart et Lavoir a Clamart
18 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
19 c aupres des huissiers de justice
20 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
22 c HOMARD est une marque deposee d'Electricite de France
28 c ______________________________________________________________________
30 c UTilitaire - SUppression des TEtraedres
32 c ______________________________________________________________________
34 c . nom . e/s . taille . description .
35 c .____________________________________________________________________.
36 c . distet . e . nouvte . indicateurs de disparition des tetraedres .
37 c . hettet . es . nouvte . historique de l'etat des tetraedres .
38 c . pertet . es . nouvte . pere des tetraedres .
39 c . . . . si pertet(i) > 0 : numero du tetraedre .
40 c . . . . si pertet(i) < 0 : -numero dans pthepe .
41 c . filtet . es . nouvte . premier fils des tetraedres .
42 c . tritet . es .nouvtf*4. numeros des 4 triangles des tetraedres .
43 c . cotrte . es .nouvtf*4. code des 4 triangles des tetraedres .
44 c . arenoe . es . nouvno . arete liee a un nouveau noeud .
45 c . somare . es .2*nouvar. numeros des extremites d'arete .
46 c . aretri . es .nouvtr*3. numeros des 3 aretes des triangles .
47 c . anctet . s . nouvte . anciens numeros des tetraedres conserves .
48 c . noutet . s .0:nouvte. nouveaux numeros des tetraedres conserves .
49 c . nbtere . s . 1 . nombre de tetraedres restants .
50 c . codret . s . 1 . code de retour, 0 si ok, (no tetra) si pb .
51 c ______________________________________________________________________
54 c 0. declarations et dimensionnement
57 c 0.1. ==> generalites
62 cgn character*6 nompro
63 cgn parameter ( nompro = 'UTSUTE' )
72 integer distet(nouvte)
73 integer hettet(nouvte), pertet(nouvte), filtet(nouvte)
74 integer tritet(nouvtf,4), cotrte(nouvtf,4)
75 integer arenoe(nouvno)
76 integer somare(2,nouvar)
77 integer aretri(nouvtr,3)
78 integer anctet(nouvte), noutet(0:nouvte)
82 c 0.4. ==> variables locales
84 integer letetr, gdpere, lepere, lefrer
85 integer etgper, htfrer, etfrer, ardiag
86 integer cmptr, actifs, decoup
89 c 0.5. ==> initialisations
92 c ______________________________________________________________________
95 c 1. fabrication des tableaux anctet et noutet
101 c 1.1 generation des tableaux reciproques
103 do 100 , letetr = 1 , nbtepe
105 if ( distet(letetr).eq.1 ) then
108 hettet(letetr) = 100 * int( hettet(letetr)/100 ) + 55
113 anctet(cmptr) = letetr
114 noutet(letetr) = cmptr
120 c 1.2 nombre d'entites restantes apres suppression
121 c (pour la remise a jour du nombre d'entites du maillage)
126 c 2. modification des etats des peres des tetraedres
129 do 200 , letetr = 1 , nbtepe
131 if ( distet(letetr).eq.1 ) then
133 c mise a zero de l'etat actuel du pere
135 lepere = pertet(letetr)
136 hettet(lepere) = hettet(lepere) - mod(hettet(lepere),100)
143 c 3. modification des etats des grand-peres des tetraedres,
147 do 300 , letetr = 1 , nbtepe
149 if ( distet(letetr).eq.1 ) then
151 c 3.1 verification de l'etat du grand-pere
153 lepere = pertet(letetr)
154 gdpere = pertet(lepere)
156 if ( gdpere.ne.0 ) then
158 iaux = mod(hettet(gdpere),100)
159 etgper = (iaux-mod(iaux,10)) / 10
161 if ( etgper.ne.8 ) then
163 c 3.1.1 verification de l'etat des freres du pere
165 lefrer = filtet(gdpere)
168 do 310 , htfrer = lefrer , lefrer + 7
170 etfrer = mod( hettet(htfrer) , 100)
172 if ( etfrer.ne.0 ) then
178 if ( actifs.eq.1 ) then
180 c 3.1.2 recherche de la diagonale de decoupe et de l'etat du
184 > filtet, tritet, aretri,
185 > arenoe, somare, cotrte,
186 > ardiag, decoup, codret )
188 if (codret.ne.0) then
192 c 3.1.3 attribution de l'etat de l'entite
194 hettet(gdpere) = hettet(gdpere)
195 > - mod(hettet(gdpere),100)