Télécharger hydr3d.eso

Retour à la liste

Numérotation des lignes :

hydr3d
  1. C HYDR3D SOURCE FD218221 24/02/07 21:15:14 11834
  2. subroutine hydr3d(xmat,nmat,vnmat,nstype,nbelas,var0,varf,
  3. # nvari,vnvari,ndtens,iso,sigm3,souplesse66)
  4.  
  5. c relaxation chimique
  6.  
  7. c declarations externes
  8. implicit integer(i-n)
  9. implicit real*8(a-h,o-z)
  10.  
  11. logical iso
  12. integer nmat,vnmat,nstype,nbelas,nvari,ndtens
  13. integer vnvari(nstype,2)
  14. real*8 xmat(nmat),var0(nvari),varf(nvari)
  15. real*8 sigm3(3),souplesse66(6,6)
  16.  
  17. real*8 E,nu,k1,mu1,k0,mu0
  18. integer numk,numm,ne,nm,nk,nf
  19. real*8 sigmd03(3),devi0,trac0,press0
  20. real*8 sigmd13(3),devi1,trac1,press1
  21. real*8 aux1,de3(3),vde33(3,3),vde33t(3,3)
  22. real*8 de6(6),de6p(6),de33(3,3)
  23. real*8 Ode333(3,3,3)
  24. real*8 dm3(3),vdm33(3,3)
  25. real*8 df3(3),vdf33(3,3)
  26. real*8 dk3(3),vdk33(3,3)
  27.  
  28.  
  29. c on procede par comparaison des coeff d elasticite K et MU
  30. c si les coeff baissent on ne change pas la contrainte par
  31. c contre s ils augmentent on diminue les contraintes initiales
  32.  
  33. if(iso) then
  34. call xmat3d(E,xmat,nmat,vnmat,nstype,nbelas,0,1)
  35. call xmat3d(nu,xmat,nmat,vnmat,nstype,nbelas,0,2)
  36. k1=E/(3.d0*(1.d0-2.d0*nu))
  37. mu1=E/(2.d0*(1.d0+nu))
  38. call xvar3d(k0,numk,var0,nvari,vnvari,nstype,ndtens,1,7)
  39. call xvar3d(mu0,numm,var0,nvari,vnvari,nstype,ndtens,1,8)
  40. c maj valeur
  41. varf(numk)=k1
  42. varf(numm)=mu1
  43. else
  44. call xmat3d(E,xmat,nmat,vnmat,nstype,nbelas,0,1)
  45. call xmat3d(nu,xmat,nmat,vnmat,nstype,nbelas,0,4)
  46. k1=E/(3.d0*(1.d0-2.d0*nu))
  47. mu1=E/(2.d0*(1.d0+nu))
  48. call xvar3d(k0,numk,var0,nvari,vnvari,nstype,ndtens,1,7)
  49. call xvar3d(mu0,numm,var0,nvari,vnvari,nstype,ndtens,1,8)
  50. c maj valeur
  51. varf(numk)=k1
  52. varf(numm)=mu1
  53. end if
  54. c reduction des nouvelles contraintes principales si necessaire
  55. if((k1.gt.k0).or.(mu1.gt.mu0)) then
  56. c recuperation du tenseur de deformation elastique initial
  57. call tvar3d(de3,vde33,ne,var0,nvari,vnvari,nstype,ndtens,1,1)
  58. c recuperation du tenseur de deformation Maxwell initial
  59. call tvar3d(dm3,vdm33,nm,var0,nvari,vnvari,nstype,ndtens,2,1)
  60. c recuperation du tenseur de deformation Fluide transitoire
  61. call tvar3d(df3,vdf33,nf,var0,nvari,vnvari,nstype,ndtens,3,1)
  62. c recuperation du tenseur de deformation Kelvin initial
  63. call tvar3d(dk3,vdk33,nk,var0,nvari,vnvari,nstype,ndtens,4,1)
  64. c actualisation des deformations debut de pas par hydrtation
  65. call tp3d(sigm3,sigmd03,devi0,trac0,press0)
  66. press1=press0*k0/k1
  67. do i=1,3
  68. sigmd13(i)=sigmd03(i)*mu0/mu1
  69. sigm3(i)=sigmd13(i)-press1
  70. end do
  71. c actualisation des deformations elastiques principales en
  72. c fonction des nouvelles contraintes
  73. do i=1,6
  74. de6p(i)=0.d0
  75. do j=1,3
  76. de6p(i)=de6p(i)+souplesse66(i,j)*sigm3(j)
  77. end do
  78. end do
  79. c retour en base fixe
  80. call traps1(vde33t,vde33,3)
  81. call chrep6(de6p,vde33t,.false.,de6)
  82. c directions principales des increments de deformations elastiques
  83. call x6x33(de6,de33)
  84. call b3_v33(de33,de3,vde33)
  85. call orie3d(vde33,Ode333)
  86. c actualisation des deformations elastiques
  87. do i=1,3
  88. varf(ne+i)=de3(i)
  89. do j=1,3
  90. varf(ne+3+(i-1)*3+j)=vde33(j,i)
  91. end do
  92. end do
  93. c actualisation des deformations de Maxwell pas dilution
  94. call tp3d(dm3,sigmd03,devi0,trac0,press0)
  95. press1=press0*k0/k1
  96. do i=1,3
  97. sigmd13(i)=sigmd03(i)*mu0/mu1
  98. dm3(i)=sigmd13(i)-press1
  99. varf(nm+i)=dm3(i)
  100. c les directions principales n'ont pas été changées
  101. do j=1,3
  102. varf(nm+3+(i-1)*3+j)=var0(nm+3+(i-1)*3+j)
  103. end do
  104. end do
  105. c actualisation des deformations Fluides transitoires
  106. call tp3d(df3,sigmd03,devi0,trac0,press0)
  107. press1=press0*k0/k1
  108. do i=1,3
  109. sigmd13(i)=sigmd03(i)*mu0/mu1
  110. df3(i)=sigmd13(i)-press1
  111. varf(nf+i)=df3(i)
  112. c les directions principales n'ont pas été changées
  113. do j=1,3
  114. varf(nf+3+(i-1)*3+j)=var0(nf+3+(i-1)*3+j)
  115. end do
  116. end do
  117. c actualisation des deformations de Kelvin par dilution
  118. call tp3d(dk3,sigmd03,devi0,trac0,press0)
  119. press1=press0*k0/k1
  120. do i=1,3
  121. sigmd13(i)=sigmd03(i)*mu0/mu1
  122. dk3(i)=sigmd13(i)-press1
  123. varf(nk+i)=dk3(i)
  124. c les directions principales n'ont pas été changées
  125. do j=1,3
  126. varf(nk+3+(i-1)*3+j)=var0(nk+3+(i-1)*3+j)
  127. end do
  128. end do
  129. end if
  130.  
  131. return
  132. end
  133.  
  134.  
  135.  
  136.  
  137.  

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