1 : C CROTAT SOURCE KICH 09/09/11 21:17:48 6505 2 : C ROTATJ SOURCE KICH 98/07/01 00:07:15 3239 3 : SUBROUTINE CROTAT(wrk52,wrk53,wrk54) 4 : C 5 : C Rotating Crack model avec 2 directions de fissuration 6 : C D. Combescure 24/08/95 ELSA-Ispra 7 : C 8 : C ENTREES: 9 : C ------- 10 : C WRK0: 11 : C XMAT = CARACTERISTIQUES MECANIQUES DU MATERIAU 12 : C 13 : C WRK1: 14 : C SIG0 = CONTRAINTES AU DEBUT DU PAS D'INTEGRATION 15 : C DEPST = INCREMENT DES DEFORMATIONS TOTALES 16 : C VAR0 = VARIABLES INTERNES AU DEBUT DU PAS D'INTEGRATION 17 : C 18 : C variables en sortie 19 : C 20 : C VARF variables internes finales dans WRK0 21 : C 22 : C SIGF contraintes finales dans WRK0 23 : IMPLICIT INTEGER(I-N) 24 : IMPLICIT REAL*8(A-H,O-Z) 25 : -INC CCREEL 26 : -INC DECHE 27 : * 28 : DIMENSION DEFI(4),DINC(4), DAM(2),XXX(2) 29 : DIMENSION EPSN(2), EPS(2), EPSX(2), EPSP(2),SIGP(2),SIGM(2) 30 : DIMENSION CCCC(2,2),XX(2),FF(2),NMEC(2),IMEC(2) 31 : DIMENSION T(3,3) 32 : C 33 : PARAMETER (UN=1.D0,UNDEMI=0.5D0,EPSILO=1.D-5) 34 : KERRE=0 35 : C=============================================================== 36 : C LECTURE DES CARACTERISTIQUES MAT. ET DES VAR. INT. 37 : C=============================================================== 38 : C Materiau --> 5-Resistance en traction 39 : C 6-Deformation a la rupture 40 : C 7-Resistance residuelle 41 : C 8-Coef. de refermeture de la fissure 42 : C-------------------------------------------------------------- 43 : YOUN = XMAT(1) 44 : XNU = XMAT(2) 45 : XFTR = XMAT(5) 46 : EPSR = XMAT(6) 47 : XFRE = XMAT(7) 48 : BETA = XMAT(8) 49 : XHH1 = (XFRE - XFTR)/EPSR 50 : C-------------------------------------------------------------- 51 : C Variables internes->1 et 2- cos et sin de l'angle 52 : C 3 et 4- "Deformation" maximale de la fissure 53 : C 5 et 6- Deformations principales 54 : C 7 - Cas pour le calcul de Kta 55 : C-------------------------------------------------------------- 56 : CPHI = VAR0(1) + UN 57 : SPHI = VAR0(2) 58 : EPS(1) = VAR0(3) 59 : EPS(2) = VAR0(4) 60 : EPSN(1) = VAR0(5) 61 : EPSN(2) = VAR0(6) 62 : C 63 : C Remplissage de la matrice de transformation 64 : C (Ecrite pour le tenseur des contraintes et des deformations) 65 : T(1,1) = CPHI**2 66 : T(1,2) = SPHI**2 67 : T(1,3) = -2.D0*SPHI*CPHI 68 : T(2,1) = T(1,2) 69 : T(2,2) = T(1,1) 70 : T(2,3) = -T(1,3) 71 : T(3,1) = SPHI*CPHI 72 : T(3,2) = -SPHI*CPHI 73 : T(3,3) = (CPHI**2) - (SPHI**2) 74 : C 75 : C================================================================ 76 : C CALCUL DES DEFORMATIONS TOTALES ET PASSAGE DANS LE REPERE PRINCIPAL 77 : C================================================================ 78 : DEFI(1) = T(1,1)*EPSN(1) + T(1,2)*EPSN(2) 79 : DEFI(2) = T(2,1)*EPSN(1) + T(2,2)*EPSN(2) 80 : DEFI(4) = -(T(3,1)*EPSN(1) + T(3,2)*EPSN(2)) 81 : DEFI(1) = DEFI(1) + DEPST(1) 82 : DEFI(2) = DEFI(2) + DEPST(2) 83 : DEFI(4) = DEFI(4) + DEPST(4)/2 84 : C Passage dans le nouveau repere principal 85 : DINC(1) = T(1,1)*DEFI(1) + T(1,2)*DEFI(2) 86 : & +T(1,3)*DEFI(4) 87 : DINC(2) = T(2,1)*DEFI(1) + T(2,2)*DEFI(2) 88 : & +T(2,3)*DEFI(4) 89 : DINC(4) = T(3,1)*DEFI(1) +T(3,2)*DEFI(2) 90 : & + T(3,3)*DEFI(4) 91 : C 92 : IF (ABS(DINC(2) - DINC(1)).GT.(EPSILO*ABS(DINC(4)))) THEN 93 : TG2PHI = -2.D0*DINC(4)/(DINC(1) - DINC(2)) 94 : XDPHI = UNDEMI*ATAN(TG2PHI) 95 : CDPHI = COS(XDPHI) 96 : SDPHI = SIN(XDPHI) 97 : ELSE 98 : XDPHI = SIGN ((XPI/4.D0), DINC(4)*(DINC(1)-DINC(2))) 99 : CDPHI = SQRT(2.D0)/2.D0 100 : SDPHI = SIGN (CDPHI, DINC(4)*(DINC(1)-DINC(2))) 101 : ENDIF 102 : C 103 : CPHIF = CPHI*CDPHI - SPHI*SDPHI 104 : SPHIF = CPHI*SDPHI + SPHI*CDPHI 105 : T(1,1) = CPHIF**2 106 : T(1,2) = SPHIF**2 107 : T(1,3) = -2.D0*SPHIF*CPHIF 108 : T(2,1) = T(1,2) 109 : T(2,2) = T(1,1) 110 : T(2,3) = -T(1,3) 111 : T(3,1) = SPHIF*CPHIF 112 : T(3,2) = -SPHIF*CPHIF 113 : T(3,3) = (CPHIF**2) - (SPHIF**2) 114 : C 115 : EPSN(1) = T(1,1)*DEFI(1) + T(1,2)*DEFI(2) + T(1,3)*DEFI(4) 116 : EPSN(2) = T(2,1)*DEFI(1) + T(2,2)*DEFI(2) + T(2,3)*DEFI(4) 117 : XTEST = T(3,1)*DEFI(1)+T(3,2)*DEFI(2) + T(3,3)*DEFI(4) 118 : XTEST = XTEST / (UN + ABS(EPSN(1)) + ABS(EPSN(2))) 119 : IF (ABS(XTEST).GT.(1.D-10)) THEN 120 : WRITE(6,*)'CONPRI : hell and damnation!' 121 : ENDIF 122 : C 123 : C================================================================ 124 : C ECRITURE DE LA LOI DANS LE REPERE PRINCIPAL 125 : C================================================================ 126 : C 127 : C Calcul des variables d'endommagement et des limites elastiques 128 : 10 CONTINUE 129 : DO I=1,2 130 : IF (EPS(I).LE.EPSR) THEN 131 : SIGM(I) = XFTR - (XFTR - XFRE)*EPS(I)/EPSR 132 : EPSP(I) = BETA*EPS(I) 133 : XXX(I) = UN + YOUN*(UN - BETA)*EPS(I)/SIGM(I) 134 : ELSE 135 : SIGM(I) = XFRE 136 : EPSP(I) = BETA*EPSR 137 : XXX(I) = UN + YOUN*(UN - BETA)*EPSR/XFRE 138 : & + YOUN*(EPS(I) - EPSR)/XFRE 139 : ENDIF 140 : DAM(I) = UN 141 : XXX(I) = UN/XXX(I) 142 : ENDDO 143 : C Calcul des contraintes principales 144 : 500 CONTINUE 145 : CCCC(1,1) = UN/(YOUN*DAM(1)) 146 : CCCC(1,2) = -XNU/YOUN 147 : CCCC(2,1) = -XNU/YOUN 148 : CCCC(2,2) = UN/(YOUN*DAM(2)) 149 : FF(1) = EPSN(1) - EPSP(1) 150 : FF(2) = EPSN(2) - EPSP(2) 150 : CALL RESOLU(CCCC, FF , XX,KERRE) 151 : SIGP(1) = XX(1) 152 : SIGP(2) = XX(2) 153 : C "Endommagement" si necessaire 154 : IF (((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1))) 155 : & .OR.((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2)))) THEN 156 : IF (((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1))) 157 : & .AND.((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2)))) THEN 158 : IF (SIGP(1).GT.SIGP(2)) THEN 159 : DAM(1) = XXX(1) 160 : ELSE 161 : DAM(2) = XXX(2) 162 : ENDIF 163 : ELSE 164 : IF ((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1))) THEN 165 : DAM(1) = XXX(1) 166 : ELSE IF ((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2))) THEN 167 : DAM(2) = XXX(2) 168 : ENDIF 169 : ENDIF 170 : GOTO 500 171 : ENDIF 172 : IF (((SIGP(1).LT.XZERO).AND.(DAM(1).NE.UN)) 173 : & .OR.((SIGP(2).LT.XZERO).AND.(DAM(2).NE.UN))) THEN 174 : IF ((SIGP(1).LT.XZERO).AND.(DAM(1).NE.UN)) THEN 175 : DAM(1) = UN 176 : ELSE 177 : DAM(2) = UN 178 : ENDIF 179 : GOTO 500 180 : ENDIF 181 : C "Ecoulement" si necessaire 182 : NMEC(1) = 0 183 : NMEC(2) = 0 184 : IF (SIGP(1).GT.SIGM(1)) NMEC(1) = 1 185 : IF (SIGP(2).GT.SIGM(2)) NMEC(2) = 1 186 : NNMEC = NMEC(1) + NMEC(2) 187 : C 188 : IF (NNMEC.EQ.0) THEN 189 : IF ((DAM(1).EQ.UN).AND.(DAM(2).EQ.UN)) THEN 190 : ICAS = 1 191 : ELSE 192 : IF ((DAM(1).NE.UN).AND.(DAM(2).EQ.UN)) THEN 193 : ICAS = 11 194 : ELSE 195 : IF ((DAM(1).EQ.UN).AND.(DAM(2).NE.UN)) THEN 196 : ICAS = 12 197 : ELSE 198 : ICAS = 13 199 : ENDIF 200 : ENDIF 201 : ENDIF 202 : GOTO 9999 203 : ELSE 204 : IF (NNMEC.EQ.1) THEN 205 : IF (NMEC(1).EQ.1) THEN 206 : IMEC(1) = 1 207 : IMEC(2) = 2 208 : ELSE 209 : IMEC(1) = 2 210 : IMEC(2) = 1 211 : ENDIF 212 : GOTO 1000 213 : ELSE 214 : IF (SIGP(1).GE.SIGP(2)) THEN 215 : IMEC(1) = 1 216 : IMEC(2) = 2 217 : ELSE 218 : IMEC(1) = 2 219 : IMEC(2) = 1 220 : ENDIF 221 : GOTO 1000 222 : ENDIF 223 : ENDIF 224 : C Ecoulement 1 direction 225 : 1000 CONTINUE 226 : IF (EPS(IMEC(1)).LE.EPSR) THEN 227 : GOTO 1010 228 : ELSE 229 : GOTO 1020 230 : ENDIF 231 : C Cas avant rupture totale 232 : 1010 CONTINUE 233 : CCCC(1,1) = UN/YOUN + UN/XHH1 234 : CCCC(1,2) = -XNU/YOUN 235 : CCCC(2,1) = -XNU/YOUN 236 : CCCC(2,2) = UN/(DAM(IMEC(2))*YOUN) 237 : FF(1) = EPSN(IMEC(1)) + XFTR/XHH1 238 : FF(2) = EPSN(IMEC(2)) - EPSP(IMEC(2)) 238 : CALL RESOLU(CCCC, FF , XX,KERRE) 239 : EPSX(1) = EPSN(IMEC(1)) - XX(1)/YOUN + (XNU/YOUN)*XX(2) 240 : IF (EPSX(1).LT.XZERO) THEN 241 : CONTINUE 242 : GOTO 9999 243 : ENDIF 244 : IF (EPSX(1).GT.EPSR) THEN 245 : GOTO 1020 246 : ENDIF 247 : IF (XX(2).GT.SIGM(IMEC(2))) THEN 248 : GOTO 2000 249 : ENDIF 250 : SIGP(IMEC(1)) = XX(1) 251 : SIGP(IMEC(2)) = XX(2) 252 : EPS(IMEC(1)) = EPSX(1) 253 : EPSP(IMEC(1)) = BETA*EPS(IMEC(1)) 254 : IF (IMEC(1).EQ.1) THEN 255 : ICAS = 2 256 : ELSE 257 : ICAS = 3 258 : ENDIF 259 : GOTO 9999 260 : C Cas apres ouverture totale 261 : 1020 CONTINUE 262 : XX(1) = XFRE 263 : XX(2) = YOUN*DAM(IMEC(2))*(EPSN(IMEC(2)) - EPSP(IMEC(2))) 264 : & + XNU*DAM(IMEC(2))*XFRE 265 : IF (XX(2).GT.SIGM(IMEC(2))) THEN 266 : GOTO 2000 267 : ELSE 268 : SIGP(IMEC(1)) = XX(1) 269 : SIGP(IMEC(2)) = XX(2) 270 : EPS(IMEC(1)) = EPSN(IMEC(1)) - XX(1)/YOUN + (XNU/YOUN)*XX(2) 271 : EPSP(IMEC(1)) = BETA*EPSR 272 : IF (IMEC(1).EQ.1) THEN 273 : ICAS = 2 274 : ELSE 275 : ICAS = 3 276 : ENDIF 277 : GOTO 9999 278 : ENDIF 279 : C Cas 2 directions 280 : 2000 CONTINUE 281 : IF ((EPS(1).LE.EPSR).AND.(EPS(2).LE.EPSR)) THEN 282 : GOTO 2010 283 : ELSE 284 : IF ((EPS(1).GT.EPSR).AND.(EPS(2).LE.EPSR)) THEN 285 : IMEC(1) = 1 286 : IMEC(2) = 2 287 : GOTO 2020 288 : ELSE 289 : IF ((EPS(2).GT.EPSR).AND.(EPS(1).LE.EPSR)) THEN 290 : IMEC(1) = 2 291 : IMEC(2) = 1 292 : GOTO 2020 293 : ELSE 294 : IF ((EPS(1).GT.EPSR).AND.(EPS(2).GT.EPSR)) THEN 295 : GOTO 2030 296 : ENDIF 297 : ENDIF 298 : ENDIF 299 : ENDIF 300 : C Cas 2 directions avant rupture 301 : 2010 CONTINUE 302 : CCCC(1,1) = UN/XHH1 + UN/YOUN 303 : CCCC(1,2) = -XNU/YOUN 304 : CCCC(2,2) = UN/XHH1 + UN/YOUN 305 : CCCC(2,1) = -XNU/YOUN 306 : FF(1) = EPSN(1) + XFTR/XHH1 307 : FF(2) = EPSN(2) + XFTR/XHH1 307 : CALL RESOLU(CCCC,FF,XX,KERRE) 308 : EPSX(1) = EPSN(1) - XX(1)/YOUN + (XNU/YOUN)*XX(2) 309 : EPSX(2) = EPSN(2) - XX(2)/YOUN + (XNU/YOUN)*XX(1) 310 : IF ((EPSX(1).GT.EPSR).OR.(EPSX(2).GT.EPSR)) THEN 311 : IF ((EPSX(1).GT.EPSR).AND.(EPSX(2).LE.EPSR)) THEN 312 : IMEC(1) = 1 313 : IMEC(2) = 2 314 : ELSE 315 : IF ((EPSX(2).GT.EPSR).AND.(EPSX(1).LE.EPSR)) THEN 316 : IMEC(1) = 2 317 : IMEC(2) = 1 318 : ELSE 319 : IF ((EPSX(1).GT.EPSR).AND.(EPSX(2).GT.EPSR)) THEN 320 : IF (EPSX(1).GT.EPSX(2)) THEN 321 : IMEC(1) = 1 322 : IMEC(2) = 2 323 : ELSE 324 : IMEC(1) = 2 325 : IMEC(2) = 1 326 : ENDIF 327 : ENDIF 328 : ENDIF 329 : ENDIF 330 : GOTO 2020 331 : ELSE 332 : SIGP(1) = XX(1) 333 : SIGP(2) = XX(2) 334 : EPS(1) = EPSX(1) 335 : EPS(2) = EPSX(2) 336 : EPSP(1) = BETA*EPS(1) 337 : EPSP(2) = BETA*EPS(2) 338 : ENDIF 339 : ICAS = 4 340 : GOTO 9999 341 : C Cas 1 direction apres rupture 342 : 2020 CONTINUE 343 : XX(1) = XFRE 344 : XX(2) = (EPSN(IMEC(2)) + XNU*XFRE/YOUN + XFTR/XHH1)/ 345 : & (UN/XHH1 + UN/YOUN) 346 : EPSX(1) = EPSN(IMEC(1)) + (XNU/YOUN)*XX(2) - XX(1)/YOUN 347 : EPSX(2) = EPSN(IMEC(2)) + (XNU/YOUN)*XX(1) - XX(2)/YOUN 348 : IF (EPSX(2).GT.EPSR) THEN 349 : GOTO 2030 350 : ELSE 351 : SIGP(IMEC(1)) = XX(1) 352 : SIGP(IMEC(2)) = XX(2) 353 : EPS(IMEC(1)) = EPSX(1) 354 : EPS(IMEC(2)) = EPSX(2) 355 : EPSP(IMEC(1)) = BETA*EPSR 356 : EPSP(IMEC(2)) = BETA*EPS(IMEC(2)) 357 : ICAS = 4 358 : GOTO 9999 359 : ENDIF 360 : C Cas 2 directions apres rupture 361 : 2030 CONTINUE 362 : SIGP(1) = XFRE 363 : SIGP(2) = XFRE 364 : EPS(1) = EPSN(1) - ((UN - XNU)/YOUN)*XFRE 365 : EPS(2) = EPSN(2) - ((UN - XNU)/YOUN)*XFRE 366 : EPSP(1) = BETA*EPSR 367 : EPSP(2) = BETA*EPSR 368 : ICAS = 4 369 : GOTO 9999 370 : C================================================================ 371 : C PASSAGE DANS LE REPERE FIXE 372 : C=============================================================== 373 : 9999 CONTINUE 374 : VARF(1) = CPHIF - UN 375 : VARF(2) = SPHIF 376 : VARF(3) = EPS(1) 377 : VARF(4) = EPS(2) 378 : VARF(5) = EPSN(1) 379 : VARF(6) = EPSN(2) 380 : VARF(7) = ICAS 381 : SIGF(1) = T(1,1)*SIGP(1) + T(1,2)*SIGP(2) 382 : SIGF(2) = T(2,1)*SIGP(1) + T(2,2)*SIGP(2) 383 : SIGF(3) = XZERO 384 : SIGF(4) = -T(3,1)*SIGP(1) - T(3,2)*SIGP(2) 385 : DEFP(1) = T(1,1)*EPSP(1) + T(1,2)*EPSP(2) 386 : DEFP(2) = T(2,1)*EPSP(1) + T(2,2)*EPSP(2) 387 : DEFP(3) = XZERO 388 : DEFP(4) = -2.D0*(T(3,1)*EPSP(1) + T(3,2)*EPSP(2)) 389 : RETURN 390 : END 391 : 392 : 393 : 394 : 395 : 396 : 397 : 398 : 399 : 400 : 401 :
© Cast3M 2003 - All rights reserved.
Disclaimer