1 subroutine inqur1 ( nomail, nosolu,
2 > ulfido, ulenst, ulsost,
3 > ulsort, langue, codret )
4 c ______________________________________________________________________
8 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c Version originale enregistree le 18 juin 1996 sous le numero 96036
11 c aupres des huissiers de justice Simart et Lavoir a Clamart
12 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
13 c aupres des huissiers de justice
14 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c HOMARD est une marque deposee d'Electricite de France
22 c ______________________________________________________________________
24 c INformation : QUestions / Reponses - phase 1
26 c ______________________________________________________________________
28 c . nom . e/s . taille . description .
29 c .____________________________________________________________________.
30 c . nomail . e . char8 . nom de l'objet maillage homard iteration n .
31 c . nosolu . e . char8 . nom de l'objet solution .
32 c . ulfido . e . 1 . unite logique du fichier de donnees correct.
33 c . ulenst . e . 1 . unite logique de l'entree standard .
34 c . ulsost . e . 1 . unite logique de la sortie standard .
35 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
36 c . langue . e . 1 . langue des messages .
37 c . . . . 1 : francais, 2 : anglais .
38 c . codret . es . 1 . code de retour des modules .
39 c . . . . 0 : pas de probleme .
40 c . . . . 2 : probleme dans les memoires .
41 c . . . . 3 : probleme dans les fichiers .
42 c . . . . 5 : probleme autre .
43 c ______________________________________________________________________
46 c 0. declarations et dimensionnement
49 c 0.1. ==> generalites
55 parameter ( nompro = 'INQUR1' )
84 character*8 nomail, nosolu
86 integer ulfido, ulenst, ulsost
88 integer ulsort, langue, codret
90 c 0.4. ==> variables locales
95 integer pcoono, phetno, pareno
96 integer pnoemp, phetmp
97 integer psomar, pposif, pfacar, phetar, pfilar
99 integer phettr, paretr, pfiltr, ppertr, pnivtr, adpetr, adnmtr
100 integer phetqu, parequ, pfilqu, pperqu, pnivqu, adhequ, adnmqu
101 integer ptrite, pcotrt, parete, phette, pfilte, pperte, adtes2
102 integer pquahe, pcoquh, parehe, phethe, pfilhe, pperhe, adhes2
104 integer pfacpy, pcofay, parepy, phetpy, pfilpy, pperpy, adpys2
105 integer pfacpe, pcofap, parepe, phetpe, pfilpe, pperpe, adpes2
106 integer advotr, advoqu
107 integer adpptr, adppqu
109 integer pfamno, pcfano
111 integer pfamar, pcfaar
112 integer pfamtr, pcfatr
113 integer pfamqu, pcfaqu
118 integer adhono, admpho, adhoar, adhotr, adhoqu
120 integer adnohn, adnocn, adnoin, lgnoin
121 integer admphn, admpcn, admpin, lgmpin, admpcs
122 integer adarhn, adarcn, adarin, lgarin, adarcs
123 integer adtrhn, adtrcn, adtrin, lgtrin, adtrcs
124 integer adquhn, adqucn, adquin, lgquin, adqucs
125 integer adtehn, adtecn, adtein, lgtein, adtecs
126 integer adhehn, adhecn, adhein, lghein, adhecs
127 integer adpyhn, adpycn, adpyin, lgpyin, adpycs
128 integer adpehn, adpecn, adpein, lgpein, adpecs
130 integer nbcham, nbpafo, nbprof, nblopg
131 integer aninch, aninpf, aninpr, adinlg
133 integer numero, numdeb, numfin
135 integer nbmapo, nbsegm, nbtria, nbtetr,
136 > nbquad, nbhexa, nbpent, nbpyra
138 integer voarno, vofaar, vovoar, vovofa
139 integer lgtate, adptte, adtate
140 integer lgtahe, adpthe, adtahe
141 integer lgtapy, adptpy, adtapy
142 integer lgtape, adptpe, adtape
149 character*8 nhnoeu, nhmapo, nharet, nhtria, nhquad
150 character*8 nhtetr, nhhexa, nhpyra, nhpent
152 character*8 nhvois, nhsupe, nhsups
153 character*8 ntramp, ntraar, ntratr, ntraqu
154 character*8 ntrate, ntrahe, ntrapy, ntrape
157 parameter ( nbmess = 10 )
158 character*80 texte(nblang,nbmess)
160 c 0.5. ==> initialisations
161 c ______________________________________________________________________
169 #ifdef _DEBUG_HOMARD_
170 write (ulsort,texte(langue,1)) 'Entree', nompro
179 c 2. recuperation des pointeurs
182 c 2.1. ==> structure generale
184 if ( codret.eq.0 ) then
186 #ifdef _DEBUG_HOMARD_
187 write (ulsort,texte(langue,3)) 'UTNOMH', nompro
189 call utnomh ( nomail,
191 > degre, maconf, homolo, hierar,
192 > rafdef, nbmane, typcca, typsfr, maextr,
195 > nhnoeu, nhmapo, nharet,
197 > nhtetr, nhhexa, nhpyra, nhpent,
199 > nhvois, nhsupe, nhsups,
200 > ulsort, langue, codret)
204 if ( codret.eq.0 ) then
206 if ( typcca.eq.26 .or .typcca.eq.46 ) then
208 elseif ( maextr.ne.0 .and. rafdef.eq.0 ) then
217 #ifdef _DEBUG_HOMARD_
218 call gmprsx ( nompro//' - nhtria.InfoSupp', nhtria//'.InfoSupp' )
219 call gmprsx ( nompro//' - nhquad.InfoSupp', nhquad//'.InfoSupp' )
222 if ( codret.eq.0 ) then
225 if ( homolo.ge.1 ) then
228 #ifdef _DEBUG_HOMARD_
229 write (ulsort,texte(langue,3)) 'UTAD01', nompro
231 call utad01 ( iaux, nhnoeu,
233 > pfamno, pcfano, jaux,
234 > pcoono, pareno, adhono, jaux,
235 > ulsort, langue, codret )
237 if ( nbmpto.ne.0 ) then
240 if ( homolo.ge.2 ) then
243 #ifdef _DEBUG_HOMARD_
244 write (ulsort,texte(langue,3)) 'UTAD02_mp', nompro
246 call utad02 ( iaux, nhmapo,
247 > phetmp, pnoemp, jaux, jaux,
248 > pfammp, jaux, jaux,
250 > jaux, admpho, jaux,
251 > ulsort, langue, codret )
256 if ( degre.eq.2 ) then
259 if ( homolo.ge.2 ) then
262 #ifdef _DEBUG_HOMARD_
263 write (ulsort,texte(langue,3)) 'UTAD02_ar', nompro
265 call utad02 ( iaux, nharet,
266 > phetar, psomar, pfilar, pmerar,
267 > pfamar, pcfaar, jaux,
268 > jaux, pnp2ar, jaux,
269 > jaux, adhoar, jaux,
270 > ulsort, langue, codret )
272 if ( nbftri.ne.0 ) then
275 if ( nbtrto.ne.0 ) then
277 if ( mod(mailet,2).eq.0 ) then
280 if ( homolo.ge.3 ) then
287 #ifdef _DEBUG_HOMARD_
288 write (ulsort,texte(langue,3)) 'UTAD02_tr', nompro
290 call utad02 ( iaux, nhtria,
291 > phettr, paretr, pfiltr, ppertr,
292 > pfamtr, pcfatr, jaux,
293 > pnivtr, adpetr, jaux,
294 > adnmtr, adhotr, jaux,
295 > ulsort, langue, codret )
299 if ( nbfqua.ne.0 ) then
302 if ( nbquto.ne.0 ) then
304 if ( mod(mailet,3).eq.0 ) then
307 if ( homolo.ge.3 ) then
314 #ifdef _DEBUG_HOMARD_
315 write (ulsort,texte(langue,3)) 'UTAD02_qu', nompro
317 call utad02 ( iaux, nhquad,
318 > phetqu, parequ, pfilqu, pperqu,
319 > pfamqu, pcfaqu, jaux,
320 > pnivqu, adhequ, jaux,
321 > adnmqu, adhoqu, jaux,
322 > ulsort, langue, codret )
326 if ( nbteto.ne.0 ) then
329 if ( nbteh1.gt.0 .or. nbteh2.gt.0 .or. nbteh3.gt.0 .or.
331 > nbtep0.gt.0 .or. nbtep1.gt.0 .or. nbtep2.gt.0 .or.
332 > nbtep3.gt.0 .or. nbtep4.gt.0 .or. nbtep5.gt.0 .or.
333 > nbtedh.gt.0 .or. nbtedp.gt.0 ) then
336 if ( nbteca.gt.0 ) then
339 #ifdef _DEBUG_HOMARD_
340 write (ulsort,texte(langue,3)) 'UTAD02_te', nompro
342 call utad02 ( iaux, nhtetr,
343 > phette, ptrite, pfilte, pperte,
344 > pfamte, jaux, jaux,
345 > jaux, pcotrt, adtes2,
346 > jaux, jaux, parete,
347 > ulsort, langue, codret )
351 if ( nbheto.ne.0 ) then
354 if ( nbheco.ne.0 ) then
357 if ( mod(mailet,5).eq.0 ) then
360 if ( nbheca.gt.0 ) then
363 #ifdef _DEBUG_HOMARD_
364 write (ulsort,texte(langue,3)) 'UTAD02_he', nompro
366 call utad02 ( iaux, nhhexa,
367 > phethe, pquahe, pfilhe, pperhe,
368 > pfamhe, jaux, jaux,
369 > jaux, pcoquh, adhes2,
370 > adnmhe, jaux, parehe,
371 > ulsort, langue, codret )
375 if ( nbpyto.ne.0 ) then
378 if ( nbpyh1.gt.0 .or. nbpyh2.gt.0 .or. nbpyh3.gt.0 .or.
380 > nbpyp0.gt.0 .or. nbpyp1.gt.0 .or. nbpyp2.gt.0 .or.
381 > nbpyp3.gt.0 .or. nbpyp4.gt.0 .or. nbpyp5.gt.0 .or.
382 > nbpydh.gt.0 .or. nbpydp.gt.0 ) then
385 if ( nbpyca.gt.0 ) then
388 #ifdef _DEBUG_HOMARD_
389 write (ulsort,texte(langue,3)) 'UTAD02_py', nompro
391 call utad02 ( iaux, nhpyra,
392 > phetpy, pfacpy, pfilpy, pperpy,
393 > pfampy, jaux, jaux,
394 > jaux, pcofay, adpys2,
395 > jaux, jaux, parepy,
396 > ulsort, langue, codret )
400 if ( nbpeto.ne.0 ) then
403 if ( nbpeco.ne.0 ) then
406 if ( nbpeca.gt.0 ) then
409 #ifdef _DEBUG_HOMARD_
410 write (ulsort,texte(langue,3)) 'UTAD02_pe', nompro
412 call utad02 ( iaux, nhpent,
413 > phetpe, pfacpe, pfilpe, pperpe,
414 > pfampe, jaux, jaux,
415 > jaux, pcofap, adpes2,
416 > jaux, jaux, parepe,
417 > ulsort, langue, codret )
423 c 2.3. ==> les voisinages
425 if ( codret.eq.0 ) then
431 #ifdef _DEBUG_HOMARD_
432 write (ulsort,texte(langue,3)) 'UTVOIS', nompro
434 call utvois ( nomail, nhvois,
435 > voarno, vofaar, vovoar, vovofa,
438 > ulsort, langue, codret )
442 if ( codret.eq.0 ) then
444 #ifdef _DEBUG_HOMARD_
445 call gmprsx (nompro,nhvois)
446 call gmprsx (nompro,nhvois//'.Vol/Tri')
447 call gmprsx (nompro,nhvois//'.PyPe/Tri')
448 call gmprsx (nompro,nhvois//'.Vol/Qua')
449 call gmprsx (nompro,nhvois//'.PyPe/Qua')
452 c Remarque : on passe en deux fois pour ne pas avoir un nombre
453 c trop grand en 32 bits ...
455 if ( nbteto.ne.0 .or. nbpyto.ne.0 .or. nbpeto.ne.0 ) then
458 if ( nbheto.ne.0 .or. nbpyto.ne.0 .or. nbpeto.ne.0 ) then
461 if ( nbpyto.ne.0 .or. nbpeto.ne.0 ) then
464 #ifdef _DEBUG_HOMARD_
465 write (ulsort,texte(langue,3)) 'UTAD04 - phase 1', nompro
467 call utad04 ( iaux, nhvois,
468 > jaux, jaux, pposif, pfacar,
470 > jaux, jaux, adpptr, adppqu,
471 > lgtate, adptte, adtate,
472 > lgtahe, adpthe, adtahe,
473 > lgtapy, adptpy, adtapy,
474 > lgtape, adptpe, adtape,
475 > ulsort, langue, codret )
477 if ( nbteto.ne.0 ) then
480 if ( nbheto.ne.0 ) then
483 if ( nbpyto.ne.0 ) then
486 if ( nbpeto.ne.0 ) then
489 #ifdef _DEBUG_HOMARD_
490 write (ulsort,texte(langue,3)) 'UTAD04 - phase 2', nompro
492 call utad04 ( iaux, nhvois,
493 > jaux, jaux, pposif, pfacar,
495 > jaux, jaux, adpptr, adppqu,
496 > lgtate, adptte, adtate,
497 > lgtahe, adpthe, adtahe,
498 > lgtapy, adptpy, adtapy,
499 > lgtape, adptpe, adtape,
500 > ulsort, langue, codret )
504 c 2.4. ==> renumerotation
505 #ifdef _DEBUG_HOMARD_
506 call gmprsx ( nompro//' - PeCalcul', norenu//'.PeCalcul' )
507 call gmprsx ( nompro//' - PeHOMARD', norenu//'.PeHOMARD' )
508 call gmprsx ( nompro//' - HeCalcul', norenu//'.HeCalcul' )
509 call gmprsx ( nompro//' - HeHOMARD', norenu//'.HeHOMARD' )
512 if ( codret.eq.0 ) then
514 #ifdef _DEBUG_HOMARD_
515 write (ulsort,texte(langue,3)) 'UTRE03_no', nompro
519 call utre03 ( iaux, jaux, norenu,
520 > renoac, renoto, adnohn, adnocn,
521 > ulsort, langue, codret)
525 if ( codret.eq.0 ) then
527 #ifdef _DEBUG_HOMARD_
528 write (ulsort,texte(langue,3)) 'UTRE04_no', nompro
532 call utre04 ( iaux, jaux, norenu,
534 > ulsort, langue, codret)
538 if ( codret.eq.0 ) then
540 #ifdef _DEBUG_HOMARD_
541 write (ulsort,texte(langue,3)) 'UTRE03_mp', nompro
545 call utre03 ( iaux, jaux, norenu,
546 > rempac, rempto, admphn, admpcn,
547 > ulsort, langue, codret)
551 if ( codret.eq.0 ) then
553 #ifdef _DEBUG_HOMARD_
554 write (ulsort,texte(langue,3)) 'UTRE04_mp', nompro
558 call utre04 ( iaux, jaux, norenu,
560 > ulsort, langue, codret)
564 if ( codret.eq.0 ) then
566 #ifdef _DEBUG_HOMARD_
567 write (ulsort,texte(langue,3)) 'UTRE03_ar', nompro
571 call utre03 ( iaux, jaux, norenu,
572 > rearac, rearto, adarhn, adarcn,
573 > ulsort, langue, codret)
577 if ( codret.eq.0 ) then
579 #ifdef _DEBUG_HOMARD_
580 write (ulsort,texte(langue,3)) 'UTRE04_ar', nompro
584 call utre04 ( iaux, jaux, norenu,
586 > ulsort, langue, codret)
590 if ( codret.eq.0 ) then
592 #ifdef _DEBUG_HOMARD_
593 write (ulsort,texte(langue,3)) 'UTRE03_tr', nompro
597 call utre03 ( iaux, jaux, norenu,
598 > retrac, retrto, adtrhn, adtrcn,
599 > ulsort, langue, codret)
603 if ( codret.eq.0 ) then
605 #ifdef _DEBUG_HOMARD_
606 write (ulsort,texte(langue,3)) 'UTRE04_tr', nompro
610 call utre04 ( iaux, jaux, norenu,
612 > ulsort, langue, codret)
616 if ( codret.eq.0 ) then
618 #ifdef _DEBUG_HOMARD_
619 write (ulsort,texte(langue,3)) 'UTRE03_te', nompro
623 call utre03 ( iaux, jaux, norenu,
624 > reteac, reteto, adtehn, adtecn,
625 > ulsort, langue, codret)
629 if ( codret.eq.0 ) then
631 #ifdef _DEBUG_HOMARD_
632 write (ulsort,texte(langue,3)) 'UTRE04_te', nompro
636 call utre04 ( iaux, jaux, norenu,
638 > ulsort, langue, codret)
642 if ( codret.eq.0 ) then
644 #ifdef _DEBUG_HOMARD_
645 write (ulsort,texte(langue,3)) 'UTRE03_qu', nompro
649 call utre03 ( iaux, jaux, norenu,
650 > requac, requto, adquhn, adqucn,
651 > ulsort, langue, codret)
655 if ( codret.eq.0 ) then
657 #ifdef _DEBUG_HOMARD_
658 write (ulsort,texte(langue,3)) 'UTRE04_qu', nompro
662 call utre04 ( iaux, jaux, norenu,
664 > ulsort, langue, codret)
668 if ( codret.eq.0 ) then
670 #ifdef _DEBUG_HOMARD_
671 write (ulsort,texte(langue,3)) 'UTRE03_py', nompro
675 call utre03 ( iaux, jaux, norenu,
676 > repyac, repyto, adpyhn, adpycn,
677 > ulsort, langue, codret)
681 if ( codret.eq.0 ) then
683 #ifdef _DEBUG_HOMARD_
684 write (ulsort,texte(langue,3)) 'UTRE04_py', nompro
688 call utre04 ( iaux, jaux, norenu,
690 > ulsort, langue, codret)
694 if ( codret.eq.0 ) then
696 #ifdef _DEBUG_HOMARD_
697 write (ulsort,texte(langue,3)) 'UTRE03_he', nompro
701 call utre03 ( iaux, jaux, norenu,
702 > reheac, reheto, adhehn, adhecn,
703 > ulsort, langue, codret)
707 if ( codret.eq.0 ) then
709 #ifdef _DEBUG_HOMARD_
710 write (ulsort,texte(langue,3)) 'UTRE04_he', nompro
714 call utre04 ( iaux, jaux, norenu,
716 > ulsort, langue, codret)
720 if ( codret.eq.0 ) then
722 #ifdef _DEBUG_HOMARD_
723 write (ulsort,texte(langue,3)) 'UTRE03_pe', nompro
727 call utre03 ( iaux, jaux, norenu,
728 > repeac, repeto, adpehn, adpecn,
729 > ulsort, langue, codret)
733 if ( codret.eq.0 ) then
735 #ifdef _DEBUG_HOMARD_
736 write (ulsort,texte(langue,3)) 'UTRE04_pe', nompro
740 call utre04 ( iaux, jaux, norenu,
742 > ulsort, langue, codret)
746 if ( codret.eq.0 ) then
748 cgn call gmprsx ( nompro, norenu//'.Nombres' )
749 call gmadoj ( norenu//'.Nombres', adnbrn, iaux, codret )
753 if ( codret.eq.0 ) then
755 #ifdef _DEBUG_HOMARD_
756 write (ulsort,texte(langue,3)) 'UTNBMH', nompro
758 call utnbmh ( imem(adnbrn),
762 > iaux, iaux, iaux, iaux,
763 > nbmapo, nbsegm, nbtria, nbtetr,
764 > nbquad, nbhexa, nbpent, nbpyra,
767 > ulsort, langue, codret )
768 #ifdef _DEBUG_HOMARD_
769 write(ulsort,90002) 'nbmapo', nbmapo
770 write(ulsort,90002) 'nbsegm', nbsegm
771 write(ulsort,90002) 'nbtria', nbtria
772 write(ulsort,90002) 'nbtetr', nbtetr
773 write(ulsort,90002) 'nbquad', nbquad
774 write(ulsort,90002) 'nbhexa', nbhexa
775 write(ulsort,90002) 'nbpent', nbpent
776 write(ulsort,90002) 'nbpyra', nbpyra
782 decanu(1) = nbtetr + nbtria
783 decanu(0) = nbtetr + nbtria + nbsegm
784 decanu(4) = nbtetr + nbtria + nbsegm + nbmapo
785 decanu(6) = nbtetr + nbtria + nbsegm + nbmapo + nbquad
786 decanu(5) = nbtetr + nbtria + nbsegm + nbmapo + nbquad + nbhexa
787 decanu(7) = nbtetr + nbtria + nbsegm + nbmapo + nbquad + nbhexa
789 #ifdef _DEBUG_HOMARD_
790 write(ulsort,90002) 'decanu', decanu
797 if ( rempac.ne.0 ) then
799 if ( codret.eq.0 ) then
802 #ifdef _DEBUG_HOMARD_
803 write (ulsort,texte(langue,3)) 'UTPR05 mapo', nompro
805 call utpr05 ( iaux, -1, tbiaux,
807 > imem(admphn), imem(admpcn), decanu(0),
808 > lgmpin, imem(admpin), tbiaux,
811 > ulsort, langue, codret )
817 if ( rearac.ne.0 ) then
819 if ( codret.eq.0 ) then
822 #ifdef _DEBUG_HOMARD_
823 write (ulsort,texte(langue,3)) 'UTPR05 aret', nompro
825 call utpr05 ( iaux, -1, tbiaux,
827 > imem(adarhn), imem(adarcn), decanu(1),
828 > lgarin, imem(adarin), tbiaux,
831 > ulsort, langue, codret )
837 if ( retrac.ne.0 ) then
839 if ( .not.extrus ) then
841 if ( codret.eq.0 ) then
844 #ifdef _DEBUG_HOMARD_
845 write (ulsort,texte(langue,3)) 'UTPR05 tria', nompro
847 call utpr05 ( iaux, -1, tbiaux,
849 > imem(adtrhn), imem(adtrcn), decanu(2),
850 > lgtrin, imem(adtrin), tbiaux,
853 > ulsort, langue, codret )
859 if ( codret.eq.0 ) then
861 #ifdef _DEBUG_HOMARD_
862 call gmprsx ( nompro//' - TrCalcul', norenu//'.TrCalcul' )
863 call gmprsx ( nompro//' - TrHOMARD', norenu//'.TrHOMARD' )
864 call gmprsx ( nompro//' - PeCalcul', norenu//'.PeCalcul' )
865 call gmprsx ( nompro//' - PeHOMARD', norenu//'.PeHOMARD' )
868 #ifdef _DEBUG_HOMARD_
869 write (ulsort,texte(langue,3)) 'UTPR06 tria', nompro
873 > imem(adpetr), imem(adtrhn),
874 > imem(adpehn), imem(adpecn),
877 > ulsort, langue, codret )
884 cgn call gmprsx ( nompro//' - profil triangle', ntratr )
885 cgn call gmprsx ( nompro//' - pentri', nhtria//'.InfoSupp' )
887 if ( requac.ne.0 ) then
889 if ( .not.extrus ) then
891 if ( codret.eq.0 ) then
894 #ifdef _DEBUG_HOMARD_
895 write (ulsort,texte(langue,3)) 'UTPR05 quad', nompro
897 call utpr05 ( iaux, -1, tbiaux,
899 > imem(adquhn), imem(adqucn), decanu(4),
900 > lgquin, imem(adquin), tbiaux,
903 > ulsort, langue, codret )
909 if ( codret.eq.0 ) then
911 #ifdef _DEBUG_HOMARD_
912 call gmprsx ( nompro//' - QuCalcul', norenu//'.QuCalcul' )
913 call gmprsx ( nompro//' - QuHOMARD', norenu//'.QuHOMARD' )
914 call gmprsx ( nompro//' - HeCalcul', norenu//'.HeCalcul' )
915 call gmprsx ( nompro//' - HeHOMARD', norenu//'.HeHOMARD' )
918 #ifdef _DEBUG_HOMARD_
919 write (ulsort,texte(langue,3)) 'UTPR06 quad', nompro
923 > imem(adhequ), imem(adquhn),
924 > imem(adhehn), imem(adhecn),
927 > ulsort, langue, codret )
934 cgn call gmprsx ( nompro//' - profil quadrangle', ntraqu )
935 cgn call gmprsx ( nompro//' - hexqua', nhquad//'.InfoSupp' )
937 if ( reteac.ne.0 ) then
939 if ( codret.eq.0 ) then
942 #ifdef _DEBUG_HOMARD_
943 write (ulsort,texte(langue,3)) 'UTPR05 tetr', nompro
945 call utpr05 ( iaux, -1, tbiaux,
947 > imem(adtehn), imem(adtecn), decanu(3),
948 > lgtein, imem(adtein), tbiaux,
951 > ulsort, langue, codret )
957 if ( repyac.ne.0 ) then
959 if ( codret.eq.0 ) then
962 #ifdef _DEBUG_HOMARD_
963 write (ulsort,texte(langue,3)) 'UTPR05 pyra', nompro
965 call utpr05 ( iaux, -1, tbiaux,
967 > imem(adpyhn), imem(adpycn), decanu(5),
968 > lgpyin, imem(adpyin), tbiaux,
971 > ulsort, langue, codret )
977 if ( reheac.ne.0 ) then
979 if ( codret.eq.0 ) then
982 #ifdef _DEBUG_HOMARD_
983 write (ulsort,texte(langue,3)) 'UTPR05 hexa', nompro
985 call utpr05 ( iaux, -1, tbiaux,
987 > imem(adhehn), imem(adhecn), decanu(6),
988 > lghein, imem(adhein), tbiaux,
991 > ulsort, langue, codret )
997 if ( repeac.ne.0 ) then
999 if ( codret.eq.0 ) then
1002 #ifdef _DEBUG_HOMARD_
1003 write (ulsort,texte(langue,3)) 'UTPR05 pent', nompro
1005 call utpr05 ( iaux, -1, tbiaux,
1007 > imem(adpehn), imem(adpecn), decanu(7),
1008 > lgpein, imem(adpein), tbiaux,
1011 > ulsort, langue, codret )
1017 c 2.5. ===> tableaux lies a la solution eventuelle
1019 if ( codret.eq.0 ) then
1021 #ifdef _DEBUG_HOMARD_
1022 call gmprsx (nompro,nosolu)
1025 #ifdef _DEBUG_HOMARD_
1026 write (ulsort,texte(langue,3)) 'UTCAFO', nompro
1028 call utcaso ( nosolu,
1029 > nbcham, nbpafo, nbprof, nblopg,
1030 > aninch, aninpf, aninpr, adinlg,
1031 > ulsort, langue, codret )
1036 c 3. questions - reponses
1039 if ( codret.eq.0 ) then
1045 #ifdef _DEBUG_HOMARD_
1046 write (ulsort,texte(langue,3)) 'INQUR2', nompro
1049 call inqur2 ( choix, numdeb, numfin,
1050 > ulfido, ulenst, ulsost,
1051 > ulsort, langue, codret )
1053 if ( codret.ne.0 ) then
1060 if ( choix.eq.'q ' ) then
1066 c 3.3. ==> description d'entites
1068 if ( numdeb.gt.0 ) then
1070 do 33 , iaux = numdeb, numfin
1074 c 3.3.1. ==> informations sur un noeud
1076 if ( choix.eq.'no' .or.
1077 > choix.eq.'NO' ) then
1079 #ifdef _DEBUG_HOMARD_
1080 write (ulsort,texte(langue,3)) 'INFONO', nompro
1082 call infono ( choix, numero,
1083 > rmem(pcoono), imem(phetno), imem(pareno), imem(pfamno),
1084 > imem(adnohn), imem(adnocn),
1087 > imem(psomar), imem(phetar), imem(pposif), imem(pfacar),
1088 > imem(phettr), imem(phetqu),
1089 > imem(phette), imem(phetpy), imem(phethe), imem(phetpe),
1090 > lgtate, imem(adptte), imem(adtate),
1091 > lgtahe, imem(adpthe), imem(adtahe),
1092 > lgtapy, imem(adptpy), imem(adtapy),
1093 > lgtape, imem(adptpe), imem(adtape),
1094 > nbpafo, smem(aninpf),
1096 > ulsort, langue, codret )
1098 c 3.3.2. ==> informations sur une maille-point
1100 elseif ( choix.eq.'mp' .or.
1101 > choix.eq.'MP' .or.
1102 > choix.eq.'E ' ) then
1104 #ifdef _DEBUG_HOMARD_
1105 write (ulsort,texte(langue,3)) 'INFOMP', nompro
1107 call infomp ( choix, numero,
1108 > imem(pnoemp), imem(phetmp),
1110 > imem(admphn), imem(admpcn), imem(admpcs),
1112 > nbpafo, smem(aninpf),
1114 > ulsort, langue, codret )
1116 c 3.3.4. ==> informations sur une arete
1118 elseif ( choix.eq.'ar' .or.
1119 > choix.eq.'AR' .or.
1120 > choix.eq.'E ' ) then
1122 #ifdef _DEBUG_HOMARD_
1123 write (ulsort,texte(langue,3)) 'INFOAR', nompro
1125 call infoar ( choix, numero,
1126 > imem(psomar), imem(pposif), imem(pfacar),
1127 > imem(phetar), imem(pfilar), imem(pmerar), imem(pnp2ar),
1128 > imem(pfamar), imem(pcfaar),
1129 > imem(adarhn), imem(adarcn), imem(adarcs),
1132 > imem(phettr), imem(phetqu),
1133 > imem(phette), imem(phetpy), imem(phethe), imem(phetpe),
1134 > lgtate, imem(adptte), imem(adtate),
1135 > lgtahe, imem(adpthe), imem(adtahe),
1136 > lgtapy, imem(adptpy), imem(adtapy),
1137 > lgtape, imem(adptpe), imem(adtape),
1138 > nbpafo, smem(aninpf),
1140 > ulsort, langue, codret )
1142 c 3.3.5. ==> informations sur un triangle
1144 elseif ( choix.eq.'tr' .or.
1145 > choix.eq.'TR' .or.
1146 > choix.eq.'E' ) then
1148 #ifdef _DEBUG_HOMARD_
1149 write (ulsort,texte(langue,3)) 'INFOTR', nompro
1151 call infotr ( choix, numero,
1152 > imem(paretr), imem(phettr), imem(advotr), imem(adpptr),
1153 > imem(pnivtr), imem(pfiltr), imem(ppertr), imem(adnmtr),
1155 > imem(adtrhn), imem(adtrcn), imem(adtrcs),
1157 > imem(psomar), imem(pnp2ar), imem(phetar),
1158 > imem(pposif), imem(pfacar),
1160 > imem(phetqu), imem(pnivqu), imem(pfilqu),
1161 > imem(phette), imem(phetpy), imem(phetpe),
1162 > extrus, imem(adpetr), imem(adpecn),
1163 > nbpafo, smem(aninpf),
1165 > ulsort, langue, codret )
1167 c 3.3.6. ==> informations sur un quadrangle
1169 elseif ( choix.eq.'qu' .or.
1170 > choix.eq.'QU' .or.
1171 > choix.eq.'E' ) then
1173 #ifdef _DEBUG_HOMARD_
1174 write (ulsort,texte(langue,3)) 'INFOQU', nompro
1176 call infoqu ( choix, numero,
1177 > imem(parequ), imem(phetqu), imem(advoqu), imem(adppqu),
1178 > imem(pnivqu), imem(pfilqu), imem(pperqu), imem(adnmqu),
1180 > imem(adquhn), imem(adqucn), imem(adqucs),
1182 > imem(psomar), imem(pnp2ar), imem(phetar),
1183 > imem(pposif), imem(pfacar),
1185 > imem(phettr), imem(pnivtr), imem(adtrcn),
1186 > imem(phetpy), imem(phethe), imem(phetpe),
1187 > extrus, imem(adhequ), imem(adhecn),
1188 > nbpafo, smem(aninpf),
1190 > ulsort, langue, codret )
1192 c 3.3.7. ==> informations sur un tetraedre
1194 elseif ( choix.eq.'te' .or.
1195 > choix.eq.'TE' .or.
1196 > choix.eq.'E' ) then
1198 #ifdef _DEBUG_HOMARD_
1199 write (ulsort,texte(langue,3)) 'INFOTE', nompro
1201 call infote ( choix, numero,
1202 > imem(ptrite), imem(pcotrt), imem(parete),
1203 > imem(phette), imem(pfilte), imem(pperte), imem(adtes2),
1205 > imem(adtehn), imem(adtecn), imem(adtecs),
1206 > imem(phetar), imem(psomar), imem(pnp2ar), rmem(pcoono),
1207 > imem(phettr), imem(paretr), imem(pnivtr),
1209 > imem(phethe), imem(pquahe), imem(pfilhe), imem(adhes2),
1210 > imem(phetpy), imem(adpycn),
1211 > imem(phetpe), imem(pfacpe), imem(pfilpe), imem(adpes2),
1212 > imem(advotr), imem(adpptr),
1213 > imem(advoqu), imem(adppqu),
1214 > nbpafo, smem(aninpf),
1216 > ulsort, langue, codret )
1218 c 3.3.8. ==> informations sur une pyramide
1220 elseif ( choix.eq.'py' .or.
1221 > choix.eq.'PY' .or.
1222 > choix.eq.'E' ) then
1224 #ifdef _DEBUG_HOMARD_
1225 write (ulsort,texte(langue,3)) 'INFOPY', nompro
1227 call infopy ( choix, numero,
1228 > imem(pfacpy), imem(pcofay), imem(parepy),
1229 > imem(phetpy), imem(pfilpy), imem(pperpy), imem(adpys2),
1231 > imem(adpyhn), imem(adpycn), imem(adpycs),
1232 > imem(phetar), imem(psomar), imem(pnp2ar), rmem(pcoono),
1233 > imem(phettr), imem(paretr), imem(pnivtr),
1234 > imem(phetqu), imem(pnivqu),
1235 > imem(phette), imem(adtecn),
1236 > imem(phethe), imem(pquahe), imem(pfilhe), imem(adhes2),
1237 > imem(phetpe), imem(pfacpe), imem(pfilpe), imem(adpes2),
1238 > imem(advotr), imem(adpptr),
1239 > imem(advoqu), imem(adppqu),
1240 > nbpafo, smem(aninpf),
1242 > ulsort, langue, codret )
1244 c 3.3.9. ==> informations sur un hexaedre
1246 elseif ( choix.eq.'he' .or.
1247 > choix.eq.'HE' .or.
1248 > choix.eq.'E' ) then
1250 #ifdef _DEBUG_HOMARD_
1251 write (ulsort,texte(langue,3)) 'INFOHE', nompro
1253 call infohe ( choix, numero,
1254 > imem(pquahe), imem(pcoquh), imem(parehe),
1255 > imem(phethe), imem(pfilhe), imem(pperhe), imem(adhes2),
1257 > imem(adhehn), imem(adhecn), imem(adhecs),
1258 > imem(phetar), imem(psomar), imem(pnp2ar), rmem(pcoono),
1259 > imem(phetqu), imem(parequ), imem(pnivqu),
1260 > imem(phette), imem(adtecn),
1261 > imem(phetpy), imem(adpycn),
1263 > imem(advotr), imem(adpptr),
1264 > imem(advoqu), imem(adppqu),
1265 > nbpafo, smem(aninpf),
1267 > ulsort, langue, codret )
1269 c 3.3.10. ==> informations sur un pentaedre
1271 elseif ( choix.eq.'pe' .or.
1272 > choix.eq.'PE' .or.
1273 > choix.eq.'E' ) then
1275 #ifdef _DEBUG_HOMARD_
1276 write (ulsort,texte(langue,3)) 'INFOPE', nompro
1278 call infope ( choix, numero,
1279 > imem(pfacpe), imem(pcofap), imem(parepe),
1280 > imem(phetpe), imem(pfilpe), imem(pperpe), imem(adpes2),
1282 > imem(adpehn), imem(adpecn), imem(adpecs),
1283 > imem(phetar), imem(psomar), imem(pnp2ar), rmem(pcoono),
1284 > imem(phettr), imem(pnivtr),
1285 > imem(phetqu), imem(parequ), imem(pnivqu),
1286 > imem(phette), imem(adtecn),
1288 > imem(phetpy), imem(adpycn),
1289 > imem(advotr), imem(adpptr),
1290 > imem(advoqu), imem(adppqu),
1291 > nbpafo, smem(aninpf),
1293 > ulsort, langue, codret )
1297 c 3.3.11. ==> sortie en cas d'erreur
1299 if ( codret.ne.0 ) then
1305 c 3.4. ==> qualite des entites
1309 #ifdef _DEBUG_HOMARD_
1310 write (ulsort,texte(langue,3)) 'INFQEN', nompro
1312 call infqen ( choix, numfin,
1313 > rmem(pcoono), imem(psomar),
1314 > imem(phettr), imem(paretr),
1315 > imem(pfamtr), imem(pcfatr),
1316 > imem(phetqu), imem(parequ),
1317 > imem(pfamqu), imem(pcfaqu),
1318 > imem(ptrite), imem(pcotrt), imem(parete),
1320 > imem(pquahe), imem(pcoquh), imem(parehe),
1322 > imem(pfacpy), imem(pcofay), imem(parepy),
1324 > imem(pfacpe), imem(pcofap), imem(parepe),
1326 > imem(adtrcn), imem(adqucn), imem(adtecn),
1328 > ulsort, langue, codret )
1344 #ifdef _DEBUG_HOMARD_
1345 write (ulsort,90002) '40 continue avec codret', codret
1348 if ( rempac.ne.0 .and. codret.eq.0 ) then
1349 call gmlboj ( ntramp, codret )
1351 if ( rearac.ne.0 .and. codret.eq.0 ) then
1352 call gmlboj ( ntraar, codret )
1354 if ( retrac.ne.0 .and. codret.eq.0 ) then
1355 call gmlboj ( ntratr, codret )
1357 if ( requac.ne.0 .and. codret.eq.0 ) then
1358 call gmlboj ( ntraqu, codret )
1360 if ( reteac.ne.0 .and. codret.eq.0 ) then
1361 call gmlboj ( ntrate, codret )
1363 if ( repyac.ne.0 .and. codret.eq.0 ) then
1364 call gmlboj ( ntrapy, codret )
1366 if ( reheac.ne.0 .and. codret.eq.0 ) then
1367 call gmlboj ( ntrahe, codret )
1369 if ( repeac.ne.0 .and. codret.eq.0 ) then
1370 call gmlboj ( ntrape, codret )
1373 c 4.1. ==> message si erreur
1375 if ( codret.ne.0 ) then
1379 write (ulsort,texte(langue,1)) 'Sortie', nompro
1380 write (ulsort,texte(langue,2)) codret
1384 #ifdef _DEBUG_HOMARD_
1385 write (ulsort,texte(langue,1)) 'Sortie', nompro