1 subroutine eslmh1 ( typobs, nomail,
2 > suifro, nocdfr, ncafdg,
3 > ulsort, langue, codret)
5 c ______________________________________________________________________
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c Entree-Sortie : Lecture du Maillage Homard - phase 1
27 c ______________________________________________________________________
28 c . nom . e/s . taille . description .
29 c .____________________________________________________________________.
30 c . typobs . e . char*8 . mot-cle correspondant a l'objet a lire .
31 c . nomail . s . char*8 . nom du maillage a lire .
32 c . suifro . es . 1 . 1 : pas de suivi de frontiere .
33 c . . . . 2x : frontiere discrete .
34 c . . . . 3x : frontiere analytique .
35 c . . . . 5x : frontiere cao .
36 c . . . . <0 : le maillage est absent du fichier .
37 c . nocdfr . s . char*8 . nom de l'objet description de la frontiere .
38 c . ncafdg . s . char*8 . nom de l'objet groupes frontiere .
39 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
40 c . langue . e . 1 . langue des messages .
41 c . . . . 1 : francais, 2 : anglais .
42 c . codret . es . 1 . code de retour des modules .
43 c . . . . 0 : pas de probleme .
44 c ______________________________________________________________________
47 c 0. declarations et dimensionnement
50 c 0.1. ==> generalites
56 parameter ( nompro = 'ESLMH1' )
87 character*8 nocdfr, ncafdg
89 integer ulsort, langue, codret
91 c 0.4. ==> variables locales
97 integer codre1, codre2
98 integer lnomai, lnomfi
101 integer dimcst, lgnoig, nbnoco
102 integer natmax, ngrmax
105 integer ltrav1, ltrav2
106 integer ptrav1, ptrav2
108 character*8 ntrav1, ntrav2
110 character*8 nhnoeu, nhmapo, nharet, nhtria, nhquad
111 character*8 nhtetr, nhhexa, nhpyra, nhpent
113 character*8 nhvois, nhsupe, nhsups
121 parameter ( nbmess = 150 )
122 character*80 texte(nblang,nbmess)
123 c ______________________________________________________________________
131 #ifdef _DEBUG_HOMARD_
132 write (ulsort,texte(langue,1)) 'Entree', nompro
136 texte(1,4) = '(5x,''Lecture du maillage '',a,'' sur le fichier'')'
138 texte(2,4) = '(5x,''Readings of mesh '',a,'' on file'')'
147 c 2. nom du maillage et du fichier
149 #ifdef _DEBUG_HOMARD_
150 write (ulsort,90002) '2. maillage/fichier ; codret', codret
153 if ( codret.eq.0 ) then
157 call utfino ( typobs, iaux, nomfic, lnomfi,
159 > ulsort, langue, codret )
163 if ( codret.eq.0 ) then
166 #ifdef _DEBUG_HOMARD_
167 write (ulsort,texte(langue,3)) 'UTOSNO', nompro
169 call utosno ( typobs, nomail, iaux, ulsort, langue, codret )
173 if ( codret.eq.0 ) then
175 call utlgut ( lnomai, nomail,
176 > ulsort, langue, codret )
180 if ( codret.eq.0 ) then
181 write (ulsort,texte(langue,4)) nomail(1:lnomai)
182 write (ulsort,*) ' '//nomfic(1:lnomfi)
186 c 3. ouverture du fichier et lectures preliminaires
188 #ifdef _DEBUG_HOMARD_
189 write (ulsort,90002) '3. ouverture du fichier ; codret', codret
192 c 3.1. ==> Ouverture du fichier
194 if ( codret.eq.0 ) then
196 #ifdef _DEBUG_HOMARD_
201 #ifdef _DEBUG_HOMARD_
202 write (ulsort,texte(langue,3)) 'ESOUVL', nompro
204 call esouvl ( idfmed, nomfic(1:lnomfi), iaux,
205 > ulsort, langue, codret )
206 if ( codret.ne.0 ) then
212 c 3.2. ==> Lectures de base
214 if ( codret.eq.0 ) then
216 #ifdef _DEBUG_HOMARD_
217 write (ulsort,texte(langue,3)) 'ESLMH2', nompro
219 call eslmh2 ( idfmed,
222 > degre, maconf, homolo, hierar,
223 > rafdef, nbmane, typcca, typsfr, maextr,
225 > dimcst, lgnoig, nbnoco,
228 > suifro, nomafr, lnomaf,
229 > ulsort, langue, codret)
234 c 4. allocation de la tete du maillage HOMARD
236 #ifdef _DEBUG_HOMARD_
237 write (ulsort,90002) '4. allocation de la tete ; codret', codret
240 if ( codret.eq.0 ) then
248 #ifdef _DEBUG_HOMARD_
249 write (ulsort,texte(langue,3)) 'UTAHMA', nompro
251 call utahma ( nomail, typnom, iaux,
252 > sdim, mdim, degre, mailet, maconf,
253 > homolo, hierar, rafdef,
254 > nbmane, typcca, typsfr, maextr,
256 > nhnoeu, nhmapo, nharet,
258 > nhtetr, nhhexa, nhpyra, nhpent,
260 > nhvois, nhsupe, nhsups,
261 > ulsort, langue, codret )
266 c 5. Recuperation des communs
268 #ifdef _DEBUG_HOMARD_
269 write (ulsort,90002) '5. Recuperation communs ; codret', codret
272 if ( codret.eq.0 ) then
277 #ifdef _DEBUG_HOMARD_
278 write (ulsort,texte(langue,3)) 'ESLMH3', nompro
280 call eslmh3 ( idfmed, nomamd,
282 > nbfmed, natmax, ngrmax,
283 > ulsort, langue, codret)
288 c 6. tableaux de travail
289 c On doit tenir compte des caracteristiques des familles pour
290 c le dimensionnement du tableau tbsaux
292 #ifdef _DEBUG_HOMARD_
293 write (ulsort,90002) '6. tableaux de travail ; codret', codret
296 if ( codret.eq.0 ) then
298 #ifdef _DEBUG_HOMARD_
299 write (ulsort,90002) 'nbnoto', nbnoto
300 write (ulsort,90002) 'nbmpto', nbmpto
301 write (ulsort,90002) 'nbarto', nbarto
302 write (ulsort,90002) 'nbtrto', nbtrto
303 write (ulsort,90002) 'nbquto', nbquto
304 write (ulsort,90002) 'nbteto, nbtecf, nbteca',
305 > nbteto, nbtecf, nbteca
306 write (ulsort,90002) 'nbheto, nbhecf, nbheca',
307 > nbheto, nbhecf, nbheca
308 write (ulsort,90002) 'nbpyto, nbpycf, nbpyca',
309 > nbpyto, nbpycf, nbpyca
310 write (ulsort,90002) 'nbpeto, nbpecf, nbpeca',
311 > nbpeto, nbpecf, nbpeca
312 write (ulsort,90002) 'nbfmed', nbfmed
313 write (ulsort,90002) 'ngrmax', ngrmax
314 write (ulsort,90002) 'lgpeli', lgpeli
315 write (ulsort,90002) 'sfsdim', sfsdim
316 write (ulsort,90002) 'sfnbso', sfnbso
317 write (ulsort,90002) 'sfnbse', sfnbse
320 ltrav1 = max ( 4*nbnoto,
321 > nbmpto, 5*nbarto, 5*nbtrto, 5*nbquto,
322 > 6*nbteto, 2*nbteca,
323 > 7*nbpyto, 3*nbpyca,
324 > 8*nbheto, 6*nbheca,
325 > 5*nbpeto, 4*nbpeca,
328 call gmalot ( ntrav1, 'entier ', ltrav1 , ptrav1, codre1 )
329 ltrav2 = 25*( max ( nctfno, nctfmp, nctfar, nctftr, nctfqu,
330 > nctfte, nctfpy, nctfhe, nctfpe, 30 ) + 1 )
331 ltrav2 = max ( ltrav2, 25*natmax+10*ngrmax )
332 call gmalot ( ntrav2, 'chaine ', ltrav2 , ptrav2, codre2 )
334 codre0 = min ( codre1, codre2 )
335 codret = max ( abs(codre0), codret,
341 c 7. Lecture des noeuds
343 #ifdef _DEBUG_HOMARD_
344 write (ulsort,90002) '7. Lecture des noeuds ; codret', codret
347 if ( codret.eq.0 ) then
349 #ifdef _DEBUG_HOMARD_
350 write (ulsort,texte(langue,3)) 'ESLENO', nompro
352 call esleno ( idfmed, nomamd,
354 > dimcst, lgnoig, nbnoco,
355 > ltrav1, imem(ptrav1),
356 > ulsort, langue, codret)
361 c 8. Lecture des entites mailles
363 #ifdef _DEBUG_HOMARD_
364 write (ulsort,90002) '8. Lecture des mailles ; codret', codret
367 if ( codret.eq.0 ) then
369 #ifdef _DEBUG_HOMARD_
370 write (ulsort,texte(langue,3)) 'ESLEEN', nompro
372 call esleen ( idfmed, nomamd,
373 > nhmapo, nharet, nhtria, nhquad,
374 > nhtetr, nhhexa, nhpyra, nhpent,
375 > ltrav1, imem(ptrav1),
376 > ulsort, langue, codret )
381 c 9. Les renumerotations
383 #ifdef _DEBUG_HOMARD_
384 write (ulsort,90002) '9. Les renumerotations ; codret', codret
389 if ( codret.eq.0 ) then
391 #ifdef _DEBUG_HOMARD_
392 write (ulsort,texte(langue,3)) 'ESLMH4', nompro
394 call eslmh4 ( idfmed,
396 > ulsort, langue, codret)
403 c 10. Lecture des familles
405 #ifdef _DEBUG_HOMARD_
406 write (ulsort,90002) '10. les familles ; codret', codret
409 if ( codret.eq.0) then
411 #ifdef _DEBUG_HOMARD_
412 write (ulsort,texte(langue,3)) 'ESLEFE', nompro
414 call eslefe ( idfmed, nomamd,
415 > nhnoeu, nhmapo, nharet, nhtria, nhquad,
416 > nhtetr, nhhexa, nhpyra, nhpent,
418 > ltrav2, smem(ptrav2),
419 > ulsort, langue, codret )
424 c 11. Lecture des elements ignores
426 #ifdef _DEBUG_HOMARD_
427 write (ulsort,90002) '10. Elements ignores ; codret', codret
430 if ( lgpeli.gt.0 ) then
432 if ( codret.eq.0 ) then
434 #ifdef _DEBUG_HOMARD_
435 write (ulsort,texte(langue,3)) 'ESLMH6', nompro
437 call eslmh6 ( idfmed,
440 > ulsort, langue, codret)
447 c 11. Lecture de l'eventuelle frontiere discrete
449 #ifdef _DEBUG_HOMARD_
450 write (ulsort,90002) '11. Frontiere discrete ; codret', codret
453 if ( mod(suifro,2).eq.0 ) then
455 if ( lnomaf.gt.0 ) then
457 if ( codret.eq.0 ) then
459 #ifdef _DEBUG_HOMARD_
460 write (ulsort,texte(langue,3)) 'ESLMH7', nompro
462 call eslmh7 ( idfmed,
464 > ltrav1, imem(ptrav1), ltrav2, smem(ptrav2),
466 > ulsort, langue, codret )
472 suifro = -abs(suifro)
479 c 12. Fermeture du fichier
481 #ifdef _DEBUG_HOMARD_
482 write (ulsort,90002) '12. Fermeture du fichier ; codret', codret
485 if ( codret.eq.0 ) then
487 #ifdef _DEBUG_HOMARD_
488 write (ulsort,texte(langue,3)) 'MFICLO', nompro
490 call mficlo ( idfmed, codret )
491 if ( codret.ne.0 ) then
492 write (ulsort,texte(langue,8)) nomfic(1:lnomfi)
493 write (ulsort,texte(langue,10))
498 #ifdef _DEBUG_HOMARD_
499 if ( codret.eq.0 ) then
500 call gmprsx ( nompro, nomail )
508 if ( codret.ne.0 ) then
512 write (ulsort,texte(langue,1)) 'Sortie', nompro
513 write (ulsort,texte(langue,2)) codret
514 write (ulsort,texte(langue,8)) nomfic(1:lnomfi)
518 #ifdef _DEBUG_HOMARD_
519 write (ulsort,texte(langue,1)) 'Sortie', nompro