rotatj
C ROTATJ SOURCE CHAT 05/01/13 03:05:17 5004 C C Rotating Crack model avec 2 directions de fissuration C D. Combescure 24/08/95 ELSA-Ispra C C ENTREES: C ------- C WRK0: C XMAT = CARACTERISTIQUES MECANIQUES DU MATERIAU C C WRK1: C SIG0 = CONTRAINTES AU DEBUT DU PAS D'INTEGRATION C DEPST = INCREMENT DES DEFORMATIONS TOTALES C VAR0 = VARIABLES INTERNES AU DEBUT DU PAS D'INTEGRATION C C variables en sortie C C VARF variables internes finales dans WRK0 C C SIGF contraintes finales dans WRK0 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC CCREEL SEGMENT WRK0 REAL*8 XMAT(NMATT) ENDSEGMENT * SEGMENT WRK1 REAL*8 DDHOOK(LHOOK,LHOOK),SIG0(NSTRS),DEPST(NSTRS) REAL*8 SIGF(NSTRS),VAR0(NVARI),VARF(NVARI) REAL*8 DEFP(NSTRS),XCAR(ICARA) ENDSEGMENT DIMENSION DEFI(4),DINC(4), DAM(2),XXX(2) DIMENSION EPSN(2), EPS(2), EPSX(2), EPSP(2),SIGP(2),SIGM(2) DIMENSION CCCC(2,2),XX(2),FF(2),NMEC(2),IMEC(2) DIMENSION T(3,3) C PARAMETER (UN=1.D0,UNDEMI=0.5D0,EPSILO=1.D-5) KERRE=0 C=============================================================== C LECTURE DES CARACTERISTIQUES MAT. ET DES VAR. INT. C=============================================================== C Materiau --> 5-Resistance en traction C 6-Deformation a la rupture C 7-Resistance residuelle C 8-Coef. de refermeture de la fissure C-------------------------------------------------------------- YOUN = XMAT(1) XNU = XMAT(2) XFTR = XMAT(5) EPSR = XMAT(6) XFRE = XMAT(7) BETA = XMAT(8) XHH1 = (XFRE - XFTR)/EPSR C-------------------------------------------------------------- C Variables internes->1 et 2- cos et sin de l'angle C 3 et 4- "Deformation" maximale de la fissure C 5 et 6- Deformations principales C 7 - Cas pour le calcul de Kta C-------------------------------------------------------------- CPHI = VAR0(1) + UN SPHI = VAR0(2) EPS(1) = VAR0(3) EPS(2) = VAR0(4) EPSN(1) = VAR0(5) EPSN(2) = VAR0(6) C C Remplissage de la matrice de transformation C (Ecrite pour le tenseur des contraintes et des deformations) T(1,1) = CPHI**2 T(1,2) = SPHI**2 T(1,3) = -2.D0*SPHI*CPHI T(2,1) = T(1,2) T(2,2) = T(1,1) T(2,3) = -T(1,3) T(3,1) = SPHI*CPHI T(3,2) = -SPHI*CPHI T(3,3) = (CPHI**2) - (SPHI**2) C C================================================================ C CALCUL DES DEFORMATIONS TOTALES ET PASSAGE DANS LE REPERE PRINCIPAL C================================================================ DEFI(1) = T(1,1)*EPSN(1) + T(1,2)*EPSN(2) DEFI(2) = T(2,1)*EPSN(1) + T(2,2)*EPSN(2) DEFI(4) = -(T(3,1)*EPSN(1) + T(3,2)*EPSN(2)) DEFI(1) = DEFI(1) + DEPST(1) DEFI(2) = DEFI(2) + DEPST(2) DEFI(4) = DEFI(4) + DEPST(4)/2 C Passage dans le nouveau repere principal DINC(1) = T(1,1)*DEFI(1) + T(1,2)*DEFI(2) & +T(1,3)*DEFI(4) DINC(2) = T(2,1)*DEFI(1) + T(2,2)*DEFI(2) & +T(2,3)*DEFI(4) DINC(4) = T(3,1)*DEFI(1) +T(3,2)*DEFI(2) & + T(3,3)*DEFI(4) C IF (ABS(DINC(2) - DINC(1)).GT.(EPSILO*ABS(DINC(4)))) THEN TG2PHI = -2.D0*DINC(4)/(DINC(1) - DINC(2)) XDPHI = UNDEMI*ATAN(TG2PHI) CDPHI = COS(XDPHI) SDPHI = SIN(XDPHI) ELSE XDPHI = SIGN ((XPI/4.D0), DINC(4)*(DINC(1)-DINC(2))) CDPHI = SQRT(2.D0)/2.D0 SDPHI = SIGN (CDPHI, DINC(4)*(DINC(1)-DINC(2))) ENDIF C CPHIF = CPHI*CDPHI - SPHI*SDPHI SPHIF = CPHI*SDPHI + SPHI*CDPHI T(1,1) = CPHIF**2 T(1,2) = SPHIF**2 T(1,3) = -2.D0*SPHIF*CPHIF T(2,1) = T(1,2) T(2,2) = T(1,1) T(2,3) = -T(1,3) T(3,1) = SPHIF*CPHIF T(3,2) = -SPHIF*CPHIF T(3,3) = (CPHIF**2) - (SPHIF**2) C EPSN(1) = T(1,1)*DEFI(1) + T(1,2)*DEFI(2) + T(1,3)*DEFI(4) EPSN(2) = T(2,1)*DEFI(1) + T(2,2)*DEFI(2) + T(2,3)*DEFI(4) XTEST = T(3,1)*DEFI(1)+T(3,2)*DEFI(2) + T(3,3)*DEFI(4) XTEST = XTEST / (UN + ABS(EPSN(1)) + ABS(EPSN(2))) IF (ABS(XTEST).GT.(1.D-10)) THEN WRITE(6,*)'CONPRI : hell and damnation!' ENDIF C C================================================================ C ECRITURE DE LA LOI DANS LE REPERE PRINCIPAL C================================================================ C C Calcul des variables d'endommagement et des limites elastiques 10 CONTINUE DO I=1,2 IF (EPS(I).LE.EPSR) THEN SIGM(I) = XFTR - (XFTR - XFRE)*EPS(I)/EPSR EPSP(I) = BETA*EPS(I) XXX(I) = UN + YOUN*(UN - BETA)*EPS(I)/SIGM(I) ELSE SIGM(I) = XFRE EPSP(I) = BETA*EPSR XXX(I) = UN + YOUN*(UN - BETA)*EPSR/XFRE & + YOUN*(EPS(I) - EPSR)/XFRE ENDIF DAM(I) = UN XXX(I) = UN/XXX(I) ENDDO C Calcul des contraintes principales 500 CONTINUE CCCC(1,1) = UN/(YOUN*DAM(1)) CCCC(1,2) = -XNU/YOUN CCCC(2,1) = -XNU/YOUN CCCC(2,2) = UN/(YOUN*DAM(2)) FF(1) = EPSN(1) - EPSP(1) FF(2) = EPSN(2) - EPSP(2) CALL RESOLU(CCCC, FF , XX,KERRE) SIGP(1) = XX(1) SIGP(2) = XX(2) C "Endommagement" si necessaire IF (((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1))) & .OR.((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2)))) THEN IF (((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1))) & .AND.((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2)))) THEN IF (SIGP(1).GT.SIGP(2)) THEN DAM(1) = XXX(1) ELSE DAM(2) = XXX(2) ENDIF ELSE IF ((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1))) THEN DAM(1) = XXX(1) ELSE IF ((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2))) THEN DAM(2) = XXX(2) ENDIF ENDIF GOTO 500 ENDIF IF (((SIGP(1).LT.XZERO).AND.(DAM(1).NE.UN)) & .OR.((SIGP(2).LT.XZERO).AND.(DAM(2).NE.UN))) THEN IF ((SIGP(1).LT.XZERO).AND.(DAM(1).NE.UN)) THEN DAM(1) = UN ELSE DAM(2) = UN ENDIF GOTO 500 ENDIF C "Ecoulement" si necessaire NMEC(1) = 0 NMEC(2) = 0 IF (SIGP(1).GT.SIGM(1)) NMEC(1) = 1 IF (SIGP(2).GT.SIGM(2)) NMEC(2) = 1 NNMEC = NMEC(1) + NMEC(2) C IF (NNMEC.EQ.0) THEN IF ((DAM(1).EQ.UN).AND.(DAM(2).EQ.UN)) THEN ICAS = 1 ELSE IF ((DAM(1).NE.UN).AND.(DAM(2).EQ.UN)) THEN ICAS = 11 ELSE IF ((DAM(1).EQ.UN).AND.(DAM(2).NE.UN)) THEN ICAS = 12 ELSE ICAS = 13 ENDIF ENDIF ENDIF GOTO 9999 ELSE IF (NNMEC.EQ.1) THEN IF (NMEC(1).EQ.1) THEN IMEC(1) = 1 IMEC(2) = 2 ELSE IMEC(1) = 2 IMEC(2) = 1 ENDIF GOTO 1000 ELSE IF (SIGP(1).GE.SIGP(2)) THEN IMEC(1) = 1 IMEC(2) = 2 ELSE IMEC(1) = 2 IMEC(2) = 1 ENDIF GOTO 1000 ENDIF ENDIF C Ecoulement 1 direction 1000 CONTINUE IF (EPS(IMEC(1)).LE.EPSR) THEN GOTO 1010 ELSE GOTO 1020 ENDIF C Cas avant rupture totale 1010 CONTINUE CCCC(1,1) = UN/YOUN + UN/XHH1 CCCC(1,2) = -XNU/YOUN CCCC(2,1) = -XNU/YOUN CCCC(2,2) = UN/(DAM(IMEC(2))*YOUN) FF(1) = EPSN(IMEC(1)) + XFTR/XHH1 FF(2) = EPSN(IMEC(2)) - EPSP(IMEC(2)) CALL RESOLU(CCCC, FF , XX,KERRE) EPSX(1) = EPSN(IMEC(1)) - XX(1)/YOUN + (XNU/YOUN)*XX(2) IF (EPSX(1).LT.XZERO) THEN CONTINUE GOTO 9999 ENDIF IF (EPSX(1).GT.EPSR) THEN GOTO 1020 ENDIF IF (XX(2).GT.SIGM(IMEC(2))) THEN GOTO 2000 ENDIF SIGP(IMEC(1)) = XX(1) SIGP(IMEC(2)) = XX(2) EPS(IMEC(1)) = EPSX(1) EPSP(IMEC(1)) = BETA*EPS(IMEC(1)) IF (IMEC(1).EQ.1) THEN ICAS = 2 ELSE ICAS = 3 ENDIF GOTO 9999 C Cas apres ouverture totale 1020 CONTINUE XX(1) = XFRE XX(2) = YOUN*DAM(IMEC(2))*(EPSN(IMEC(2)) - EPSP(IMEC(2))) & + XNU*DAM(IMEC(2))*XFRE IF (XX(2).GT.SIGM(IMEC(2))) THEN GOTO 2000 ELSE SIGP(IMEC(1)) = XX(1) SIGP(IMEC(2)) = XX(2) EPS(IMEC(1)) = EPSN(IMEC(1)) - XX(1)/YOUN + (XNU/YOUN)*XX(2) EPSP(IMEC(1)) = BETA*EPSR IF (IMEC(1).EQ.1) THEN ICAS = 2 ELSE ICAS = 3 ENDIF GOTO 9999 ENDIF C Cas 2 directions 2000 CONTINUE IF ((EPS(1).LE.EPSR).AND.(EPS(2).LE.EPSR)) THEN GOTO 2010 ELSE IF ((EPS(1).GT.EPSR).AND.(EPS(2).LE.EPSR)) THEN IMEC(1) = 1 IMEC(2) = 2 GOTO 2020 ELSE IF ((EPS(2).GT.EPSR).AND.(EPS(1).LE.EPSR)) THEN IMEC(1) = 2 IMEC(2) = 1 GOTO 2020 ELSE IF ((EPS(1).GT.EPSR).AND.(EPS(2).GT.EPSR)) THEN GOTO 2030 ENDIF ENDIF ENDIF ENDIF C Cas 2 directions avant rupture 2010 CONTINUE CCCC(1,1) = UN/XHH1 + UN/YOUN CCCC(1,2) = -XNU/YOUN CCCC(2,2) = UN/XHH1 + UN/YOUN CCCC(2,1) = -XNU/YOUN FF(1) = EPSN(1) + XFTR/XHH1 FF(2) = EPSN(2) + XFTR/XHH1 CALL RESOLU(CCCC,FF,XX,KERRE) EPSX(1) = EPSN(1) - XX(1)/YOUN + (XNU/YOUN)*XX(2) EPSX(2) = EPSN(2) - XX(2)/YOUN + (XNU/YOUN)*XX(1) IF ((EPSX(1).GT.EPSR).OR.(EPSX(2).GT.EPSR)) THEN IF ((EPSX(1).GT.EPSR).AND.(EPSX(2).LE.EPSR)) THEN IMEC(1) = 1 IMEC(2) = 2 ELSE IF ((EPSX(2).GT.EPSR).AND.(EPSX(1).LE.EPSR)) THEN IMEC(1) = 2 IMEC(2) = 1 ELSE IF ((EPSX(1).GT.EPSR).AND.(EPSX(2).GT.EPSR)) THEN IF (EPSX(1).GT.EPSX(2)) THEN IMEC(1) = 1 IMEC(2) = 2 ELSE IMEC(1) = 2 IMEC(2) = 1 ENDIF ENDIF ENDIF ENDIF GOTO 2020 ELSE SIGP(1) = XX(1) SIGP(2) = XX(2) EPS(1) = EPSX(1) EPS(2) = EPSX(2) EPSP(1) = BETA*EPS(1) EPSP(2) = BETA*EPS(2) ENDIF ICAS = 4 GOTO 9999 C Cas 1 direction apres rupture 2020 CONTINUE XX(1) = XFRE XX(2) = (EPSN(IMEC(2)) + XNU*XFRE/YOUN + XFTR/XHH1)/ & (UN/XHH1 + UN/YOUN) EPSX(1) = EPSN(IMEC(1)) + (XNU/YOUN)*XX(2) - XX(1)/YOUN EPSX(2) = EPSN(IMEC(2)) + (XNU/YOUN)*XX(1) - XX(2)/YOUN IF (EPSX(2).GT.EPSR) THEN GOTO 2030 ELSE SIGP(IMEC(1)) = XX(1) SIGP(IMEC(2)) = XX(2) EPS(IMEC(1)) = EPSX(1) EPS(IMEC(2)) = EPSX(2) EPSP(IMEC(1)) = BETA*EPSR EPSP(IMEC(2)) = BETA*EPS(IMEC(2)) ICAS = 4 GOTO 9999 ENDIF C Cas 2 directions apres rupture 2030 CONTINUE SIGP(1) = XFRE SIGP(2) = XFRE EPS(1) = EPSN(1) - ((UN - XNU)/YOUN)*XFRE EPS(2) = EPSN(2) - ((UN - XNU)/YOUN)*XFRE EPSP(1) = BETA*EPSR EPSP(2) = BETA*EPSR ICAS = 4 GOTO 9999 C================================================================ C PASSAGE DANS LE REPERE FIXE C=============================================================== 9999 CONTINUE VARF(1) = CPHIF - UN VARF(2) = SPHIF VARF(3) = EPS(1) VARF(4) = EPS(2) VARF(5) = EPSN(1) VARF(6) = EPSN(2) VARF(7) = ICAS SIGF(1) = T(1,1)*SIGP(1) + T(1,2)*SIGP(2) SIGF(2) = T(2,1)*SIGP(1) + T(2,2)*SIGP(2) SIGF(3) = XZERO SIGF(4) = -T(3,1)*SIGP(1) - T(3,2)*SIGP(2) DEFP(1) = T(1,1)*EPSP(1) + T(1,2)*EPSP(2) DEFP(2) = T(2,1)*EPSP(1) + T(2,2)*EPSP(2) DEFP(3) = XZERO DEFP(4) = -2.D0*(T(3,1)*EPSP(1) + T(3,2)*EPSP(2)) RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales