1 subroutine pcs0te ( letetr, profho,
2 > tritet, cotrte, aretet,
6 > afaire, listar, listno, adiag )
7 c ______________________________________________________________________
11 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
13 c Version originale enregistree le 18 juin 1996 sous le numero 96036
14 c aupres des huissiers de justice Simart et Lavoir a Clamart
15 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
16 c aupres des huissiers de justice
17 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
19 c HOMARD est une marque deposee d'Electricite de France
25 c ______________________________________________________________________
27 c aPres adaptation - Conversion de Solution -
29 c interpolation p2 sur les noeuds - phase 0
31 c decoupage des TEtraedres
33 c ______________________________________________________________________
35 c . nom . e/s . taille . description .
36 c .____________________________________________________________________.
37 c . letetr . e . 1 . tetraedre a examiner .
38 c . profho . e . * . pour chaque entite en numerotation homard :.
39 c . . . . 0 : l'entite est absente du profil .
40 c . . . . 1 : l'entite est presente dans le profil .
41 c . tritet . e .nbtecf*4. numeros des 4 triangles des tetraedres .
42 c . cotrte . e .nbtecf*4. code des 4 triangles des tetraedres .
43 c . aretet . e .nbteca*6. numeros des 6 aretes des tetraedres .
44 c . hettet . e . nbteto . historique de l'etat des tetraedres .
45 c . filtet . e . nbteto . premier fils des tetraedres .
46 c . aretri . e .nbtrto*3. numeros des 3 aretes des triangles .
47 c . somare . e .2*nbarto. numeros des extremites d'arete .
48 c . np2are . e . nbarto . numero des noeuds p2 milieux d'aretes .
49 c . afaire . s . 1 . vrai si l'interpolation est a faire .
50 c . listar . s . 6 . liste des aretes du tetraedre .
51 c . listno . s . 10 . liste des noeuds du tetraedre .
52 c . adiag . s . 1 . arete diagonale si interpolation .
53 c ______________________________________________________________________
56 c 0. declarations et dimensionnement
59 c 0.1. ==> generalites
74 integer profho(nbnoto)
75 integer tritet(nbtecf,4), cotrte(nbtecf,4), aretet(nbteca,6)
76 integer hettet(nbteto), filtet(nbteto)
77 integer aretri(nbtrto,3)
78 integer somare(2,nbarto), np2are(nbarto)
79 integer listar(6), listno(10)
84 c 0.4. ==> variables locales
88 integer t16ff1, t25ff1, t34ff1, td16a2, td25a1, td34a1
89 integer fd16n4, fd25n4, fd34n5, fd16s3, fd25s2, fd34s2
91 c etan = ETAt du tetraedre a l'iteration N
92 c etanp1 = ETAt du tetraedre a l'iteration N+1
95 c ______________________________________________________________________
98 c 1. les seuls cas interessants sont ceux ou un noeud est cree a
99 c l'interieur du tetraedre, donc quand il y a une diagonale.
102 etanp1 = mod( hettet(letetr), 100 )
103 etan = (hettet(letetr)-etanp1) / 100
107 c 45, 46, 47 : en 4 par 2 fois 2 selon l'arete 5, 6, 7
109 if ( ( etanp1.eq.85 .or. etanp1.eq.86 .or. etanp1.eq.87 ) .and.
110 > ( etan.ne.etanp1 ) ) then
114 > etanp1.eq.45 .or. etanp1.eq.46 .or. etanp1.eq.47 ) then
123 c 2. Caracteristiques du tetraedre
126 if ( typdec.ne.0 ) then
128 c 2.1. ==> reperage des aretes et des sommets du tetraedre
130 call utaste ( letetr,
131 > nbtrto, nbtecf, nbteca,
133 > tritet, cotrte, aretet,
136 c 2.2. ==> recuperation des 6 noeuds milieux
139 listno(4+iaux) = np2are(listar(iaux))
145 c 3. on verifie que le champ est present sur tous les noeuds
149 if ( typdec.ne.0 ) then
152 do 31 , iaux = 1 , 10
153 if ( profho(listno(iaux)).eq.0 ) then
168 c 4. S'il faudra interpoler, on cherche la diagonale
173 c 4.1. ==> le tetraedre vient d'etre decoupee en 8 par (1,6)
175 if ( etanp1.eq.85 ) then
177 t16ff1 = filtet(letetr) + 4
178 fd16n4 = tritet(t16ff1,3)
179 adiag = aretri(fd16n4,1)
181 c 4.2. ==> le tetraedre vient d'etre decoupee en 8 par (2,5)
183 elseif ( etanp1.eq.86 ) then
185 t25ff1 = filtet(letetr) + 4
186 fd25n4 = tritet(t25ff1,2)
187 adiag = aretri(fd25n4,1)
189 c 4.3. ==> le tetraedre vient d'etre decoupee en 8 par (3,4)
191 elseif ( etanp1.eq.87 ) then
193 t34ff1 = filtet(letetr) + 4
194 fd34n5 = tritet(t34ff1,2)
195 adiag = aretri(fd34n5,2)
197 c 4.4. ==> le tetraedre vient d'etre decoupee en 4 par (1,6)
199 elseif ( etanp1.eq.45 ) then
201 td16a2 = filtet(letetr)
202 fd16s3 = tritet(td16a2,1)
203 adiag = aretri(fd16s3,2)
205 c 4.5. ==> le tetraedre vient d'etre decoupee en 4 par (2,5)
207 elseif ( etanp1.eq.46 ) then
209 td25a1 = filtet(letetr)
210 fd25s2 = tritet(td25a1,1)
211 adiag = aretri(fd25s2,3)
213 c 4.6. ==> le tetraedre vient d'etre decoupee en 4 par (3,4)
215 elseif ( etanp1.eq.47 ) then
217 td34a1 = filtet(letetr)
218 fd34s2 = tritet(td34a1,1)
219 adiag = aretri(fd34s2,3)