1 subroutine cmcp4a ( lepent, etapen,
2 > indare, indtri, indtet, indpyr,
5 > filare, merare, famare,
7 > filtri, pertri, famtri,
10 > hettet, tritet, cotrte,
11 > filtet, pertet, famtet,
12 > hetpyr, facpyr, cofapy,
13 > filpyr, perpyr, fampyr,
16 > ulsort, langue, codret )
17 c ______________________________________________________________________
21 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
23 c Version originale enregistree le 18 juin 1996 sous le numero 96036
24 c aupres des huissiers de justice Simart et Lavoir a Clamart
25 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
26 c aupres des huissiers de justice
27 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
29 c HOMARD est une marque deposee d'Electricite de France
35 c ______________________________________________________________________
37 c Creation du Maillage - Conformite - decoupage des Pentaedres
39 c - cas 4, phase A, pilotage
41 c - par 1 face quadrangulaire
42 c ______________________________________________________________________
44 c . nom . e/s . taille . description .
45 c .____________________________________________________________________.
46 c . lepent . e . 1 . pentaedre a decouper .
47 c . etapen . s . 1 . etat final du pentaedre .
48 c . indare . es . 1 . indice de la derniere arete creee .
49 c . indtri . es . 1 . indice du dernier triangle cree .
50 c . indtet . es . 1 . indice du dernier tetraedre cree .
51 c . indpyr . es . 1 . indice de la derniere pyramide creee .
52 c . indptp . e . 1 . indice du dernier pere enregistre .
53 c . hetare . es . nouvar . historique de l'etat des aretes .
54 c . somare . es .2*nouvar. numeros des extremites d'arete .
55 c . filare . es . nouvar . premiere fille des aretes .
56 c . merare . es . nouvar . mere des aretes .
57 c . famare . . nouvar . famille des aretes .
58 c . hettri . es . nouvtr . historique de l'etat des triangles .
59 c . aretri . es .nouvtr*3. numeros des 3 aretes des triangles .
60 c . filtri . es . nouvtr . premier fils des triangles .
61 c . pertri . es . nouvtr . pere des triangles .
62 c . famtri . es . nouvtr . famille des triangles .
63 c . nivtri . es . nouvtr . niveau des triangles .
64 c . arequa . e .nouvqu*4. numeros des 4 aretes des quadrangles .
65 c . filqua . e . nouvqu . premier fils des quadrangles .
66 c . hettet . es . nouvte . historique de l'etat des tetraedres .
67 c . tritet . es .nouvtf*4. numeros des 4 triangles des tetraedres .
68 c . cotrte . es .nouvtf*4. code des 4 triangles des tetraedres .
69 c . filtet . es . nouvte . premier fils des tetraedres .
70 c . pertet . es . nouvte . pere des tetraedres .
71 c . . . . si pertet(i) > 0 : numero du tetraedre .
72 c . . . . si pertet(i) < 0 : -numero dans pthepe .
73 c . famtet . es . nouvte . famille des tetraedres .
74 c . hetpyr . es . nouvpy . historique de l'etat des pyramides .
75 c . facpyr . es .nouvyf*5. numeros des 5 faces des pyramides .
76 c . cofapy . es .nouvyf*5. codes des faces des pyramides .
77 c . filpyr . es . nouvpy . premier fils des pyramides .
78 c . perpyr . es . nouvpy . pere des pyramides .
79 c . . . . si perpyr(i) > 0 : numero de la pyramide .
80 c . . . . si perpyr(i) < 0 : -numero dans pphepe .
81 c . fampyr . es . nouvpy . famille des pyramides .
82 c . facpen . e .nouvpf*5. numeros des faces des pentaedres .
83 c . cofape . e .nouvpf*5. codes des faces des pentaedres .
84 c . fampen . e . nouvpe . famille des penaedres .
85 c . cfapen . e . nctfpe*. codes des familles des pentaedres .
86 c . . . nbfpen . 1 : famille MED .
87 c . . . . 2 : type de pentaedres .
88 c . . . . 3 : famille des tetraedres de conformite .
89 c . . . . 4 : famille des pyramides de conformite .
90 c . . . . 3 : famille des tetraedres de conformite .
91 c . . . . 4 : famille des pyramides de conformite .
92 c . ulsort . e . 1 . unite logique de la sortie generale .
93 c . langue . e . 1 . langue des messages .
94 c . . . . 1 : francais, 2 : anglais .
95 c . codret . es . 1 . code de retour des modules .
96 c . . . . 0 : pas de probleme .
97 c ______________________________________________________________________
100 c 0. declarations et dimensionnement
103 c 0.1. ==> generalites
109 parameter ( nompro = 'CMCP4A' )
123 integer lepent, etapen
124 integer indare, indtri, indtet, indpyr
126 integer hetare(nouvar), somare(2,nouvar)
127 integer filare(nouvar), merare(nouvar), famare(nouvar)
128 integer hettri(nouvtr), aretri(nouvtr,3)
129 integer filtri(nouvtr), pertri(nouvtr), famtri(nouvtr)
130 integer nivtri(nouvtr)
131 integer arequa(nouvqu,4)
132 integer filqua(nouvqu)
133 integer hettet(nouvte), tritet(nouvtf,4), cotrte(nouvtf,4)
134 integer filtet(nouvte), pertet(nouvte), famtet(nouvte)
135 integer hetpyr(nouvpy), facpyr(nouvyf,5), cofapy(nouvyf,5)
136 integer filpyr(nouvpy), perpyr(nouvpy), fampyr(nouvpy)
137 integer facpen(nouvpf,5), cofape(nouvpf,5)
138 integer fampen(nouvpe), cfapen(nctfpe,nbfpen)
140 integer ulsort, langue, codret
142 c 0.4. ==> variables locales
145 integer listar(9), listso(6)
148 parameter ( nbmess = 10 )
149 character*80 texte(nblang,nbmess)
151 c 0.5. ==> initialisations
152 c ______________________________________________________________________
160 #ifdef _DEBUG_HOMARD_
161 write (ulsort,texte(langue,1)) 'Entree', nompro
165 texte(1,4) = '(''Aucune arete ne correspond.'')'
167 texte(2,4) = '(''No edge is correct.'')'
172 #ifdef _DEBUG_HOMARD_
173 write (ulsort,90002) 'indare', indare
174 write (ulsort,90002) 'indtri', indtri
175 write (ulsort,90002) 'indtet', indtet
176 write (ulsort,90002) 'indpyr', indpyr
182 c 2. Recherche des aretes
185 #ifdef _DEBUG_HOMARD_
186 write (ulsort,texte(langue,3)) 'UTARPE', nompro
188 call utarpe ( lepent,
190 > arequa, facpen, cofape,
193 #ifdef _DEBUG_HOMARD_
194 write (ulsort,texte(langue,3)) 'UTSOPE', nompro
196 call utsope ( somare, listar, listso )
199 c 3. Recherche de l'arete decoupee
201 #ifdef _DEBUG_HOMARD_
202 do 3999 , iaux = 1 , 9
203 write(ulsort,91002) iaux, listar(iaux),
204 > somare(1,listar(iaux)), somare(2,listar(iaux)),
205 > hetare(listar(iaux))
209 if ( codret.eq.0 ) then
211 c 3.1. ==> La face F3 est coupee : aretes 1, 7, 4 ,9
213 if ( mod(hetare(listar(1)),10).eq.2 .and.
214 > mod(hetare(listar(4)),10).eq.2 .and.
215 > mod(hetare(listar(7)),10).eq.2 .and.
216 > mod(hetare(listar(9)),10).eq.2 ) then
218 #ifdef _DEBUG_HOMARD_
219 write (ulsort,texte(langue,3)) 'CMCP43', nompro
221 call cmcp43 ( lepent, listar, listso,
222 > indare, indtri, indtet, indpyr,
225 > filare, merare, famare,
227 > filtri, pertri, famtri,
230 > hettet, tritet, cotrte,
231 > filtet, pertet, famtet,
232 > hetpyr, facpyr, cofapy,
233 > filpyr, perpyr, fampyr,
236 > ulsort, langue, codret )
238 c 3.2. ==> La face F4 est coupee : aretes 2, 8, 5 ,7
240 elseif ( mod(hetare(listar(2)),10).eq.2 .and.
241 > mod(hetare(listar(5)),10).eq.2 .and.
242 > mod(hetare(listar(7)),10).eq.2 .and.
243 > mod(hetare(listar(8)),10).eq.2 ) then
245 #ifdef _DEBUG_HOMARD_
246 write (ulsort,texte(langue,3)) 'CMCP44', nompro
248 call cmcp44 ( lepent, listar, listso,
249 > indare, indtri, indtet, indpyr,
252 > filare, merare, famare,
254 > filtri, pertri, famtri,
257 > hettet, tritet, cotrte,
258 > filtet, pertet, famtet,
259 > hetpyr, facpyr, cofapy,
260 > filpyr, perpyr, fampyr,
263 > ulsort, langue, codret )
265 c 3.3. ==> La face F5 est coupee : aretes 3, 9, 6, 8
267 elseif ( mod(hetare(listar(3)),10).eq.2 .and.
268 > mod(hetare(listar(6)),10).eq.2 .and.
269 > mod(hetare(listar(8)),10).eq.2 .and.
270 > mod(hetare(listar(9)),10).eq.2 ) then
272 #ifdef _DEBUG_HOMARD_
273 write (ulsort,texte(langue,3)) 'CMCP45', nompro
275 call cmcp45 ( lepent, listar, listso,
276 > indare, indtri, indtet, indpyr,
279 > filare, merare, famare,
281 > filtri, pertri, famtri,
284 > hettet, tritet, cotrte,
285 > filtet, pertet, famtet,
286 > hetpyr, facpyr, cofapy,
287 > filpyr, perpyr, fampyr,
290 > ulsort, langue, codret )
292 c 3.9. ==> Laquelle ?
304 if ( codret.ne.0 ) then
308 write (ulsort,texte(langue,1)) 'Sortie', nompro
309 write (ulsort,texte(langue,2)) codret
310 write (ulsort,texte(langue,4))
314 #ifdef _DEBUG_HOMARD_
315 write (ulsort,texte(langue,1)) 'Sortie', nompro