Télécharger camcla.eso

Retour à la liste

Numérotation des lignes :

  1. C CAMCLA SOURCE AM 13/12/16 21:15:22 7832
  2. SUBROUTINE CAMCLA(SIG0,NSTRS,DEPST,VAR0,NVARI,XMAT,NCOMAT,XCAR,
  3. . SIGF,VARF,DEFP,PRECIS,MFR,KERRE)
  4. C----------------------------------------------------------------------
  5. C PLASTICITE MODELE CAM-CLAY
  6. C
  7. C ENTREES
  8. C SIG0(NSTRS) = CONTRAINTES INITIALES
  9. C NSTRS = NOMBRE DE CONTRAINTES
  10. C DEPST(NSTRS) = INCREMENT DE DEFORMATIONS TOTALES
  11. C VAR0(NVARI) = VARIABLES INTERNES DEBUT
  12. C VAR0(1) = EPSE
  13. C VAR0(2) = TRAP
  14. C XMAT(NCOMAT) = COMPOSANTES DE MATERIAU
  15. C XMAT(1) = YOUN
  16. C XMAT(2) = NU
  17. C XMAT(3) = RHO
  18. C XMAT(4) = ALPH
  19. C XMAT(5) = E0
  20. C XMAT(6) = PI0
  21. C XMAT(7) = COHE
  22. C XMAT(8) = M
  23. C XMAT(9) = LAMD
  24. C XMAT(10) = KAPA
  25. C XMAT(11) = G1
  26. C NCOMAT = NOMBRE DE COMPOSANTES DE MATERIAU
  27. C XCAR(ICARA) = CARACTERISTIQUES
  28. C MFR = NUMERO DE LA FORMULATION DE L'ELEMENT FINI
  29. C = 1 MASSIF
  30. C
  31. C SORTIES
  32. C SIGF(NSTRS) = CONTRAINTES FINALES
  33. C VARF(NVARI) = VARIABLES INTERNES FINALES
  34. C DEFP(NSTRS) = DEFORMATIONS PLASTIQUES
  35. C KERRE = 0 TOUT OK
  36. C 1 SI DLAMBDA NEGATIF
  37. C 2 NOMBRE MAX D ITERATIONS INTERNES DEPASSE
  38. C 21 ON NE TROUVE PAS L INTERSECTION AVEC LA SURFACE DE CHARGE
  39. C 22 SIG0 A L EXTERIEUR DE LA SURFACE DE CHARGE
  40. C
  41. C-----------------------------------------------------------------------
  42. C
  43. IMPLICIT INTEGER(I-N)
  44. IMPLICIT REAL*8(A-H,O-Z)
  45. -INC CCOPTIO
  46. C
  47. DIMENSION SIG0(*),DEPST(*),VAR0(*),XMAT(*),XCAR(*)
  48. DIMENSION SIGF(*),VARF(*),DEFP(*)
  49. DIMENSION STOT(6),XINV(2),SIGEL(6)
  50. DIMENSION DFDS(6),COVNMS(6),DEFPLA(6)
  51. *
  52. DATA ITMAX/25/
  53. DATA COVNMS / 6 * 0.D0 /
  54. ALFAH=0.D0
  55. *
  56. * TEST SUR IFOUR : ON ACCEPTE 2D DP, AXI, 3D , FOUR
  57. *
  58. KERRE=0
  59. IF(IFOUR.NE.0.AND.IFOUR.NE.2.AND.IFOUR.NE.-1
  60. & .AND.IFOUR.NE.1) THEN
  61. KERRE=99
  62. RETURN
  63. ENDIF
  64. *
  65. * QUELQUES INITIALISATIONS
  66. *
  67. JEBOUC=0
  68. IIMPI0=IIMPI
  69. 2020 JEBOUC=JEBOUC+1
  70. *
  71. IF(IIMPI.EQ.33) THEN
  72. WRITE(IOIMP,77881) (XMAT(I),I=1,11)
  73. 77881 FORMAT(1X,' XMAT=',1PE12.5/)
  74. WRITE(IOIMP,77882) (SIG0(I),I=1,NSTRS)
  75. 77882 FORMAT(1X,' SIG0 ' /(6(1X,1PE12.5))/)
  76. WRITE(IOIMP,77883) (VAR0(I),I=1,NVARI)
  77. 77883 FORMAT(1X,' VAR0 ' /(6(1X,1PE12.5))/)
  78. WRITE(IOIMP,77884) (DEPST(I),I=1,NSTRS)
  79. 77884 FORMAT(1X,' DEPST ' /(6(1X,1PE12.5))/)
  80. ENDIF
  81. *
  82. * ON RECUPERE LES CONSTANTES DU MATERIAU
  83. *
  84. YOUN = XMAT(1)
  85. XNU = XMAT(2)
  86. E0 = XMAT(5)
  87. PI0 = XMAT(6)
  88. COHE = XMAT(7)
  89. GM = XMAT(8)
  90. XLAMD= XMAT(9)
  91. XKAPA= XMAT(10)
  92. G = XMAT(11)
  93. *
  94. * TESTS SUR LES DONNEES
  95. *
  96. IF(XKAPA.GE.XLAMD) THEN
  97. KERRE=60
  98. RETURN
  99. ENDIF
  100. IF(COHE.EQ.0.D0) COHE = 1.D-10 * PI0
  101. *
  102. G2= G * 2.D0
  103. TETA=(1.D0+E0)/(XLAMD-XKAPA)
  104. *
  105. * ON CALCULE LES CONTRAINTES FINALES EN ELASTIQUE
  106. *
  107. XK0=(1.D0+E0)/XKAPA
  108. TRACEP= TRACE(DEPST)
  109. TRASI0 = (TRACE(SIG0))/3.D0 - COHE
  110. FAC = TRASI0 * (EXP(-XK0*TRACEP) -1.D0)
  111. STOT(1)= SIG0(1)+G2*(DEPST(1)-TRACEP/3.D0) +FAC
  112. STOT(2)= SIG0(2)+G2*(DEPST(2)-TRACEP/3.D0) +FAC
  113. STOT(3)= SIG0(3)+G2*(DEPST(3)-TRACEP/3.D0) +FAC
  114. STOT(4)= SIG0(4)+G*DEPST(4)
  115. IF(IFOUR.GE.1) THEN
  116. STOT(5)= SIG0(5)+G*DEPST(5)
  117. STOT(6)= SIG0(6)+G*DEPST(6)
  118. ELSE
  119. STOT(5)= 0.D0
  120. STOT(6)= 0.D0
  121. ENDIF
  122. *
  123. IF(IIMPI.EQ.33) THEN
  124. WRITE(IOIMP,77875) XK0,TRACEP
  125. 77875 FORMAT(1X,' XK0 = ',1PE12.5,2X,'TRACEP = ',1PE12.5/)
  126. WRITE(IOIMP,77885) (DEPST(I),I=1,NSTRS)
  127. 77885 FORMAT(1X,' DEPST ' /(6(1X,1PE12.5))/)
  128. WRITE(IOIMP,77886) (STOT(I),I=1,NSTRS)
  129. 77886 FORMAT(1X,' STOT ' /(6(1X,1PE12.5))/)
  130. ENDIF
  131. *
  132. * ON CALCULE LE CRITERE
  133. *
  134. PI= (PI0+COHE)*EXP(-TETA*VAR0(2)) - COHE
  135. CALL CAMCRI(STOT,PI,XMAT,XINV,Y,SELAS)
  136. *
  137. IF(IIMPI.EQ.33) THEN
  138. WRITE(IOIMP,77887) XINV(1),XINV(2),Y,SELAS,PI
  139. 77887 FORMAT(1X,' XINV(1)= ',1PE12.5,2X,'XINV(2)= ',1PE12.5,
  140. . 2X,'Y= ',1PE12.5,2X,'SELAS= ',1PE12.5,2X,'PI= ',1PE12.5/)
  141. ENDIF
  142. *
  143. PETI=1.1D00*PRECIS*Y
  144. CALL EPSPRE(Y,SELAS,PETI,ITRY)
  145. IF(ITRY.EQ.0.AND.Y.GT.SELAS) GO TO 4
  146. *
  147. * SORTIE ELASTIQUE
  148. *
  149. VARF(1)=VAR0(1)
  150. VARF(2)=VAR0(2)
  151. DO 3 IBA=1,NSTRS
  152. SIGF(IBA)=STOT(IBA)
  153. DEFP(IBA)=0.D0
  154. 3 CONTINUE
  155. IF(IIMPI.EQ.33) THEN
  156. WRITE(IOIMP,77003)
  157. 77003 FORMAT(1X,' SORTIE ELASTIQUE ' /)
  158. ENDIF
  159. RETURN
  160. *
  161. * ECOULEMENT PLASTIQUE
  162. *
  163. 4 CONTINUE
  164. ITER =0
  165. DEPS =0.D0
  166. DEPSI=0.D0
  167. CALL SHIFTD(STOT,SIGEL,6)
  168. CALL ZDANUL(DEFPLA,6)
  169. *
  170. * -------------------------------
  171. * | LES ITERATIONS INTERNES |
  172. * -------------------------------
  173. 555 CONTINUE
  174. ITER=ITER+1
  175. IF(IIMPI.EQ.33) THEN
  176. WRITE(IOIMP,77888) ITER
  177. 77888 FORMAT(1X,' >>>>>>>>>>> CAMCLA - ITER =',I4/)
  178. ENDIF
  179. *
  180. CALL CAMFLO(IFOUR,SIGEL,XINV,PI,XMAT,DFDS,DFDPI,H)
  181. IF(IIMPI.EQ.33) THEN
  182. WRITE(IOIMP,77889) (DFDS(IJ),IJ=1,NSTRS)
  183. 77889 FORMAT(1X,' DFDS '/(6(1X,1PE12.5))/)
  184. WRITE(IOIMP,77890) DFDPI,H
  185. 77890 FORMAT(1X,' DFDPI= ',1PE12.5,2X,'H= ',1PE12.5/)
  186. ENDIF
  187. *
  188. * CALCUL DE D*DFDS
  189. *
  190. BULKGT=((COHE-XINV(1))*(1.D0+E0)/XKAPA - G2/3.D0)
  191. . *TRACE(DFDS)
  192. STOT(1)=G2*DFDS(1)+BULKGT
  193. STOT(2)=G2*DFDS(2)+BULKGT
  194. STOT(3)=G2*DFDS(3)+BULKGT
  195. STOT(4)=G*DFDS(4)
  196. IF(IFOUR.GE.1) THEN
  197. STOT(5)=G*DFDS(5)
  198. STOT(6)=G*DFDS(6)
  199. ELSE
  200. STOT(5)=0.D0
  201. STOT(6)=0.D0
  202. ENDIF
  203. *
  204. IF(IIMPI.EQ.33) THEN
  205. WRITE(IOIMP,77891) (STOT(IJ),IJ=1,NSTRS)
  206. 77891 FORMAT(1X,' D*DFDS '/(6(1X,1PE12.5))/)
  207. ENDIF
  208. *
  209. DFTDDG=SDOT(NSTRS,DFDS,1,STOT,1)
  210. DEPSI=(Y-SELAS)/(DFTDDG - DFDPI*H +1.D-20)
  211. DEPS = DEPS+DEPSI
  212. IF(IIMPI.EQ.33) THEN
  213. WRITE(IOIMP,77892) DEPSI,DEPS
  214. 77892 FORMAT(1X,' DEPSI=',1PE12.5,2X,'DEPS=',1PE12.5/)
  215. ENDIF
  216. IF(DEPS.LT.0.D0) GO TO 6
  217. *
  218. * ON INCREMENTE
  219. *
  220. DO 66 I=1,NSTRS
  221. DEFPLA(I)=DEFPLA(I)+DFDS(I)*DEPSI
  222. STOT(I)=DEPST(I)-DEFPLA(I)
  223. 66 CONTINUE
  224. IF(IFOUR.LT.1) THEN
  225. DEFPLA(5)=0.D0
  226. DEFPLA(6)=0.D0
  227. STOT(5)=0.D0
  228. STOT(6)=0.D0
  229. ENDIF
  230. IF(IIMPI.EQ.33) THEN
  231. WRITE(IOIMP,77991) (DEFPLA(IJ),IJ=1,NSTRS)
  232. 77991 FORMAT(1X,' DEFPLA '/(6(1X,1PE12.5))/)
  233. ENDIF
  234. *
  235. TRACEP= TRACE(STOT)
  236. TRASI0 = (TRACE(SIG0))/3.D0 - COHE
  237. FAC = TRASI0 * (EXP(-XK0*TRACEP) -1.D0)
  238. SIGEL(1)= SIG0(1)+G2*(STOT(1)-TRACEP/3.D0) +FAC
  239. SIGEL(2)= SIG0(2)+G2*(STOT(2)-TRACEP/3.D0) +FAC
  240. SIGEL(3)= SIG0(3)+G2*(STOT(3)-TRACEP/3.D0) +FAC
  241. SIGEL(4)= SIG0(4)+G*STOT(4)
  242. IF(IFOUR.GE.1) THEN
  243. SIGEL(5)= SIG0(5)+G*STOT(5)
  244. SIGEL(6)= SIG0(6)+G*STOT(6)
  245. ELSE
  246. SIGEL(5)= 0.D0
  247. SIGEL(6)= 0.D0
  248. ENDIF
  249. *
  250. PI= (PI0+COHE)*EXP(-TETA*(VAR0(2)+TRACE(DEFPLA))) - COHE
  251. *
  252. * TEST DE CONVERGENCE
  253. *
  254. CALL CAMCRI(SIGEL,PI,XMAT,XINV,Y,SELAS)
  255. STST=ABS((Y-SELAS)/SELAS)
  256. *
  257. IF(IIMPI.EQ.33) THEN
  258. WRITE(IOIMP,77893) (SIGEL(IJ),IJ=1,NSTRS)
  259. 77893 FORMAT(1X,' NEW SIG '/(6(1X,1PE12.5))/)
  260. WRITE(IOIMP,77894) PI,Y,SELAS,STST
  261. 77894 FORMAT(1X,' PI= ',1PE12.5,2X,'Y= ',1PE12.5,2X,
  262. . 'SELAS= ',1PE12.5,2X,'STST= ',1PE12.5/)
  263. ENDIF
  264. *
  265. IF(STST.LE.PRECIS) GO TO 8
  266. IF(ITER.GT.ITMAX) GO TO 7
  267. GO TO 555
  268. *
  269. 6 CONTINUE
  270. KERRE=1
  271. GO TO 9
  272. 7 CONTINUE
  273. KERRE=2
  274. 9 CONTINUE
  275. IF (JEBOUC.EQ.1) THEN
  276. IIMPI=33
  277. GO TO 2020
  278. ELSE
  279. IIMPI=IIMPI0
  280. ENDIF
  281. *
  282. 8 CONTINUE
  283. *
  284. * REMPLISSAGE
  285. *
  286. VARF(1)=VAR0(1)+VONEPS(DEFPLA,1,ALFAH,COVNMS)
  287. VARF(2)=VAR0(2)+TRACE(DEFPLA)
  288. DO 12 IBA=1,NSTRS
  289. SIGF(IBA)=SIGEL(IBA)
  290. DEFP(IBA)=DEFPLA(IBA)
  291. 12 CONTINUE
  292. *
  293. IF(IIMPI.EQ.33) THEN
  294. WRITE(IOIMP,77895) (STOT(IJ),IJ=1,NSTRS)
  295. 77895 FORMAT(1X,' DEF_ELA '/(6(1X,1PE12.5))/)
  296. WRITE(IOIMP,77896) (DEFP(IJ),IJ=1,NSTRS)
  297. 77896 FORMAT(1X,' DEF_PLA '/(6(1X,1PE12.5))/)
  298. WRITE(IOIMP,77897) VARF(1),VARF(2)
  299. 77897 FORMAT(1X,' VARF(1)= ',1PE12.5,2X,'VARF(2)= ',1PE12.5/)
  300. ENDIF
  301. *
  302. 1000 RETURN
  303. END
  304.  
  305.  
  306.  
  307.  

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