Télécharger dsigrank.eso

Retour à la liste

Numérotation des lignes :

dsigrank
  1. C DSIGRANK SOURCE FANDEUR 14/03/25 21:15:10 7993
  2. SUBROUTINE dsigRank(sigma,dgt,i3,i6,parahot3,idimpara3,
  3. . rkappait,lcp)
  4.  
  5. c This subroutine calculates the derivative of the Rankine
  6. c plastic function with respect to sigma
  7.  
  8. c gt = ft (because associated plasticity)
  9. c = S1 = largest principal stress
  10.  
  11. IMPLICIT REAL*8 (A-B,D-H,O-Z)
  12. implicit integer (I-K,M,N)
  13. implicit logical (L)
  14. implicit character*10 (C)
  15. character*20 cloc1,cloc2
  16.  
  17. dimension sigma(i6),dgt(i6)
  18. dimension rcossigmapr(3,3),parahot3(idimpara3)
  19. dimension P1(3,3),pi1(3),vloc(3),vloc1(1)
  20.  
  21. *****
  22. * MESSAGES D'ERREUR ( SUPPRESSION DES AUTOMATIC OBJECTS)
  23. IF(I3.GT.3) PRINT *, ' DSIGRANK - ERREUR I3 = ', I3, ' > 3 '
  24. *****
  25. i1 = 1
  26. i2 = 2
  27. i4 = 4
  28. i5 = 5
  29. r1 = 1.d0
  30. r2 = 2.d0
  31. r4 = 4.d0
  32.  
  33. if (lcp) then
  34. c in plane stress, calculation of the derivative of the principal stress
  35. sigmay = sigma(2)
  36. sigmaxy = sigma(4)
  37. diff = sigmax-sigmay
  38. racine = diff*diff + r4*sigmaxy*sigmaxy
  39. cloc1 = 'racine'
  40. cloc2 = 'dsigrank'
  41. call check_sqrt(racine,cloc1,cloc2,lerror)
  42. c **** **********
  43. if (Lerror) then
  44. return
  45. endif
  46. racine = sqrt(racine)
  47. rtest = max(sigmax,sigmay)
  48. if (racine.gt.abs(rtest)*1.e-6) then
  49. dgt(1) = ( diff/racine+r1)/r2
  50. dgt(2) = (-diff/racine+r1)/r2
  51. dgt(4) = r2*sigmaxy/racine
  52. else
  53. c APEX of the Rankine surface: sigma1 = sigma2 ; sigma12 = 0
  54. dgt(1) = sqrt(r2)/r2
  55. dgt(2) = dgt(1)
  56. dgt(4) = 0.D0
  57. endif
  58. dgt(3) = 0.d0
  59. dgt(5) = 0.d0
  60. dgt(6) = 0.d0
  61. else
  62. c in full 3D, calculation of the derivative of the principal stress
  63. call sigmapr3ETC(sigma,S1,S2,S3,rcossigmapr,lcp)
  64. c =============
  65. c algorithm to find the eigen values and eigen vectors of symmetric matrix sigma
  66. c APEX test
  67. c Carefull with precision of the real*8
  68. sig1 = sigma(1)/10.d6
  69. sig2 = sigma(2)/10.d6
  70. sig3 = sigma(3)/10.d6
  71. sig4 = sigma(4)/10.d6
  72. sig5 = sigma(5)/10.d6
  73. sig6 = sigma(6)/10.d6
  74. rapex = abs(sigma(1))+abs(sigma(2))+abs(sigma(3)) -
  75. . 3.*(abs(sigma(1)*sigma(2)*sigma(3))**(1.d0/3.d0))
  76. rapex = rapex + 9.*(abs(sigma(4))+abs(sigma(5))+
  77. . abs(sigma(6)))
  78. if (rapex.le.3.d-4) then
  79. c APEX of the Rankine surface
  80. dgt(1)=sqrt(3.d0)/3.d0
  81. dgt(2)=dgt(1)
  82. dgt(3)=dgt(1)
  83. dgt(4)=0.d0
  84. dgt(5)=0.d0
  85. dgt(6)=0.d0
  86. else
  87. c Calculation of dgt/dsig = dgt/ds1 * ds1/dsig
  88. c dgt/dsig is the first column of the transposed matrix of axis change
  89. c between global axis and local axis of the principal stresses
  90. rkx = rcossigmapr(i1,i1)
  91. rmx = rcossigmapr(i2,i1)
  92. rnx = rcossigmapr(i3,i1)
  93. rky = rcossigmapr(i1,i2)
  94. rmy = rcossigmapr(i2,i2)
  95. rny = rcossigmapr(i3,i2)
  96. rkz = rcossigmapr(i1,i3)
  97. rmz = rcossigmapr(i2,i3)
  98. rnz = rcossigmapr(i3,i3)
  99.  
  100. c Sxx, Syy, Szz, Sxy, Sxz, Syz
  101. dgt(i1) = rkx*rkx
  102. dgt(i2) = rmx*rmx
  103. dgt(i3) = rnx*rnx
  104. dgt(i4) = 2.0d0*rkx*rmx
  105. dgt(i5) = 2.0d0*rkx*rnx
  106. dgt(i6) = 2.0d0*rmx*rnx
  107. endif
  108. endif
  109.  
  110. RETURN
  111. END
  112.  
  113.  
  114.  

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