Download crotat.eso

Back to the list

   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