Télécharger rotkta.eso

Retour à la liste

Numérotation des lignes :

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

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