Numérotation des lignes :

nbcomp
C NBCOMP    SOURCE    CB215821  23/12/07    21:15:05     11805                SUBROUTINE NBCOMP(IPOI1,CTYP,NBCO) C-----------------------------------------------------------------------C     Cette SUBROUTINE donne le nombre de composante d'un objetC       CHPOINT si CTYP='CHPOINT 'C       MCHAML  si CTYP='MCHAML  'CC     Travaille a SEGMENTS ouverts !C-----------------------------------------------------------------------       IMPLICIT INTEGER(I-N)      IMPLICIT REAL*8(A-H,O-Z) -INC SMCHAML-INC SMLMOTS-INC SMCHPOI-INC PPARAM       CHARACTER*(*)    CTYP      PARAMETER       (NCOPRE=100,IDEC=50,IMUL=2)C                      NCOPRE : Nombre de composantes preconditionnees (Pour éviter SEGINI)C                      IDEC   : Partie arithmetique de l'augmentation du SEGADJC                      IMUL   : Partie geometrique  de l'augmentation du SEGADJ      CHARACTER*(LOCOMP) CLIST(NCOPRE),MOTn       MLMOTS = 0      NBCO   = 0      IF    (CTYP .EQ. 'CHPOINT')THEN        MCHPOI=IPOI1        NSOUPO=IPCHP(/1)        DO I=1,NSOUPO          MSOUPO=IPCHP(I)          DO 40 K=1,MSOUPO.NOCOMP(/2)            MOTn=MSOUPO.NOCOMP(K)            IF(MLMOTS .EQ. 0)THEN              DO J=1,NBCO                IF (CLIST(J).EQ.MOTn) GOTO 40              ENDDO            ELSE              DO J=1,NBCO                IF (MLMOTS.MOTS(J).EQ.MOTn) GOTO 40              ENDDO            ENDIF            NBCO = NBCO + 1             IF (NBCO .GT. NCOPRE)THEN              IF(MLMOTS .EQ. 0)THEN                JGN=LOCOMP                JGM=NBCO*IMUL + IDEC                SEGINI,MLMOTS                DO ii=1,NCOPRE                  MLMOTS.MOTS(ii)=CLIST(ii)                ENDDO               ELSEIF(NBCO .GT. JGM)THEN                JGM=NBCO*IMUL + IDEC                SEGADJ,MLMOTS              ENDIF              MLMOTS.MOTS(NBCO)=MOTn             ELSE              CLIST(NBCO)=MOTn            ENDIF 40       CONTINUE        ENDDO       ELSEIF(CTYP .EQ. 'MCHAML')THEN        MCHELM=IPOI1        N1    =MCHELM.ICHAML(/1)        DO IN1=1,N1          MCHAML=MCHELM.ICHAML(IN1)          N2    =MCHAML.NOMCHE(/2)          DO 60 IN2=1,N2            MOTn=MCHAML.NOMCHE(IN2)            IF(MLMOTS .EQ. 0)THEN              DO J=1,NBCO                IF (CLIST(J).EQ.MOTn) GOTO 60              ENDDO            ELSE              DO J=1,NBCO                IF (MLMOTS.MOTS(J).EQ.MOTn) GOTO 60              ENDDO            ENDIF            NBCO = NBCO + 1             IF (NBCO .GT. NCOPRE)THEN              IF(MLMOTS .EQ. 0)THEN                JGN=LOCOMP                JGM=NBCO*IMUL + IDEC                SEGINI,MLMOTS                DO ii=1,NCOPRE                  MLMOTS.MOTS(ii)=CLIST(ii)                ENDDO               ELSEIF(NBCO .GT. JGM)THEN                JGM=NBCO*IMUL + IDEC                SEGADJ,MLMOTS              ENDIF              MLMOTS.MOTS(NBCO)=MOTn             ELSE              CLIST(NBCO)=MOTn            ENDIF 60       CONTINUE        ENDDO       ELSE        CALL ERREUR(21)        RETURN      ENDIF       END  

© Cast3M 2003 - Tous droits réservés.
Mentions légales