Télécharger dp_sol.eso

Retour à la liste

Numérotation des lignes :

  1. C DP_SOL SOURCE CB215821 17/11/30 21:16:00 9639
  2. C DP_SOIL SOURCE AF221230 12/10/04 21:15:18 7520
  3. SUBROUTINE DP_SOL (XMAT,VAR0,VARF,SIG0,SIGF,DEPST,XCAR)
  4. C
  5. C====&===1=========2=========3=========4=========5=========6=========7==
  6. C Commentaires : Loi Drucker Prager avec ecrouissage non lineaire et
  7. C loi non associée
  8. C Traits : -
  9. C
  10. C Auteur : A. Frau (Dr - Ing.) - CEA/DEN/DANS/DM2S/SEMT/EMSI
  11. C====&===1=========2=========3=========4=========5=========6=========7==
  12. C
  13. C----DECLARATION GENERALES----------------------------------------------
  14. C
  15. IMPLICIT INTEGER(I-N)
  16. IMPLICIT REAL*8(A-H,O-Z)
  17. -INC CCOPTIO
  18. C
  19. C----DECLARATION SEGMENTS-----------------------------------------------
  20. C
  21. REAL*8 XMAT(*),SIG0(*),SIGF(*),VAR0(*),VARF(*),DEPST(*),XCAR(*)
  22. REAL*8 XNU,XYOUN,XSY
  23. REAL*8 XMU,XLAM,XALPHA,XSIGI,XBET1,XGAM1,XDEL1
  24. REAL*8 XDEEPP(6),XEPP0(6)
  25. REAL*8 XSIGT(6),XCHIT,XQT,XFHIT,XDSIGT(6),XNDSIGT
  26. REAL*8 XNUT(6),XPIT(6)
  27. REAL*8 XTOL1,XVPL1
  28. REAL*8 XGAMN,XSIGN(6),XEPPN(6),XCHIN,XQN,XFHIN,XDSIGN(6),XNDSIGN
  29. REAL*8 XGAMN1,XSIGN1(6),XEPPN1(6),XCHIN1,XQN1,XFHIN1
  30. REAL*8 XDFDG,XDEGAM,XDSIGN1(6),XNDSIGN1,XTSIGN1
  31. REAL*8 XGAMF,XCHIF,XQF,XEPPF(6),XVALT1,XVALT2
  32. C
  33. C----CONTROLE OPTION CALCUL --------------------------------------------
  34. IF ((IFOUR.NE.2).AND.(IFOUR.NE.0).AND.(IFOUR.NE.-1)) THEN
  35. WRITE(IOIMP,10000)
  36. 10000 FORMAT('Option calcul mauvais')
  37. WRITE(IOIMP,10001)
  38. 10001 FORMAT(' seulement:')
  39. WRITE(IOIMP,10002)
  40. 10002 FORMAT(' 3D MODE PLAN')
  41. WRITE(IOIMP,10003)
  42. 10003 FORMAT(' 2D MODE AXIS')
  43. WRITE(IOIMP,10004)
  44. 10004 FORMAT(' 2D MODE PLAN')
  45. STOP
  46. ENDIF
  47. C
  48. C----MISE EN DONNEES----------------------------------------------------
  49. C
  50. C Module de young
  51. XYOUN = XMAT(1)
  52. C Coef Poisson
  53. XNU = XMAT(2)
  54. C alpha
  55. XALPHA = XMAT(5)
  56. C Sigma_y
  57. XSY = XMAT(6)
  58. C Sig_inf
  59. XSIGI = XMAT(7)
  60. C Beta
  61. XBET1 = XMAT(8)
  62. C Gamma
  63. XGAM1 = XMAT(9)
  64. C Delta
  65. XDEL1 = XMAT(10)
  66. C
  67. C----VARIABLES INTERNES-------------------------------------------------
  68.  
  69. c Coef mu elastique
  70. XMU = (0.5D0)*((XYOUN)/(1.0D0 + XNU))
  71.  
  72. c Coef lambda elastique
  73. XLAM = ((XNU)/(1.0D0-((2.0D0)*(XNU))))
  74. C
  75. C----ACTUALISATION DEFORMATION------------------------------------------
  76. C
  77. C
  78. C----PREDICTION ELASTIQUE-----------------------------------------------
  79. C
  80. c gamma_test = 0 donc le delta_plastique = 0
  81. c Initialissation Eps_pla_initiales
  82. DO 11 I1=1,6
  83. XDEEPP(I1) = 0.0D0
  84. XEPP0(I1) = VAR0(I1)
  85. 11 CONTINUE
  86. c
  87. c Calcul de la variable q_test = q_ini -> gamma_test=0
  88. XCHIT = VAR0(7)
  89. c
  90. c Calcul de la variable q_test = q_ini -> gamma_test=0
  91. XQT = ((-1.0D0)*(XSIGI - XSY))*(1.0D0
  92. & - EXP(((-1.0D0)*(XBET1))*(XCHIT)))
  93. c
  94. c Calcul Sigma_test a partir du step initiale
  95. DO 12 I1=1,6
  96. IF (I1.LE.3) THEN
  97. XSIGT(I1) = SIG0(I1) +
  98. & ((2.0D0)*(XMU))*(DEPST(I1) + ((XLAM)*(TRACE(DEPST))))
  99. ELSE
  100. IF (IFOUR.EQ.2) THEN
  101. XSIGT(I1) = SIG0(I1) + ((1.0D0)*(XMU))*(DEPST(I1))
  102. ELSE
  103. IF (I1.EQ.4) THEN
  104. XSIGT(I1) = SIG0(I1) + ((1.0D0)*(XMU))*(DEPST(I1))
  105. ELSE
  106. XSIGT(I1) = 0.0D0
  107. ENDIF
  108. ENDIF
  109. ENDIF
  110. 12 CONTINUE
  111. C
  112. C Deviatoire de Sigma_test
  113. DO 13 I1=1,6
  114. IF (I1.LE.3) THEN
  115. XDSIGT(I1) = XSIGT(I1) - ((TRACE(XSIGT)/(3.0D0)))
  116. ELSE
  117. IF (IFOUR.EQ.2) THEN
  118. XDSIGT(I1) = XSIGT(I1)
  119. ELSE
  120. IF (I1.EQ.4) THEN
  121. XDSIGT(I1) = XSIGT(I1)
  122. ELSE
  123. XDSIGT(I1) = 0.0D0
  124. ENDIF
  125. ENDIF
  126. ENDIF
  127. 13 CONTINUE
  128. c
  129. c Calcul de la norme partie deviatoire
  130. XNDSIGT = 0.0D0
  131. DO 14 I1=1,6
  132. IF (I1.LE.3) THEN
  133. XNDSIGT = XNDSIGT + (XDSIGT(I1)*XDSIGT(I1))
  134. ELSE
  135. XNDSIGT = XNDSIGT + ((2.0D0)*(XDSIGT(I1)*XDSIGT(I1)))
  136. ENDIF
  137. 14 CONTINUE
  138. XNDSIGT = ((XNDSIGT)**(0.5D0))
  139. C
  140. c Calcul du tensuer pi
  141. XPIT(1) = 1.0D0
  142. XPIT(2) = 1.0D0
  143. XPIT(3) = 1.0D0
  144. XPIT(4) = 0.0D0
  145. XPIT(5) = 0.0D0
  146. XPIT(6) = 0.0D0
  147. XPIT = (((3.0D0)**(0.5D0))/(3.0D0))*(XPIT)
  148. C
  149. c Calcul ((3**0.5)*(trace(sigma_test)))
  150. XTSIGT = 0.0D0
  151. DO 23 I1=1,6
  152. XTSIGT = XTSIGT + (XPIT(I1)*(XSIGT(I1)))
  153. 23 CONTINUE
  154. c
  155. c Calcul du vecteur nu_test
  156. IF ((ABS(XNDSIGT/XTSIGT)).LT.(1.0E-8)) THEN
  157. XNUT(1) = (1.0D0)/(3.0D0)
  158. XNUT(2) = (1.0D0)/(3.0D0)
  159. XNUT(3) = (-2.0D0)/(3.0D0)
  160. XNUT(4) = 0.0D0
  161. XNUT(5) = 0.0D0
  162. XNUT(6) = 0.0D0
  163. XVPL1 = 0.0D0
  164. ELSE
  165. XNUT(1) = XDSIGT(1)/XNDSIGT
  166. XNUT(2) = XDSIGT(2)/XNDSIGT
  167. XNUT(3) = XDSIGT(3)/XNDSIGT
  168. XNUT(4) = XDSIGT(4)/XNDSIGT
  169. XNUT(5) = XDSIGT(5)/XNDSIGT
  170. XNUT(6) = XDSIGT(6)/XNDSIGT
  171. XVPL1 = 1.0D0
  172. ENDIF
  173. c Calcul du critere fhi_test
  174. XFHIT = XNDSIGT + (((2.0D0)**(0.5))*(XTSIGT))*(XALPHA)
  175. & - (((2.0D0/3.0D0)**(0.5D0))*(XSY - XQT))
  176. C
  177. C-----TEST---------------------------------------------
  178. C
  179. IF (XFHIT.LT.0) THEN
  180. GOTO 101
  181. c fhi_test < 0.0D0 pas de plasticité
  182. ELSE IF (XFHIT.GE.0) THEN
  183. GOTO 102
  184. c fhi_test >= 0.0D0 on est en plasticité
  185. END IF
  186. C
  187. C-----CALCUL ELASTIQUE---------------------------------------------
  188. C
  189.  
  190. 101 CONTINUE
  191. c
  192. c si fhi_test < 0 gamma=0
  193. DO 15 I1=1,6
  194. SIGF(I1) = XSIGT(I1)
  195. 15 CONTINUE
  196. C
  197. c pas des variations des variables internes
  198. DO 16 I1=1,8
  199. IF (I1.EQ.8) THEN
  200. VARF(I1) = 0.0D0
  201. ELSE
  202. VARF(I1) = VAR0(I1)
  203. ENDIF
  204. 16 CONTINUE
  205. RETURN
  206. C
  207. C-----CALCUL PLASTIQUE---------------------------------------------
  208. C
  209. 102 CONTINUE
  210. c
  211. c si fhi_test >= 0 determination de gamma
  212. c Nombre max interaction
  213. NINT1 = 10000
  214. C Tollerance
  215. XTOL1 = 1.E-8
  216. XFHIN = XFHIT
  217. XQN = XQT
  218. XGAMN = 0.0D0
  219. XCHIN = XCHIT
  220. c
  221. DO 17 I1=1,6
  222. XEPPN(I1) = XEPP0(I1)
  223. XSIGN(I1) = XSIGT(I1)
  224. 17 CONTINUE
  225. c
  226. DO 110 II1=1,NINT1
  227. IF (II1.EQ.NINT1) THEN
  228. c PRINT*,'!!!!! ATTENTION !!!!'
  229. c PRINT*,'Nombre des iteractions'
  230. c PRINT*,' maximales depasse'
  231. c STOP
  232. ENDIF
  233. XDFDG = (((2.0D0)*(XMU*XVPL1))*(XDEL1))
  234. & + ((2.0D0)/(3.0D0))*(((XSIGI - XSY)*(
  235. & EXP(((-1.0D0)*(XBET1))*(XCHIN))))*(XBET1)) +
  236. & ((4.0D0)*((XALPHA)*(XGAM1)))*
  237. & (1.0D0 + ((3.0D0)*(XLAM)))*(XMU)
  238. XDEGAM = XFHIN/XDFDG
  239. XGAMN1 = XGAMN + XDEGAM
  240. XCHIN1 = XCHIN + (((2.0D0/3.0D0)**(0.5D0))*(XDEGAM))
  241. XQN1 = ((-1.0D0)*(XSIGI - XSY))*(1.0D0
  242. & - EXP(((-1.0D0)*(XBET1))*(XCHIN1)))
  243. IF ((XGAMN1).LT.(0.0D0)) THEN
  244. WRITE(IOIMP,10005)
  245. 10005 FORMAT('Error....multiplicateur negative')
  246. STOP
  247. ENDIF
  248.  
  249. DO 18 I1=1,6
  250. IF (I1.LE.3) THEN
  251. XDEEPP(I1) = ((((XDEL1*XVPL1))*(XNUT(I1)))+
  252. & (((XGAM1))*((2.0D0)**(0.5D0)))*(XPIT(I1)))*XDEGAM
  253. ELSE
  254. IF (IFOUR.EQ.2) THEN
  255. XDEEPP(I1) = ((((XDEL1*XVPL1))*(XNUT(I1)))+
  256. & (((XGAM1))*((2.0D0)**(0.5D0)))*(XPIT(I1)))*XDEGAM
  257. ELSE
  258. IF (I1.EQ.4) THEN
  259. XDEEPP(I1) = ((((XDEL1*XVPL1))*(XNUT(I1)))+
  260. & (((XGAM1))*((2.0D0)**(0.5D0)))*(XPIT(I1)))*XDEGAM
  261. ELSE
  262. XDEEPP(I1) = 0.0D0
  263. ENDIF
  264. ENDIF
  265. ENDIF
  266.  
  267. IF (I1.LE.3) THEN
  268. XEPPN1(I1) = XEPPN(I1) + XDEEPP(I1)
  269. ELSE
  270. IF (IFOUR.EQ.2) THEN
  271. XEPPN1(I1) = XEPPN(I1) + XDEEPP(I1)
  272. ELSE
  273. IF (I1.EQ.4) THEN
  274. XEPPN1(I1) = XEPPN(I1) + XDEEPP(I1)
  275. ELSE
  276. XEPPN1(I1) = 0.0D0
  277. ENDIF
  278. ENDIF
  279. ENDIF
  280.  
  281. 18 CONTINUE
  282.  
  283. DO 21 I1=1,6
  284. IF (I1.LE.3) THEN
  285. XSIGN1(I1) = XSIGN(I1) -
  286. & ((2.0D0)*(XMU))*(XDEEPP(I1)
  287. & + ((XLAM)*(TRACE(XDEEPP))))
  288. ELSE
  289. IF (IFOUR.EQ.2) THEN
  290. XSIGN1(I1) = XSIGN(I1) -
  291. & ((1.0D0)*(XMU))*(XDEEPP(I1))
  292. ELSE
  293. IF (I1.EQ.4) THEN
  294. XSIGN1(I1) = XSIGN(I1) -
  295. & ((1.0D0)*(XMU))*(XDEEPP(I1))
  296. ELSE
  297. XSIGN1(I1) = 0.0D0
  298. ENDIF
  299. ENDIF
  300. ENDIF
  301. 21 CONTINUE
  302.  
  303. DO 19 I1=1,6
  304. IF (I1.LE.3) THEN
  305. XDSIGN1(I1) = XSIGN1(I1)
  306. & - ((TRACE(XSIGN1)/(3.0D0)))
  307. ELSE
  308. IF (IFOUR.EQ.2) THEN
  309. XDSIGN1(I1) = XSIGN1(I1)
  310. ELSE
  311. IF (I1.EQ.4) THEN
  312. XDSIGN1(I1) = XSIGN1(I1)
  313. ELSE
  314. XDSIGN1(I1) = 0.0D0
  315. ENDIF
  316. ENDIF
  317. ENDIF
  318. 19 CONTINUE
  319.  
  320. XNDSIGN1 = 0.0D0
  321. DO 20 I1=1,6
  322.  
  323. IF (I1.LE.3) THEN
  324. XNDSIGN1 = XNDSIGN1
  325. & + (XDSIGN1(I1)*XDSIGN1(I1))
  326. ELSE
  327. XNDSIGN1 = XNDSIGN1
  328. & + ((2.0D0)*(XDSIGN1(I1)*XDSIGN1(I1)))
  329. ENDIF
  330. 20 CONTINUE
  331. XNDSIGN1 = ((XNDSIGN1)**(0.5D0))
  332.  
  333. XTSIGN1 = XSIGN1(1) + XSIGN1(2) + XSIGN1(3)
  334. XTSIGN1 = ((XTSIGN1)/((3.0D0)**(0.5D0)))
  335. XFHIN1 = XNDSIGN1 +
  336. & (((2.0D0)**(0.5))*(XTSIGN1))*(XALPHA)
  337. & - (((2.0D0/3.0D0)**(0.5D0))*(XSY - XQN1))
  338. c
  339. IF (ABS((XFHIN1)/(XFHIT)).LT.(XTOL1)) THEN
  340. GOTO 103
  341. ELSE
  342. XFHIN = XFHIN1
  343. XGAMN = XGAMN1
  344. XCHIN = XCHIN1
  345. XQN = XQN1
  346. XEPPN(1) = XEPPN1(1)
  347. XEPPN(2) = XEPPN1(2)
  348. XEPPN(3) = XEPPN1(3)
  349. XEPPN(4) = XEPPN1(4)
  350. XEPPN(5) = XEPPN1(5)
  351. XEPPN(6) = XEPPN1(6)
  352. XSIGN(1) = XSIGN1(1)
  353. XSIGN(2) = XSIGN1(2)
  354. XSIGN(3) = XSIGN1(3)
  355. XSIGN(4) = XSIGN1(4)
  356. XSIGN(5) = XSIGN1(5)
  357. XSIGN(6) = XSIGN1(6)
  358. ENDIF
  359. 110 CONTINUE
  360.  
  361.  
  362. 103 CONTINUE
  363. XCHIF = XCHIN1
  364. XGAMF = XGAMN1
  365. SIGF(1) = XSIGN1(1)
  366. SIGF(2) = XSIGN1(2)
  367. SIGF(3) = XSIGN1(3)
  368. SIGF(4) = XSIGN1(4)
  369. SIGF(5) = XSIGN1(5)
  370. SIGF(6) = XSIGN1(6)
  371.  
  372. VARF(1) = XEPPN1(1)
  373. VARF(2) = XEPPN1(2)
  374. VARF(3) = XEPPN1(3)
  375. VARF(4) = XEPPN1(4)
  376. VARF(5) = XEPPN1(5)
  377. VARF(6) = XEPPN1(6)
  378. VARF(7) = XCHIF
  379. VARF(8) = XGAMF
  380.  
  381. RETURN
  382.  
  383. END
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  

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