Télécharger camcla.eso

Retour à la liste

Numérotation des lignes :

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

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