Télécharger endort.eso

Retour à la liste

Numérotation des lignes :

endort
  1. C ENDORT SOURCE FD218221 24/02/07 21:15:10 11834
  2. subroutine endort(epspg6,dgt3,dgc3,dmaxi,drgimaxi,ekdg,
  3. #alphar,epsseuil0,sigft61,sigfc61)
  4.  
  5. implicit real*8 (a-h,o-z)
  6. implicit integer (i-n)
  7.  
  8. c variables externes
  9. real*8 epspg6(6),epsseuil0,dgt3(3),dgc3(3),dmaxi,drgimaxi,ekdg
  10. real*8 alphar
  11. real*8 sigft61(6),sigfc61(6)
  12.  
  13. c variables locales
  14. real*8 epspg33(3,3),epspg3(3),vepspg33(3,3),vepspg33t(3,3)
  15. real*8 sigft6p(6),sigfc6p(6),sigft6d(6),sigfc6d(6)
  16. logical endor
  17. real*8 xx1
  18. integer i,k,l
  19.  
  20. c***********************************************************************
  21. c calcul de l endommagement due au franchissement d une critere
  22. c orthotrope (rgi ou capillaire par exple)
  23. c***********************************************************************
  24. if(ekdg.gt.0.) then
  25. c valeurs propres des deformations plastiques de rgi
  26. c passage 33
  27. call x6x33(epspg6,epspg33)
  28.  
  29. c diagonalisation
  30. call b3_v33(epspg33,epspg3,vepspg33)
  31. c construction matrice de passage inverse
  32. call traps1(vepspg33t,vepspg33,3)
  33. c calcul des endommagements
  34. endor=.false.
  35. do i=1,3
  36. xx1=epspg3(i)-epsseuil0
  37. if(xx1.gt.0.d0) then
  38. endor=.true.
  39. else
  40. xx1=0.d0
  41. end if
  42. c endo de rgi et borne de dgt
  43. dgt3(i)=min(dmaxi,drgimaxi,max((xx1/(xx1+ekdg)),0.d0))
  44. c print*,'ds endort dgt3(',i,')',dgt3(i)
  45. end do
  46. c***********************************************************************
  47. c test utilite endo de rgi
  48. if(endor) then
  49. c calcul des endommagements de compression de rgi
  50. do i=1,3
  51. if(alphar.gt.0.) then
  52. c complementarite par orthogonalite
  53. call indce1(i,k,l)
  54. dgc3(i)=1.d0-((1.d0-dgt3(k))*(1.d0-dgt3(l)))**alphar
  55. dgc3(i)=min(dmaxi,drgimaxi,dgc3(i))
  56. else
  57. dgc3(i)=0.d0
  58. end if
  59. c print*,'dgc3(',i,')',dgc3(i)
  60. end do
  61.  
  62. c***********************************************************************
  63. c prise en compte des endo rgi de traction
  64. c***********************************************************************
  65. c passage des contraintes effectives dans la base prin des endo
  66. call chrep6(sigft61,vepspg33,.false.,sigft6p)
  67. c application du tenseur d endommagement aux
  68. c contraintes de tractions
  69. do i=1,6
  70. if(i.le.3) then
  71. sigft6d(i)=(1.d0-dgt3(i))*sigft6p(i)
  72. else
  73. call indce0(i,k,l)
  74. sigft6d(i)=(1.d0-max(dgt3(k),dgt3(l)))*sigft6p(i)
  75. end if
  76. end do
  77. c retour des contraintes positives en base fixe
  78. call chrep6(sigft6d,vepspg33t,.false.,sigft61)
  79.  
  80. c***********************************************************************
  81. c prise en compte des endo rgi de compression
  82. c***********************************************************************
  83. c passage des contraintes effectives dans la base prin des endo
  84. call chrep6(sigfc61,vepspg33,.false.,sigfc6p)
  85. c application du tenseur d endommagement aux contraintes de tractions
  86. do i=1,6
  87. if(alphar.gt.0.) then
  88. if(i.le.3) then
  89. c print*,'dgc3(',i,')=',dgc3(i)
  90. c if(dgc3(i).ge.1.)stop
  91. sigfc6d(i)=(1.d0-dgc3(i))*sigfc6p(i)
  92. else
  93. call indce0(i,k,l)
  94. sigfc6d(i)=(1.d0-max(dgc3(k),dgc3(l)))*sigfc6p(i)
  95. end if
  96. else
  97. sigfc6d(i)=sigfc6p(i)
  98. end if
  99. c print*,'av',sigfc6p(i),' ap',sigfc6d(i)
  100. c print*,'effacement effect dgc'
  101. c sigfc6d(i)=sigfc6p(i)
  102. end do
  103. c retour des contraintes en base fixe
  104. call chrep6(sigfc6d,vepspg33t,.false.,sigfc61)
  105. else
  106. c inutile de calculer les endo de compression
  107. do i=1,3
  108. dgc3(i)=0.d0
  109. end do
  110. end if
  111. else
  112. c pas de calcul d endo orthotrope dans ce cas
  113. do i=1,3
  114. dgc3(i)=0.d0
  115. dgt3(i)=0.d0
  116. end do
  117. end if
  118. return
  119. end
  120.  
  121.  
  122.  
  123.  

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