1 subroutine vcme21 ( typenh, cofxeo,
2 > nbinfx, nctfen, nbenti,
3 > notfen, nofaen, cofaen,
4 > nhenfa, fament, posent, inxent,
6 > ulsort, langue, codret )
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 aVant adaptation - Conversion de Maillage Extrude - phase 21
29 c Determine les familles pour un type de mailles de la face avant
30 c ______________________________________________________________________
32 c . nom . e/s . taille . description .
33 c .____________________________________________________________________.
34 c . typenh . e . 1 . type d'entites .
35 c . . . . -1 : noeuds .
36 c . . . . 0 : mailles-points .
37 c . . . . 1 : segments .
38 c . . . . 2 : triangles .
39 c . . . . 3 : tetraedres .
40 c . . . . 4 : quadrangles .
41 c . . . . 5 : pyramides .
42 c . . . . 6 : hexaedres .
43 c . . . . 7 : pentaedres .
44 c . cofxeo . e . 1 . orientation de l'entite comme face/volume .
45 c . nbinfx . e . 1 . nombre d'informations pour inxent .
46 c . nctfen . e . 1 . nombre de caracteristique des f. entite .
47 c . nbenti . e . 1 . nombre d'entites .
48 c . notfen . e . 1 . nombre d'origine des carac. des f. entite .
49 c . nofaen . e . 1 . nombre d'origine de familles de l'entite .
50 c . cofaen . e . notfen*. codes d'origine des familles de l'entite .
52 c . nhenfa . e . char8 . objet decrivant les familles de l'entite .
53 c . fament . es . nbenti . famille des entites .
54 c . posent . e . nbenti . position des entites .
55 c . . . . 0 : face avant .
56 c . . . . 1 : face arriere .
57 c . . . . 2 : perpendiculaire .
58 c . inxent . e . nbinfx*. informations pour l'extrusion des entites .
59 c . . . nbenti . 1 : famille de l'entite extrudee .
60 c . . . . 2 : famille de l'entite perpendiculaire .
61 c . . . . Si arete : .
62 c . . . . 3 : code du quadrangle dans le volume .
63 c . . . . 4 : quadrangle perpendiculaire .
64 c . . . . Si triangle ou quadrangle : .
65 c . . . . 3 : code de la face dans le volume .
66 c . nbfaen . s . 1 . nombre de familles de l'entite .
67 c . pcfaen . s . 1 . codes des familles de l'entite .
68 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
69 c . langue . e . 1 . langue des messages .
70 c . . . . 1 : francais, 2 : anglais .
71 c . codret . e . 1 . code de retour des modules .
72 c . . . . 0 : pas de probleme .
73 c . . . . 1 : probleme .
74 c ______________________________________________________________________
77 c 0. declarations et dimensionnement
80 c 0.1. ==> generalites
86 parameter ( nompro = 'VCME21' )
101 integer nbinfx, nctfen, nbenti
102 integer notfen, nofaen, cofaen(notfen,nofaen)
103 integer nbfaen, pcfaen
105 integer fament(nbenti), posent(nbenti), inxent(nbinfx,nbenti)
109 integer ulsort, langue, codret
111 c 0.4. ==> variables locales
119 parameter ( nbmess = 10 )
120 character*80 texte(nblang,nbmess)
122 c 0.5. ==> initialisations
123 c ______________________________________________________________________
131 #ifdef _DEBUG_HOMARD_
132 write (ulsort,texte(langue,1)) 'Entree', nompro
138 texte(1,4) = '(''Familles d''''extrusion des '',a)'
140 texte(2,4) = '(''Description of families of extruded '',a)'
142 #ifdef _DEBUG_HOMARD_
143 write (ulsort,texte(langue,4)) mess14(langue,3,typenh)
144 write (ulsort,90002) 'nbenti', nbenti
145 write (ulsort,90002) 'cofxeo', cofxeo
146 write (ulsort,90002) 'nbinfx', nbinfx
147 write (ulsort,90002) 'nctfen', nctfen
150 #ifdef _DEBUG_HOMARD_
151 do 4991 , nument = 1 , nbenti
152 if ( posent(nument).eq.0 .or. typenh.eq.4 ) then
153 write(ulsort,90012) mess14(langue,3,typenh),nument,
154 > fament(nument),(inxent(iaux,nument),iaux=1,nbinfx)
165 call gmlboj ( nhenfa//'.Codes' , codre0 )
166 codret = max ( abs(codre0), codret )
169 c 3. Parcours des entites
171 #ifdef _DEBUG_HOMARD_
172 write (ulsort,90002) '3. parcours ; codret', codret
175 c 3.1. ==> Taille initiale du tableau
181 c 3.2. ==> Creation/Allongement du tableau des familles
182 c Au moins 6 pour passer la phase initiale
186 if ( codret.eq.0 ) then
189 #ifdef _DEBUG_HOMARD_
190 write (ulsort,90002) 'nbfaen', nbfaen
191 write (ulsort,90002) 'nbfae0', nbfae0
194 #ifdef _DEBUG_HOMARD_
195 write (ulsort,texte(langue,3)) 'UTFAM2', nompro
197 call utfam2 ( typenh, nhenfa, nctfen, nbfae0,
199 > ulsort, langue, codret)
200 #ifdef _DEBUG_HOMARD_
201 if ( typenh.eq.1 ) then
202 call gmprsx ( mess14(langue,3,typenh), nhenfa//'.Codes')
208 c 3.3. ==> Programme utilitaire
210 if ( codret.eq.0 ) then
212 #ifdef _DEBUG_HOMARD_
213 write (ulsort,texte(langue,3)) 'VCME22', nompro
215 call vcme22 ( typenh, nument, cofxeo,
216 > nbinfx, nctfen, nbenti,
217 > notfen, nofaen, cofaen,
218 > nbfae0, nbfaen, imem(pcfaen),
219 > fament, posent, inxent,
220 > ulsort, langue, codret )
224 c 3.4. ==> A rallonger ?
226 if ( codret.eq.0 ) then
228 if ( nbfaen.lt.0 ) then
238 c 4. Redimensionnement final
240 #ifdef _DEBUG_HOMARD_
241 write (ulsort,90002) '4. Redimensionnement ; codret', codret
242 write (ulsort,90002) 'nbfaen', nbfaen
243 write (ulsort,90002) 'nbfae0', nbfae0
245 #ifdef _DEBUG_HOMARD_
246 if ( typenh.eq.1 ) then
247 call gmprsx ( mess14(langue,3,typenh), nhenfa//'.Codes')
251 if ( nbfaen.ne.nbfae0 ) then
253 if ( codret.eq.0 ) then
255 #ifdef _DEBUG_HOMARD_
256 write (ulsort,texte(langue,3)) 'UTFAM2', nompro
258 call utfam2 ( typenh, nhenfa, nctfen, nbfaen,
260 > ulsort, langue, codret)
266 #ifdef _DEBUG_HOMARD_
267 if ( typenh.eq.1 ) then
268 call gmprsx ( mess14(langue,3,typenh), nhenfa//'.Codes')
276 if ( codret.ne.0 ) then
280 write (ulsort,texte(langue,1)) 'Sortie', nompro
281 write (ulsort,texte(langue,2)) codret
285 #ifdef _DEBUG_HOMARD_
286 write (ulsort,texte(langue,1)) 'Sortie', nompro