C OTTOFI SOURCE CHAT 05/01/13 02:07:32 5004 SUBROUTINE OTTOFI(SIGMA,NFISSU,NVF,XLTR,XINVL, & VF,JRESU,FC,PRECIZ,KERRE) * C========================================================================== C C ENTREES : C SIGMA,NFISSU,NVF,XLTR,XINVL C C SORTIES : C FC CRITERES C JRESU,VF (JRESU = 1 POUR LES DIRECTIONS POTENTIELLES DE C FISSURATION DONT LA DIRECTION EST CONNUE C JRESU = 2 POUR LES DIRECTIONS POTENTIELLES DE C FISSURATION DONT LA DIRECTION EST INCONNUE EN PLAN C JRESU = 3 POUR LES DIRECTIONS POTENTIELLES DE C FISSURATION DONT LA DIRECTION EST INCONNUE EN 3D C VF CONTIENT LES VECTEURS CORRESPONDANTS) C========================================================================== C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO C PARAMETER (XZER=0.D0,UN=1.D0) C DIMENSION SIGMA(6),XLTR(3),VF(3,3),XINVL(3) * * VF 1-ER INDICE : COMPOSANTE * 2-EME INDICE : DIRECTION DE FISSURE C DIMENSION A3(3,3),D3(3),E3(3,3) DIMENSION JRESU(3),FC(3) * DO IC=1,3 JRESU(IC)=0 FC(IC)=-1.D4*PRECIZ DO JC=1,3 VF(IC,JC)=XZER ENDDO ENDDO C C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C LES TROIS DIRECTIONS SONT DEJA FISSUREES C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C IF (NFISSU.EQ.3) THEN RETURN ENDIF C C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C DEUX DIRECTIONS SONT DEJA FISSUREES C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C IF (NFISSU.EQ.2) THEN C C SEULE LA DIRECTION no IFIS N EST PAS FISSUREE C IF ((XINVL(1)*XINVL(2)).NE.XZER) IFIS=3 IF ((XINVL(1)*XINVL(3)).NE.XZER) IFIS=2 IF ((XINVL(2)*XINVL(3)).NE.XZER) IFIS=1 * * IF(IIMPI.EQ.42) THEN * WRITE(IOIMP,77003) IFIS *77003 FORMAT( 2X, 'OTTOFI - IFIS =',I4/) * ENDIF C FC(IFIS)=SIGMA(IFIS)-XLTR(IFIS) JRESU(IFIS)=1 IF (FC(IFIS).GT.-PRECIZ) THEN VF(IFIS,IFIS)=UN ENDIF ENDIF C C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C UNE DIRECTION EST DEJA FISSUREE C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C IF (NFISSU.EQ.1) THEN C C SEULE LA DIRECTION no IFIS EST FISSUREE C IF (XINVL(1).NE.XZER) IFIS=1 IF (XINVL(2).NE.XZER) IFIS=2 IF (XINVL(3).NE.XZER) IFIS=3 * * IF(IIMPI.EQ.42) THEN * WRITE(IOIMP,77004) IFIS *77004 FORMAT( 2X, 'OTTOFI - IFIS =',I4/) * ENDIF C C CAS 1 : C DEUX DIRECTIONS DE FAIBLESSE NON FISSUREE, UNE DIRECTION FISSUREE C C remarque : ce cas est identique a une direction de faiblesse C non fissuree et une direction de fissuration. C IF (NVF.EQ.2.OR.NVF.EQ.1) THEN C C direction 1 fissuree C IF (IFIS.EQ.1) THEN FC(2)=SIGMA(2)-XLTR(2) JRESU(2)=1 IF (FC(2).GT.-PRECIZ) THEN VF(2,2)=UN ENDIF FC(3)=SIGMA(3)-XLTR(3) JRESU(3)=1 IF (FC(3).GT.-PRECIZ) THEN VF(3,3)=UN ENDIF ENDIF C C direction 2 fissuree C IF (IFIS.EQ.2) THEN FC(1)=SIGMA(1)-XLTR(1) JRESU(1)=1 IF (FC(1).GT.-PRECIZ) THEN VF(1,1)=UN ENDIF FC(3)=SIGMA(3)-XLTR(3) JRESU(3)=1 IF (FC(3).GT.-PRECIZ) THEN VF(3,3)=UN ENDIF ENDIF C C direction 3 fissuree C C remarque : ce cas est impossible s il n y a qu une direction imposee C et une direction de fissuration. C IF (IFIS.EQ.3) THEN FC(1)=SIGMA(1)-XLTR(1) JRESU(1)=1 IF (FC(1).GT.-PRECIZ) THEN VF(1,1)=UN ENDIF FC(2)=SIGMA(2)-XLTR(2) JRESU(2)=1 IF (FC(2).GT.-PRECIZ) THEN VF(2,2)=UN ENDIF ENDIF ENDIF C C CAS 2 : PAS DE DIRECTION DE FAIBLESSE C IF (NVF.EQ.0) THEN C CALL ZERO(A3,3,3) A3(1,1)=SIGMA(2) A3(1,2)=SIGMA(6) A3(2,1)=SIGMA(6) A3(2,2)=SIGMA(3) CALL JACOB3(A3,2,D3,E3) * IF(IIMPI.EQ.42) THEN WRITE(IOIMP,78783) D3(1),D3(2) 78783 FORMAT( 2X, 'OTTOFI - D3(1)=',1PE12.5,2X, & ' D3(2)=',1PE12.5/) ENDIF C C---------rq XLTR(2)=XLTR(3) puisque l on n a pas fissure--------- C-----------et qu il n y a pas de direction de faiblesse---------- C IVP1=1 IVP2=2 IF(D3(2).GE.D3(1)) THEN IVP1=2 IVP2=1 ENDIF * FC(2)=D3(IVP1)-XLTR(2) JRESU(2)=2 IF(FC(2).GT.-PRECIZ) THEN VF(2,2)=E3(1,IVP1) VF(3,2)=E3(2,IVP1) ENDIF * FC(3)=D3(IVP2)-XLTR(3) JRESU(3)=2 IF(FC(3).GT.-PRECIZ) THEN VF(2,3)=E3(1,IVP2) VF(3,3)=E3(2,IVP2) ENDIF ENDIF RETURN ENDIF C C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C AUCUNE DIRECTION DEJA FISSUREE C- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - C IF (NFISSU.EQ.0) THEN C C CAS 1 : DEUX OU TROIS DIRECTIONS DE FAIBLESSE C IF (NVF.EQ.2.OR.NVF.EQ.3) THEN FC(1)=SIGMA(1)-XLTR(1) JRESU(1)=1 IF (FC(1).GT.-PRECIZ) THEN VF(1,1)=UN ENDIF FC(2)=SIGMA(2)-XLTR(2) JRESU(2)=1 IF (FC(2).GT.-PRECIZ) THEN VF(2,2)=UN ENDIF FC(3)=SIGMA(3)-XLTR(3) JRESU(3)=1 IF (FC(3).GT.-PRECIZ) THEN VF(3,3)=UN ENDIF ENDIF C C CAS 2 : UNE DIRECTION DE FAIBLESSE C IF (NVF.EQ.1) THEN FC(1)=SIGMA(1)-XLTR(1) JRESU(1)=1 IF (FC(1).GT.-PRECIZ) THEN VF(1,1)=UN ENDIF C CALL ZERO(A3,3,3) A3(1,1)=SIGMA(2) A3(1,2)=SIGMA(6) A3(2,1)=SIGMA(6) A3(2,2)=SIGMA(3) C CALL JACOB3(A3,2,D3,E3) * IF(IIMPI.EQ.42) THEN WRITE(IOIMP,78784) D3(1),D3(2) 78784 FORMAT( 2X, 'OTTOFI - D3(1)=',1PE12.5,2X, & ' D3(2)=',1PE12.5/) ENDIF C IVP1=1 IVP2=2 IF(D3(2).GE.D3(1)) THEN IVP1=2 IVP2=1 ENDIF * FC(2)=D3(IVP1)-XLTR(2) JRESU(2)=2 IF(FC(2).GT.-PRECIZ) THEN VF(2,2)=E3(1,IVP1) VF(3,2)=E3(2,IVP1) ENDIF * FC(3)=D3(IVP2)-XLTR(3) JRESU(3)=2 IF(FC(3).GT.-PRECIZ) THEN VF(2,3)=E3(1,IVP2) VF(3,3)=E3(2,IVP2) ENDIF ENDIF C C CAS 3 : PAS DE DIRECTION DE FAIBLESSE C IF (NVF.EQ.0) THEN C A3(1,1)=SIGMA(1) A3(1,2)=SIGMA(4) A3(1,3)=SIGMA(5) A3(2,1)=SIGMA(4) A3(2,2)=SIGMA(2) A3(2,3)=SIGMA(6) A3(3,1)=SIGMA(5) A3(3,2)=SIGMA(6) A3(3,3)=SIGMA(3) * IF(IIMPI.EQ.42) THEN WRITE(IOIMP,78788) ((A3(I,J),J=1,3),I=1,3) 78788 FORMAT( 2X, 'OTTOFI - MATRICE A3 '/(3(1X,1PE12.5))/) ENDIF * CALL JACOB3(A3,3,D3,E3) * IF(IIMPI.EQ.42) THEN WRITE(IOIMP,78785) D3(1),D3(2),D3(3) 78785 FORMAT( 2X, 'OTTOFI - D3(1)=',1PE12.5,2X, & ' D3(2)=',1PE12.5,2X,' D3(3)=',1PE12.5/) ENDIF C IF (D3(1).GE.D3(2).AND.D3(1).GE.D3(3))THEN IVP1=1 IVP2=2 IVP3=3 IF (D3(3).GE.D3(2)) THEN IVP2=3 IVP3=2 ENDIF ELSEIF (D3(2).GE.D3(3).AND.D3(2).GE.D3(1))THEN IVP1=2 IVP2=3 IVP3=1 IF (D3(1).GE.D3(3)) THEN IVP2=1 IVP3=3 ENDIF ELSEIF (D3(3).GE.D3(1).AND.D3(3).GE.D3(2))THEN IVP1=3 IVP2=1 IVP3=2 IF (D3(2).GE.D3(1)) THEN IVP2=2 IVP3=1 ENDIF ENDIF * FC(1)=D3(IVP1)-XLTR(1) JRESU(1)=3 IF(FC(1).GT.-PRECIZ) THEN VF(1,1)=E3(1,IVP1) VF(2,1)=E3(2,IVP1) VF(3,1)=E3(3,IVP1) ENDIF * FC(2)=D3(IVP2)-XLTR(2) JRESU(2)=3 IF(FC(2).GT.-PRECIZ) THEN VF(1,2)=E3(1,IVP2) VF(2,2)=E3(2,IVP2) VF(3,2)=E3(3,IVP2) ENDIF * FC(3)=D3(IVP3)-XLTR(2) JRESU(3)=3 IF(FC(3).GT.-PRECIZ) THEN VF(1,3)=E3(1,IVP3) VF(2,3)=E3(2,IVP3) VF(3,3)=E3(3,IVP3) ENDIF ENDIF ENDIF RETURN END