1 subroutine cmchad ( nulofa, lehexa,
4 > hetpyr, facpyr, cofapy,
5 > filpyr, perpyr, fampyr,
8 > ulsort, langue, codret )
9 c ______________________________________________________________________
13 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
15 c Version originale enregistree le 18 juin 1996 sous le numero 96036
16 c aupres des huissiers de justice Simart et Lavoir a Clamart
17 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
18 c aupres des huissiers de justice
19 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
21 c HOMARD est une marque deposee d'Electricite de France
27 c ______________________________________________________________________
29 c Creation du Maillage - Conformite - decoupage des Hexaedres
31 c - par 2 Aretes - phase D
33 c ______________________________________________________________________
35 c . nom . e/s . taille . description .
36 c .____________________________________________________________________.
37 c . nulofa . e . 2 . numero local des faces quadrangles .
38 c . lehexa . e . 1 . hexaedre a decouper .
39 c . indpyr . es . 1 . indice de la derniere pyramide creee .
40 c . indptp . e . 1 . indice du dernier pere enregistre .
41 c . triint . e . 22 . triangles internes a l'hexaedre .
42 c . . . . 1-4 = bordant la pyramide 1 .
43 c . . . . 5-8 = bordant la pyramide 2 .
44 c . . . . 9-10 = s'appuyant sur les 2 autres aretes .
45 c . . . . non decoupees .
46 c . . . . 11-14 = appuyes sur une arete interne a .
47 c . . . . une face coupee, du cote de la pyramide 1.
48 c . . . . 15-18 = appuyes sur une arete interne a .
49 c . . . . une face coupee, du cote de la pyramide 2.
50 c . . . . 19-22 = appuyes sur les filles des aretes .
52 c . tab1 . e . 2 . code de la permutation circulaire des 4 .
53 c . . . . faces definissant la pyramide .
54 c . hetpyr . e . nouvpy . historique de l'etat des pyramides .
55 c . facpyr . es .nouvyf*5. numeros des 5 faces des pyramides .
56 c . cofapy . es .nouvyf*5. codes des faces des pyramides .
57 c . filpyr . es . nouvpy . premier fils des pyramides .
58 c . perpyr . es . nouvpy . pere des pyramides .
59 c . . . . si perpyr(i) > 0 : numero de la pyramide .
60 c . . . . si perpyr(i) < 0 : -numero dans pphepe .
61 c . fampyr . es . nouvpy . famille des pyramides .
62 c . quahex . e .nouvhf*6. numeros des 6 quadrangles des hexaedres .
63 c . coquhe . e .nouvhf*6. codes des 6 quadrangles des hexaedres .
64 c . famhex . e . nouvhe . famille des hexaedres .
65 c . cfahex . . nctfhe. codes des familles des hexaedres .
66 c . . . nbfhex . 1 : famille MED .
67 c . . . . 2 : type d'hexaedres .
68 c . . . . 3 : famille des tetraedres de conformite .
69 c . . . . 4 : famille des pyramides de conformite .
70 c . ulsort . e . 1 . unite logique de la sortie generale .
71 c . langue . e . 1 . langue des messages .
72 c . . . . 1 : francais, 2 : anglais .
73 c . codret . es . 1 . code de retour des modules .
74 c . . . . 0 : pas de probleme .
75 c . . . . 1 : aucune arete ne correspond .
76 c ______________________________________________________________________
79 c 0. declarations et dimensionnement
82 c 0.1. ==> generalites
88 parameter ( nompro = 'CMCHAD' )
104 integer lehexa, nulofa(2)
105 integer indpyr, indptp
106 integer triint(22), tab1(2)
107 integer hetpyr(nouvpy), facpyr(nouvyf,5), cofapy(nouvyf,5)
108 integer filpyr(nouvpy), perpyr(nouvpy), fampyr(nouvpy)
109 integer quahex(nouvhf,6), coquhe(nouvhf,6)
110 integer famhex(nouvhe), cfahex(nctfhe,nbfhex)
112 integer ulsort, langue, codret
114 c 0.4. ==> variables locales
121 parameter ( nbmess = 10 )
122 character*80 texte(nblang,nbmess)
124 c 0.5. ==> initialisations
125 c ______________________________________________________________________
135 #ifdef _DEBUG_HOMARD_
136 write (ulsort,texte(langue,1)) 'Entree', nompro
143 c 2. Creation des deux pyramides
146 c 2.1. ==> Le pere des pyramides et leur famille
149 jaux = cfahex(cofpfh,famhex(lehexa))
151 #ifdef _DEBUG_HOMARD_
152 write (ulsort,texte(langue,3)) 'CMCPYR', nompro
153 write (ulsort,2100) indpyr+1, indpyr+2
154 2100 format( '.. pyramides de',i10,' a',i10)
157 laface = quahex(lehexa,nulofa(1))
158 codfac = coquhe(lehexa,nulofa(1))
160 call cmcpyr ( facpyr, cofapy, fampyr, hetpyr, filpyr, perpyr,
161 > triint(per1a4(tab1(1),1)), 3,
162 > triint(per1a4(tab1(1),2)), 3,
163 > triint(per1a4(tab1(1),3)), 3,
164 > triint(per1a4(tab1(1),4)), 2,
166 > iaux, jaux, indpyr )
168 laface = quahex(lehexa,nulofa(2))
169 codfac = coquhe(lehexa,nulofa(2))
171 call cmcpyr ( facpyr, cofapy, fampyr, hetpyr, filpyr, perpyr,
172 > triint(4+per1a4(tab1(2),1)), 3,
173 > triint(4+per1a4(tab1(2),2)), 3,
174 > triint(4+per1a4(tab1(2),3)), 3,
175 > triint(4+per1a4(tab1(2),4)), 2,
177 > iaux, jaux, indpyr )
179 #ifdef _DEBUG_HOMARD_
180 do 4333 , iaux = indpyr-1, indpyr
181 write(ulsort,1789) iaux, (facpyr(iaux,jaux),jaux=1,5)
183 1789 format('pyramide ',i6,' : ',5i6)
190 if ( codret.ne.0 ) then
194 write (ulsort,texte(langue,1)) 'Sortie', nompro
195 write (ulsort,texte(langue,2)) codret
199 #ifdef _DEBUG_HOMARD_
200 write (ulsort,texte(langue,1)) 'Sortie', nompro