Télécharger hujeux.eso

Retour à la liste

Numérotation des lignes :

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

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