Télécharger camcla.eso

Retour à la liste

Numérotation des lignes :

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

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