actich
C ACTICH SOURCE CB215821 20/11/04 21:15:00 10766 C-------------------------------------------------------------------- C ACCELERATION SUR UNE COMPOSANTE D'UN CHAMELEM C-------------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC SMCHAML -INC PPARAM -INC CCOPTIO * SEGMENT NOMID CHARACTER*8 LESOBL(NBROBL),LESFAC(NBRFAC) ENDSEGMENT * SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) CHARACTER*(LOCOMP) MACOMP CHARACTER*16 MOT1,MOT2,MOT3 CHARACTER*(nconch) CONM * * * Verification du lieu support des MCHAMLs * IF(IERR.NE.0)RETURN IF(IERR.NE.0)RETURN IF(IERR.NE.0)RETURN IF((ISUP1.EQ.ISUP2.AND.ISUP1.EQ.ISUP3) 1 .OR. 1 ((ISUP1.EQ.0.AND.ISUP2.EQ.0).OR. 1 (ISUP2.EQ.0.AND.ISUP3.EQ.0).OR. 1 (ISUP3.EQ.0.AND.ISUP1.EQ.0)) 1 .OR. 1 ((ISUP1.EQ.0.AND.ISUP2.EQ.ISUP3).OR. 1 (ISUP2.EQ.0.AND.ISUP3.EQ.ISUP1).OR. 1 (ISUP3.EQ.0.AND.ISUP1.EQ.ISUP2)))THEN IOK=1 ELSE IOK=0 ENDIF IF(IOK.EQ.0)THEN MCHELM=IPCH1 SEGACT MCHELM MOTERR(1:8)=TITCHE SEGDES MCHELM RETURN ENDIF C C ON COPIE LE TROISIEME MCHAML C MCHEL1=IPCH1 MCHEL2=IPCH2 MCHEL3=IPCH3 SEGACT,MCHEL1,MCHEL2,MCHEL3 MOT1=MCHEL1.TITCHE MOT2=MCHEL2.TITCHE MOT3=MCHEL3.TITCHE IF(MOT1.NE.MOT2.OR.MOT1.NE.MOT3)THEN GOTO 666 ENDIF MCHEL4=IPCH4 SEGACT MCHEL4 NSOU4=MCHEL4.IMACHE(/1) C C BOUCLE SUR LES ZONES C DO 500 ISOUS=1,NSOU4 C IPMAIL=MCHEL4.IMACHE(ISOUS) CONM=MCHEL4.CONCHE(ISOUS) C C CREATION DU TABLEAU INFOS C IF (IRTD.EQ.0) THEN SEGDES MCHEL4 GOTO 666 ENDIF C MCHAML=MCHEL4.ICHAML(ISOUS) SEGACT MCHAML NCOMP=IELVAL(/1) NBRFAC=0 NBTYPE=NCOMP SEGINI NOTYPE MOTYPE=NOTYPE NBROBL=NCOMP SEGINI NOMID MONOM=NOMID DO 10 IC=1,NCOMP LESOBL(IC)=NOMCHE(IC) TYPE(IC)=TYPCHE(IC) 10 CONTINUE C NUMCO=0 IF(NCOMP.EQ.1)NUMCO=1 IF(NCOMP.NE.1)THEN DO 20 IC=1,NCOMP IF(MACOMP.NE.NOMCHE(IC))GOTO 20 NUMCO=IC GO TO 30 20 CONTINUE 30 CONTINUE ENDIF IF(NUMCO.EQ.0)THEN MOTERR(1:4)=MACOMP SEGDES MCHAML SEGDES MCHEL4 GO TO 666 ENDIF C C ON VERIFIE SI ON A LES MEMES COMPOSANTES SUR LES AUTRES C CHAMPS ET ON LES EXTRAIT C IF(IERR.NE.0)THEN SEGSUP NOMID,NOTYPE SEGDES MCHAML SEGDES MCHEL4 GO TO 666 ENDIF IF(IERR.NE.0)THEN SEGSUP NOMID,NOTYPE SEGDES MCHAML SEGDES MCHEL4 GO TO 666 ENDIF SEGSUP NOMID,NOTYPE C MELVAL=IELVAL(NUMCO) SEGACT,MELVAL NBPTE4=VELCHE(/1) NEL4 =VELCHE(/2) MPTVAL=IVACH1 MELVAL=IVAL(NUMCO) NBPTE1=VELCHE(/1) NEL1 =VELCHE(/2) MPTVAL=IVACH2 MELVAL=IVAL(NUMCO) NBPTE2=VELCHE(/1) NEL2 =VELCHE(/2) NBPTEL=MAX(MAX(NBPTE1,NBPTE2),NBPTE4) NBELEM=MAX(MAX(NEL1,NEL2),NEL4) N1PTEL=NBPTEL N1EL=NBELEM N2PTEL=0 N2EL=0 MELVAL=IELVAL(NUMCO) IF(N1PTEL.GT.NBPTE4.OR.N1EL.GT.NEL4)SEGADJ MELVAL C DO 100 IB=1,NBELEM DO 100 IGAU=1,NBPTEL C MPTVAL=IVACH1 MELVAL=IVAL(NUMCO) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) V1=VELCHE(IGMN,IBMN) C MPTVAL=IVACH2 MELVAL=IVAL(NUMCO) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) V2=VELCHE(IGMN,IBMN) C MPTVAL=IVACH3 MELVAL=IVAL(NUMCO) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) V3=VELCHE(IGMN,IBMN) C RR=V3 RD=V2-V1 IF(RD.EQ.0.D0) GO TO 50 RAI=(V3-V2)/RD IF(RAI.EQ.1.D0) GO TO 50 RR=V3+(V3-V2)*RAI/(1.D0-RAI) 50 CONTINUE MELVAL=IELVAL(NUMCO) VELCHE(IGAU,IB)=RR 100 CONTINUE C C DESACTIVATION DES SEGMENTS C C C C C MELVAL=IELVAL(NUMCO) SEGDES MELVAL SEGDES MCHAML C 500 CONTINUE SEGDES MCHEL4 666 CONTINUE SEGDES MCHEL1,MCHEL2,MCHEL3 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales