1 subroutine cmcte3 ( lehexa, indtet, indptp,
2 > laface, codfac, areint,
5 > hettet, filtet, pertet,
7 > ulsort, langue, codret )
8 c ______________________________________________________________________
12 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
14 c Version originale enregistree le 18 juin 1996 sous le numero 96036
15 c aupres des huissiers de justice Simart et Lavoir a Clamart
16 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
17 c aupres des huissiers de justice
18 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
20 c HOMARD est une marque deposee d'Electricite de France
26 c ______________________________________________________________________
28 c Creation du Maillage - Creation de TEtraedres par leurs aretes
30 c - par paquets de 3 appuyes sur une face
32 c ______________________________________________________________________
34 c S1 si code<5 are1 si code<5 S4 si code<5
35 c |-----------------------------------|
36 c | .-----------------------> . |
52 c | <-------------------- . |
53 c |-----------------------------------|
54 c S2 si code<5 are3 si code<5 S3 si code<5
55 c ______________________________________________________________________
57 c . nom . e/s . taille . description .
58 c .____________________________________________________________________.
59 c . lehexa . e . 1 . hexaedre a decouper .
60 c . indtet . es . 1 . indice du dernier tetraedre cree .
61 c . indptp . e . 1 . indice du dernier pere enregistre .
62 c . laface . e . 1 . face coupee en 3 triangles .
63 c . codfac . e . 1 . code de la face coupee en 3 tria dans l'hex.
64 c . areint . e . 5 . Les aretes internes utiles .
65 c . . . . S1 du cote ffi+1 S4 et S3 base ffi .
66 c . . . . S2 du cote de ffi+2 n1 arete coupee .
67 c . aretri . e .nouvtr*3. numeros des 3 aretes des triangles .
68 c . filqua . e . nouvqu . premier fils des quadrangles .
69 c . aretet . es .nouvta*6. numeros des 6 aretes des tetraedres .
70 c . famtet . es . nouvte . famille des tetraedres .
71 c . hettet . es . nouvte . historique de l'etat des tetraedres .
72 c . filtet . es . nouvte . premier fils des tetraedres .
73 c . pertet . es . nouvte . pere des tetraedres .
74 c . . . . si pertet(i) > 0 : numero du tetraedre .
75 c . . . . si pertet(i) < 0 : -numero dans pthepe .
76 c . famhex . e . nouvhe . famille des hexaedres .
77 c . cfahex . . nctfhe. codes des familles des hexaedres .
78 c . . . nbfhex . 1 : famille MED .
79 c . . . . 2 : type d'hexaedres .
80 c . . . . 3 : famille des tetraedres de conformite .
81 c . . . . 4 : famille des pyramides de conformite .
82 c . ulsort . e . 1 . unite logique de la sortie generale .
83 c . langue . e . 1 . langue des messages .
84 c . . . . 1 : francais, 2 : anglais .
85 c . codret . es . 1 . code de retour des modules .
86 c ______________________________________________________________________
89 c 0. declarations et dimensionnement
92 c 0.1. ==> generalites
98 parameter ( nompro = 'CMCTE3' )
113 integer lehexa, indtet, indptp
114 integer laface, codfac
116 integer aretri(nouvtr,3)
117 integer filqua(nouvqu)
118 integer hettet(nouvte), aretet(nouvta,6)
119 integer filtet(nouvte), pertet(nouvte), famtet(nouvte)
120 integer famhex(nouvhe), cfahex(nctfhe,nbfhex)
122 integer ulsort, langue, codret
124 c 0.4. ==> variables locales
127 integer nupere, nufami
128 integer as1n1, as4n1, as3n1, as2n1
129 integer as1s0, as4s0, as3s0, as2s0, an1s0
130 integer as1s4, as2s3, as3s4
133 parameter ( nbmess = 10 )
134 character*80 texte(nblang,nbmess)
136 c ______________________________________________________________________
144 #ifdef _DEBUG_HOMARD_
145 write (ulsort,texte(langue,1)) 'Entree', nompro
153 #ifdef _DEBUG_HOMARD_
154 write (ulsort,90002) 'laface, codfac', laface, codfac
155 write (ulsort,90002) 'areint', areint
159 c 2. Recuperation des aretes tracees sur la face et des aretes internes
162 iaux = -filqua(laface)
164 if ( codfac.lt.5 ) then
165 as4n1 = aretri(iaux,1)
166 as3n1 = aretri(iaux,3)
167 as1n1 = aretri(iaux+1,1)
168 as1s4 = aretri(iaux+1,2)
169 as2n1 = aretri(iaux+2,1)
170 as2s3 = aretri(iaux+2,3)
172 as4n1 = aretri(iaux,3)
173 as3n1 = aretri(iaux,1)
174 as1n1 = aretri(iaux+2,1)
175 as1s4 = aretri(iaux+2,3)
176 as2n1 = aretri(iaux+1,1)
177 as2s3 = aretri(iaux+1,2)
179 as3s4 = aretri(iaux,2)
186 #ifdef _DEBUG_HOMARD_
187 write (ulsort,90002) 'as1n1, as4n1, as3n1, as2n1',
188 > as1n1, as4n1, as3n1, as2n1
189 write (ulsort,90002) 'as1s0, as4s0, as3s0, as2s0, an1s0',
190 > as1s0, as4s0, as3s0, as2s0, an1s0
191 write (ulsort,90002) 'as1s4, as2s3, as3s4',
192 > as1s4, as2s3, as3s4
196 c 3. Creation des tetraedres
200 nufami = cfahex(coftfh,famhex(lehexa))
202 c 3.1. ==> Sur la face centrale, ffi
205 #ifdef _DEBUG_HOMARD_
206 write (ulsort,texte(langue,3)) 'CMCTEA pour ffi', nompro
208 call cmctea ( aretet, famtet, hettet, filtet, pertet,
209 > an1s0, as4s0, as3s0, as4n1,
211 > nupere, nufami, indtet )
213 c 3.2. ==> Sur la face ffi+1 (si code<5)
216 #ifdef _DEBUG_HOMARD_
217 write (ulsort,texte(langue,3)) 'CMCTEA pour ffi+1', nompro
219 call cmctea ( aretet, famtet, hettet, filtet, pertet,
220 > an1s0, as1s0, as4s0, as1n1,
222 > nupere, nufami, indtet )
224 c 3.3. ==> Sur la face ffi+2 (si code<5)
227 #ifdef _DEBUG_HOMARD_
228 write (ulsort,texte(langue,3)) 'CMCTEA pour ffi+2', nompro
230 call cmctea ( aretet, famtet, hettet, filtet, pertet,
231 > an1s0, as3s0, as2s0, as3n1,
233 > nupere, nufami, indtet )
239 if ( codret.ne.0 ) then
243 write (ulsort,texte(langue,1)) 'Sortie', nompro
244 write (ulsort,texte(langue,2)) codret
248 #ifdef _DEBUG_HOMARD_
249 write (ulsort,texte(langue,1)) 'Sortie', nompro