1 subroutine ininfm ( codret )
2 c ______________________________________________________________________
6 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
8 c Version originale enregistree le 18 juin 1996 sous le numero 96036
9 c aupres des huissiers de justice Simart et Lavoir a Clamart
10 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
11 c aupres des huissiers de justice
12 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
14 c HOMARD est une marque deposee d'Electricite de France
20 c ______________________________________________________________________
22 c INformation - INFormation sur le Maillage
25 c remarque : on n'execute ce programme que si le precedent s'est
28 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . codret . es . 1 . code de retour des modules .
33 c . . . . en entree = celui du module d'avant .
34 c . . . . en sortie = celui du module en cours .
35 c . . . . 0 : pas de probleme .
36 c . . . . 1 : manque de temps cpu .
37 c . . . . 2x : probleme dans les memoires .
38 c . . . . 3x : probleme dans les fichiers .
39 c . . . . 5 : mauvaises options .
40 c . . . . 6 : problemes dans les noms d'objet .
41 c ______________________________________________________________________
44 c 0. declarations et dimensionnement
47 c 0.1. ==> generalites
53 parameter ( nompro = 'ININFM' )
74 c 0.4. ==> variables locales
76 integer ulsort, langue, codava
77 integer adopti, lgopti
78 integer adopts, lgopts
79 integer adetco, lgetco
80 integer nrsect, nrssse
81 integer nretap, nrsset
84 integer codre1, codre2, codre3, codre4, codre5
85 integer codre6, codre7, codre8
87 integer adinch, adinpf, adinpr, adinlg
90 integer ulfido, ulenst, ulsost
96 character*8 nohman, norenu, nocsol, nochso
98 character*50 commen(nblang)
102 parameter ( nbmess = 10 )
103 character*80 texte(nblang,nbmess)
105 c 0.5. ==> initialisations
106 c ______________________________________________________________________
109 c 1. les initialisations
114 c=======================================================================
115 if ( codava.eq.0 ) then
116 c=======================================================================
118 #ifdef _DEBUG_HOMARD_
119 call gmprsx (nompro, nndoad )
120 call gmprsx (nompro, nndoad//'.OptEnt' )
121 call gmprsx (nompro, nndoad//'.OptRee' )
122 call gmprsx (nompro, nndoad//'.OptCar' )
123 call gmprsx (nompro, nndoad//'.EtatCour' )
126 c 1.1. ==> le numero d'unite logique de la liste standard
128 call utulls ( ulsort, codret )
130 c 1.2. ==> la langue des messages
132 call gmadoj ( nndoad//'.OptEnt', adopti, lgopti, codret )
133 if ( codret.eq.0 ) then
134 langue = imem(adopti)
140 c 1.3. ==> l'etat courant
142 call gmadoj ( nndoad//'.EtatCour', adetco, lgetco, codret )
143 if ( codret.eq.0 ) then
144 nretap = imem(adetco) + 1
145 imem(adetco) = nretap
147 imem(adetco+1) = nrsset
148 nrsect = imem(adetco+2) + 10
149 imem(adetco+2) = nrsect
151 imem(adetco+3) = nrssse
160 c 1.4. ==> le debut des mesures de temps
164 c 1.5. ==> les messages
170 #ifdef _DEBUG_HOMARD_
171 write (ulsort,texte(langue,1)) 'Entree', nompro
177 >''' I N F O R M A T I O N S U R L E M A I L L A G E'')'
178 texte(1,5) = '(63(''=''),/)'
179 texte(1,7) = '(''Le maillage est a corriger.'')'
181 texte(2,4) = '(//,a6,'' M E S H I N F O R M A T I O N'')'
182 texte(2,5) = '(39(''=''),/)'
183 texte(2,7) = '(''This mesh is not correct.'')'
187 call utcvne ( nretap, nrsset, saux, iaux, codret )
189 write (ulsort,texte(langue,4)) saux
190 write (ulsort,texte(langue,5))
193 imem(adetco+1) = nrsset
195 c 1.7. ==> les noms d'objets a conserver
197 if ( codret.eq.0 ) then
198 call gmadoj ( nndoad//'.OptCar', adopts, lgopts, codret )
199 if ( codret.ne.0 ) then
204 c 1.8. ==> les numeros d'unite logique au terminal
206 call dmunit ( ulenst, ulsost )
208 c 1.9. ==> le maillage d'entree
210 nohman = smem(adopts+2)
211 action = smem(adopts+29)
213 c 1.10. ==> le numero d'unite logique du fichier de donnees correct
215 call utulfd ( action, nbiter, ulfido, codret )
218 c 2. reactualisation des communs de la renumerotation
221 #ifdef _DEBUG_HOMARD_
222 write(ulsort,90002) '2. reactualisation communs ; codret', codret
225 c 2.1. ==> Noms des structures
227 if ( codret.eq.0 ) then
229 call gmnomc ( nohman//'.RenuMail', norenu, codret )
233 if ( codret.eq.0 ) then
235 call gmadoj ( norenu//'.Nombres', adnbrn, iaux, codret )
240 #ifdef _DEBUG_HOMARD_
241 write(ulsort,90002) '2.2. Adresses ; codret', codret
244 if ( codret.eq.0 ) then
246 #ifdef _DEBUG_HOMARD_
247 write (ulsort,texte(langue,3)) 'UTNBMH', nompro
249 call utnbmh ( imem(adnbrn),
250 > renois, renoei, renomp,
251 > renop1, renop2, renoim,
253 > iaux, iaux, iaux, iaux,
254 > iaux, iaux, iaux, iaux,
255 > iaux, iaux, iaux, iaux,
258 > ulsort, langue, codret )
262 c 2.3. ==> Recuperations des valeurs
263 #ifdef _DEBUG_HOMARD_
264 write(ulsort,90002) '2.3. Recuperations ; codret', codret
267 if ( codret.eq.0 ) then
269 reno1i = renois + renoei + renomp + renop1
271 call gmliat ( norenu, 1, renoac, codre1 )
272 call gmliat ( norenu, 2, renoto, codre2 )
273 call gmliat ( norenu, 3, rempac, codre3 )
274 call gmliat ( norenu, 4, rempto, codre4 )
275 call gmliat ( norenu, 5, rearac, codre5 )
276 call gmliat ( norenu, 6, rearto, codre6 )
277 call gmliat ( norenu, 7, retrac, codre7 )
278 call gmliat ( norenu, 8, retrto, codre8 )
280 codre0 = min ( codre1, codre2, codre3, codre4, codre5,
281 > codre6, codre7, codre8 )
282 codret = max ( abs(codre0), codret,
283 > codre1, codre2, codre3, codre4, codre5,
284 > codre6, codre7, codre8 )
286 call gmliat ( norenu, 9, requac, codre1 )
287 call gmliat ( norenu, 10, requto, codre2 )
288 call gmliat ( norenu, 11, reteac, codre3 )
289 call gmliat ( norenu, 12, reteto, codre4 )
291 codre0 = min ( codre1, codre2, codre3, codre4 )
292 codret = max ( abs(codre0), codret,
293 > codre1, codre2, codre3, codre4 )
298 c 3. Lecture de tous les champs presents dans le fichier
301 #ifdef _DEBUG_HOMARD_
302 write(ulsort,90002) '3. Lecture des champs ; codret', codret
305 c 3.1. ==> Recherche du type de code de calcul associe
307 if ( codret.eq.0 ) then
309 call gmliat ( nohman, 9, typcca, codret )
313 c 3.2. ==> Lecture de l'eventuelle solution
315 c 3.2.1. ==> La solution existe-t-elle ?
317 if ( codret.eq.0 ) then
319 if ( mod(typcca-6,10).eq.0 ) then
324 call utfino ( typobs, iaux, nomfic, lnomfi,
326 > ulsort, langue, codret )
328 if ( codret.eq.0 ) then
341 c 3.2.2. ==> Une solution existe
345 c 3.2.2.1. ==> Lecture du format MED
347 if ( codret.eq.0 ) then
349 #ifdef _DEBUG_HOMARD_
350 write (ulsort,texte(langue,3)) 'ESLSMD', nompro
354 call eslsmd ( nocsol, nochso,
355 > imem(adopti+8), iaux,
356 > ulsort, langue, codret )
360 c 3.2.2.2. ==> pour le cas extrude, passage du 3D au 2D
362 if ( imem(adopti+38).ne.0 ) then
364 if ( codret.eq.0 ) then
366 #ifdef _DEBUG_HOMARD_
367 write (ulsort,texte(langue,3)) 'UTSEXT', nompro
370 call utsext ( nocsol, iaux, typcca,
371 > lgetco, imem(adetco),
372 > ulsort, langue, codret )
380 c 3.2.3. ==> S'il n'y a pas de solution, on en alloue une vide pour ne
381 c pas perturber la suite
383 if ( codret.eq.0 ) then
385 #ifdef _DEBUG_HOMARD_
386 write (ulsort,texte(langue,3)) 'UTALSO', nompro
389 call utalso ( nocsol,
390 > iaux, iaux, iaux, iaux,
391 > adinch, adinpf, adinpr, adinlg,
392 > ulsort, langue, codret )
398 cgn call gmprsx (nompro,nocsol)
400 #ifdef _DEBUG_HOMARD_
401 write(ulsort,90002) 'Fin etape 3 avec codret', codret
405 c 4. Analyse du maillage d'entree
407 #ifdef _DEBUG_HOMARD_
408 write(ulsort,90002) '4. Analyse ; codret', codret
412 if ( codret.eq.0 ) then
414 imem(adetco+3) = imem(adetco+3) + 1
415 nrssse = imem(adetco+3)
421 c 4.1. ==> numero d'iteration
423 if ( codret.eq.0 ) then
425 #ifdef _DEBUG_HOMARD_
426 write (ulsort,texte(langue,3)) 'INITER', nompro
428 call initer ( ulsort, langue, codret )
432 c 4.2. ==> analyse du maillage d'entree
434 if ( codret.eq.0 ) then
436 commen(1) = 'Maillage a analyser '
437 commen(2) = 'Mesh to analyze '
439 #ifdef _DEBUG_HOMARD_
440 write (ulsort,texte(langue,3)) 'UTBILM', nompro
442 call utbilm ( nohman, commen(langue), imem(adopti+2), action,
443 > lgetco, imem(adetco),
444 > ulsort, langue, codret )
448 if ( codret.eq.0 ) then
457 #ifdef _DEBUG_HOMARD_
458 write(ulsort,90002) '5. Familles ; codret', codret
461 if ( codret.eq.0 ) then
464 if ( imem(adopti+10).eq.26 .or. imem(adopti+10).eq.46 ) then
467 #ifdef _DEBUG_HOMARD_
468 write (ulsort,texte(langue,3)) 'INFAMI', nompro
470 call infami ( nohman, iaux,
471 > ulsort, langue, codret )
478 #ifdef _DEBUG_HOMARD_
479 write(ulsort,90002) '6. Fichiers ; codret', codret
483 if ( codret.eq.0 ) then
485 imem(adetco+3) = imem(adetco+3) + 1
486 nrssse = imem(adetco+3)
492 c 6.1. ==> sorties vectorielles
494 if ( codret.eq.0 ) then
496 #ifdef _DEBUG_HOMARD_
497 write (ulsort,texte(langue,3)) 'INFVEC', nompro
499 call infvec ( nohman, nocsol, action,
500 > ulfido, ulenst, ulsost,
501 > lgetco, imem(adetco),
502 > ulsort, langue, codret )
506 c 6.2. ==> fichiers ascii pour les champs
508 if ( codret.eq.0 ) then
510 #ifdef _DEBUG_HOMARD_
511 write (ulsort,texte(langue,3)) 'INFCAS', nompro
512 write(ulsort,*) imem(adetco+3)
514 call infcas ( nohman, nocsol,
515 > ulfido, ulenst, ulsost,
516 > lgetco, imem(adetco),
517 > ulsort, langue, codret )
521 if ( codret.eq.0 ) then
531 c 7.1. ==> message si erreur
533 if ( codret.ne.0 ) then
537 write (ulsort,texte(langue,1)) 'Sortie', nompro
538 write (ulsort,texte(langue,2)) codret
542 c 7.2. ==> fin des mesures de temps de la section
546 #ifdef _DEBUG_HOMARD_
547 write (ulsort,texte(langue,1)) 'Sortie', nompro
551 c=======================================================================
553 c=======================================================================