1 subroutine eslmh2 ( idfmed,
4 > degre, maconf, homolo, hierar,
5 > rafdef, nbmane, typcca, typsfr, maextr,
7 > dimcst, lgnoig, nbnoco,
10 > suifro, nomafr, lnomaf,
11 > ulsort, langue, codret)
13 c ______________________________________________________________________
17 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
19 c Version originale enregistree le 18 juin 1996 sous le numero 96036
20 c aupres des huissiers de justice Simart et Lavoir a Clamart
21 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
22 c aupres des huissiers de justice
23 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
25 c HOMARD est une marque deposee d'Electricite de France
31 c ______________________________________________________________________
33 c Entree-Sortie : Lecture du Maillage Homard - phase 2
35 c ______________________________________________________________________
36 c . nom . e/s . taille . description .
37 c .____________________________________________________________________.
38 c . idfmed . e . 1 . identificateur du fichier MED .
39 c . nomail . e . char*8 . nom du maillage a lire .
40 c . lnomai . e . 1 . longueur du nom du maillage .
41 c . sdim . s . 1 . dimension de l'espace .
42 c . mdim . s . 1 . dimension du maillage .
43 c . degre . s . 1 . degre du maillage .
44 c . maconf . s . 1 . conformite du maillage .
46 c . . . . 1 : non-conforme avec au minimum 2 aretes .
47 c . . . . non decoupees en 2 par face .
48 c . . . . 2 : non-conforme avec 1 seul noeud pendant.
50 c . . . . 3 : non-conforme fidele a l'indicateur .
51 c . . . . -1 : conforme, avec des boites pour les .
52 c . . . . quadrangles, hexaedres et pentaedres .
53 c . . . . -2 : non-conforme avec au maximum 1 arete .
54 c . . . . decoupee en 2 et des boites pour les .
55 c . . . . quadrangles, hexaedres et pentaedres .
56 c . . . . 10 : non-conforme sans autre connaissance .
57 c . homolo . s . 1 . type de relations par homologues .
58 c . . . . 0 : pas d'homologues .
59 c . . . . 1 : relations sur les noeuds .
60 c . . . . 2 : relations sur les noeuds et les aretes .
61 c . . . . 3 : relations sur les noeuds, les aretes .
62 c . . . . et les triangles .
63 c . hierar . s . 1 . maillage hierarchique .
66 c . rafdef . s . 1 . 0 : macro-maillage .
67 c . . . . 1 : le maillage est inchange .
68 c . . . . 2 : le maillage est issu du raffinement pur.
69 c . . . . d'un autre maillage .
70 c . . . . 3 : le maillage est issu du deraffinement .
71 c . . . . pur d'un autre maillage .
72 c . . . . 4 : le maillage est issu de raffinement et .
73 c . . . . de deraffinement d'un autre maillage .
74 c . . . . 12 : le maillage est un maillage passe de .
75 c . . . . degre 1 a 2 .
76 c . . . . 21 : le maillage est un maillage passe de .
77 c . . . . degre 2 a 1 .
78 c . nbmane . s . 1 . nombre maximum de noeuds par element .
79 c . typcca . s . 1 . type du code de calcul .
80 c . typsfr . s . 1 . type du suivi de frontiere .
82 c . . . . 1 : maillage de degre 1, avec projection .
83 c . . . . des nouveaux sommets .
84 c . . . . 2 : maillage de degre 2, seuls les noeuds .
85 c . . . . P1 sont sur la frontiere ; les noeuds .
86 c . . . . P2 restent au milieu des P1 .
87 c . . . . 3 : maillage de degre 2, les noeuds P2 .
88 c . . . . etant sur la frontiere .
89 c . maextr . s . 1 . maillage extrude .
91 c . . . . 1 : selon X .
92 c . . . . 2 : selon Y .
93 c . . . . 3 : selon Z (cas de Saturne ou Neptune) .
94 c . mailet . s . 1 . presence de mailles etendues .
95 c . . . . 1 : aucune .
96 c . . . . 2x : TRIA7 .
97 c . . . . 3x : QUAD9 .
98 c . . . . 5x : HEXA27 .
99 c . dimcst . s . 1 . 0, si toutes les coordonnees varient .
100 c . . . . i, si la i-eme est constante et n'est pas .
101 c . . . . memorisee sur chaque noeud .
102 c . lgnoig . s . 1 . nombre de noeuds lies aux elements ignores .
103 c . nbnoco . s . 1 . nbr noeuds pour la non-conformite initiale .
104 c . sdimca . s . 1 . dimension de l'espace du maillage de calcul.
105 c . mdimca . s . 1 . dimension du maillage du maillage de calcul.
106 c . exiren . s . 1 . vrai/faux selon presence de renumerotations.
107 c . lgpeli . s . 1 . longueur du profil des elements elimines .
108 c . suifro . e . 1 . 1 : pas de suivi de frontiere .
109 c . . . . 2x : frontiere discrete .
110 c . . . . 3x : frontiere analytique .
111 c . . . . 5x : frontiere cao .
112 c . nomafr . s . char64 . nom du maillage MED de la frontiere .
113 c . lnomaf . s . 1 . longueur du nom du maillage de la frontiere.
114 c . . . . 0 : le maillage est absent du fichier .
115 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
116 c . langue . e . 1 . langue des messages .
117 c . . . . 1 : francais, 2 : anglais .
118 c . codret . es . 1 . code de retour des modules .
119 c . . . . 0 : pas de probleme .
120 c ______________________________________________________________________
123 c 0. declarations et dimensionnement
126 c 0.1. ==> generalites
132 parameter ( nompro = 'ESLMH2' )
147 integer degre, maconf, homolo, hierar
148 integer rafdef, nbmane, typcca, typsfr, maextr
150 integer dimcst, lgnoig, nbnoco
151 integer sdimca, mdimca
161 integer ulsort, langue, codret
163 c 0.4. ==> variables locales
178 character*16 nomaxe(3), uniaxe(3)
181 parameter ( nbmess = 150 )
182 character*80 texte(nblang,nbmess)
183 c ______________________________________________________________________
191 #ifdef _DEBUG_HOMARD_
192 write (ulsort,texte(langue,1)) 'Entree', nompro
196 texte(1,4) = '(''Aucun profil dans le fichier ?'')'
197 texte(1,5) = '(''Les informations globales sont absentes.'')'
199 texte(2,5) = '(''No profile into the file?'')'
200 texte(2,5) = '(''Global information are missing.'')'
207 c 2. Le maillage est-il present dans le fichier ?
208 c si oui, on retourne les dimensions de l'espace et du maillage
211 if ( codret.eq.0 ) then
213 #ifdef _DEBUG_HOMARD_
214 write (ulsort,texte(langue,3)) 'ESLNOM', nompro
216 call eslnom ( idfmed, nomail, lnomai,
218 > typrep, nomaxe, uniaxe,
219 > ulsort, langue, codret )
220 if ( codret.ne.0 ) then
226 #ifdef _DEBUG_HOMARD_
227 if ( codret.eq.0 ) then
228 write (ulsort,texte(langue,22)) nomail(1:lnomai)
229 write (ulsort,texte(langue,23)) 'de l''espace', sdim
230 write (ulsort,texte(langue,23)) 'du maillage', mdim
235 c 3. Recuperation des parametres essentiels
237 c 3.1. ==> Nombre de profils
238 #ifdef _DEBUG_HOMARD_
239 write (ulsort,90002) '3.1. Nombre de profils ; codret', codret
242 if ( codret.eq.0 ) then
244 #ifdef _DEBUG_HOMARD_
245 write (ulsort,texte(langue,3)) 'MPFNPF', nompro
247 call mpfnpf ( idfmed, nbprof, codret )
248 #ifdef _DEBUG_HOMARD_
249 write (ulsort,texte(langue,86)) nbprof
254 if ( codret.eq.0 ) then
256 if ( nbprof.eq.0 ) then
257 write (ulsort,texte(langue,86)) nbprof
258 write (ulsort,texte(langue,4))
264 c 3.2. ==> Parcours des profils
265 #ifdef _DEBUG_HOMARD_
266 write (ulsort,90002) '3.2. Parcours des profils ; codret', codret
269 if ( codret.eq.0 ) then
275 do 32 , iaux = 1 , nbprof
277 c 3.2.1. ==> nom et taille du profil a lire
279 if ( codret.eq.0 ) then
283 #ifdef _DEBUG_HOMARD_
284 write (ulsort,texte(langue,3)) 'MPFPFI', nompro
286 call mpfpfi ( idfmed, jaux, noprof, nbvapr, codret )
287 if ( codret.ne.0 ) then
288 write (ulsort,texte(langue,79))
291 #ifdef _DEBUG_HOMARD_
292 write (ulsort,texte(langue,61)) noprof
293 write (ulsort,texte(langue,62)) nbvapr
298 c 3.2.2. ==> Les profils que l'on cherche
300 if ( codret.eq.0 ) then
302 c 3.2.2.1 ==> Recuperation des parametres essentiels
304 c 1234567890123456789012
305 if ( noprof(1:22).eq.'Info_maillage_globales' ) then
307 if ( codret.eq.0 ) then
309 #ifdef _DEBUG_HOMARD_
310 write (ulsort,texte(langue,3)) 'MPFPRR', nompro
312 call mpfprr ( idfmed, noprof, infmgl, codret )
314 if ( codret.ne.0 ) then
315 write (ulsort,texte(langue,61)) noprof
316 write (ulsort,texte(langue,79))
321 if ( codret.eq.0 ) then
345 c 3.2.2.2. ==> Presence de renumerotation
347 c 1234567890123456789
348 elseif ( noprof(1:19).eq.'Attributs_de_norenu' ) then
352 c 3.2.2.3. ==> Presence d'elements ignores
355 elseif ( noprof(1:16).eq.'Elements_Ignores' ) then
368 #ifdef _DEBUG_HOMARD_
369 write (ulsort,90002) '3.3. controle ; codret', codret
372 if ( codret.eq.0 ) then
374 if ( .not.exiigl ) then
376 write (ulsort,texte(langue,5))
383 #ifdef _DEBUG_HOMARD_
384 write (ulsort,90002) 'lgpeli', lgpeli
388 c 4. L'eventuelle frontiere discrete
389 c Le nom doit etre coherent avec esecfd
391 #ifdef _DEBUG_HOMARD_
392 write (ulsort,90002) '4. Frontiere discrete ; codret', codret
394 #ifdef _DEBUG_HOMARD_
395 write (ulsort,90002) 'suifro', suifro
398 if ( mod(suifro,2).eq.0 ) then
400 c 4.1. ==> Nom du maillage de la frontiere
402 if ( codret.eq.0 ) then
405 nomam2(1:8) = 'AbsCurvi'
408 #ifdef _DEBUG_HOMARD_
409 write (ulsort,texte(langue,3)) 'ESLNOF', nompro
411 call eslnof ( idfmed,
414 > nomafr, lnomaf, sfsdim, sfmdim,
415 > typrep, nomaxe, uniaxe,
416 > ulsort, langue, codret )
417 if ( codret.ne.0 ) then
421 #ifdef _DEBUG_HOMARD_
422 if ( codret.eq.0 ) then
423 write (ulsort,texte(langue,22)) nomafr
424 write (ulsort,texte(langue,23)) 'de l''espace', sfsdim
425 write (ulsort,texte(langue,23)) 'du maillage', sfmdim
431 c 4.2. ==> Si le maillage de la frontiere existe :
433 if ( lnomaf.gt.0 ) then
435 c 4.2.1. ==> Nombre de noeuds du maillage de la frontiere
437 if ( codret.eq.0 ) then
439 #ifdef _DEBUG_HOMARD_
440 write (ulsort,texte(langue,3)) 'ESLMMN-'//nomafr(1:lnomaf),nompro
442 call eslmmn ( idfmed, nomafr, lnomaf,
444 > ulsort, langue, codret )
448 c 4.2.2. ==> Nombre de noeuds de la description
450 if ( codret.eq.0 ) then
453 #ifdef _DEBUG_HOMARD_
454 write (ulsort,texte(langue,3)) 'ESLMMN-'//nomam2(1:iaux),nompro
456 call eslmmn ( idfmed, nomam2, iaux,
458 > ulsort, langue, codret )
473 #ifdef _DEBUG_HOMARD_
474 write (ulsort,90002) 'sfsdim', sfsdim
475 write (ulsort,90002) 'sfmdim', sfmdim
476 write (ulsort,90002) 'sfnbso', sfnbso
477 write (ulsort,90002) 'sfnbse', sfnbse
484 if ( codret.ne.0 ) then
488 write (ulsort,texte(langue,1)) 'Sortie', nompro
489 write (ulsort,texte(langue,2)) codret
493 #ifdef _DEBUG_HOMARD_
494 write (ulsort,texte(langue,1)) 'Sortie', nompro