Télécharger sigf3dfo.eso

Retour à la liste

Numérotation des lignes :

sigf3dfo
  1. C SIGF3DFO SOURCE CB215821 16/04/21 21:18:25 8920
  2. SUBROUTINE sigf3D_forward(esigmae,x1,x2,sigmaf,H66,P2,pi2,
  3. . 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.  
  10. c The relationship for sigmaf is implicit
  11. c Here, the equation is solved by a FORWARD EULER scheme so explicit
  12.  
  13. c sigmaf = esigmae - H66 * [Dlambdat*dgt + Dlambdac*dgc]
  14. c
  15. c Dlambdat * increment of hardening in tension
  16. c Dlambdac * increment of hardening in compression
  17. c rkappait * initial hardening in tension
  18. c rkappaic * initial hardening in compression
  19. c esigmae * elastic predictor for effective stress
  20. c sigmaf * calculated vector of final effective stresses
  21.  
  22. IMPLICIT REAL*8 (A-B,D-H,O-Z)
  23. implicit integer (I-K,M,N)
  24. implicit logical (L)
  25. implicit character*10 (C)
  26.  
  27. **** dimension sigmaf(i6),sigmai(i6)
  28. dimension sigmaf(i6),sigmai(6)
  29. c final stress vector
  30. dimension esigmae(i6),esigmae1(i6)
  31. c trial stress vector
  32. dimension H66(i6,i6),pi2(i6)
  33. **** dimension dgc(i6),dgt(i6),vloc(i6),trav6(i6),P2(i6,i6)
  34. dimension dgc(6),dgt(6),vloc(6),trav6(6),P2(6,6)
  35. dimension parahot3(idimpara3),rcossigmapr(3,3),U(6,6)
  36.  
  37.  
  38.  
  39. *****
  40. * MESSAGES D'ERREUR ( SUPPRESSION DES AUTOMATIC OBJECTS)
  41. IF(I6.GT.6) THEN
  42. PRINT *, ' SIGF3D_FORWARD - ERREUR I6 = ', I6, ' > 6 '
  43. ENDIF
  44. *****
  45.  
  46.  
  47.  
  48. i0 = 0
  49. i1 = 1
  50. i2 = 2
  51. i3 = 3
  52. i4 = 4
  53. i5 = 5
  54. i7 = 7
  55.  
  56. r2 = 2.
  57.  
  58. Dlambdat = x1
  59. Dlambdac = x2
  60.  
  61. do iloc=i1,i6
  62. sigmai(iloc) = esigmae1(iloc)
  63. end do
  64.  
  65. call dsiggc(sigmai,dgc,ag,P2,pi2,i1,i6,fc,fb,lcp)
  66. call dsigRank(sigmai,dgt,i3,i6,parahot3,idimpara3,rkappait,lcp)
  67.  
  68. rloc = 0.
  69. if (lcp) then
  70. rloc = (dgt(1))**2 + (dgt(2))**2 + (dgt(4))**2
  71. else
  72. do i=1,6
  73. rloc = rloc + (dgt(i))**2
  74. enddo
  75. endif
  76. if ( (rloc.eq.0.).and.(ABS(Dlambdat).gt.(1.d-14)) ) then
  77. do iloc=i1,i6
  78. sigmai(iloc) = esigmae1(iloc)
  79. end do
  80. c recalculate dgt with esigmae1, thus dgt.ne.0
  81. call dsigRank(sigmai,dgt,i3,i6,parahot3,idimpara3,
  82. . rkappait,lcp)
  83. endif
  84.  
  85. do iloc=i1,i6
  86. vloc(iloc) = Dlambdat*dgt(iloc) + Dlambdac*dgc(iloc)
  87. end do
  88. call mulAB(H66,VLOC,trav6,i6,i6,i6,i1)
  89.  
  90. do iloc=i1,i6
  91. SIGMAF(iloc) = esigmae(iloc) - trav6(iloc)
  92. end do
  93. do iloc=1,6
  94. test = ABS(sigmaf(iloc))
  95. if (test.gt.10.E+20) then
  96. return
  97. endif
  98. enddo
  99.  
  100. RETURN
  101. END
  102.  
  103.  
  104.  
  105.  
  106.  

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