1 subroutine utecf0 ( maextr, typenh, nbento,
2 > nbfaen, nbfcf1, nbfcf2,
3 > nctfen, ncffen, ncxfen, ncefen,
5 > ulsort, langue, codret )
6 c ______________________________________________________________________
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
12 c Version originale enregistree le 18 juin 1996 sous le numero 96036
13 c aupres des huissiers de justice Simart et Lavoir a Clamart
14 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
15 c aupres des huissiers de justice
16 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
18 c HOMARD est une marque deposee d'Electricite de France
24 c ______________________________________________________________________
26 c UTilitaire - ECriture des Codes de Familles d'entites - 0
28 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . maextr . e . 1 . maillage extrude .
34 c . . . . 1 : selon X .
35 c . . . . 2 : selon Y .
36 c . . . . 3 : selon Z (cas de Saturne ou Neptune) .
37 c . typenh . e . 1 . type d'entites .
38 c . . . . -1 : noeuds .
39 c . . . . 0 : mailles-points .
40 c . . . . 1 : segments .
41 c . . . . 2 : triangles .
42 c . . . . 3 : tetraedres .
43 c . . . . 3 : quadrangles .
44 c . . . . 5 : pyramides .
45 c . . . . 6 : hexaedres .
46 c . . . . 7 : pentaedres .
47 c . nbento . e . 1 . nombre d'entites .
48 c . nbfaen . e . 1 . nombre de familles enregistrees .
49 c . nbfcf1 . e . 1 . nombre de familles pour la conformite - 1 .
50 c . nbfcf2 . e . 1 . nombre de familles pour la conformite - 2 .
51 c . nctfen . e . 1 . nombre total de caracteristiques familles .
52 c . ncefen . e . 1 . nombre de caracteristiques d'equivalence .
53 c . ncffen . e . 1 . nombre fige de caracteristiques .
54 c . fament . e . nbento . famille des entites .
55 c . cfaent . e . nctfen*. codes des familles d'entites .
56 c . . . nbfaen . 1 : famille MED .
57 c . . . . si maille-point : .
58 c . . . . 2 : type de maille-point .
59 c . . . . 3 : famille des sommets .
60 c . . . . si arete : .
61 c . . . . 2 : type de segment .
62 c . . . . 3 : orientation .
63 c . . . . 4 : famille d'orientation inverse .
64 c . . . . 5 : numero de ligne de frontiere .
65 c . . . . > 0 si concernee par le suivi de frontiere.
66 c . . . . <= 0 si non concernee .
67 c . . . . 6 : famille frontiere active/inactive .
68 c . . . . 7 : numero de surface de frontiere .
69 c . . . . + l : appartenance a l'equivalence l .
70 c . . . . si triangle : .
71 c . . . . 2 : type de triangle .
72 c . . . . 3 : numero de surface de frontiere .
73 c . . . . 3 : famille des aretes internes apres raf.
74 c . . . . + l : appartenance a l'equivalence l .
75 c . . . . si quadrangle : .
76 c . . . . 2 : type de quadrangle .
77 c . . . . 3 : numero de surface de frontiere .
78 c . . . . 3 : famille des aretes internes apres raf.
79 c . . . . 5 : famille des triangles de conformite .
80 c . . . . 6 : famille de sf active/inactive .
81 c . . . . + l : appartenance a l'equivalence l .
82 c . . . . si tetraedre, hexaedre, pyramide, pentaedre.
83 c . . . . 2 : type de mailles .
84 c . . . . si hexaedre : .
85 c . . . . 3 : famille des tetraedres de conformite .
86 c . . . . 3 : famille des pyramides de conformite .
87 c . . . . si extrusion et noeud/arete/tria/quad : .
88 c . . . . n+1 : famille du noeud extrude .
89 c . . . . n+2 : famille de l'arete perpendiculaire .
90 c . . . . si extrusion et triangle ou quadrangle : .
91 c . . . . n+3 : code de la face dans le volume .
92 c . . . . si extrusion : .
93 c . . . . n+3/4 : position de l'entite .
94 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
95 c . langue . e . 1 . langue des messages .
96 c . . . . 1 : francais, 2 : anglais .
97 c . codret . es . 1 . code de retour des modules .
98 c . . . . 0 : pas de probleme .
99 c . . . . 1 : probleme .
100 c ______________________________________________________________________
103 c 0. declarations et dimensionnement
106 c 0.1. ==> generalites
112 parameter ( nompro = 'UTECF0' )
126 integer typenh, nbento
127 integer nbfaen, nbfcf1, nbfcf2
128 integer nctfen, ncffen, ncxfen, ncefen
129 integer fament(nbento)
130 integer cfaent(nctfen,nbfaen)
132 integer ulsort, langue, codret
134 c 0.4. ==> variables locales
136 integer nbmi01, nbmi21, nbmx20, nbmx40, nbmxxx
137 integer iaux, jaux, kaux
144 parameter ( nbmess = 10 )
145 character*80 texte(nblang,nbmess)
147 c 0.5. ==> initialisations
149 data lgstar / 33, 53, 93, 63, 43, 83, 43, 63, 63 /
150 c ______________________________________________________________________
158 #ifdef _DEBUG_HOMARD_
159 write (ulsort,texte(langue,1)) 'Entree', nompro
164 > '(/,5x,123(''-''),/,/,5x,''Description des familles des '',a)'
165 texte(1,5) = '(5x,''Nombre de familles : '',i8)'
166 texte(1,6) = '(5x,''Nombre de codes par famille : '',i3)'
169 > '(/,5x,123(''-''),/,/,5x,''Description of families of '',a)'
170 texte(2,5) = '(5x,''Number of families : '',i8)'
171 texte(2,6) = '(5x,''Number of codes per family: '',i3)'
181 write (ulsort,texte(langue,4)) mess14(langue,3,typenh)
182 #ifdef _DEBUG_HOMARD_
183 write (ulsort,texte(langue,5)) nbfaen
184 write (ulsort,texte(langue,6)) nctfen
187 #ifdef _DEBUG_HOMARD_
188 write (ulsort,90002) 'nctfen, ncffen, ncxfen, ncefen',
189 > nctfen, ncffen, ncxfen, ncefen
196 if ( nbfaen.gt.0 ) then
198 c 3.1. ==> les caracteristiques de base
199 c 3.1.1. ==> sans extrusion
201 if ( maextr.eq.0 ) then
203 if ( nbfcf1.eq.0 .and. nbfcf2.eq.0 ) then
209 if ( typenh.eq.-1 ) then
212 elseif ( typenh.eq.0 ) then
215 elseif ( typenh.eq.1 ) then
218 elseif ( typenh.eq.2 ) then
221 elseif ( typenh.eq.3 .or. typenh.eq.5 ) then
223 write (ulsort,60090) mess14(1,3,typenh)(1:10)
224 elseif ( typenh.eq.4 ) then
227 elseif ( typenh.eq.6 .or. typenh.eq.7 ) then
228 if ( nbfcf1.eq.0 .and. nbfcf2.eq.0 ) then
230 write (ulsort,60090) mess14(1,3,typenh)(1:10)
234 write (ulsort,80090) mess14(1,3,typenh)(1:10)
238 do 311, iaux = 1, nbfaen
241 do 312, jaux = 1, nbento
242 if ( fament(jaux).eq.iaux ) then
246 if ( typenh.eq.-1 ) then
247 write (ulsort,12001) iaux, nbenfa,
248 > (cfaent(jaux,iaux),jaux=1,ncffen)
249 elseif ( typenh.eq.0 ) then
250 write (ulsort,12003) iaux, nbenfa,
251 > (cfaent(jaux,iaux),jaux=1,ncffen)
252 elseif ( typenh.eq.1 ) then
253 write (ulsort,12007) iaux, nbenfa,
254 > (cfaent(jaux,iaux),jaux=1,ncffen)
255 elseif ( typenh.eq.2 ) then
256 write (ulsort,12004) iaux, nbenfa,
257 > (cfaent(jaux,iaux),jaux=1,ncffen)
258 elseif ( typenh.eq.3 .or. typenh.eq.5 ) then
259 write (ulsort,12002) iaux, nbenfa,
260 > (cfaent(jaux,iaux),jaux=1,ncffen)
261 elseif ( typenh.eq.4 ) then
262 write (ulsort,12006) iaux, nbenfa,
263 > (cfaent(jaux,iaux),jaux=1,ncffen)
264 elseif ( typenh.eq.6 .or. typenh.eq.7 ) then
265 if ( kaux.eq.0 ) then
266 write (ulsort,12004) iaux, nbenfa,
267 > (cfaent(jaux,iaux),jaux=1,ncffen)
269 write (ulsort,12002) iaux, nbenfa,
270 > (cfaent(jaux,iaux),jaux=1,ncffen-kaux)
276 if ( typenh.eq.6 .or. typenh.eq.7 ) then
277 if ( kaux.ne.0 ) then
282 c 3.1.2. ==> avec extrusion
283 c Remarque : ce sont seulement des noeuds, aretes,
284 c triangles, quadrangles
288 if ( typenh.eq.-1 ) then
292 elseif ( typenh.eq.1 ) then
296 elseif ( typenh.eq.2 ) then
300 elseif ( typenh.eq.4 ) then
304 elseif ( typenh.eq.6 ) then
306 write (ulsort,80091) mess14(1,3,typenh)(1:10)
308 elseif ( typenh.eq.7 ) then
310 write (ulsort,60090) mess14(1,3,typenh)(1:10)
314 do 313, iaux = 1, nbfaen
317 do 314, jaux = 1, nbento
318 if ( fament(jaux).eq.iaux ) then
322 if ( typenh.eq.-1 ) then
323 write (ulsort,12005) iaux, nbenfa,
324 > (cfaent(jaux,iaux),jaux=1,ncffen+ncxfen)
325 elseif ( typenh.eq.1 ) then
326 write (ulsort,12010) iaux, nbenfa,
327 > (cfaent(jaux,iaux),jaux=1,ncffen+ncxfen)
328 elseif ( typenh.eq.2 ) then
329 write (ulsort,12008) iaux, nbenfa,
330 > (cfaent(jaux,iaux),jaux=1,ncffen+ncxfen)
331 elseif ( typenh.eq.4 ) then
332 write (ulsort,12010) iaux, nbenfa,
333 > (cfaent(jaux,iaux),jaux=1,ncffen+ncxfen)
334 elseif ( typenh.eq.6 ) then
335 write (ulsort,12004) iaux, nbenfa,
336 > (cfaent(jaux,iaux),jaux=1,ncffen-kaux)
337 elseif ( typenh.eq.7 ) then
338 write (ulsort,12004) iaux, nbenfa,
339 > (cfaent(jaux,iaux),jaux=1,ncffen-kaux)
344 if ( typenh.eq.6 ) then
346 elseif ( typenh.eq.7 ) then
352 c 3.1.3. ==> Ligne finale du tableau
354 saux80 = '(5x, (''*''))'
355 write(saux80(5:7),'(i3)') lgstar(typenh) + kaux*10
356 write (ulsort,saux80)
358 c 3.2. ==> les eventuelles equivalences
360 if ( ncefen.gt.0 ) then
367 write (ulsort,10020) (jaux,jaux=nbmi01,nbmx20)
368 do 33, iaux = 1, nbfaen
369 if ( ncefen.le.20 ) then
370 write (ulsort,10091) iaux,
371 > (cfaent(jaux,iaux),jaux=nbmi01,nbmxxx),
372 > (-1,jaux=nbmxxx+1,nbmx20)
374 write (ulsort,10091) iaux,
375 > (cfaent(jaux,iaux),jaux=nbmi01,nbmx20)
376 write (ulsort,10092) iaux,
377 > (cfaent(jaux,iaux),jaux=nbmi21,nbmxxx),
378 > (-1,jaux=nbmxxx+1,nbmx40)
395 >/,5x,'* Num. code*',20i3,' *',
397 >/,5x,'* Num. de * Equivalence 0:non, 1:oui,',
398 > ' -1:equivalence non definie *',
399 >/,5x,'* Famille * 1 2 3 3 5 6 7 8 9 10',
400 > ' 11 12 13 14 15 16 17 18 19 20 *',
403 > 5x,'*',i8,' *',20i3,' *')
405 > 5x,'*',8x,' *',20i3,' *')
411 >/,5x,'* Numero du code : * 1 *',
415 >/,5x,'* Numero du code : * 1 * 2 *'
419 >/,5x,'* Numero du code : * 1 * 2 * 3 *'
423 >/,5x,'* Numero du code : * 1 * 2 * 3 *',
428 >/,5x,'* Numero du code : * 1 * 2 * 3 *',
433 >/,5x,'* Numero du code : * 1 * 2 * 3 *',
434 > ' 4 * 5 * 6 * 7 *',
438 >/,5x,'* Numero du code : * 1 * 2 * 3 *',
439 > ' 4 * 5 * 6 * 7 * 8 *',
443 >/,5x,'* Numero du code : * 1 * 2 * 3 *',
444 > ' 4 * 5 * 6 * 7 * 8 *',
449 > 5x,'*',i8,' *',i10, ' *',i8 ,' *')
451 > 5x,'*',i8,' *',i10, 2(' *',i8),' *')
453 > 5x,'*',i8,' *',i10, 3(' *',i8),' *')
455 > 5x,'*',i8,' *',i10, 4(' *',i8),' *')
457 > 5x,'*',i8,' *',i10, 5(' *',i8),' *')
459 > 5x,'*',i8,' *',i10, 6(' *',i8),' *')
461 > 5x,'*',i8,' *',i10, 7(' *',i8),' *')
463 > 5x,'*',i8,' *',i10, 8(' *',i8),' *')
465 > 5x,'*',i8,' *',i10,10(' *',i8),' *')
467 c formats pour les familles de noeuds
468 c -----------------------------------
470 > 5x,'* Num. de * Nombre * Famille *',
471 >/,5x,'* Famille * de noeuds * MED *',
474 > 5x,'* Num. de * Nombre * Famille * Famille * Famille *',
476 >/,5x,'* Famille * de noeuds * MED *no. tran.*ligne ex.*',
480 c formats pour les familles de mailles-points
481 c -------------------------------------------
483 > 5x,'* Num. de * Nombre * Famille * Type * Famille *'
484 >/,5x,'* Famille * ma.points * MED * * sommets *',
487 c formats pour les familles d'aretes
488 c ----------------------------------
490 > 5x,'* Num. de * Nombre * Famille * Type * Orient. *',
491 > ' Famille * Numero * Famille * Numero *',
492 >/,5x,'* Famille * d''aretes * MED * * *',
493 > ' or. inv * ligne fr*front ina* surf. fr*',
496 > 5x,'* Num. de * Nombre * Famille * Type * Orient. *',
497 > ' Famille * Numero * Famille * Numero *',
498 > ' Famille * Famille * Position*',
499 >/,5x,'* Famille * d''aretes * MED * * *',
500 > ' or. inv * ligne fr*front ina* surf. fr*',
501 > 'ar. tran.* quad ex.* *',
504 c formats pour les familles de triangles
505 c --------------------------------------
507 > 5x,'* Num. de * Nombre * Famille * Type * Numero *',
509 >/,5x,'* Famille * triangles * MED * * surface*',
513 > 5x,'* Num. de * Nombre * Famille * Type * Numero *',
515 > ' Famille * Famille * Code * Position*',
516 >/,5x,'* Famille * triangles * MED * * surface*',
518 > 'tr. tran.* pent ex.*tria/pent* *',
521 c formats pour les familles de tetraedres, pyramides
522 c --------------------------------------------------
524 > 5x,'* Num. de * Nombre * Famille * Type *',
525 >/,5x,'* Famille * ',a10, '* MED * *',
528 c formats pour les familles de quadrangles
529 c ----------------------------------------
531 > 5x,'* Num. de * Nombre * Famille * Type * Numero *',
532 > ' Fa. aret* Fa. tria* Famille *',
533 >/,5x,'* Famille * de quads. * MED * * surface*',
534 > ' surface * confor. *front ina*',
537 > 5x,'* Num. de * Nombre * Famille * Type * Numero *',
538 > ' Fa. aret* Fa. tria* Famille *',
539 > ' Fa. q tr* Fa. h ex* Code * Position*',
540 >/,5x,'* Famille * quads. * MED * * surface*',
541 > ' surface * confor. *front ina*',
542 > '/normale1*/normale2*quad h/p * *',
545 c formats pour les familles d'hexaedres, pentaedres
546 c -------------------------------------------------
548 > 5x,'* Num. de * Nombre * Famille * Type * Famille *',
550 >/,5x,'* Famille * ',a10, '* MED * * tetr. *',
554 > 5x,'* Num. de * Nombre * Famille * Type * Famille *',
555 >/,5x,'* Famille * ',a10, '* MED * * pent. *',
562 if ( codret.ne.0 ) then
566 write (ulsort,texte(langue,1)) 'Sortie', nompro
567 write (ulsort,texte(langue,2)) codret
571 #ifdef _DEBUG_HOMARD_
572 write (ulsort,texte(langue,1)) 'Sortie', nompro