Télécharger dp_sol.eso

Retour à la liste

Numérotation des lignes :

  1. C DP_SOL SOURCE CB215821 16/04/21 21:16:30 8920
  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.  

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