1 subroutine cmcp1b ( nulofa, lepent,
6 > trifad, cotrvo, areqtr,
7 > 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 Pentaedres
33 c Reperage des aretes et des triangles sur les faces externes
34 c ______________________________________________________________________
36 c . nom . e/s . taille . description .
37 c .____________________________________________________________________.
38 c . nulofa . e . 4 . numero local des faces a traiter .
39 c . lepent . e . 1 . pentaedre a decouper .
40 c . aretri . e .nouvtr*3. numeros des 3 aretes des triangles .
41 c . nivtri . e . nouvtr . niveau des triangles .
42 c . filqua . e . nouvqu . premier fils des quadrangles .
43 c . facpen . e .nouvpf*5. numeros des faces des pentaedres .
44 c . cofape . e .nouvpf*5. codes des faces des pentaedres .
45 c . niveau . s . 1 . niveau des faces issus du decoupage .
46 c . trifad . s .(2,0:2) . triangles traces sur les faces decoupees .
47 c . cotrvo . s .(2,0:2) . code des triangles dans les volumes .
48 c . areqtr . s . (2,2) . aretes tri tracees sur les faces decoupees .
49 c . ulsort . e . 1 . unite logique de la sortie generale .
50 c . langue . e . 1 . langue des messages .
51 c . . . . 1 : francais, 2 : anglais .
52 c . codret . es . 1 . code de retour des modules .
53 c . . . . 0 : pas de probleme .
54 c . . . . 1 : aucune arete ne correspond .
55 c ______________________________________________________________________
58 c 0. declarations et dimensionnement
61 c 0.1. ==> generalites
67 parameter ( nompro = 'CMCP1B' )
79 integer lepent, nulofa(2)
80 integer aretri(nouvtr,3), nivtri(nouvtr)
81 integer filqua(nouvqu)
82 integer facpen(nouvpf,5), cofape(nouvpf,5)
84 integer trifad(2,0:2), cotrvo(2,0:2), areqtr(2,2)
86 integer ulsort, langue, codret
88 c 0.4. ==> variables locales
93 parameter ( nbmess = 10 )
94 character*80 texte(nblang,nbmess)
96 c 0.5. ==> initialisations
97 c ______________________________________________________________________
105 #ifdef _DEBUG_HOMARD_
106 write (ulsort,texte(langue,1)) 'Entree', nompro
116 c 2. Triangles et aretes tracees sur le quadrangle dont le
117 c triangle central sera la face 2 de la pyramide
118 c trifad(1,0) : triangle central de ce decoupage
119 c trifad(1,1) : triangle du cote de la face F1 du pentaedre
120 c trifad(1,2) : triangle du cote de la face F2 du pentaedre
121 c cotrvo(1,0/1/2) : futur code du triangle trifad(p,0/1/2) dans la
122 c description des fils
123 c areqtr(1,1) : arete interne au quadrangle de bord et bordant le
124 c triangle trifad(p,1)
125 c areqtr(1,2) : arete interne au quadrangle de bord et bordant le
126 c triangle trifad(p,2)
129 iaux = facpen(lepent,nulofa(1))
130 jaux = cofape(lepent,nulofa(1))
131 trifad(1,0) = -filqua(iaux)
132 if ( jaux.lt.5 ) then
134 trifad(1,1) = trifad(1,0) + 2
136 trifad(1,2) = trifad(1,0) + 1
138 areqtr(1,1) = aretri(trifad(1,0),3)
139 areqtr(1,2) = aretri(trifad(1,0),1)
142 trifad(1,1) = trifad(1,0) + 1
144 trifad(1,2) = trifad(1,0) + 2
146 areqtr(1,1) = aretri(trifad(1,0),1)
147 areqtr(1,2) = aretri(trifad(1,0),3)
149 #ifdef _DEBUG_HOMARD_
150 write(ulsort,90006) 'Quadrangle = ', iaux,', code =', jaux
151 do 2222 , iaux = 0, 2
152 write (ulsort,90015) 'trifad(1,0/1/2) =', trifad(1,iaux),
153 > ', aretes', (aretri(trifad(1,iaux),jaux),jaux=1,3)
155 write(ulsort,90006) 'cotrvo(1,0) = ', cotrvo(1,0),
156 > 'cotrvo(1,1) = ', cotrvo(1,1),
157 > 'cotrvo(1,2) = ', cotrvo(1,2)
158 write(ulsort,90002) 'areqtr(1,1) = ', areqtr(1,1)
159 write(ulsort,90002) 'areqtr(1,2) = ', areqtr(1,2)
163 c 3. Triangles et aretes tracees sur le quadrangle dont le
164 c triangle central sera la face 4 de la pyramide
165 c trifad(2,0) : triangle central de ce decoupage
166 c trifad(2,1) : triangle du cote de la face F1 du pentaedre
167 c trifad(2,2) : triangle du cote de la face F2 du pentaedre
168 c cotrvo(2,0/1/2) : futur code du triangle trifad(p,0/1/2) dans la
169 c description des fils
170 c areqtr(2,1) : arete interne au quadrangle de bord et bordant le
171 c triangle trifad(p,1)
172 c areqtr(2,2) : arete interne au quadrangle de bord et bordant le
173 c triangle trifad(p,2)
176 iaux = facpen(lepent,nulofa(2))
177 jaux = cofape(lepent,nulofa(2))
178 trifad(2,0) = -filqua(iaux)
179 if ( jaux.lt.5 ) then
181 trifad(2,1) = trifad(2,0) + 1
183 trifad(2,2) = trifad(2,0) + 2
185 areqtr(2,1) = aretri(trifad(2,0),1)
186 areqtr(2,2) = aretri(trifad(2,0),3)
189 trifad(2,1) = trifad(2,0) + 2
191 trifad(2,2) = trifad(2,0) + 1
193 areqtr(2,1) = aretri(trifad(2,0),3)
194 areqtr(2,2) = aretri(trifad(2,0),1)
196 #ifdef _DEBUG_HOMARD_
197 write(ulsort,90006) 'Quadrangle = ', iaux,', code =', jaux
198 do 3333 , iaux = 0, 2
199 write (ulsort,90015) 'trifad(2,0/1/2) =', trifad(2,iaux),
200 > ', aretes', (aretri(trifad(2,iaux),jaux),jaux=1,3)
202 write(ulsort,90006) 'cotrvo(1,0) = ', cotrvo(1,0),
203 > 'cotrvo(1,1) = ', cotrvo(1,1),
204 > 'cotrvo(1,2) = ', cotrvo(1,2)
205 write(ulsort,90002) 'areqtr(2,1) = ', areqtr(1,1)
206 write(ulsort,90002) 'areqtr(2,2) = ', areqtr(1,2)
210 c 4. niveau des triangles des conformites des faces
213 niveau = nivtri(trifad(1,0))
214 #ifdef _DEBUG_HOMARD_
215 write(ulsort,90002) 'niveau', niveau
222 if ( codret.ne.0 ) then
226 write (ulsort,texte(langue,1)) 'Sortie', nompro
227 write (ulsort,texte(langue,2)) codret
231 #ifdef _DEBUG_HOMARD_
232 write (ulsort,texte(langue,1)) 'Sortie', nompro