1 : C ROTKTA SOURCE PV 11/03/07 21:18:08 6885 2 : SUBROUTINE ROTKTA(XMAT,VARF,SIGF,XKTAT,KERRE) 3 : C 4 : C Rotating Crack model avec 2 directions de fissuration 5 : C Calcul de la matrice tangente 6 : C D. Combescure 24/08/95 ELSA-Ispra 7 : C 8 : C ENTREES: 9 : C ------- 10 : C XMAT = Caracteristiques materiaux 11 : C 12 : C VARF = Variables internes 13 : C 14 : C SIGF = Contraintes 15 : C 16 : C SORTIES: 17 : C ------- 18 : C XKTAT = Matrice tangente 19 : C 20 : C================================================================ 21 : IMPLICIT INTEGER(I-N) 22 : IMPLICIT REAL*8(A-H,O-Z) 23 : -INC CCOPTIO 24 : DIMENSION XMAT(8),VARF(7),SIGF(4),XXX(2) 25 : DIMENSION DAM(2), XKTAT(4,4),XKTAT2(3,3),EPSF(2),XMINT(3,3) 26 : DIMENSION EPSN(2), EPS(2), XKTAP(3,3), XKINV(2,2) 27 : DIMENSION TP(3,3),TM(3,3),IMEC(2),EPSP(2), SIGM(2) 28 : PARAMETER (UN=1.D0,UNDEMI=0.5D0,EPSILO=1.D-20,XZER=0.D0) 29 : KERRE=0 30 : C=============================================================== 31 : C LECTURE DES CARACTERISTIQUES MAT. ET DES VAR. INT. 32 : C=============================================================== 33 : YOUN = XMAT(1) 34 : XNU = XMAT(2) 35 : XFTR = XMAT(3) 36 : EPSR = XMAT(4) 37 : XFRE = XMAT(5) 38 : BETA = XMAT(6) 39 : XHH1 = (XFRE - XFTR)/EPSR 40 : C-------------------------------------------------------------- 41 : C Variables internes->1 et 2- cos et sin de l'angle 42 : C 3 et 4- "Deformation" maximale de la fissure 43 : C 5 et 6- Deformations principales 44 : C 7 - Cas pour le calcul de Kta 45 : C-------------------------------------------------------------- 46 : KERRE = 0 47 : CPHI = VARF(1) + UN 48 : SPHI = VARF(2) 49 : EPS(1) = VARF(3) 50 : EPS(2) = VARF(4) 51 : EPSN(1) = VARF(5) 52 : EPSN(2) = VARF(6) 53 : ICAS = nint(VARF(7)) 53 : CALL ZERO(XKTAT,4,4) 53 : CALL ZERO(XKTAT2,3,3) 54 : C 55 : C Remplissage de la matrice de transformation 56 : C (Ecrite pour le tenseur des deformations contenant 2*EPSXY) 57 : C 58 : TP(1,1) = CPHI**2 59 : TP(1,2) = SPHI**2 60 : TP(1,3) = -SPHI*CPHI 61 : TP(2,1) = TP(1,2) 62 : TP(2,2) = TP(1,1) 63 : TP(2,3) = -TP(1,3) 64 : TP(3,1) = 2.*SPHI*CPHI 65 : TP(3,2) = -2.*SPHI*CPHI 66 : TP(3,3) = (CPHI**2) - (SPHI**2) 67 : C 68 : C Ecrite pour les contraintes 69 : C 70 : TM(1,1) = CPHI**2 71 : TM(1,2) = SPHI**2 72 : TM(1,3) = 2.*SPHI*CPHI 73 : TM(2,1) = TM(1,2) 74 : TM(2,2) = TM(1,1) 75 : TM(2,3) = -TM(1,3) 76 : TM(3,1) = -SPHI*CPHI 77 : TM(3,2) = SPHI*CPHI 78 : TM(3,3) = (CPHI**2) - (SPHI**2) 79 : C 80 : C 81 : C================================================================ 82 : C MATRICE TANGENTE DANS LE REPERE PRINCIPAL 83 : C================================================================ 84 : C 85 : C Calcul des variables d'endommagement 86 : DO I=1,2 87 : IF (EPS(I).LE.EPSR) THEN 88 : SIGM(I) = XFTR - (XFTR - XFRE)*EPS(I)/EPSR 89 : EPSP(I) = BETA*EPS(I) 90 : XXX(I) = UN + YOUN*(UN - BETA)*EPS(I)/SIGM(I) 91 : ELSE 92 : SIGM(I) = XFRE 93 : EPSP(I) = BETA*EPSR 94 : XXX(I) = UN + YOUN*(UN - BETA)*EPSR/XFRE 95 : &+ YOUN*(EPS(I) - EPSR)/XFRE 96 : ENDIF 97 : XXX(I) = UN/XXX(I) 98 : DAM(I) = UN 99 : ENDDO 100 : C 101 : C 102 : C 103 : IF (ICAS.EQ.1) THEN 104 : GOTO 1000 105 : ELSE 106 : IF (ICAS.GE.11) THEN 107 : IF (ICAS.EQ.11) DAM(1) = XXX(1) 108 : IF (ICAS.EQ.12) DAM(2) = XXX(2) 109 : IF (ICAS.EQ.13) THEN 110 : DAM(1) = XXX(1) 111 : DAM(2) = XXX(2) 112 : ENDIF 113 : GOTO 1000 114 : ELSE 115 : IF (ICAS.EQ.2) THEN 116 : IMEC(1) = 1 117 : IMEC(2) = 2 118 : GOTO 2000 119 : ELSE 120 : IF (ICAS.EQ.3) THEN 121 : IMEC(1) = 2 122 : IMEC(2) = 1 123 : GOTO 2000 124 : ELSE 125 : IF (ICAS.EQ.4) THEN 126 : GOTO 3000 127 : ENDIF 128 : ENDIF 129 : ENDIF 130 : ENDIF 131 : ENDIF 132 : C 133 : C Cas sans direction d'ecoulement 134 : C 135 : 1000 CONTINUE 136 : XKINV(1,1)=(UN/(YOUN*DAM(1))) 137 : XKINV(1,2)=((-1.)*XNU/YOUN) 138 : XKINV(2,1)=((-1.)*XNU/YOUN) 139 : XKINV(2,2)=(UN/(YOUN*DAM(2))) 140 : GOTO 5000 141 : C 142 : C Cas avec 1 direction d'ecoulement 143 : C 144 : 2000 CONTINUE 145 : IF (EPS(IMEC(1)).LE.EPSR) THEN 146 : XKINV(IMEC(1),IMEC(1)) = UN/YOUN + UN/XHH1 147 : XKINV(1,2) = -XNU/YOUN 148 : XKINV(2,1) = -XNU/YOUN 149 : XKINV(IMEC(2),IMEC(2)) = UN/(DAM(IMEC(2))*YOUN) 150 : GOTO 5000 151 : ELSE 152 : XKTAP(IMEC(1),IMEC(1)) = XZER 153 : XKTAP(1,2) = XZER 154 : XKTAP(2,1) = XZER 155 : XKTAP(IMEC(2),IMEC(2)) = YOUN*DAM(IMEC(2)) 156 : GOTO 9999 157 : ENDIF 158 : C 159 : C Cas avec 2 directions d'ecoulement 160 : C 161 : C 162 : 3000 CONTINUE 163 : IF ((EPS(1).LE.EPSR).AND.(EPS(2).LE.EPSR)) THEN 164 : XKINV(1,1) = UN/YOUN + UN/XHH1 165 : XKINV(1,2) = -XNU/YOUN 166 : XKINV(2,1) = -XNU/YOUN 167 : XKINV(2,2) = UN/YOUN + UN/XHH1 168 : GOTO 5000 169 : ELSE 170 : IF ((EPS(1).GT.EPSR).AND.(EPS(2).LE.EPSR)) THEN 171 : XKTAP(1,1) = XZER 172 : XKTAP(1,2) = XZER 173 : XKTAP(2,1) = XZER 174 : XKTAP(2,2) = UN/((UN/XHH1 + UN/YOUN)) 175 : GOTO 9999 176 : ELSE 177 : IF ((EPS(1).LE.EPSR).AND.(EPS(2).GT.EPSR)) THEN 178 : XKTAP(1,1) = UN/((UN/XHH1 + UN/YOUN)) 179 : XKTAP(1,2) = XZER 180 : XKTAP(2,1) = XZER 181 : XKTAP(2,2) = XZER 182 : GOTO 9999 183 : ELSE 184 : XKTAP(1,1) = XZER 185 : XKTAP(1,2) = XZER 186 : XKTAP(2,1) = XZER 187 : XKTAP(2,2) = XZER 188 : GOTO 9999 189 : ENDIF 190 : ENDIF 191 : ENDIF 192 : C 193 : C On inverse la matrice si necessaire 194 : C 195 : 5000 CONTINUE 196 : XDET = XKINV(1,1)*XKINV(2,2) - XKINV(1,2)*XKINV(2,1) 197 : IF (ABS(XDET).GT.EPSILO) THEN 198 : XDET = UN/XDET 199 : XKTAP(1,1) = XDET*XKINV(2,2) 200 : XKTAP(2,2) = XDET*XKINV(1,1) 201 : XKTAP(1,2) = -XDET*XKINV(2,1) 202 : XKTAP(2,1) = -XDET*XKINV(1,2) 203 : ELSE 204 : KERRE = 2 205 : WRITE(6,*)'Impossible d inverser' 206 : ENDIF 207 : C================================================================ 208 : C PASSAGE DANS LE REPERE FIXE 209 : C=============================================================== 210 : 9999 CONTINUE 211 : XKTAP(1,3) = XZER 212 : XKTAP(2,3) = XZER 213 : XKTAP(3,1) = XZER 214 : XKTAP(3,2) = XZER 215 : EPSF(1) = TP(1,1)*EPSN(1) + TP(1,2)*EPSN(2) 216 : EPSF(2) = TP(2,1)*EPSN(1) + TP(2,2)*EPSN(2) 217 : IF (ABS(EPSF(2)-EPSF(1)).GT.EPSILO) THEN 218 : XKTAP(3,3) = (SIGF(2)-SIGF(1))/(2.*(EPSF(2)-EPSF(1))) 219 : ELSE 220 : XKTAP(3,3) = XZER 221 : ENDIF 221 : CALL MATMAT(TM,XKTAP,3,3,3,XMINT) 221 : CALL MATMAT(XMINT,TP,3,3,3,XKTAT2) 222 : XKTAT(1,1)=XKTAT2(1,1) 223 : XKTAT(1,2)=XKTAT2(1,2) 224 : XKTAT(2,1)=XKTAT2(2,1) 225 : XKTAT(2,2)=XKTAT2(2,2) 226 : XKTAT(4,1)=XKTAT2(3,1) 227 : XKTAT(1,4)=XKTAT2(1,3) 228 : XKTAT(4,2)=XKTAT2(3,2) 229 : XKTAT(2,4)=XKTAT2(2,3) 230 : XKTAT(4,4)=XKTAT2(3,3) 231 : RETURN 232 : END 233 : 234 : 235 : 236 :
© Cast3M 2003 - All rights reserved.
Disclaimer