C EVNUMO SOURCE CHAT 05/01/12 23:46:57 5004 SUBROUTINE EVNUMO(ITYPE,IRET,NOMCO,IBOO) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C======================================================================= C CHERCHE DANS L'OBJET IRET DE TYPE ITYPE LA LISTE DES POINTS ET C REMPLIT LE TABLEAU NUMOO C APPELE PAR EVSOLU C APPELLE CHANGE,LIRE,REFUS,ERREUR(66) C ECRIT PAR FARVACQUE LE 24/10/85 C======================================================================= -INC CCOPTIO -INC SMSOLUT -INC SMATTAC -INC SMELEME -INC SMCHPOI SEGMENT ITRAV1(0) SEGMENT STRAV2 CHARACTER*4 ITRAV2(0) ENDSEGMENT SEGMENT NUMOO INTEGER NUMO(N),KLIST(N) CHARACTER*4 NUDDL(N) ENDSEGMENT LOGICAL L0,L1 CHARACTER*8 ITYPE,TYPRET,CHARRE CHARACTER*4 NOMCO * IF (ITYPE.EQ.'POINT ') THEN N=1 SEGINI NUMOO NUMO(1)=IRET NUDDL(1)=NOMCO * ELSE IF (ITYPE.EQ.'MAILLAGE') THEN MELEME= IRET SEGACT MELEME IF(ITYPEL.NE.1) CALL CHANGE (IRET,1) MELEME=IRET SEGACT MELEME N=NUM(/2) SEGINI NUMOO DO 10 I=1,N NUMO(I)=NUM(1,I) NUDDL(I)=NOMCO 10 CONTINUE SEGDES MELEME * ELSE IF (ITYPE.EQ.'CHPOINT ') THEN MCHPOI=IRET SEGACT MCHPOI NSOUPO=IPCHP(/1) SEGINI ITRAV1 SEGINI STRAV2 DO 20 I=1,NSOUPO MSOUPO=IPCHP(I) SEGACT MSOUPO MELEME=IGEOC SEGACT MELEME NP=NUM(/2) NC=NOCOMP(/2) MPOVAL=IPOVAL SEGACT MPOVAL DO 22 J1=1,NP DO 22 J2=1,NC * IF(VPOCHA(J1,J2).EQ.0.) GOTO 22 ITRAV1(**)=NUM(1,J1) ITRAV2(**)=NOCOMP(J2) 22 CONTINUE SEGDES MELEME,MPOVAL,MSOUPO 20 CONTINUE SEGDES MCHPOI N=ITRAV1(/1) SEGINI NUMOO DO 24 I=1,N NUMO(I)=ITRAV1(I) NUDDL(I)=ITRAV2(I) 24 CONTINUE SEGSUP ITRAV1,STRAV2 * ELSE IF (ITYPE.EQ.'ATTACHE ') THEN MATTAC=IRET SEGACT MATTAC NSOU=LISATT(/1) N=0 NI=0 SEGINI NUMOO DO 30 I=1,NSOU MSOUMA=LISATT(I) SEGACT MSOUMA MJONCT=IATREL(1) SEGDES MSOUMA SEGACT MJONCT MCHPOI=MJOPOI SEGDES MJONCT SEGACT MCHPOI MSOUPO=IPCHP(1) SEGDES MCHPOI SEGACT MSOUPO MELEME=IGEOC SEGDES MSOUPO SEGACT MELEME NM=NUM(/2) N=N+NM SEGADJ NUMOO DO 32 J=1,NM NUMO(NI+J)=NUM(1,J) NUDDL(NI+J)=NOMCO 32 CONTINUE NI=N SEGDES MELEME 30 CONTINUE SEGDES MATTAC * ELSE IF (ITYPE.EQ.'SOLUTION') THEN MSOLUT=IRET SEGACT MSOLUT IF (MSOLIS(3).EQ.0) THEN MOTERR(1:8)='SOLUTION' MOTERR(9:16)='MODE' CALL ERREUR(66) * ON ATTEND UN MODE SEGDES MSOLUT GOTO 5000 ELSE MELEME=MSOLIS(3) SEGDES MSOLUT SEGACT MELEME N=NUM(/2) SEGINI NUMOO DO 40 I=1,N NUMO(I)=NUM(1,I) NUDDL(I)=NOMCO 40 CONTINUE SEGDES MELEME ENDIF * ELSE IF (ITYPE.EQ.'TABLE ') THEN CALL ACCTAB(IRET,'MOT',I0,X0,'MODES',L0,IP0, & 'TABLE',I1,X1,' ',L1,IBAS) IB = 0 NBMODE = 0 50 CONTINUE IB = IB + 1 TYPRET = ' ' CALL ACCTAB(IBAS,'ENTIER',IB,X0,' ',L0,IP0, & TYPRET,I1,X1,CHARRE,L1,IBBB) IF (IBBB.NE.0 .AND. TYPRET.EQ.'TABLE ') THEN NBMODE = NBMODE + 1 GOTO 50 ENDIF N = NBMODE SEGINI NUMOO DO 52 IB = 1,NBMODE CALL ACCTAB(IBAS,'ENTIER',IB,X0,' ',L0,IP0, & TYPRET,I1,X1,TYPRET,L1,IBBB) CALL ACCTAB(IBBB,'MOT',I0,X0,'POINT_REPERE',L0,IP0, & 'POINT',I1,X1,' ',L1,IPTR) NUMO(IB)=IPTR NUDDL(IB)=NOMCO 52 CONTINUE ENDIF IBOO=NUMOO IF(IIMPI.NE.0)WRITE(6,1700)(NUMO(I),NUDDL(I),I=1,NUMO(/1)) 1700 FORMAT(' COUPLES NUMO-NUDDL ',10(I5,A4,1X)) 5000 CONTINUE RETURN END