Télécharger crotat.eso

Retour à la liste

Numérotation des lignes :

crotat
  1. C CROTAT SOURCE PV 17/12/08 21:17:05 9660
  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)
  151. CALL RESOLU(CCCC, FF , XX,KERRE)
  152. SIGP(1) = XX(1)
  153. SIGP(2) = XX(2)
  154. C "Endommagement" si necessaire
  155. IF (((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1)))
  156. & .OR.((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2)))) THEN
  157. IF (((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1)))
  158. & .AND.((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2)))) THEN
  159. IF (SIGP(1).GT.SIGP(2)) THEN
  160. DAM(1) = XXX(1)
  161. ELSE
  162. DAM(2) = XXX(2)
  163. ENDIF
  164. ELSE
  165. IF ((SIGP(1).GT.XZERO).AND.(DAM(1).NE.XXX(1))) THEN
  166. DAM(1) = XXX(1)
  167. ELSE IF ((SIGP(2).GT.XZERO).AND.(DAM(2).NE.XXX(2))) THEN
  168. DAM(2) = XXX(2)
  169. ENDIF
  170. ENDIF
  171. GOTO 500
  172. ENDIF
  173. IF (((SIGP(1).LT.XZERO).AND.(DAM(1).NE.UN))
  174. & .OR.((SIGP(2).LT.XZERO).AND.(DAM(2).NE.UN))) THEN
  175. IF ((SIGP(1).LT.XZERO).AND.(DAM(1).NE.UN)) THEN
  176. DAM(1) = UN
  177. ELSE
  178. DAM(2) = UN
  179. ENDIF
  180. GOTO 500
  181. ENDIF
  182. C "Ecoulement" si necessaire
  183. NMEC(1) = 0
  184. NMEC(2) = 0
  185. IF (SIGP(1).GT.SIGM(1)) NMEC(1) = 1
  186. IF (SIGP(2).GT.SIGM(2)) NMEC(2) = 1
  187. NNMEC = NMEC(1) + NMEC(2)
  188. C
  189. IF (NNMEC.EQ.0) THEN
  190. IF ((DAM(1).EQ.UN).AND.(DAM(2).EQ.UN)) THEN
  191. ICAS = 1
  192. ELSE
  193. IF ((DAM(1).NE.UN).AND.(DAM(2).EQ.UN)) THEN
  194. ICAS = 11
  195. ELSE
  196. IF ((DAM(1).EQ.UN).AND.(DAM(2).NE.UN)) THEN
  197. ICAS = 12
  198. ELSE
  199. ICAS = 13
  200. ENDIF
  201. ENDIF
  202. ENDIF
  203. GOTO 9999
  204. ELSE
  205. IF (NNMEC.EQ.1) THEN
  206. IF (NMEC(1).EQ.1) THEN
  207. IMEC(1) = 1
  208. IMEC(2) = 2
  209. ELSE
  210. IMEC(1) = 2
  211. IMEC(2) = 1
  212. ENDIF
  213. GOTO 1000
  214. ELSE
  215. IF (SIGP(1).GE.SIGP(2)) THEN
  216. IMEC(1) = 1
  217. IMEC(2) = 2
  218. ELSE
  219. IMEC(1) = 2
  220. IMEC(2) = 1
  221. ENDIF
  222. GOTO 1000
  223. ENDIF
  224. ENDIF
  225. C Ecoulement 1 direction
  226. 1000 CONTINUE
  227. IF (EPS(IMEC(1)).LE.EPSR) THEN
  228. GOTO 1010
  229. ELSE
  230. GOTO 1020
  231. ENDIF
  232. C Cas avant rupture totale
  233. 1010 CONTINUE
  234. CCCC(1,1) = UN/YOUN + UN/XHH1
  235. CCCC(1,2) = -XNU/YOUN
  236. CCCC(2,1) = -XNU/YOUN
  237. CCCC(2,2) = UN/(DAM(IMEC(2))*YOUN)
  238. FF(1) = EPSN(IMEC(1)) + XFTR/XHH1
  239. FF(2) = EPSN(IMEC(2)) - EPSP(IMEC(2))
  240. CALL RESOLU(CCCC, FF , XX,KERRE)
  241. EPSX(1) = EPSN(IMEC(1)) - XX(1)/YOUN + (XNU/YOUN)*XX(2)
  242. IF (EPSX(1).LT.XZERO) THEN
  243. CONTINUE
  244. GOTO 9999
  245. ENDIF
  246. IF (EPSX(1).GT.EPSR) THEN
  247. GOTO 1020
  248. ENDIF
  249. IF (XX(2).GT.SIGM(IMEC(2))) THEN
  250. GOTO 2000
  251. ENDIF
  252. SIGP(IMEC(1)) = XX(1)
  253. SIGP(IMEC(2)) = XX(2)
  254. EPS(IMEC(1)) = EPSX(1)
  255. EPSP(IMEC(1)) = BETA*EPS(IMEC(1))
  256. IF (IMEC(1).EQ.1) THEN
  257. ICAS = 2
  258. ELSE
  259. ICAS = 3
  260. ENDIF
  261. GOTO 9999
  262. C Cas apres ouverture totale
  263. 1020 CONTINUE
  264. XX(1) = XFRE
  265. XX(2) = YOUN*DAM(IMEC(2))*(EPSN(IMEC(2)) - EPSP(IMEC(2)))
  266. & + XNU*DAM(IMEC(2))*XFRE
  267. IF (XX(2).GT.SIGM(IMEC(2))) THEN
  268. GOTO 2000
  269. ELSE
  270. SIGP(IMEC(1)) = XX(1)
  271. SIGP(IMEC(2)) = XX(2)
  272. EPS(IMEC(1)) = EPSN(IMEC(1)) - XX(1)/YOUN + (XNU/YOUN)*XX(2)
  273. EPSP(IMEC(1)) = BETA*EPSR
  274. IF (IMEC(1).EQ.1) THEN
  275. ICAS = 2
  276. ELSE
  277. ICAS = 3
  278. ENDIF
  279. GOTO 9999
  280. ENDIF
  281. C Cas 2 directions
  282. 2000 CONTINUE
  283. IF ((EPS(1).LE.EPSR).AND.(EPS(2).LE.EPSR)) THEN
  284. GOTO 2010
  285. ELSE
  286. IF ((EPS(1).GT.EPSR).AND.(EPS(2).LE.EPSR)) THEN
  287. IMEC(1) = 1
  288. IMEC(2) = 2
  289. GOTO 2020
  290. ELSE
  291. IF ((EPS(2).GT.EPSR).AND.(EPS(1).LE.EPSR)) THEN
  292. IMEC(1) = 2
  293. IMEC(2) = 1
  294. GOTO 2020
  295. ELSE
  296. IF ((EPS(1).GT.EPSR).AND.(EPS(2).GT.EPSR)) THEN
  297. GOTO 2030
  298. ENDIF
  299. ENDIF
  300. ENDIF
  301. ENDIF
  302. C Cas 2 directions avant rupture
  303. 2010 CONTINUE
  304. CCCC(1,1) = UN/XHH1 + UN/YOUN
  305. CCCC(1,2) = -XNU/YOUN
  306. CCCC(2,2) = UN/XHH1 + UN/YOUN
  307. CCCC(2,1) = -XNU/YOUN
  308. FF(1) = EPSN(1) + XFTR/XHH1
  309. FF(2) = EPSN(2) + XFTR/XHH1
  310. CALL RESOLU(CCCC,FF,XX,KERRE)
  311. EPSX(1) = EPSN(1) - XX(1)/YOUN + (XNU/YOUN)*XX(2)
  312. EPSX(2) = EPSN(2) - XX(2)/YOUN + (XNU/YOUN)*XX(1)
  313. IF ((EPSX(1).GT.EPSR).OR.(EPSX(2).GT.EPSR)) THEN
  314. IF ((EPSX(1).GT.EPSR).AND.(EPSX(2).LE.EPSR)) THEN
  315. IMEC(1) = 1
  316. IMEC(2) = 2
  317. ELSE
  318. IF ((EPSX(2).GT.EPSR).AND.(EPSX(1).LE.EPSR)) THEN
  319. IMEC(1) = 2
  320. IMEC(2) = 1
  321. ELSE
  322. IF ((EPSX(1).GT.EPSR).AND.(EPSX(2).GT.EPSR)) THEN
  323. IF (EPSX(1).GT.EPSX(2)) THEN
  324. IMEC(1) = 1
  325. IMEC(2) = 2
  326. ELSE
  327. IMEC(1) = 2
  328. IMEC(2) = 1
  329. ENDIF
  330. ENDIF
  331. ENDIF
  332. ENDIF
  333. GOTO 2020
  334. ELSE
  335. SIGP(1) = XX(1)
  336. SIGP(2) = XX(2)
  337. EPS(1) = EPSX(1)
  338. EPS(2) = EPSX(2)
  339. EPSP(1) = BETA*EPS(1)
  340. EPSP(2) = BETA*EPS(2)
  341. ENDIF
  342. ICAS = 4
  343. GOTO 9999
  344. C Cas 1 direction apres rupture
  345. 2020 CONTINUE
  346. XX(1) = XFRE
  347. XX(2) = (EPSN(IMEC(2)) + XNU*XFRE/YOUN + XFTR/XHH1)/
  348. & (UN/XHH1 + UN/YOUN)
  349. EPSX(1) = EPSN(IMEC(1)) + (XNU/YOUN)*XX(2) - XX(1)/YOUN
  350. EPSX(2) = EPSN(IMEC(2)) + (XNU/YOUN)*XX(1) - XX(2)/YOUN
  351. IF (EPSX(2).GT.EPSR) THEN
  352. GOTO 2030
  353. ELSE
  354. SIGP(IMEC(1)) = XX(1)
  355. SIGP(IMEC(2)) = XX(2)
  356. EPS(IMEC(1)) = EPSX(1)
  357. EPS(IMEC(2)) = EPSX(2)
  358. EPSP(IMEC(1)) = BETA*EPSR
  359. EPSP(IMEC(2)) = BETA*EPS(IMEC(2))
  360. ICAS = 4
  361. GOTO 9999
  362. ENDIF
  363. C Cas 2 directions apres rupture
  364. 2030 CONTINUE
  365. SIGP(1) = XFRE
  366. SIGP(2) = XFRE
  367. EPS(1) = EPSN(1) - ((UN - XNU)/YOUN)*XFRE
  368. EPS(2) = EPSN(2) - ((UN - XNU)/YOUN)*XFRE
  369. EPSP(1) = BETA*EPSR
  370. EPSP(2) = BETA*EPSR
  371. ICAS = 4
  372. GOTO 9999
  373. C================================================================
  374. C PASSAGE DANS LE REPERE FIXE
  375. C===============================================================
  376. 9999 CONTINUE
  377. VARF(1) = CPHIF - UN
  378. VARF(2) = SPHIF
  379. VARF(3) = EPS(1)
  380. VARF(4) = EPS(2)
  381. VARF(5) = EPSN(1)
  382. VARF(6) = EPSN(2)
  383. VARF(7) = ICAS
  384. SIGF(1) = T(1,1)*SIGP(1) + T(1,2)*SIGP(2)
  385. SIGF(2) = T(2,1)*SIGP(1) + T(2,2)*SIGP(2)
  386. SIGF(3) = XZERO
  387. SIGF(4) = -T(3,1)*SIGP(1) - T(3,2)*SIGP(2)
  388. DEFP(1) = T(1,1)*EPSP(1) + T(1,2)*EPSP(2)
  389. DEFP(2) = T(2,1)*EPSP(1) + T(2,2)*EPSP(2)
  390. DEFP(3) = XZERO
  391. DEFP(4) = -2.D0*(T(3,1)*EPSP(1) + T(3,2)*EPSP(2))
  392. RETURN
  393. END
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales