1 subroutine eslimd ( nocind,
2 > numdt, numit, instan,
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 Entree-Sortie - Lecture de l'Indicateur au format MED
28 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . nocind . s . char*8 . nom de l'objet indicateur d'erreur calcul .
33 c . numdt . e . 1 . numero du pas de temps eventuel .
34 c . numit . e . 1 . numero d'ordre eventuel .
35 c . instan . e . 1 . instant eventuel .
36 c . yandt . e . 1 . 2, on prend le dernier pas de temps .
37 c . . . . 1, le numero du pas de temps est fourni .
39 c . yanrd . e . 1 . 2, on prend le dernier numero d'ordre .
40 c . . . . 1, le numero d'ordre est fourni .
42 c . yains . e . 1 . 2, on prend le dernier instant .
43 c . . . . 1, l'instant est fourni .
45 c . messin . e . 1 . message d'informations .
46 c . . . . impressions MED si multiple de 3 .
47 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
48 c . langue . e . 1 . langue des messages .
49 c . . . . 1 : francais, 2 : anglais .
50 c . codret . es . 1 . code de retour des modules .
51 c . . . . en entree = celui du module d'avant .
52 c . . . . en sortie = celui du module en cours .
53 c . . . . 0 : pas de probleme .
54 c . . . . 1 : manque de temps cpu .
55 c . . . . 2x : probleme dans les memoires .
56 c . . . . 3x : probleme dans les fichiers .
57 c . . . . -1 : probleme avec le nom du champ .
58 c . . . . -2 : probleme avec le nom de la composante .
59 c . . . . -3 : probleme avec le nom du maillage .
60 c ______________________________________________________________________
62 c HOAVLI --> ESLIMD --> ESLSM0
63 c -> ESLSM0 -> ESOUVL -> ESVERI -> MFICOM
76 c -> ESLCH1 -> ESLCH2 -> MFDCSI
80 c -> ESLPG1 -> ESLPG2 -> MLCNLC
88 c -> ESLSM4 -> ESLCH4 -> MFDRPR
93 c 0. declarations et dimensionnement
96 c 0.1. ==> generalites
102 parameter ( nompro = 'ESLIMD' )
120 integer numdt, numit, yandt, yanrd,yains
121 double precision instan
127 integer ulsort, langue, codret
129 c 0.4. ==> variables locales
133 integer codre1, codre2, codre3
134 integer adcact, adcaet, adcart
135 integer nbseal, nbtosv
138 integer lnocin, lnomam
141 character*8 ntrav1, ntrav2, ntrav3
148 parameter ( nbmess = 150 )
149 character*80 texte(nblang,nbmess)
151 c 0.5. ==> initialisations
152 c ______________________________________________________________________
160 #ifdef _DEBUG_HOMARD_
161 write (ulsort,texte(langue,1)) 'Entree', nompro
166 >'(''Probleme pour allouer l''''objet indicateur.'')'
167 texte(1,5) = '(''Mot-cle : '',a8)'
168 texte(1,6) = '(''Le nom du champ indicateur est inconnu.'')'
170 > '(''La composante du champ indicateur est inconnue.'')'
172 texte(2,4) ='(''Problem while allocating the indicator object.'')'
173 texte(2,5) = '(''Keyword : '',a8)'
174 texte(2,6) = '(''The name of the indicator field is unknown.'')'
176 >'(''The name of the indicator field component is unknown.'')'
183 c 2. premiers decodages
186 c 2.1. ==> nom du fichier contenant l'indicateur
191 call utfino ( typobs, iaux, nomfic, lnomfi,
193 > ulsort, langue, codret )
195 c 2.2. ==> nom du maillage dans ce fichier
197 if ( codret.eq.0 ) then
202 call utfino ( typobs, iaux, nomamd, lnomam,
204 > ulsort, langue, codret )
205 if ( codret.ne.0 ) then
206 call utosme ( typobs, ulsort, langue )
207 if ( codret.eq.4 ) then
208 write (ulsort,texte(langue,52)) lnomam
209 write (ulsort,texte(langue,53)) len(nomamd)
216 c 2.3. ==> recherche des caracteristiques de l'indicateur
217 c si le nom de l'indicateur est absent, ... probleme
219 c 2.3.1. ==> nom du champ
221 #ifdef _DEBUG_HOMARD_
222 write (ulsort,90002) '2.3.2. nom du champ ; codret', codret
225 if ( codret.eq.0 ) then
230 call utfino ( typobs, iaux, nochin, lnocin,
232 > ulsort, langue, codret )
234 if ( codret.eq.2 ) then
236 write (ulsort,texte(langue,5)) typobs
237 write (ulsort,texte(langue,6))
242 if ( codret.eq.0 ) then
243 write (ulsort,texte(langue,32)) nochin(1:lnocin)
247 c 3. mise en forme du tableau a lire
250 #ifdef _DEBUG_HOMARD_
251 write (ulsort,90002) '3. mise en forme ; codret', codret
254 if ( codret.eq.0 ) then
259 call gmalot ( ntrav1, 'chaine ', iaux, adcact, codre1 )
261 call gmalot ( ntrav2, 'entier ', iaux, adcaet, codre2 )
263 call gmalot ( ntrav3, 'reel ', iaux, adcart, codre3 )
265 codre0 = min ( codre1, codre2, codre3 )
266 codret = max ( abs(codre0), codret,
267 > codre1, codre2, codre3 )
271 if ( codret.eq.0 ) then
276 call utchs8 ( saux64, iaux, smem(adcact),
277 > ulsort, langue, codret )
281 if ( codret.eq.0 ) then
283 call utchs8 ( nochin, lnocin, smem(adcact),
284 > ulsort, langue, codret )
288 if ( codret.eq.0 ) then
290 #ifdef _DEBUG_HOMARD_
291 write (ulsort,90002) 'yandt', yandt
292 write (ulsort,90002) 'yanrd', yanrd
293 write (ulsort,90002) 'yains', yains
296 imem(adcaet+1) = yandt
297 if ( yandt.eq.1 ) then
298 imem(adcaet+2) = numdt
299 write (ulsort,texte(langue,113)) numdt
300 elseif ( yandt.eq.2 ) then
301 write (ulsort,texte(langue,93))
303 imem(adcaet+3) = yanrd
304 if ( yanrd.eq.1 ) then
305 imem(adcaet+4) = numit
306 write (ulsort,texte(langue,114)) numit
307 cgn elseif ( yanrd.eq.2 ) then
308 cgn write (ulsort,texte(langue,94))
310 imem(adcaet+5) = yains
311 if ( yains.eq.1 ) then
312 rmem(adcart) = instan
313 write (ulsort,texte(langue,115)) instan
314 elseif ( yains.eq.2 ) then
315 write (ulsort,texte(langue,95))
326 #ifdef _DEBUG_HOMARD_
327 write (ulsort,90002) '4. lecture ; codret', codret
330 c 4.1. ==> lecture MED
332 if ( codret.eq.0 ) then
333 #ifdef _DEBUG_HOMARD_
334 write (ulsort,texte(langue,3)) 'ESLSM0', nompro
338 call eslsm0 ( nocind, nomfic, lnomfi,
341 > smem(adcact), imem(adcaet), rmem(adcart),
343 > ulsort, langue, codret )
347 c 4.2. ==> on controle qu'il y a bien au moins un tableau
349 if ( codret.eq.0 ) then
350 #ifdef _DEBUG_HOMARD_
351 call gmprsx (nompro, nocind )
352 call gmprsx (nompro, nocind//'.InfoPaFo' )
353 call gmprsx (nompro, '%%%%%%13' )
354 call gmprsx (nompro, nocind//'.InfoCham' )
355 call gmprsx (nompro, '%%%%%%11' )
356 call gmprsx (nompro, '%%%%%%11.Nom_Comp' )
357 call gmprsx (nompro, '%%%%%%11.Cham_Ent' )
358 call gmprsx (nompro, '%%%%%%11.Cham_Ree' )
359 call gmprsx (nompro, '%%%%%%11.Cham_Car' )
360 call gmprsx (nompro, '%%%%%%12' )
361 call gmprsx (nompro, '%%%%%%12.ValeursR' )
363 #ifdef _DEBUG_HOMARD_
364 write (ulsort,texte(langue,111)) nbtosv
367 if ( nbtosv.eq.0 ) then
369 write (ulsort,texte(langue,96)) nomamd
370 if ( yandt.eq.1 ) then
371 write (ulsort,texte(langue,113)) numdt
373 if ( yanrd.eq.1 ) then
374 write (ulsort,texte(langue,114)) numit
376 if ( yains.eq.1 ) then
377 write (ulsort,texte(langue,115)) instan
379 write (ulsort,texte(langue,70))
380 write (ulsort,texte(langue,71))
381 write (ulsort,texte(langue,72))
382 write (ulsort,texte(langue,73))
384 #ifdef _DEBUG_HOMARD_
385 write (ulsort,texte(langue,3)) 'ESLSC1', nompro
387 call eslsc1 ( nomfic, lnomfi,
389 > ulsort, langue, codret )
399 if ( codret.eq.0 ) then
401 call gmlboj ( ntrav1, codre1 )
402 call gmlboj ( ntrav2, codre2 )
403 call gmlboj ( ntrav3, codre3 )
405 codre0 = min ( codre1, codre2, codre3 )
406 codret = max ( abs(codre0), codret,
407 > codre1, codre2, codre3 )
415 if ( codret.ne.0 ) then
419 write (ulsort,texte(langue,1)) 'Sortie', nompro
420 write (ulsort,texte(langue,2)) codret
421 write (ulsort,texte(langue,8)) nomfic
422 if ( codret.gt.0 .or. codret.eq.-2 ) then
423 write (ulsort,texte(langue,32)) nochin
425 if ( codret.gt.0 ) then
426 if ( yandt.eq.1 ) then
427 write (ulsort,texte(langue,113)) numdt
428 elseif ( yandt.eq.2 ) then
429 write (ulsort,texte(langue,93))
431 if ( yanrd.eq.1 ) then
432 write (ulsort,texte(langue,114)) numit
438 #ifdef _DEBUG_HOMARD_
439 write (ulsort,texte(langue,1)) 'Sortie', nompro