Télécharger sigf3dim.eso

Retour à la liste

Numérotation des lignes :

sigf3dim
  1. C SIGF3DIM SOURCE AM 12/02/28 21:15:20 7291
  2. SUBROUTINE sigf3D_implicit(esigmae,x1,x2,sigmaf,H66,P2,
  3. . pi2,ag,i6,fc,fb,
  4. . parahot3,idimpara3,lerror,lcp,esigmae1,U)
  5.  
  6. c This subroutine calculates the stress SIGMAF obtained by applying the plastic
  7. c corrector to the elastic predictor. The plastic corrector is calculated from
  8. c the plastic multipliers Dlambdat = x1 and Dlambdac = x2.
  9. c
  10. c The relationship for sigmaf is implicit
  11. c Here, we try to solve it exactly. Strategy of step subdivision in case of non convergency.
  12. c Finally, if no convergence, we go to sigf3d_forward to calculate sigma with forward euler scheme.
  13. c
  14. c sigmaf = esigmae - H66 * [Dlambdat*dgt + Dlambdac*dgc]
  15. c
  16. c Dlambdat * increment of hardening in tension
  17. c Dlambdac * increment of hardening in compression
  18. c rkappait * initial hardening in tension
  19. c rkappaic * initial hardening in compression
  20. c esigmae * elastic predictor for effective the stress
  21. c sigmaf * calculated vector of final effective stresses
  22.  
  23. IMPLICIT REAL*8 (A-B,D-H,O-Z)
  24. implicit integer (I-K,M,N)
  25. implicit logical (L)
  26. implicit character*10 (C)
  27.  
  28. dimension sigmaf(6),sigmai(6)
  29. c final stress vector
  30. dimension esigmae(6),esigmae1(6),dsigma(6)
  31. c trial stress vector
  32. dimension H66(6,6),pi2(6)
  33. dimension dgc(6),dgt(6),vloc(6),trav6(6),P2(6,6)
  34. dimension parahot3(idimpara3),rcossigmapr(3,3),B(6,6)
  35. dimension d2gc(6,6),d2gt(6,6),trav66(6,6),h(6),U(6,6)
  36. dimension esigmain(6)
  37.  
  38. i0 = 0
  39. i1 = 1
  40. i2 = 2
  41. i3 = 3
  42. i4 = 4
  43. i5 = 5
  44. i7 = 7
  45.  
  46. r2 = 2.
  47.  
  48. ldivide = .false.
  49. do iloc=1,6
  50. esigmain(iloc) = esigmae(iloc)
  51. enddo
  52. n = 1
  53. 27 continue
  54. do istep=1,n
  55. xsub1 = x1/n
  56. xsub2 = x2/n
  57. call sigf3d_sub(esigmae,x1,x2,sigmaf,H66,P2,pi2,ag,i6,fc,fb,
  58. . parahot3,idimpara3,lerror,lcp,esigmae1,U,ldivide,n,
  59. . xsub1,xsub2,esigmain)
  60. if (ldivide) then
  61. c no convergence in subroutine sigf3d_sub
  62. n = n*2
  63. c back to the initial state => esigmain = esigmae
  64. do iloc=1,6
  65. esigmain(iloc) = esigmae(iloc)
  66. enddo
  67. if (n.lt.8) go to 27
  68. c if we arrive here, there is still no convergence even with the step subdivision
  69. c => we use the explicit algorithm (FORWARD EULER)
  70. call sigf3D_forward(esigmae,x1,x2,sigmaf,H66,P2,pi2,ag,i6,
  71. . fc,fb,parahot3,idimpara3,lerror,lcp,esigmae1,U)
  72. return
  73. endif
  74. c if we arrive here, there was convergence => esigmain = sigmaf
  75. c in the step-subdivision strategy, start back at the intermediate converfed point: sigmaf
  76. do iloc=1,6
  77. esigmain(iloc) = sigmaf(iloc)
  78. enddo
  79. enddo
  80.  
  81. RETURN
  82. END
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  

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