Télécharger hujeux.eso

Retour à la liste

Numérotation des lignes :

  1. C HUJEUX SOURCE FANDEUR 13/01/29 21:15:55 7683
  2. SUBROUTINE HUJEUX(SIG0,NSTRS,DEPST,VAR0,NVARI,XMAT,NCOMAT,XCAR,
  3. . SIGF,VARF,DEFP,PRECIS,MFR,KERRE)
  4. C----------------------------------------------------------------------
  5. C PLASTICITE MODELE HUJEUX
  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) = PI0
  20. C XMAT(6) = COHE
  21. C XMAT(7) = M
  22. C XMAT(8) = BETA
  23. C XMAT(9) = HUA
  24. C XMAT(10) = HUB
  25. C XMAT(11) = HUR
  26. C XMAT(12) = P1
  27. C XMAT(13) = N
  28. C XMAT(14) = E1
  29. C NCOMAT = NOMBRE DE COMPOSANTES DE MATERIAU
  30. C XCAR(ICARA) = CARACTERISTIQUES
  31. C MFR = NUMERO DE LA FORMULATION DE L'ELEMENT FINI
  32. C = 1 MASSIF
  33. C
  34. C SORTIES
  35. C SIGF(NSTRS) = CONTRAINTES FINALES
  36. C VARF(NVARI) = VARIABLES INTERNES FINALES
  37. C DEFP(NSTRS) = DEFORMATIONS PLASTIQUES
  38. C KERRE = 0 TOUT OK
  39. C 1 SI DLAMBDA NEGATIF
  40. C 2 NOMBRE MAX D ITERATIONS INTERNES DEPASSE
  41. C 21 ON NE TROUVE PAS L INTERSECTION AVEC LA SURFACE DE CHARGE
  42. C 22 SIG0 A L EXTERIEUR DE LA SURFACE DE CHARGE
  43. C
  44. C-----------------------------------------------------------------------
  45. C
  46. IMPLICIT INTEGER(I-N)
  47. IMPLICIT REAL*8(A-H,O-Z)
  48. -INC CCOPTIO
  49. C
  50. DIMENSION SIG0(*),DEPST(*),VAR0(*),XMAT(*),XCAR(*)
  51. DIMENSION SIGF(*),VARF(*),DEFP(*)
  52. DIMENSION STOT(6),XINV(2),SIGEL(6)
  53. DIMENSION DFDS(6),DGDS(6),COVNMS(1),DEFPLA(6),DDEFPL(6)
  54. *
  55. DATA ITMAX/25/
  56. ALFAH=0.D0
  57. COVNMS(1) = 0.D0
  58. *
  59. * TEST SUR IFOUR : ON ACCEPTE 2D DP, AXI, 3D
  60. *
  61. KERRE=0
  62. IF(IFOUR.NE.0.AND.IFOUR.NE.2.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.48) THEN
  74. WRITE(IOIMP,77881) (XMAT(I),I=1,NCOMAT)
  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. YOUE1= XMAT(14)
  88. XNU = XMAT(2)
  89. PI0 = XMAT(5)
  90. COHE = XMAT(6)
  91. GM = XMAT(7)
  92. BETA = XMAT(8)
  93. HUA = XMAT(9)
  94. HUB = XMAT(10)
  95. HUR = XMAT(11)
  96. P1 = XMAT(12)
  97. ZN = XMAT(13)
  98. *
  99. * TESTS SUR LES DONNEES
  100. *
  101. IF(COHE.EQ.0.D0) COHE = 1.D-10 * PI0
  102. TRASI0 = COHE - TRACE(SIG0)/3.D0
  103. IF(TRASI0.LT.0.D0.OR.HUB.LE.0.D0) THEN
  104. KERRE=22
  105. RETURN
  106. ENDIF
  107. IF(ZN.LT.0.D0.OR.ZN.GE.1.D0) THEN
  108. KERRE=22
  109. RETURN
  110. ENDIF
  111. *
  112. E2=YOUE1/(P1**ZN)
  113. E1=E2*(TRASI0**ZN)
  114. G2=E1/(1.D0+XNU)
  115. G=G2*0.5D0
  116. UNSURE=1.D0/E1
  117. BULK2=E2/(3.D0*(1.D0-2.D0*XNU))
  118. *
  119. * ON CALCULE LES CONTRAINTES FINALES EN ELASTIQUE
  120. *
  121. TRACEP= TRACE(DEPST)
  122. ZN1=1.D0-ZN
  123. UNSURN=1.D0/ZN1
  124. FAC= TRASI0 - (TRASI0**ZN1 - ZN1*BULK2*TRACEP)**UNSURN
  125. STOT(1)= SIG0(1)+G2*(DEPST(1)-TRACEP/3.D0) +FAC
  126. STOT(2)= SIG0(2)+G2*(DEPST(2)-TRACEP/3.D0) +FAC
  127. STOT(3)= SIG0(3)+G2*(DEPST(3)-TRACEP/3.D0) +FAC
  128. STOT(4)= SIG0(4)+G*DEPST(4)
  129. IF(IFOUR.EQ.2) THEN
  130. STOT(5)= SIG0(5)+G*DEPST(5)
  131. STOT(6)= SIG0(6)+G*DEPST(6)
  132. ELSE
  133. STOT(5)= 0.D0
  134. STOT(6)= 0.D0
  135. ENDIF
  136. *
  137. IF(IIMPI.EQ.48) THEN
  138. WRITE(IOIMP,77875) TRACEP
  139. 77875 FORMAT(1X,' TRACEP = ',1PE12.5/)
  140. WRITE(IOIMP,77886) (STOT(I),I=1,NSTRS)
  141. 77886 FORMAT(1X,' STOT ' /(6(1X,1PE12.5))/)
  142. ENDIF
  143. *
  144. * ON CALCULE LE CRITERE
  145. *
  146. PI= (PI0+COHE)*EXP(-BETA*VAR0(2)) - COHE
  147. IF(HUA.EQ.0.D0) THEN
  148. XKSI=1.D0+HUR
  149. ELSE
  150. XKSI=VAR0(1)/(HUA+VAR0(1)) + HUR
  151. ENDIF
  152. CALL HUJCRI(STOT,PI,XKSI,XMAT,XINV,Y,SELAS)
  153. *
  154. IF(IIMPI.EQ.48) THEN
  155. WRITE(IOIMP,77887) XINV(1),XINV(2),Y,SELAS,PI,XKSI
  156. 77887 FORMAT(1X,' XINV(1)= ',1PE12.5,2X,'XINV(2)= ',1PE12.5,
  157. . 2X,'Y= ',1PE12.5,2X,'SELAS= ',1PE12.5,2X,'PI= ',1PE12.5/
  158. . 2X,'KSI=',1PE12.5/)
  159. ENDIF
  160. *
  161. PETI=1.1D00*PRECIS*Y
  162. ZERO=0.D0
  163. CALL EPSPRE(Y,ZERO,PETI,ITRY)
  164. IF(ITRY.EQ.0.AND.Y.GT.ZERO) GO TO 4
  165. *
  166. * SORTIE ELASTIQUE
  167. *
  168. VARF(1)=VAR0(1)
  169. VARF(2)=VAR0(2)
  170. DO 3 IBA=1,NSTRS
  171. SIGF(IBA)=STOT(IBA)
  172. DEFP(IBA)=0.D0
  173. 3 CONTINUE
  174. IF(IIMPI.EQ.48) THEN
  175. WRITE(IOIMP,77003)
  176. 77003 FORMAT(1X,' SORTIE ELASTIQUE ' /)
  177. ENDIF
  178. RETURN
  179. *
  180. * ECOULEMENT PLASTIQUE
  181. *
  182. 4 CONTINUE
  183. ITER =0
  184. DEPS =0.D0
  185. DEPSI=0.D0
  186. CALL SHIFTD(STOT,SIGEL,6)
  187. CALL ZDANUL(DEFPLA,6)
  188. *
  189. * -------------------------------
  190. * | LES ITERATIONS INTERNES |
  191. * -------------------------------
  192. 555 CONTINUE
  193. ITER=ITER+1
  194. IF(IIMPI.EQ.48) THEN
  195. WRITE(IOIMP,77888) ITER
  196. 77888 FORMAT(1X,' >>>>>>>>>>> HUJEUX - ITER =',I4/)
  197. ENDIF
  198. *
  199. CALL HUJFLO(IFOUR,SIGEL,XINV,PI,XKSI,XMAT,DFDS,DFDPI,
  200. . DFDKSI,DGDS,HV,HQ)
  201. IF(IIMPI.EQ.48) THEN
  202. WRITE(IOIMP,77889) (DFDS(IJ),IJ=1,NSTRS)
  203. 77889 FORMAT(1X,' DFDS '/(6(1X,1PE12.5))/)
  204. WRITE(IOIMP,77899) (DGDS(IJ),IJ=1,NSTRS)
  205. 77899 FORMAT(1X,' DGDS '/(6(1X,1PE12.5))/)
  206. WRITE(IOIMP,77890) DFDPI,DFDKSI,HV,HQ
  207. 77890 FORMAT(1X,' DFDPI= ',1PE12.5,2X,'DFDKSI= ',1PE12.5/
  208. . 1X,' HV=',1PE12.5,2X,'HQ=',1PE12.5/)
  209. ENDIF
  210. *
  211. * CALCUL DE D*DGDS
  212. *
  213. ABSI=ABS(COHE-XINV(1))
  214. BULKGT=(BULK2*(ABSI**ZN) - G2/3.D0)*TRACE(DGDS)
  215. STOT(1)=G2*DGDS(1)+BULKGT
  216. STOT(2)=G2*DGDS(2)+BULKGT
  217. STOT(3)=G2*DGDS(3)+BULKGT
  218. STOT(4)=G*DGDS(4)
  219. IF(IFOUR.EQ.2) THEN
  220. STOT(5)=G*DGDS(5)
  221. STOT(6)=G*DGDS(6)
  222. ELSE
  223. STOT(5)=0.D0
  224. STOT(6)=0.D0
  225. ENDIF
  226. *
  227. IF(IIMPI.EQ.48) THEN
  228. WRITE(IOIMP,77891) (STOT(IJ),IJ=1,NSTRS)
  229. 77891 FORMAT(1X,' D*DFDS '/(6(1X,1PE12.5))/)
  230. ENDIF
  231. *
  232. DFTDDG=SDOT(NSTRS,DFDS,1,STOT,1)
  233. DEPSI=Y/(DFTDDG - DFDPI*HV - DFDKSI*HQ +1.D-20)
  234. DEPS = DEPS+DEPSI
  235. IF(IIMPI.EQ.48) THEN
  236. WRITE(IOIMP,77892) DEPSI,DEPS
  237. 77892 FORMAT(1X,' DEPSI=',1PE12.5,2X,'DEPS=',1PE12.5/)
  238. ENDIF
  239. IF(DEPS.LT.0.D0) GO TO 6
  240. *
  241. * ON INCREMENTE
  242. *
  243. DO 66 I=1,NSTRS
  244. DEFPLA(I)=DEFPLA(I)+DGDS(I)*DEPSI
  245. STOT(I)=DEPST(I)-DEFPLA(I)
  246. 66 CONTINUE
  247. IF(IFOUR.NE.2) THEN
  248. DEFPLA(5)=0.D0
  249. DEFPLA(6)=0.D0
  250. STOT(5)=0.D0
  251. STOT(6)=0.D0
  252. ENDIF
  253. *
  254. * DEVIATEUR DE DEFPLA
  255. *
  256. DO 67 I=1,6
  257. IF(I.LE.3) THEN
  258. DDEFPL(I)=DEFPLA(I)-TRACE(DEFPLA)/3.D0
  259. ELSE
  260. DDEFPL(I)=DEFPLA(I)
  261. ENDIF
  262. 67 CONTINUE
  263. IF(IIMPI.EQ.48) THEN
  264. WRITE(IOIMP,77991) (DEFPLA(IJ),IJ=1,NSTRS)
  265. 77991 FORMAT(1X,' DEFPLA '/(6(1X,1PE12.5))/)
  266. WRITE(IOIMP,73991) (DDEFPL(IJ),IJ=1,NSTRS)
  267. 73991 FORMAT(1X,' DDEFPL '/(6(1X,1PE12.5))/)
  268. ENDIF
  269. *
  270. TRACEP= TRACE(STOT)
  271. FAC = TRASI0 - (TRASI0**ZN1 - ZN1*BULK2*TRACEP)**UNSURN
  272. SIGEL(1)= SIG0(1)+G2*(STOT(1)-TRACEP/3.D0) +FAC
  273. SIGEL(2)= SIG0(2)+G2*(STOT(2)-TRACEP/3.D0) +FAC
  274. SIGEL(3)= SIG0(3)+G2*(STOT(3)-TRACEP/3.D0) +FAC
  275. SIGEL(4)= SIG0(4)+G*STOT(4)
  276. IF(IFOUR.EQ.2) THEN
  277. SIGEL(5)= SIG0(5)+G*STOT(5)
  278. SIGEL(6)= SIG0(6)+G*STOT(6)
  279. ELSE
  280. SIGEL(5)= 0.D0
  281. SIGEL(6)= 0.D0
  282. ENDIF
  283. *
  284. PI= (PI0+COHE)*EXP(-BETA*(VAR0(2)+TRACE(DEFPLA))) - COHE
  285. EPSE=VONEPS(DDEFPL,1,ALFAH,COVNMS)+VAR0(1)
  286. IF(HUA.EQ.0.D0) THEN
  287. XKSI=1.D0+HUR
  288. ELSE
  289. XKSI=EPSE/(HUA+EPSE) + HUR
  290. ENDIF
  291. *
  292. * TEST DE CONVERGENCE
  293. *
  294. CALL HUJCRI(SIGEL,PI,XKSI,XMAT,XINV,Y,SELAS)
  295. STST=ABS(Y/SELAS)
  296. *
  297. IF(IIMPI.EQ.48) THEN
  298. WRITE(IOIMP,77893) (SIGEL(IJ),IJ=1,NSTRS)
  299. 77893 FORMAT(1X,' NEW SIG '/(6(1X,1PE12.5))/)
  300. WRITE(IOIMP,77894) PI,Y,SELAS,STST
  301. 77894 FORMAT(1X,' PI= ',1PE12.5,2X,'Y= ',1PE12.5,2X,
  302. . 'SELAS= ',1PE12.5,2X,'STST= ',1PE12.5/)
  303. ENDIF
  304. *
  305. IF(STST.LE.PRECIS) GO TO 8
  306. IF(ITER.GT.ITMAX) GO TO 7
  307. GO TO 555
  308. *
  309. 6 CONTINUE
  310. KERRE=1
  311. GO TO 9
  312. 7 CONTINUE
  313. KERRE=2
  314. 9 CONTINUE
  315. IF (JEBOUC.EQ.1) THEN
  316. IIMPI=48
  317. GO TO 2020
  318. ELSE
  319. IIMPI=IIMPI0
  320. ENDIF
  321. *
  322. 8 CONTINUE
  323. *
  324. * REMPLISSAGE
  325. *
  326. VARF(1)=EPSE
  327. VARF(2)=VAR0(2)+TRACE(DEFPLA)
  328. DO 12 IBA=1,NSTRS
  329. SIGF(IBA)=SIGEL(IBA)
  330. DEFP(IBA)=DEFPLA(IBA)
  331. 12 CONTINUE
  332. *
  333. IF(IIMPI.EQ.48) THEN
  334. WRITE(IOIMP,77895) (STOT(IJ),IJ=1,NSTRS)
  335. 77895 FORMAT(1X,' DEF_ELA '/(6(1X,1PE12.5))/)
  336. WRITE(IOIMP,77896) (DEFP(IJ),IJ=1,NSTRS)
  337. 77896 FORMAT(1X,' DEF_PLA '/(6(1X,1PE12.5))/)
  338. WRITE(IOIMP,77897) VARF(1),VARF(2)
  339. 77897 FORMAT(1X,' VARF(1)= ',1PE12.5,2X,'VARF(2)= ',1PE12.5/)
  340. ENDIF
  341. *
  342. 1000 RETURN
  343. END
  344.  
  345.  
  346.  
  347.  
  348.  

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