Télécharger rotkta.eso

Retour à la liste

Numérotation des lignes :

  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))
  54. CALL ZERO(XKTAT,4,4)
  55. CALL ZERO(XKTAT2,3,3)
  56. C
  57. C Remplissage de la matrice de transformation
  58. C (Ecrite pour le tenseur des deformations contenant 2*EPSXY)
  59. C
  60. TP(1,1) = CPHI**2
  61. TP(1,2) = SPHI**2
  62. TP(1,3) = -SPHI*CPHI
  63. TP(2,1) = TP(1,2)
  64. TP(2,2) = TP(1,1)
  65. TP(2,3) = -TP(1,3)
  66. TP(3,1) = 2.*SPHI*CPHI
  67. TP(3,2) = -2.*SPHI*CPHI
  68. TP(3,3) = (CPHI**2) - (SPHI**2)
  69. C
  70. C Ecrite pour les contraintes
  71. C
  72. TM(1,1) = CPHI**2
  73. TM(1,2) = SPHI**2
  74. TM(1,3) = 2.*SPHI*CPHI
  75. TM(2,1) = TM(1,2)
  76. TM(2,2) = TM(1,1)
  77. TM(2,3) = -TM(1,3)
  78. TM(3,1) = -SPHI*CPHI
  79. TM(3,2) = SPHI*CPHI
  80. TM(3,3) = (CPHI**2) - (SPHI**2)
  81. C
  82. C
  83. C================================================================
  84. C MATRICE TANGENTE DANS LE REPERE PRINCIPAL
  85. C================================================================
  86. C
  87. C Calcul des variables d'endommagement
  88. DO I=1,2
  89. IF (EPS(I).LE.EPSR) THEN
  90. SIGM(I) = XFTR - (XFTR - XFRE)*EPS(I)/EPSR
  91. EPSP(I) = BETA*EPS(I)
  92. XXX(I) = UN + YOUN*(UN - BETA)*EPS(I)/SIGM(I)
  93. ELSE
  94. SIGM(I) = XFRE
  95. EPSP(I) = BETA*EPSR
  96. XXX(I) = UN + YOUN*(UN - BETA)*EPSR/XFRE
  97. &+ YOUN*(EPS(I) - EPSR)/XFRE
  98. ENDIF
  99. XXX(I) = UN/XXX(I)
  100. DAM(I) = UN
  101. ENDDO
  102. C
  103. C
  104. C
  105. IF (ICAS.EQ.1) THEN
  106. GOTO 1000
  107. ELSE
  108. IF (ICAS.GE.11) THEN
  109. IF (ICAS.EQ.11) DAM(1) = XXX(1)
  110. IF (ICAS.EQ.12) DAM(2) = XXX(2)
  111. IF (ICAS.EQ.13) THEN
  112. DAM(1) = XXX(1)
  113. DAM(2) = XXX(2)
  114. ENDIF
  115. GOTO 1000
  116. ELSE
  117. IF (ICAS.EQ.2) THEN
  118. IMEC(1) = 1
  119. IMEC(2) = 2
  120. GOTO 2000
  121. ELSE
  122. IF (ICAS.EQ.3) THEN
  123. IMEC(1) = 2
  124. IMEC(2) = 1
  125. GOTO 2000
  126. ELSE
  127. IF (ICAS.EQ.4) THEN
  128. GOTO 3000
  129. ENDIF
  130. ENDIF
  131. ENDIF
  132. ENDIF
  133. ENDIF
  134. C
  135. C Cas sans direction d'ecoulement
  136. C
  137. 1000 CONTINUE
  138. XKINV(1,1)=(UN/(YOUN*DAM(1)))
  139. XKINV(1,2)=((-1.)*XNU/YOUN)
  140. XKINV(2,1)=((-1.)*XNU/YOUN)
  141. XKINV(2,2)=(UN/(YOUN*DAM(2)))
  142. GOTO 5000
  143. C
  144. C Cas avec 1 direction d'ecoulement
  145. C
  146. 2000 CONTINUE
  147. IF (EPS(IMEC(1)).LE.EPSR) THEN
  148. XKINV(IMEC(1),IMEC(1)) = UN/YOUN + UN/XHH1
  149. XKINV(1,2) = -XNU/YOUN
  150. XKINV(2,1) = -XNU/YOUN
  151. XKINV(IMEC(2),IMEC(2)) = UN/(DAM(IMEC(2))*YOUN)
  152. GOTO 5000
  153. ELSE
  154. XKTAP(IMEC(1),IMEC(1)) = XZER
  155. XKTAP(1,2) = XZER
  156. XKTAP(2,1) = XZER
  157. XKTAP(IMEC(2),IMEC(2)) = YOUN*DAM(IMEC(2))
  158. GOTO 9999
  159. ENDIF
  160. C
  161. C Cas avec 2 directions d'ecoulement
  162. C
  163. C
  164. 3000 CONTINUE
  165. IF ((EPS(1).LE.EPSR).AND.(EPS(2).LE.EPSR)) THEN
  166. XKINV(1,1) = UN/YOUN + UN/XHH1
  167. XKINV(1,2) = -XNU/YOUN
  168. XKINV(2,1) = -XNU/YOUN
  169. XKINV(2,2) = UN/YOUN + UN/XHH1
  170. GOTO 5000
  171. ELSE
  172. IF ((EPS(1).GT.EPSR).AND.(EPS(2).LE.EPSR)) THEN
  173. XKTAP(1,1) = XZER
  174. XKTAP(1,2) = XZER
  175. XKTAP(2,1) = XZER
  176. XKTAP(2,2) = UN/((UN/XHH1 + UN/YOUN))
  177. GOTO 9999
  178. ELSE
  179. IF ((EPS(1).LE.EPSR).AND.(EPS(2).GT.EPSR)) THEN
  180. XKTAP(1,1) = UN/((UN/XHH1 + UN/YOUN))
  181. XKTAP(1,2) = XZER
  182. XKTAP(2,1) = XZER
  183. XKTAP(2,2) = XZER
  184. GOTO 9999
  185. ELSE
  186. XKTAP(1,1) = XZER
  187. XKTAP(1,2) = XZER
  188. XKTAP(2,1) = XZER
  189. XKTAP(2,2) = XZER
  190. GOTO 9999
  191. ENDIF
  192. ENDIF
  193. ENDIF
  194. C
  195. C On inverse la matrice si necessaire
  196. C
  197. 5000 CONTINUE
  198. XDET = XKINV(1,1)*XKINV(2,2) - XKINV(1,2)*XKINV(2,1)
  199. IF (ABS(XDET).GT.EPSILO) THEN
  200. XDET = UN/XDET
  201. XKTAP(1,1) = XDET*XKINV(2,2)
  202. XKTAP(2,2) = XDET*XKINV(1,1)
  203. XKTAP(1,2) = -XDET*XKINV(2,1)
  204. XKTAP(2,1) = -XDET*XKINV(1,2)
  205. ELSE
  206. KERRE = 2
  207. WRITE(6,*)'Impossible d inverser'
  208. ENDIF
  209. C================================================================
  210. C PASSAGE DANS LE REPERE FIXE
  211. C===============================================================
  212. 9999 CONTINUE
  213. XKTAP(1,3) = XZER
  214. XKTAP(2,3) = XZER
  215. XKTAP(3,1) = XZER
  216. XKTAP(3,2) = XZER
  217. EPSF(1) = TP(1,1)*EPSN(1) + TP(1,2)*EPSN(2)
  218. EPSF(2) = TP(2,1)*EPSN(1) + TP(2,2)*EPSN(2)
  219. IF (ABS(EPSF(2)-EPSF(1)).GT.EPSILO) THEN
  220. XKTAP(3,3) = (SIGF(2)-SIGF(1))/(2.*(EPSF(2)-EPSF(1)))
  221. ELSE
  222. XKTAP(3,3) = XZER
  223. ENDIF
  224. CALL MATMAT(TM,XKTAP,3,3,3,XMINT)
  225. CALL MATMAT(XMINT,TP,3,3,3,XKTAT2)
  226. XKTAT(1,1)=XKTAT2(1,1)
  227. XKTAT(1,2)=XKTAT2(1,2)
  228. XKTAT(2,1)=XKTAT2(2,1)
  229. XKTAT(2,2)=XKTAT2(2,2)
  230. XKTAT(4,1)=XKTAT2(3,1)
  231. XKTAT(1,4)=XKTAT2(1,3)
  232. XKTAT(4,2)=XKTAT2(3,2)
  233. XKTAT(2,4)=XKTAT2(2,3)
  234. XKTAT(4,4)=XKTAT2(3,3)
  235. RETURN
  236. END
  237.  
  238.  
  239.  
  240.  
  241.  

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