ottoet
C OTTOET SOURCE CHAT 05/01/13 02:07:28 5004 & XLTR,XINVL,SBILI,PRECIE,PRECIZ,FC,FC2,LEBIL,NFISSU, & ISING,IFERM,IBRUP,IPLAS,XCOMP,XLAMC,DFF,DGG,KERRE) C C========================================================================= C C ENTREES : C SIGMA,W,WMAX,SMAX,BILIN,WRUPT,BTR,XLTR,XINVL,SBILI C C C SORTIES : C FC,LEBIL,NCA,MC,MM,FC0,PENTE C C========================================================================== C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO C PARAMETER (XZER=0.D0) C & WRUPT(3),XLTR(3),XINVL(3),SBILI(3),XCOMP(*) DIMENSION FC(*),FC2(*),NN(*),MM(*),LEBIL(*),SMAX(*) DIMENSION VF(3,3),FC0(*) DIMENSION ISING(*),IFERM(*),IBRUP(*) DIMENSION DX(*),DXV1(*) * DIMENSION DFF(*),DGG(*) KERRE=0 IPLAS=0 * DO IC=1,NC NN(IC)=IC ENDDO * & PRECIE,PRECIZ,XCOMP,XLAMC,KERRE) IF(KERRE.NE.0) THEN PRINT *, ' OTTOET - APRES OTTOEC KERRE=',KERRE RETURN ENDIF * NCA=0 MC=0 LACOMP=0 * * DO IC=1,3 WREOUV(IC)=BTR*MIN(WMAX(IC),WRUPT(IC)) * IF(FC(IC).GT.PRECIZ.OR.FC2(IC).GT.PRECIZ) THEN * cas ou le critere est violé KERRE=2 PRINT *,' OTTOET - CRITERE VIOLE ',IC RETURN ENDIF * * cas ou le critere n'est pas atteint * ----------------------------------- * IF(FC(IC).LT.-PRECIZ.AND.FC2(IC).LT.-PRECIZ) THEN * * ---> sous-cas 1 : la direction n'a pas encore fissure * IF(XINVL(IC).EQ.XZER) THEN MC=MC+1 MM(MC)= IC * ELSE * * ---> sous-cas 2 : la direction a deja fissure * IF(LEBIL(IC).EQ.0) THEN * on est en compression * IF(BTR.LT.1.D0.AND.WMAX(IC).NE.XZER) THEN MC=MC+1 MM(MC)= 9+IC LACOMP=1 ELSE MC=MC+1 MM(MC)= 3+IC LACOMP=1 ENDIF ELSE KERRE=2 PRINT *,' OTTOET - CAS IMPOSSIBLE ',IC * CAS IMPOSSIBLE RETURN ENDIF * ENDIF ELSE * * cas ou le critere est atteint * ----------------------------- * IF(XINVL(IC).EQ.XZER) THEN KERRE=2 PRINT *,' OTTOET - XINVL EST NUL IC= ',IC RETURN ENDIF * PRECIW=PRECIE/XINVL(IC) NCA=NCA+1 NN(NCA)=IC * * ---> sous-cas 1 : le materiau n'est pas totalement casse * --------------------------------------------------- * IF(WMAX(IC).LT.WRUPT(IC)) THEN * IF(ABS(W(IC)-WREOUV(IC)).LT.PRECIW) THEN * IF(WMAX(IC).EQ.0.D0.OR.BTR.EQ.1.D0) THEN * * le materiau vient d'atteindre la limite * MC=MC+1 MM(MC)= 6+IC LACOMP=1 IBRUP(IC)=1 ELSE * * on est pile sur le critere sigma=0 (==> IFERM=1) * et LEBIL vaut 1 * IF(LEBIL(IC).NE.1) THEN KERRE=2 PRINT *,' OTTOET - LEBIL NEG 1 SELON ',IC RETURN ENDIF * MC=MC+1 MM(MC)= 3+IC LACOMP=1 IFERM(IC)=1 ENDIF ELSE IF(W(IC).GT.WREOUV(IC)) THEN IPLAS=1 * IF(ABS(W(IC)-WMAX(IC)).LT.PRECIW) THEN * * LEBIL vaut 2 * IF(LEBIL(IC).NE.2) THEN KERRE=2 PRINT *,' OTTOET - LEBIL NEG 2 SELON ',IC RETURN ENDIF * * d'abord les 2 * IF(FC(IC).GT.-PRECIZ.AND. & FC2(IC).GT.-PRECIZ) THEN * MC=MC+1 MM(MC)= 6+IC MC=MC+1 MM(MC)= 12+IC * * sinon seul le secant * ELSE IF(FC(IC).LT.-PRECIZ.AND. & FC2(IC).GT.-PRECIZ) THEN * * on remet lebil a 1 * LEBIL(IC)=1 FC(IC)=FC2(IC) MC=MC+1 MM(MC)= 3+IC MC=MC+1 MM(MC)= 12+IC * ELSE KERRE=2 PRINT *,' OTTOET - CAS PAS ', & 'POSSIBLE SELON ',IC RETURN ENDIF * * ELSE * * on est sur le secant , * et LEBIL vaut 1 * IF(LEBIL(IC).NE.1) THEN KERRE=2 PRINT *,' OTTOET - LEBIL NEG 1 SELON ',IC RETURN ENDIF * MC=MC+1 MM(MC)= 3+IC MC=MC+1 MM(MC)= 12+IC ENDIF * ELSE * * W < WREOUV : CAS IMPOSSIBLE * KERRE=2 PRINT *,' OTTOET - W < WREOUV IC= ',IC PRINT *,'W(IC)=',W(IC) PRINT *,'WMAX(IC)=',WMAX(IC) PRINT *,'WREOUV(IC)=',WREOUV(IC) PRINT *,'WRUPT(IC)=',WRUPT(IC) RETURN ENDIF * * ---> sous-cas 2 : le materiau est totalement casse * --------------------------------------------- * ELSE IF(WMAX(IC).GE.WRUPT(IC)) THEN * IF(W(IC)-WREOUV(IC).LT.-PRECIW) THEN * * W < WREOUV : CAS IMPOSSIBLE * KERRE=2 PRINT *,' OTTOET - W < WREOUV IC= ',IC PRINT *,'W(IC)=',W(IC) PRINT *,'WMAX(IC)=',WMAX(IC) PRINT *,'WREOUV(IC)=',WREOUV(IC) PRINT *,'WRUPT(IC)=',WRUPT(IC) RETURN ELSE * * on est en ouverture (IPLAS=1) * ou bien on est pile sur la limite sigma=0 (IPLAS=0) * LEBIL vaut 1 dans les 2 cas * IF(LEBIL(IC).NE.1) THEN KERRE=2 PRINT *,' OTTOET - LEBIL NEG 1 SELON ',IC RETURN ENDIF * IF(W(IC)-WREOUV(IC).GT.PRECIW) THEN IPLAS=1 MC=MC+1 MM(MC)= 12+IC ELSE IFERM(IC)=1 LACOMP=1 ENDIF * ENDIF ENDIF ENDIF ENDDO * * * * CAS NUMERO 4 * IF(FC(4).GT.PRECIZ) THEN KERRE=2 PRINT *,' OTTOET - CRITERE VIOLE N0 4 ' RETURN ENDIF * * IF(FC(4).LT.-PRECIZ) THEN LACOMP=1 ELSE NCA=NCA+1 NN(NCA)=4 LACOMP=0 IFERM(4)=1 ENDIF * * MLR 9/7/99 * ON MET 16 SYSTEMATIQUEMENT * * ***** IF(LACOMP.EQ.1) THEN ***** MC=MC+1 ***** MM(MC)=16 ***** ENDIF * MC=MC+1 MM(MC)=16 * * * TEST SUR MC * IF(MC.EQ.0) THEN KERRE=2 PRINT *,' OTTOET - MC EST NUL ' RETURN ENDIF * * APPEL A OTTOCE * & XLTR,XINVL,BTR,NFISSU,NVF,FC0,VF,YOUN, & PRECIZ,JFIS,XCOMP,XLAMC,DFF,DGG,KERRE) IF(KERRE.NE.0) THEN PRINT *, ' OTTOET - APRES OTTOCE KERRE=',KERRE RETURN ENDIF * * TEST DE L'ETAT INITIAL * DO IC=1,MC JC=MM(IC) IF(FC0(JC).GT.PRECIZ)THEN PRINT *,'OTTOET - ETAT INITIAL INADMISSIBLE' KERRE=2 RETURN ENDIF ENDDO * IF(IIMPI.EQ.42) THEN WRITE(IOIMP,77000) (FC(IC),IC=1,NC) 77000 FORMAT( 2X, ' OTTOET - FC '/(4(1X,1PE12.5)/)/) WRITE(IOIMP,77001) (LEBIL(IC),IC=1,NC) 77001 FORMAT( 2X, ' OTTOET - LEBIL '/(7I4)/) WRITE(IOIMP,77002) NCA,MC 77002 FORMAT( 2X, ' OTTOET - NCA=',I3,2X,'MC=',I3/) WRITE(IOIMP,77003) (NN(IC),IC=1,NCA) 77003 FORMAT( 2X, ' OTTOET - NN '/16(1X,I3)/) WRITE(IOIMP,77004) (MM(IC),IC=1,MC) 77004 FORMAT( 2X, ' OTTOET - MM '/16(1X,I3)/) ENDIF * RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales