1 subroutine eslmh7 ( idfmed,
3 > ltbiau, tbiaux, ltbsau, tbsaux,
5 > 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 Entree-Sortie : Lecture du Maillage Homard - phase 7
29 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . idfmed . e . 1 . identificateur du fichier MED .
33 c . nocdfr . s . char8 . nom de l'objet description de la frontiere .
34 c . ncafdg . s . char*8 . nom de l'objet groupes frontiere .
35 c . ltbiau . e . 1 . longueur allouee a tbiaux .
36 c . tbiaux . e . * . tableau de travail .
37 c . ltbsau . e . 1 . longueur allouee a tbsaux .
38 c . tbsaux . . * . tableau tampon caracteres .
39 c . nomafr . e . char64 . nom du maillage MED de la frontiere .
40 c . lnomaf . e . 1 . longueur du nom du maillage de la frontiere.
41 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
42 c . langue . e . 1 . langue des messages .
43 c . . . . 1 : francais, 2 : anglais .
44 c . codret . es . 1 . code de retour des modules .
45 c . . . . 0 : pas de probleme .
46 c ______________________________________________________________________
49 c 0. declarations et dimensionnement
52 c 0.1. ==> generalites
58 parameter ( nompro = 'ESLMH7' )
75 integer ltbiau, tbiaux(ltbiau)
79 character*8 tbsaux(ltbsau)
80 character*8 nocdfr, ncafdg
83 integer ulsort, langue, codret
85 c 0.4. ==> variables locales
91 integer codre1, codre2, codre3, codre4, codre5
93 integer pgeoco, psomse, pnumli, ptypli, psegli, adabsc
94 integer lgpttg, lgtabl
95 integer pttgrl, ptngrl, pointl
102 parameter ( nbmess = 150 )
103 character*80 texte(nblang,nbmess)
104 c ______________________________________________________________________
112 #ifdef _DEBUG_HOMARD_
113 write (ulsort,texte(langue,1)) 'Entree', nompro
117 texte(1,4) = '(5x,''Recuperation de la frontiere discrete '',a)'
119 texte(2,4) = '(5x,''Readings of the discrete boundary '',a)'
125 write (ulsort,texte(langue,4)) nomafr(1:lnomaf)
130 c 2. Allocation de l'objet frontiere discrete
132 #ifdef _DEBUG_HOMARD_
133 write (ulsort,90002) '2. Allocations frontiere ; codret', codret
135 #ifdef _DEBUG_HOMARD_
136 write (ulsort,90002) 'sfsdim', sfsdim
137 write (ulsort,90002) 'sfmdim', sfmdim
138 write (ulsort,90002) 'sfnbso', sfnbso
139 write (ulsort,90002) 'sfnbse', sfnbse
142 if ( codret.eq.0 ) then
144 call gmalot ( nocdfr, 'Cal_Fron', 0, iaux, codre1 )
145 call gmecat ( nocdfr, 1, sfsdim, codre2 )
146 call gmecat ( nocdfr, 2, sfmdim, codre3 )
147 call gmecat ( nocdfr, 3, sfnbso, codre4 )
148 call gmecat ( nocdfr, 5, sfnbse, codre5 )
150 codre0 = min ( codre1, codre2, codre3, codre4, codre5 )
151 codret = max ( abs(codre0), codret,
152 > codre1, codre2, codre3, codre4, codre5 )
155 call gmaloj ( nocdfr//'.CoorNoeu', ' ', iaux, pgeoco, codre1 )
156 call gmaloj ( nocdfr//'.SommSegm', ' ', sfnbse, psomse, codre2 )
157 call gmaloj ( nocdfr//'.AbsCurvi', ' ', sfnbse, adabsc, codre3 )
159 codre0 = min ( codre1, codre2, codre3 )
160 codret = max ( abs(codre0), codret,
161 > codre1, codre2, codre3 )
166 c 3. Lecture des coordonnes des noeuds
168 #ifdef _DEBUG_HOMARD_
169 write (ulsort,90002) '3. Lecture ; codret', codret
172 c 3.1. ==> Lecture des coordonnees et des familles des noeuds
174 if ( codret.eq.0 ) then
177 #ifdef _DEBUG_HOMARD_
178 write (ulsort,texte(langue,3)) 'ESLMNO-'//nomafr(1:lnomaf), nompro
180 call eslmno ( idfmed, nomafr,
182 > sfnbso, sfsdim, rmem(pgeoco), tbiaux,
183 > ulsort, langue, codret )
187 c 3.2. ==> Description des lignes
189 if ( codret.eq.0 ) then
192 #ifdef _DEBUG_HOMARD_
193 write (ulsort,90002) 'sfnbli', sfnbli
194 write(ulsort,*) (tbiaux(iaux), iaux=1, 2*(sfnbli+1)+1)
196 call gmecat ( nocdfr, 4, sfnbli, codre1 )
197 call gmaloj ( nocdfr//'.NumeLign', ' ', sfnbli, pnumli, codre2 )
198 call gmaloj ( nocdfr//'.TypeLign', ' ', sfnbli, ptypli, codre3 )
199 call gmaloj ( nocdfr//'.PtrSomLi', ' ', sfnbli+1, psegli, codre4 )
201 codre0 = min ( codre1, codre2, codre3, codre4 )
202 codret = max ( abs(codre0), codret,
203 > codre1, codre2, codre3, codre4 )
207 if ( codret.eq.0 ) then
209 do 321 , iaux = 0 , sfnbli-1
210 imem(pnumli+iaux) = tbiaux(iaux+2)
212 do 322 , iaux = 0 , sfnbli-1
213 imem(ptypli+iaux) = tbiaux(iaux+sfnbli+2)
215 do 323 , iaux = 0 , sfnbli
216 imem(psegli+iaux) = tbiaux(iaux+2*sfnbli+2)
219 #ifdef _DEBUG_HOMARD_
220 call gmprsx ( nompro, nocdfr )
221 call gmprsx ( nompro, nocdfr//'.NumeLign' )
222 call gmprsx ( nompro, nocdfr//'.TypeLign' )
223 call gmprsx ( nompro, nocdfr//'.PtrSomLi' )
229 c 4. Lecture des abscisses curvilignes
231 #ifdef _DEBUG_HOMARD_
232 write (ulsort,90002) '4. Abscisses curvilignes ; codret', codret
234 c Le nom doit etre coherent avec eslmh2
236 if ( codret.eq.0 ) then
237 #ifdef _DEBUG_HOMARD_
238 write (ulsort,90002) '4.1. Creation maillage 2 ; codret', codret
242 saux64(1:8) = 'AbsCurvi'
245 #ifdef _DEBUG_HOMARD_
246 write (ulsort,texte(langue,3)) 'ESLMNO-'//saux64(1:8), nompro
248 call eslmno ( idfmed, saux64,
250 > sfnbse, iaux, rmem(adabsc), imem(psomse),
251 > ulsort, langue, codret )
256 c 5. Lecture des groupes
258 #ifdef _DEBUG_HOMARD_
259 write (ulsort,90002) '5. Groupes ; codret', codret
262 c 5.1. ==> Lecture des valeurs entieres
264 if ( codret.eq.0 ) then
267 c 1234567890123456789012
268 noprof(1:22) = 'Groupes_des_frontieres'
270 #ifdef _DEBUG_HOMARD_
271 write (ulsort,texte(langue,3)) 'MPFPRR', nompro
273 call mpfprr ( idfmed, noprof, tbiaux, codret )
276 #ifdef _DEBUG_HOMARD_
277 write (ulsort,texte(langue,61)) noprof
282 if ( codret.eq.0 ) then
287 #ifdef _DEBUG_HOMARD_
288 write (ulsort,90002) 'lgpttg', lgpttg
289 write (ulsort,90002) 'lgtabl', lgtabl
290 write(ulsort,*) (tbiaux(iaux),iaux=1,3+lgpttg+lgtabl)
296 #ifdef _DEBUG_HOMARD_
297 write (ulsort,texte(langue,3)) 'UTAPTC', nompro
299 call utaptc ( nocdfr//'.Groupes', iaux, jaux,
301 > pointl, pttgrl, ptngrl,
302 > ulsort, langue, codret )
306 if ( codret.eq.0 ) then
308 call gmnomc ( nocdfr//'.Groupes', ncafdg, codret )
312 c 5.3. ==> Lecture des caracteres
314 if ( codret.eq.0 ) then
316 jaux = mod(lgtabl,10)
317 if ( jaux.eq.0 ) then
320 iaux = (lgtabl-jaux)/10 + 1
324 #ifdef _DEBUG_HOMARD_
325 write (ulsort,texte(langue,3)) 'MFAFAI', nompro
328 call mfafai ( idfmed, nomafr, iaux, saux64, jaux,
330 #ifdef _DEBUG_HOMARD_
331 write (ulsort,*) '... Famille ', saux64
332 write (ulsort,90002) 'numfam', jaux
333 do 5353 , iaux = 1 , ngro
334 write(ulsort,*) (tbsaux(10*(iaux-1)+jaux)//'+',jaux=1,10)
342 if ( codret.eq.0 ) then
344 do 541 , iaux = 0 , lgpttg
345 imem(pointl+iaux) = tbiaux(iaux+3)
349 do 542 , iaux = 1 , lgtabl
350 imem(pttgrl+iaux-1) = tbiaux(jaux+iaux)
353 do 543 , iaux = 1 , lgtabl
354 smem(ptngrl+iaux-1) = tbsaux(iaux)
359 #ifdef _DEBUG_HOMARD_
360 if ( codret.eq.0 ) then
361 call gmprsx (nompro, nocdfr )
362 call gmprot (nompro, nocdfr//'.CoorNoeu', 1 , 20 )
363 call gmprot (nompro, nocdfr//'.CoorNoeu', sfnbso-20 , sfnbso )
364 call gmprsx (nompro, nocdfr//'.NumeLign' )
365 call gmprsx (nompro, nocdfr//'.PtrSomLi' )
366 call gmprot (nompro, nocdfr//'.SommSegm', 1 , 20 )
367 call gmprot (nompro, nocdfr//'.SommSegm', sfnbse-20 , sfnbse )
368 call gmprot (nompro, nocdfr//'.AbsCurvi', 1 , 20 )
369 call gmprot (nompro, nocdfr//'.AbsCurvi', sfnbse-20 , sfnbse )
370 call gmprsx (nompro, nocdfr//'.Groupes' )
378 if ( codret.ne.0 ) then
382 write (ulsort,texte(langue,1)) 'Sortie', nompro
383 write (ulsort,texte(langue,2)) codret
387 #ifdef _DEBUG_HOMARD_
388 write (ulsort,texte(langue,1)) 'Sortie', nompro