Télécharger aclj.eso

Retour à la liste

Numérotation des lignes :

  1. C ACLJ SOURCE CT247714 17/09/07 21:15:01 9530
  2.  
  3. SUBROUTINE ACLJ (WRK52, WRK53, WRK54,NVARI,IECOU)
  4. IMPLICIT REAL*8(a-H, o-Z)
  5. IMPLICIT INTEGER (i-N)
  6.  
  7. -INC CCOPTIO
  8. -INC SMEVOLL
  9. -INC SMLREEL
  10. -INC DECHE
  11.  
  12. C 'Cont: Initial stress'
  13. CONT = SIG0(1)
  14. C 'Normal stresses'
  15. CON2 = SIG0(2)
  16. CON3 = SIG0(3)
  17.  
  18. C 'Gliss: Initial slip'
  19. GLISS = EPST0(1)
  20. C 'EPSI 1-2: Initial normal disp'
  21. EPSI2 = EPST0(2)
  22. EPSI3 = EPST0(3)
  23.  
  24. C 'DGLIS: imposed disp in tangent'
  25. DGLIS = DEPST(1)
  26. C 'DEPS 2-3: imposed disp in normals'
  27. DEPS2 = DEPST(2)
  28. DEPS3 = DEPST(3)
  29.  
  30. C 'GMAXP: Max slip in + direction'
  31. C 'GMAXN: Max slip in - direction'
  32. C 'CMAXP: Stress at GMAXP'
  33. C 'CMAXN: Stress at GMAXN'
  34. GMAXP = VAR0(1)
  35. GMAXN = VAR0(2)
  36. CMAXP = VAR0(3)
  37. CMAXN = VAR0(4)
  38.  
  39. MEVOLL = INT(VALMAT(3))
  40. SEGACT MEVOLL
  41. KEVOLL = IEVOLL(1)
  42. SEGACT KEVOLL
  43.  
  44. C 'ADHENSION LAW'
  45. MLREE1 = IPROGX
  46. MLREE2 = IPROGY
  47. SEGACT MLREE1, MLREE2
  48.  
  49. C 'GLISSEMENTS/DEPLACEMENTS'
  50. C 'GTOT: Final slip'
  51. GTOT = GLISS + DGLIS
  52. C 'GABS: Absolute value of GTOT'
  53. GABS = ABS(GTOT)
  54. C 'EPSN1-2: Final disp in normal directions'
  55. EPSN1 = EPSI2 + DEPS2
  56. EPSN2 = EPSI3 + DEPS3
  57. C 'CP1 = Last stress value of adhesion graph'
  58. CP1 = MLREE2.PROG(MLREE2.PROG(/1))
  59. CN1 = (-1.D0)*CP1
  60. C 'GP1 = Second disp value of adhesion graph'
  61. GP1 = MLREE1.PROG(2)
  62. GN1 = (-1.D0)*GP1
  63. CCP1 = MLREE2.PROG(2)
  64. CCN1 = (-1.D0)*CCP1
  65. C 'Difference between fist 2 points in adhesion graph'
  66. C 'GP2 = Difference of displacement'
  67. C 'CP2 = Difference of stress'
  68. C 'TAN0 = Tangent of elastic part'
  69. GP2 = MLREE1.PROG(2) - MLREE1.PROG(1)
  70. CP2 = MLREE2.PROG(2) - MLREE2.PROG(1)
  71. TAN0 = CP2/GP2
  72.  
  73. DO I = 2, MLREE1.PROG(/1)
  74. C1 = MLREE2.PROG(I-1)
  75. IF (CP1.GT.C1) THEN
  76. G1 = MLREE1.PROG(I-1)
  77. G2 = MLREE1.PROG(I)
  78. C1 = MLREE2.PROG(I-1)
  79. C2 = MLREE2.PROG(I)
  80. TAN1 = (C2-C1)/(G2-G1)
  81. GGP1 = G1+(CP1-C1)/TAN1
  82. GGN1 = (-1.D0)*GGP1
  83. END IF
  84. END DO
  85.  
  86. GLIM1 = GLISS-(CONT+CP1)/TAN0
  87. GLIM2 = GLISS+(CP1-CONT)/TAN0
  88.  
  89. GLIM1 = MIN(GLIM1,GLIM2)
  90. GLIM2 = MAX(GLIM1,GLIM2)
  91.  
  92. GLIMP1 = GMAXP-(CP1+CMAXP)/TAN0
  93. GLIMP2 = GMAXP+(CP1-CMAXP)/TAN0
  94.  
  95. GLIMN1 = GMAXN-(CP1+CMAXN)/TAN0
  96. GLIMN2 = GMAXN+(CP1-CMAXN)/TAN0
  97.  
  98. IF (DGLIS.GE.0.D0) THEN
  99. c WRITE(6,*) 'LOADING'
  100. IF (GTOT.GE.GMAXP) THEN
  101. c WRITE(6,*) 'Case 10:Monotonic Loading in Plastic Region'
  102. INDC = 10
  103. ELSE IF (GTOT.LE.GMAXP) THEN
  104. IF (GTOT.GE.GLISS.AND.GTOT.LE.GLIM2) THEN
  105. c WRITE(6,*) 'Case 1'
  106. INDC = 1
  107. ELSE IF (GTOT.GT.GLIM2.AND.GTOT.LT.GLIMP2) THEN
  108. c WRITE(6,*) 'Case 3'
  109. INDC = 3
  110. ELSE IF (GTOT.GE.GLIMP2.AND.GTOT.LE.GMAXP) THEN
  111. c WRITE(6,*) 'Case 5'
  112. INDC = 5
  113. END IF
  114. END IF
  115. ELSE IF (DGLIS.LE.0.D0)THEN
  116. c WRITE(6,*) 'UNLOADING'
  117. IF (GTOT.LE.GMAXN) THEN
  118. c WRITE(6,*) 'Case 20:Monotonic Unloading in Plastic Region'
  119. INDC = 20
  120. ELSE IF (GTOT.GE.GMAXN) THEN
  121. IF (GTOT.GE.GLIM1.AND.GTOT.LE.GLISS) THEN
  122. c WRITE(6,*) 'Case 2'
  123. INDC = 2
  124. ELSE IF (GTOT.GT.GLIMN1.AND.GTOT.LT.GLIM1) THEN
  125. c WRITE(6,*) 'Case 4'
  126. INDC = 4
  127. ELSE IF (GTOT.LE.GLIMN1.AND.GTOT.GE.GMAXN) THEN
  128. c WRITE(6,*) 'Case 6'
  129. INDC = 6
  130. END IF
  131. END IF
  132. END IF
  133.  
  134. IF (INDC.EQ.1) THEN
  135. TAN1 = TAN0
  136. CTOT = CONT+(GTOT-GLISS)*TAN1
  137. GMAXPF = GMAXP
  138. GMAXNF = GMAXN
  139. CMAXPF = CMAXP
  140. CMAXNF = CMAXN
  141. ELSE IF (INDC.EQ.2) THEN
  142. TAN1 = TAN0
  143. CTOT = CONT+(GTOT-GLISS)*TAN1
  144. GMAXPF = GMAXP
  145. GMAXNF = GMAXN
  146. CMAXPF = CMAXP
  147. CMAXNF = CMAXN
  148. ELSE IF (INDC.EQ.3) THEN
  149. TAN1 = 0.D0
  150. CTOT = CP1
  151. GMAXP = MAX(GGP1,GMAXP)
  152. GMAXPF = GMAXP
  153. GMAXNF = GMAXN
  154. CMAXPF = CMAXP
  155. CMAXNF = CMAXN
  156. ELSE IF (INDC.EQ.4) THEN
  157. TAN1 = 0.D0
  158. CTOT = CN1
  159. GMAXN = MIN(GGN1,GMAXN)
  160. GMAXPF = GMAXP
  161. GMAXNF = GMAXN
  162. CMAXPF = CMAXP
  163. CMAXNF = CMAXN
  164. ELSE IF (INDC.EQ.5) THEN
  165. TAN1 = TAN0
  166. CTOT = CP1+(GTOT-GLIMP2)*TAN1
  167. GMAXPF = GMAXP
  168. GMAXNF = GMAXN
  169. CMAXPF = CMAXP
  170. CMAXNF = CMAXN
  171. ELSE IF (INDC.EQ.6) THEN
  172. TAN1 = TAN0
  173. CTOT = CN1+(GTOT-GLIMN1)*TAN1
  174. GMAXPF = GMAXP
  175. GMAXNF = GMAXN
  176. CMAXPF = CMAXP
  177. CMAXNF = CMAXN
  178. ELSE IF (INDC.EQ.10.) THEN
  179. DO I = 2, MLREE1.PROG(/1)
  180. G1 = MLREE1.PROG(I-1)
  181. G2 = MLREE1.PROG(I)
  182. IF (GTOT.LE.G2.AND.GTOT.GE.G1) THEN
  183. G1 = MLREE1.PROG(I-1)
  184. G2 = MLREE1.PROG(I)
  185. C1 = MLREE2.PROG(I-1)
  186. C2 = MLREE2.PROG(I)
  187. TAN1 = (C2-C1)/(G2-G1)
  188. CTOT = C1+(GTOT-G1)*TAN1
  189. GMAXPF = GTOT
  190. GMAXNF = GMAXN
  191. CMAXPF = CTOT
  192. CMAXNF = CMAXN
  193. END IF
  194. END DO
  195. ELSE IF (INDC.EQ.20.) THEN
  196. DO I = 2, MLREE1.PROG(/1)
  197. G1 = MLREE1.PROG(I-1)
  198. G2 = MLREE1.PROG(I)
  199. IF (GABS.LE.G2.AND.GABS.GE.G1) THEN
  200. G1 = (-1.D0)*MLREE1.PROG(I-1)
  201. G2 = (-1.D0)*MLREE1.PROG(I)
  202. C1 = (-1.D0)*MLREE2.PROG(I-1)
  203. C2 = (-1.D0)*MLREE2.PROG(I)
  204. TAN1 = (C2-C1)/(G2-G1)
  205. CTOT = C1+(GTOT-G1)*TAN1
  206. GMAXPF = GMAXP
  207. GMAXNF = GTOT
  208. CMAXPF = CMAXP
  209. CMAXNF = CTOT
  210. END IF
  211. END DO
  212. END IF
  213.  
  214. SIGF(1) = CTOT
  215. SIGF(2) = VALMAT(2)*EPSN1
  216. SIGF(3) = VALMAT(2)*EPSN2
  217. VARF(1) = GMAXPF
  218. VARF(2) = GMAXNF
  219. VARF(3) = CMAXPF
  220. VARF(4) = CMAXNF
  221. VARF(5) = TAN1
  222.  
  223. c WRITE(6,*) 'SIGF(1):', SIGF(1)
  224. c WRITE(6,*) 'SIGF(2):', SIGF(2), 'SIGF(3):', SIGF(3)
  225. c WRITE(6,*) 'VALMAT2:', VALMAT(2), 'VALMAT3:', VALMAT(3)
  226. C WRITE(6,*) 'EPSN1:', EPSN1, 'EPSN2:', EPSN2
  227. c WRITE(6,*) 'EPSI2', EPSI2, 'DEPS2', DEPS2
  228. c WRITE(6,*) 'EPSI3', EPSI3, 'DEPS3', DEPS3
  229.  
  230.  
  231.  
  232. * WRITE(6,*) 'GLISS', GLISS, 'CONT', CONT
  233. * WRITE(6,*) 'GTOT', GTOT, 'CTOT', CTOT
  234. * WRITE(6,*) 'GMAXP', GMAXP, 'CMAXP', CMAXP
  235. * WRITE(6,*) 'GMAXPF', GMAXPF, 'CMAXPF', CMAXPF
  236. * WRITE(6,*) 'GMAXN', GMAXN, 'CMAXN', CMAXN
  237. * WRITE(6,*) 'GMAXNF', GMAXNF, 'CMAXNF', CMAXNF
  238.  
  239. RETURN
  240. END
  241.  
  242.  
  243.  

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