Télécharger aclj.eso

Retour à la liste

Numérotation des lignes :

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

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