Télécharger umdt3d.eso

Retour à la liste

Numérotation des lignes :

umdt3d
  1. C UMDT3D SOURCE FD218221 24/02/07 21:15:30 11834
  2. subroutine umdt3d(E0,nu,souplesse66,dt3,umdt66,
  3. # a,b,x,ipzero,ngf,errg,iso)
  4.  
  5. c calcul du tensseur d endommagement de traction directe
  6.  
  7. implicit real*8 (a-h,o-z)
  8. implicit integer (i-n)
  9.  
  10. real*8 souplesse66(6,6)
  11. real*8 souplesse66d(6,6),raideur66d(6,6)
  12. real*8 dt3(3)
  13. integer ngf
  14. real*8 X(ngf),B(ngf),A(ngf,(ngf+1))
  15. integer errg,ipzero(ngf)
  16. real*8 umdt66(6,6)
  17. logical iso
  18. real*8 dx
  19. real*8 sn3(3),d66(6,6)
  20. real*8 nu,E0
  21.  
  22.  
  23. if (iso) then
  24. c cas de la loi elastique isotrope
  25. c determination via solution type cf.
  26.  
  27. C A. Sellier, G. Casaux-Ginestet, L. Buffo-Lacarrière, X. Bourbon,
  28. C Orthotropic damage coupled with localized crack reclosure processing. Part I: Constitutive laws,
  29. C Engineering Fracture Mechanics,
  30. C Volume 97,
  31. C 2013,
  32. C Pages 148-167,
  33. C ISSN 0013-7944,
  34. C https://doi.org/10.1016/j.engfracmech.2012.10.012.
  35.  
  36. do i=1,3
  37. c print*,dt3(i)
  38. sn3(i)=1.d0/(1.d0-dt3(i))
  39. end do
  40. c calcul de la matrice d endommagement sans la borner et en
  41. c attenuant les effets de Poisson
  42. call b3_d66(nu,sn3,d66,.false.,.false.)
  43. do i=1,6
  44. do j=1,6
  45. if(i.eq.j) then
  46. umdt66(i,j)=1.d0-d66(i,j)
  47. else
  48. umdt66(i,j)=-d66(i,j)
  49. end if
  50. end do
  51. end do
  52. c call afic66(umdt66)
  53. else
  54. print*,'verifier calcul de 1-Dt dans umdt3'
  55. c cas general : 1-d=(sd^-1)(s)
  56. c print*,'ngf dans umdt3d',ngf
  57. c matrice de souplesse endommagee
  58. c seuls les termes de la diagonale sont affectes
  59. do i=1,6
  60. do j=1,6
  61. if(i.eq.j) then
  62. if(i.le.3) then
  63. souplesse66d(i,j)=souplesse66(i,j)/(1.d0-dt3(i))
  64. else
  65. call indce0(i,k,l)
  66. dx=max(dt3(k),dt3(l))
  67. souplesse66d(i,j)=souplesse66(i,j)/(1.d0-dx)
  68. end if
  69. else
  70. souplesse66d(i,j)=souplesse66(i,j)
  71. end if
  72. end do
  73. end do
  74. c matrice de la raideur endommagee
  75. c obtenue par inversion de souplesse66d
  76. do i=1,6
  77. c chaque colonne est solution de ax=b
  78. do j=1,6
  79. do k=1,6
  80. a(j,k)=souplesse66d(j,k)
  81. end do
  82. if(j.eq.i) then
  83. b(j)=1.d0
  84. else
  85. b(j)=0.d0
  86. end if
  87. end do
  88. call gaus3d(6,A,X,B,ngf,errg,ipzero)
  89. do j=1,6
  90. raideur66d(j,i)=x(j)
  91. end do
  92. end do
  93. c construction du tenseur umdt66
  94. do i=1,6
  95. do j=1,6
  96. umdt66(i,j)=0.d0
  97. do k=1,6
  98. umdt66(i,j)=umdt66(i,j)+raideur66d(i,k)*souplesse66(k,j)
  99. end do
  100. end do
  101. end do
  102. end if
  103. c print*,'umdt dans umdt66'
  104. c call afic66(umdt66)
  105. c read*
  106. return
  107. end
  108.  
  109.  
  110.  
  111.  

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