1 subroutine infvec ( nomail, nosolu, action,
2 > ulfido, ulenst, ulsost,
4 > 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 INformation : Fichiers VECtoriels
27 c ______________________________________________________________________
29 c . nom . e/s . taille . description .
30 c .____________________________________________________________________.
31 c . nomail . e . char8 . nom de l'objet maillage homard iteration n .
32 c . nosolu . e . char8 . nom de l'objet solution .
33 c . action . e . char8 . action en cours .
34 c . ulfido . e . 1 . unite logique du fichier de donnees correct.
35 c . ulenst . e . 1 . unite logique de l'entree standard .
36 c . ulsost . e . 1 . unite logique de la sortie standard .
37 c . lgetco . e . 1 . longueur du tableau de l'etat courant .
38 c . taetco . e . lgetco . tableau de l'etat courant .
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 . . . . 2 : probleme dans les memoires .
45 c . . . . 3 : probleme dans les fichiers .
46 c . . . . 5 : probleme autre .
47 c ______________________________________________________________________
50 c 0. declarations et dimensionnement
53 c 0.1. ==> generalites
59 parameter ( nompro = 'INFVEC' )
62 cfonc parameter ( nbtych = 5 )
91 character*8 nomail, nosolu
93 integer ulfido, ulenst, ulsost
95 integer taetco(lgetco)
97 integer ulsort, langue, codret
99 c 0.4. ==> variables locales
102 integer nretap, nrsset
103 integer iaux, jaux, kaux
106 integer pcoono, adcocs
108 integer pnp2ar, phetar, pmerar
109 integer phettr, paretr, pnivtr, adnmtr
110 integer advotr, adpptr
111 integer advoqu, adppqu
112 integer phetqu, parequ, pnivqu, adnmqu
113 integer ptrite, phette
114 integer pquahe, phethe
115 integer pfacpy, phetpy
116 integer pfacpe, phetpe
117 integer pposif, pfacar
118 integer ppovos, pvoiso
119 integer pfamar, pcfaar
120 integer pfamtr, pcfatr
121 integer pfamqu, pcfaqu
122 integer pfamte, pcfate
123 integer pfamhe, pcfahe
124 integer pfampy, pcfapy
125 integer pfampe, pcfape
126 integer ptrav1, ptrav2, ptrav3, ptrav4, ptrav5
127 integer ptra11, ptra12, ptra13, ptra14
128 integer ptra15, ptra16
129 integer ptrac1, ptrab1
132 integer adnohn, adnocn, adnoin, lgnoin
133 integer adtrhn, adtrcn, adtrin, lgtrin
134 integer adquhn, adqucn, adquin, lgquin
135 integer option, infsup, typcof, typcop, typbor, optnoe
136 integer porpay, triedr
139 integer codre1, codre2, codre3, codre4, codre5
142 integer nbcham, nbfonc, nbprof, nblopg
143 integer aninch, aninfo, aninpr, adinlg
144 integer nrocha, nrocmp, nrotab
148 integer nbblfa, nbblvo
150 double precision anglex, angley, anglez
151 double precision xyzmiz(3), xyzmaz(3)
152 double precision vafomi, vafoma
158 character*8 nhnoeu, nhmapo, nharet, nhtria, nhquad
159 character*8 nhtetr, nhhexa, nhpyra, nhpent
161 character*8 nhvois, nhsupe, nhsups
162 character*8 ntrav1, ntrav2, ntrav3, ntrav4, ntrav5
163 character*8 ntra11, ntra12, ntra13, ntra14
164 character*8 ntra15, ntra16
165 character*8 ntrac1, ntrab1
170 parameter ( nbmess = 10 )
171 character*80 texte(nblang,nbmess)
173 c 0.5. ==> initialisations
174 c ______________________________________________________________________
182 c=======================================================================
183 if ( codava.eq.0 ) then
184 c=======================================================================
186 c 1.1. ==> les messages
190 #ifdef _DEBUG_HOMARD_
191 write (ulsort,texte(langue,1)) 'Entree', nompro
195 texte(1,4) = '(a6,'' FICHIERS Xfig'')'
196 texte(1,5) = '(20(''=''),/)'
197 texte(1,6) = '(''Lancement du trace numero'',i3)'
198 texte(1,7) = '(''Action en cours : '',a)'
200 texte(2,4) = '(a6,'' Xfig FILES'')'
201 texte(2,5) = '(17(''=''),/)'
202 texte(2,6) = '(''Beginning of writings #'',i3)'
203 texte(2,7) = '(''Current action : '',a)'
207 c 1.4. ==> le numero de sous-etape
210 nrsset = taetco(2) + 1
213 call utcvne ( nretap, nrsset, saux06, iaux, codret )
217 write (ulsort,texte(langue,4)) saux06
218 write (ulsort,texte(langue,5))
220 #ifdef _DEBUG_HOMARD_
221 write (ulsort,texte(langue,7)) action
225 c 2. recuperation des pointeurs
227 c 2.1. ==> structure generale
229 if ( codret.eq.0 ) then
231 #ifdef _DEBUG_HOMARD_
232 write (ulsort,texte(langue,3)) 'UTNOMH', nompro
234 call utnomh ( nomail,
236 > degre, maconf, homolo, hierar,
237 > rafdef, nbmane, typcca, typsfr, maextr,
240 > nhnoeu, nhmapo, nharet,
242 > nhtetr, nhhexa, nhpyra, nhpent,
244 > nhvois, nhsupe, nhsups,
245 > ulsort, langue, codret)
250 #ifdef _DEBUG_HOMARD_
251 write (ulsort,90002) '2.2. tableaux ; codret', codret
254 if ( codret.eq.0 ) then
257 #ifdef _DEBUG_HOMARD_
258 write (ulsort,texte(langue,3)) 'UTAD01', nompro
260 call utad01 ( iaux, nhnoeu,
263 > pcoono, jaux, jaux, adcocs,
264 > ulsort, langue, codret )
267 if ( degre.eq.2 ) then
270 #ifdef _DEBUG_HOMARD_
271 write (ulsort,texte(langue,3)) 'UTAD02_ar', nompro
273 call utad02 ( iaux, nharet,
274 > phetar, psomar, jaux, pmerar,
275 > pfamar, pcfaar, jaux,
276 > jaux , pnp2ar, jaux,
278 > ulsort, langue, codret )
280 if ( nbftri.ne.0 ) then
283 if ( nbtrto.ne.0 ) then
285 if ( mod(mailet,2).eq.0 ) then
289 #ifdef _DEBUG_HOMARD_
290 write (ulsort,texte(langue,3)) 'UTAD02_tr', nompro
292 call utad02 ( iaux, nhtria,
293 > phettr, paretr, jaux, jaux,
294 > pfamtr, pcfatr, jaux,
295 > pnivtr, jaux, jaux,
296 > adnmtr, jaux, jaux,
297 > ulsort, langue, codret )
301 if ( nbquto.ne.0 ) then
304 if ( mod(mailet,3).eq.0 ) then
307 #ifdef _DEBUG_HOMARD_
308 write (ulsort,texte(langue,3)) 'UTAD02_qu', nompro
310 call utad02 ( iaux, nhquad,
311 > phetqu, parequ, jaux, jaux,
312 > pfamqu, pcfaqu, jaux,
313 > pnivqu, jaux, jaux,
314 > adnmqu, jaux, jaux,
315 > ulsort, langue, codret )
319 if ( nbteto.ne.0 ) then
322 #ifdef _DEBUG_HOMARD_
323 write (ulsort,texte(langue,3)) 'UTAD02_te', nompro
325 call utad02 ( iaux, nhtetr,
326 > phette, ptrite, jaux , jaux,
327 > pfamte, pcfate, jaux,
330 > ulsort, langue, codret )
334 if ( nbheto.ne.0 ) then
337 #ifdef _DEBUG_HOMARD_
338 write (ulsort,texte(langue,3)) 'UTAD02_he', nompro
340 call utad02 ( iaux, nhhexa,
341 > phethe, pquahe, jaux , jaux,
342 > pfamhe, pcfahe, jaux,
345 > ulsort, langue, codret )
349 if ( nbpyto.ne.0 ) then
352 #ifdef _DEBUG_HOMARD_
353 write (ulsort,texte(langue,3)) 'UTAD02_py', nompro
355 call utad02 ( iaux, nhpyra,
356 > phetpy, pfacpy, jaux , jaux,
357 > pfampy, pcfapy, jaux,
360 > ulsort, langue, codret )
364 if ( nbpeto.ne.0 ) then
367 #ifdef _DEBUG_HOMARD_
368 write (ulsort,texte(langue,3)) 'UTAD02_pe', nompro
370 call utad02 ( iaux, nhpent,
371 > phetpe, pfacpe, jaux , jaux,
372 > pfampe, pcfape, jaux,
375 > ulsort, langue, codret )
381 c 2.3. ==> les voisinages
382 #ifdef _DEBUG_HOMARD_
383 write (ulsort,90002) '2.3. voisinages ; codret', codret
386 if ( codret.eq.0 ) then
390 #ifdef _DEBUG_HOMARD_
391 write (ulsort,texte(langue,3)) 'UTVOIS', nompro
393 call utvois ( nomail, nhvois,
394 > iaux, jaux, jaux, jaux,
396 > nbfaar, pposif, pfacar,
397 > ulsort, langue, codret )
401 if ( codret.eq.0 ) then
403 #ifdef _DEBUG_HOMARD_
404 write (ulsort,texte(langue,3)) 'UTAD04', nompro
407 if ( nbteto.ne.0 .or. nbpyto.ne.0 .or. nbpeto.ne.0 ) then
410 if ( nbheto.ne.0 .or. nbpyto.ne.0 .or. nbpeto.ne.0 ) then
413 if ( nbpyto.ne.0 .or. nbpeto.ne.0 ) then
416 call utad04 ( iaux, nhvois,
417 > jaux, jaux, pposif, pfacar,
419 > jaux, jaux, adpptr, adppqu,
424 > ulsort, langue, codret )
428 c 2.4. ===> tableaux lies a la renumerotation
429 #ifdef _DEBUG_HOMARD_
430 write (ulsort,90002) '2.4. renumerotation ; codret', codret
433 #ifdef _DEBUG_HOMARD_
434 call gmprsx (nompro,norenu)
435 call gmprsx (nompro,norenu//'.Nombres')
436 call gmprsx (nompro,norenu//'.TrHOMARD')
437 call gmprsx (nompro,norenu//'.TrCalcul')
438 call gmprsx (nompro,norenu//'.InfoSupE')
441 if ( codret.eq.0 ) then
443 #ifdef _DEBUG_HOMARD_
444 write (ulsort,texte(langue,3)) 'UTRE03_no', nompro
448 call utre03 ( iaux, jaux, norenu,
449 > renoac, renoto, adnohn, adnocn,
450 > ulsort, langue, codret)
454 if ( codret.eq.0 ) then
456 #ifdef _DEBUG_HOMARD_
457 write (ulsort,texte(langue,3)) 'UTRE04_no', nompro
461 call utre04 ( iaux, jaux, norenu,
463 > ulsort, langue, codret)
467 if ( codret.eq.0 ) then
469 #ifdef _DEBUG_HOMARD_
470 write (ulsort,texte(langue,3)) 'UTRE03_ar', nompro
474 call utre03 ( iaux, jaux, norenu,
475 > kaux, rearto, kaux, adarcn,
476 > ulsort, langue, codret)
480 if ( nbtrac.ne.0 ) then
482 if ( codret.eq.0 ) then
484 #ifdef _DEBUG_HOMARD_
485 write (ulsort,texte(langue,3)) 'UTRE03_tr', nompro
489 call utre03 ( iaux, jaux, norenu,
490 > retrac, retrto, adtrhn, adtrcn,
491 > ulsort, langue, codret)
495 if ( codret.eq.0 ) then
497 #ifdef _DEBUG_HOMARD_
498 write (ulsort,texte(langue,3)) 'UTRE04_tr', nompro
502 call utre04 ( iaux, jaux, norenu,
504 > ulsort, langue, codret)
510 if ( nbquac.ne.0 ) then
512 if ( codret.eq.0 ) then
514 #ifdef _DEBUG_HOMARD_
515 write (ulsort,texte(langue,3)) 'UTRE03_qu', nompro
519 call utre03 ( iaux, jaux, norenu,
520 > requac, requto, adquhn, adqucn,
521 > ulsort, langue, codret)
525 if ( codret.eq.0 ) then
527 #ifdef _DEBUG_HOMARD_
528 write (ulsort,texte(langue,3)) 'UTRE04_qu', nompro
532 call utre04 ( iaux, jaux, norenu,
534 > ulsort, langue, codret)
540 if ( codret.eq.0 ) then
542 cgn call gmprsx ( nompro, norenu//'.Nombres' )
543 call gmadoj ( norenu//'.Nombres', adnbrn, iaux, codret )
547 if ( codret.eq.0 ) then
549 #ifdef _DEBUG_HOMARD_
550 write (ulsort,texte(langue,3)) 'UTNBMH', nompro
552 call utnbmh ( imem(adnbrn),
553 > nbnois, nbnoei, nbnomp,
554 > nbnop1, nbnop2, nbnoim,
556 > nbelem, nbmaae, nbmafe, nbmane,
557 > nbmapo, nbsegm, nbtria, nbtetr,
558 > nbquad, nbhexa, nbpent, nbpyra,
561 > ulsort, langue, codret )
562 #ifdef _DEBUG_HOMARD_
563 write(ulsort,90002) 'nbmapo', nbmapo
564 write(ulsort,90002) 'nbsegm', nbsegm
565 write(ulsort,90002) 'nbtria', nbtria
566 write(ulsort,90002) 'nbtetr', nbtetr
567 write(ulsort,90002) 'nbquad', nbquad
568 write(ulsort,90002) 'nbhexa', nbhexa
569 write(ulsort,90002) 'nbpent', nbpent
570 write(ulsort,90002) 'nbpyra', nbpyra
576 decanu(1) = nbtetr + nbtria
577 decanu(0) = nbtetr + nbtria + nbsegm
578 decanu(4) = nbtetr + nbtria + nbsegm + nbmapo
579 decanu(6) = nbtetr + nbtria + nbsegm + nbmapo + nbquad
580 decanu(5) = nbtetr + nbtria + nbsegm + nbmapo + nbquad + nbhexa
581 decanu(7) = nbtetr + nbtria + nbsegm + nbmapo + nbquad + nbhexa
583 #ifdef _DEBUG_HOMARD_
584 write(ulsort,90002) 'decanu', decanu
589 c 2.5. ===> tableaux lies a la solution eventuelle
590 #ifdef _DEBUG_HOMARD_
591 write (ulsort,90002) '2.5. Solution ; codret', codret
594 if ( codret.eq.0 ) then
596 #ifdef _DEBUG_HOMARD_
597 call gmprsx (nompro,nosolu)
598 call gmprsx (nompro,nosolu//'.InfoCham')
599 call gmprsx (nompro,nosolu//'.InfoPaFo')
600 call gmprsx (nompro,nosolu//'.InfoProf')
601 call gmprsx (nompro,nosolu//'.InfoLoPG')
604 #ifdef _DEBUG_HOMARD_
605 write (ulsort,texte(langue,3)) 'UTCASO', nompro
607 call utcaso ( nosolu,
608 > nbcham, nbfonc, nbprof, nblopg,
609 > aninch, aninfo, aninpr, adinlg,
610 > ulsort, langue, codret )
617 #ifdef _DEBUG_HOMARD_
618 write (ulsort,90002) '3. initialisations ; codret', codret
624 c 4. questions - reponses pour les sorties
626 #ifdef _DEBUG_HOMARD_
627 write (ulsort,90002) '4. questions - reponses ; codret', codret
632 c 4.1. ==> choix de la sortie, des angles de vue, des couleurs, etc.
634 if ( codret.eq.0 ) then
636 #ifdef _DEBUG_HOMARD_
637 write (ulsort,texte(langue,3)) 'INFVE1', nompro
639 call infve1 ( option,
640 > typcof, typcop, typbor, optnoe,
642 > anglex, angley, anglez,
643 > zoom, xyzmiz, xyzmaz,
645 > rmem(adcocs+1), rmem(adcocs+4), rmem(adcocs+7),
646 > nbcham, smem(aninch),
647 > nomcha, nomcmp, nrocha, nrocmp, nrotab,
648 > ulfido, ulenst, ulsost,
649 > ulsort, langue, codret )
653 c 4.2. ==> traitement des options
655 if ( codret.eq.0 ) then
657 if ( option.eq.0 ) then
661 if ( option.lt.0 ) then
664 iaux = mod(option,100)
666 if ( iaux.le.7 ) then
668 elseif ( iaux.eq.8 ) then
680 #ifdef _DEBUG_HOMARD_
681 write (ulsort,90002) '5. preparatifs ; codret', codret
682 write (ulsort,90002) 'option', option
685 c 5.1. ==> recherche des blocs connexes
687 if ( option.lt.0 ) then
689 c 5.1.1. ==> adresses
691 if ( codret.eq.0 ) then
693 iaux = nbquto + 1 + nbtrto
694 call gmalot ( ntrac1, 'entier ', iaux, ptrac1, codre1 )
696 iaux = nbteto + nbheto + nbpeto + nbpyto
697 call gmalot ( ntrab1, 'entier ', iaux, ptrab1, codre2 )
699 codre0 = min ( codre1, codre2 )
700 codret = max ( abs(codre0), codret,
705 if ( codret.eq.0 ) then
707 iaux = max ( nbtrac + nbquac,
708 > nbteac + nbheac + nbpyac + nbpeac )
709 call gmalot ( ntrav1, 'entier ', iaux, ptrav1, codre1 )
710 call gmalot ( ntrav2, 'entier ', nbnoto, ptrav2, codre2 )
711 call gmalot ( ntrav3, 'entier ', nbarto, ptrav3, codre3 )
712 iaux = nbquto + nbtrto + 1
713 call gmalot ( ntrav4, 'entier ', iaux, ptrav4, codre4 )
714 iaux = nbquto + nbtrto + 1
715 call gmalot ( ntrav5, 'entier ', iaux, ptrav5, codre5 )
717 codre0 = min ( codre1, codre2, codre3, codre4, codre5 )
718 codret = max ( abs(codre0), codret,
719 > codre1, codre2, codre3, codre4, codre5 )
721 jaux = nbquto + nbtrto + 1
722 call gmalot ( ntra11, 'entier ', jaux, ptra11, codre1 )
723 call gmalot ( ntra12, 'entier ', nbnoto, ptra12, codre2 )
724 call gmalot ( ntra13, 'entier ', nbarto, ptra13, codre3 )
725 jaux = nbquto + nbtrto
726 call gmalot ( ntra14, 'entier ', jaux, ptra14, codre4 )
728 codre0 = min ( codre1, codre2, codre3, codre4 )
729 codret = max ( abs(codre0), codret,
730 > codre1, codre2, codre3, codre4 )
732 call gmalot ( ntra15, 'entier ', nbarto, ptra15, codre1 )
733 call gmalot ( ntra16, 'entier ', nbarto, ptra16, codre2 )
735 codre0 = min ( codre1, codre2 )
736 codret = max ( abs(codre0), codret,
741 c 5.1.2. ==> traitement
743 #ifdef _DEBUG_HOMARD_
744 write (ulsort,90002) '51.2. traitement ; codret', codret
747 if ( codret.eq.0 ) then
749 if ( nbteto.gt.0 .or. nbheto.gt.0 .or.
750 > nbpyto.gt.0 .or. nbpeto.gt.0 ) then
752 if ( codret.eq.0 ) then
754 #ifdef _DEBUG_HOMARD_
759 #ifdef _DEBUG_HOMARD_
760 write (ulsort,texte(langue,3)) 'UTB11B', nompro
762 call utb11b ( nbblvo,
763 > imem(phetar), imem(psomar),
764 > imem(phettr), imem(paretr),
765 > imem(phetqu), imem(parequ),
766 > imem(phette), imem(ptrite),
767 > imem(phethe), imem(pquahe),
768 > imem(phetpy), imem(pfacpy),
769 > imem(phetpe), imem(pfacpe),
770 > imem(ppovos), imem(pvoiso),
771 > imem(pposif), imem(pfacar),
772 > imem(advotr), imem(adpptr),
773 > imem(advoqu), imem(adppqu),
774 > imem(pfamar), imem(pcfaar),
775 > imem(pfamtr), imem(pcfatr),
776 > imem(pfamqu), imem(pcfaqu),
777 > imem(pfamte), imem(pcfate),
778 > imem(pfamhe), imem(pcfahe),
779 > imem(pfampy), imem(pcfapy),
780 > imem(pfampe), imem(pcfape),
781 > imem(ptrav1), imem(ptrav2),
782 > imem(ptrav3), imem(ptrav5),
783 > imem(ptra11), imem(ptra12),
784 > imem(ptra13), imem(ptra14),
785 > imem(ptra15), imem(ptra16),
787 > jaux, ulsort, langue, codret )
795 if ( codret.eq.0 ) then
797 c on examine toutes les faces actives du calcul
799 jaux = nbquto + nbtrto
800 do 51 ,iaux = 0, jaux
801 imem(ptrav4+iaux) = 1
803 imem(ptrav4+nbquto) = 0
805 #ifdef _DEBUG_HOMARD_
810 #ifdef _DEBUG_HOMARD_
811 write (ulsort,texte(langue,3)) 'UTB11C', nompro
813 call utb11c ( nbblfa, iaux, imem(ptrav4),
814 > imem(phetar), imem(psomar),
815 > imem(phettr), imem(paretr),
816 > imem(phetqu), imem(parequ),
817 > imem(ppovos), imem(pvoiso),
818 > imem(pposif), imem(pfacar),
819 > imem(pfamar), imem(pcfaar),
820 > imem(pfamtr), imem(pcfatr),
821 > imem(pfamqu), imem(pcfaqu),
822 > imem(ptrav1), imem(ptrav2), imem(ptrav3),
823 > imem(ptra15), imem(ptra16),
825 > jaux, ulsort, langue, codret )
829 if ( codret.eq.0 ) then
831 call gmlboj ( ntrav1, codre1 )
832 call gmlboj ( ntrav2, codre2 )
833 call gmlboj ( ntrav3, codre3 )
834 call gmlboj ( ntrav4, codre4 )
835 call gmlboj ( ntrav5, codre5 )
837 codre0 = min ( codre1, codre2, codre3, codre4, codre5 )
838 codret = max ( abs(codre0), codret,
839 > codre1, codre2, codre3, codre4, codre5 )
841 call gmlboj ( ntra11, codre1 )
842 call gmlboj ( ntra12, codre2 )
843 call gmlboj ( ntra13, codre3 )
844 call gmlboj ( ntra14, codre4 )
846 codre0 = min ( codre1, codre2, codre3, codre4 )
847 codret = max ( abs(codre0), codret,
848 > codre1, codre2, codre3, codre4 )
850 call gmlboj ( ntra15, codre1 )
851 call gmlboj ( ntra16, codre2 )
853 codre0 = min ( codre1, codre2 )
854 codret = max ( abs(codre0), codret,
860 cgn call gmprsx (nompro,ntrac1)
861 cgn call gmprsx (nompro,ntrab1)
865 c 5.2. ==> recherche des niveaux des volumes
866 #ifdef _DEBUG_HOMARD_
867 write (ulsort,90002) '5.2. niveaux des volumes ; codret', codret
870 if ( option.gt.100 ) then
872 if ( codret.eq.0 ) then
874 iaux = nbteto + nbheto + nbpeto + nbpyto
875 call gmalot ( ntrab1, 'entier ', iaux, ptrab1, codre0 )
877 codret = max ( abs(codre0), codret )
881 if ( codret.eq.0 ) then
883 #ifdef _DEBUG_HOMARD_
884 write (ulsort,texte(langue,3)) 'INFVE7', nompro
886 call infve7 ( imem(ptrab1),
887 > imem(pnivtr), imem(pnivqu),
888 > imem(ptrite), imem(pquahe),
889 > imem(pfacpy), imem(pfacpe),
890 > ulsort, langue, codret )
893 cgn call gmprsx(nompro,ntrab1)
897 c 5.3. ==> allocation des tableaux :
900 c . Les aretes isolees sont visualisables.
901 c . Si on a demande de tracer les bords, on les represente.
902 c "nbarvi" est le nombre d'aretes visualisables
903 c tableau nnarvi(6,nbarvi) :
904 c 1 : niveau de l'arete a afficher
905 c 2 : numero HOMARD de l'arete
906 c 3, 4 : numero des 2 noeuds
907 c 5 : 0, si isolee, 1 si bord
908 c 6 : numero de l'eventuel noeud P2
911 c En dimension 2, toutes les faces actives sont visualisables.
912 c En dimension 3, seules les faces de bord d'elements 3D actifs
913 c ou les faces isolees sont visualisables.
914 c "nbtrvi" est le nombre de triangles visualisables
915 c tableau nntrvi(9,nbtrvi) :
916 c 2 : numero HOMARD du triangle
917 c 3, 4, 5 : numeros des noeuds p1
918 c 6 : famille du triangle
919 c 7, 8, 9 : numeros des noeuds p2
920 c 10 : numero du noeud interne
922 c "nbquvi" est le nombre de quadrangles visualisables
923 c tableau nnquvi(11,nbquvi) :
924 c 2 : numero HOMARD du quadrangle
925 c 3, 4, 5, 6 : numeros des noeuds p1
926 c 7 : famille du quadrangle
927 c 8, 9, 10, 11 : numeros des noeuds p2
928 c 12 : numero du noeud interne
930 #ifdef _DEBUG_HOMARD_
931 write (ulsort,90002) '5.3. allocation ; codret', codret
934 if ( codret.eq.0 ) then
936 c tableau auxiliaire tabaux pour infve2
937 iaux = max(nbfare,nbftri,nbfqua)
938 call gmalot ( ntrav1, 'entier ', iaux, ptrav1, codre1 )
940 c tableau auxiliaire tbaux2 pour infve2
941 iaux = nbquto + 1 + max(nbarto,nbtrto)
942 call gmalot ( ntrav2, 'entier ', iaux, ptrav2, codre2 )
944 codre0 = min ( codre1, codre2 )
945 codret = max ( abs(codre0), codret,
951 c 6. Trace pour tous les blocs ou tous les niveaux
954 #ifdef _DEBUG_HOMARD_
955 write (ulsort,90002) '6. trace ; codret', codret
958 if ( codret.eq.0 ) then
960 if ( option.lt.0 ) then
963 if ( nbteto.gt.0 .or. nbheto.gt.0 .or.
964 > nbpyto.gt.0 .or. nbpeto.gt.0 ) then
970 elseif ( option.gt.100 ) then
982 do 61 , iaux = ideb , ifin
984 if ( codret.eq.0 ) then
986 if ( option.lt.0 ) then
989 elseif ( option.gt.100 ) then
996 #ifdef _DEBUG_HOMARD_
997 write (ulsort,texte(langue,6)) jaux
1000 #ifdef _DEBUG_HOMARD_
1001 write (ulsort,texte(langue,3)) 'INFVE0', nompro
1003 call infve0 ( action, jaux, kaux, numfic,
1004 > infsup, typcof, typcop, typbor, optnoe, porpay,
1006 > nbcham, smem(aninch),
1007 > nomcha, nomcmp, nrocha, nrocmp, nrotab,
1009 > imem(psomar), imem(pnp2ar),
1010 > imem(phetar), imem(pmerar),
1011 > imem(pposif), imem(pfacar),
1012 > imem(paretr), imem(phettr), imem(pnivtr),
1014 > imem(advotr), imem(adpptr),
1016 > imem(parequ), imem(phetqu), imem(pnivqu),
1018 > imem(advoqu), imem(adppqu),
1021 > imem(adarcn), imem(adtrcn), imem(adqucn),
1022 > imem(adnohn), imem(adtrhn), imem(adquhn),
1023 > lgnoin, lgtrin, lgquin,
1024 > imem(adnoin), imem(adtrin), imem(adquin),
1026 > anglex, angley, anglez,
1027 > xyzmiz, xyzmaz, vafomi, vafoma,
1028 > imem(ptrav1), imem(ptrav2),
1029 > imem(ptrac1), imem(ptrab1),
1031 > ulsort, langue, codret )
1043 #ifdef _DEBUG_HOMARD_
1044 write (ulsort,90002) '7. menage ; codret', codret
1047 c 7.1. ==> suppression des tableaux temporaires
1049 if ( codret.eq.0 ) then
1051 call gmlboj ( ntrav1, codre1 )
1052 call gmlboj ( ntrav2, codre2 )
1054 codre0 = min ( codre1, codre2 )
1055 codret = max ( abs(codre0), codret,
1058 if ( option.lt.0 ) then
1060 call gmlboj ( ntrac1, codre0 )
1062 codret = max ( abs(codre0), codret )
1066 if ( option.gt.100 ) then
1068 call gmlboj ( ntrab1, codre0 )
1070 codret = max ( abs(codre0), codret )
1076 c 7.2. ==> nouveau trace
1078 if ( codret.eq.0 ) then
1090 write (ulsort,*) ' '
1092 if ( codret.ne.0 ) then
1096 write (ulsort,texte(langue,1)) 'Sortie', nompro
1097 write (ulsort,texte(langue,2)) codret
1101 #ifdef _DEBUG_HOMARD_
1102 write (ulsort,texte(langue,1)) 'Sortie', nompro
1106 c=======================================================================
1108 c=======================================================================