Télécharger dsiggc.eso

Retour à la liste

Numérotation des lignes :

dsiggc
  1. C DSIGGC SOURCE CB215821 16/04/21 21:16:32 8920
  2. SUBROUTINE dsiggc(sigma,dgc,ag,P2,pi2,i1,i6,fc,fb,lcp)
  3.  
  4. c This subroutine calculates the derivative of the plastic potential in compression
  5. c (necessary for the calculation of the plastic strain in compression)
  6. c
  7. c Plastic potential: gc = SQRT(3 J2) + ag I1 with J2 : 2nd invariant of the deviatoric stress
  8. c and I1 : 1st invariant of the stress
  9.  
  10. IMPLICIT REAL*8 (A-B,D-H,O-Z)
  11. implicit integer (I-K,M,N)
  12. implicit logical (L)
  13. implicit character*10 (C)
  14.  
  15. **** dimension vloc(i6),vloc1(i1),pi2(i6),vloc2(i6)
  16. dimension vloc(6),vloc1(1),pi2(I6),vloc2(6)
  17. dimension dgc(i6),p2(i6,i6),sigma(i6)
  18.  
  19.  
  20.  
  21. *****
  22. * MESSAGES D'ERREUR ( SUPPRESSION DES AUTOMATIC OBJECTS)
  23. IF(I1.GT.1) PRINT *, ' DSIGGC - ERREUR I1 = ', I1, ' > 1 '
  24. IF(I6.GT.6) PRINT *, ' DSIGGC - ERREUR I6 = ', I6, ' > 6 '
  25. *****
  26.  
  27.  
  28.  
  29.  
  30. r1 = 1.
  31. r2 = 2.
  32. alpha = (fb-fc)/(2*fb-fc)
  33.  
  34. call mulAB(P2,sigma,vloc,i6,i6,i6,i1)
  35. c [6;1]=[6;6]x[6;1]
  36. do iloc=1,6
  37. vloc2(iloc) = vloc(iloc)
  38. end do
  39. call mulATB(sigma,vloc,vloc1,i6,i1,i6,i1)
  40. c [1]=[1;6]x[6;1]
  41. rloc = (r1/r2)* vloc1(i1)
  42.  
  43. if (rloc.le.0.d0) then
  44. psi2 = 0.d0
  45. else
  46. psi2 = SQRT(rloc)
  47. c psi2 = SQRT(3 * J2)
  48. endif
  49.  
  50. call mulATB(pi2,sigma,vloc1,i6,i1,i6,i1)
  51. c [1]=[1;6]x[6;1]
  52. test = alpha*vloc1(i1)
  53. c test = alpha * I1
  54.  
  55. psi2lim=max(ABS(1.E-7*test),1.d-3)
  56. f_compr = DPfunc(sigma,alpha)
  57. if (ABS(psi2).le.psi2lim) then
  58. do iloc=i1,i6
  59. dgc(iloc) = ((vloc2(iloc)/(2.*psi2lim)) + ag * pi2(iloc))
  60. end do
  61. else if (ABS(f_compr).le.100.) then
  62. c APEX of the Drucker-Prager surface
  63. do iloc=i1,i6
  64. dgc(iloc) = ((vloc2(iloc)/(2.*psi2)) + ag * pi2(iloc))
  65. end do
  66. else
  67. do iloc=i1,i6
  68. dgc(iloc) = ((vloc2(iloc)/(2.*psi2)) + ag * pi2(iloc))
  69. end do
  70. endif
  71.  
  72. RETURN
  73. END
  74.  
  75.  
  76.  
  77.  
  78.  

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