Télécharger init3d.eso

Retour à la liste

Numérotation des lignes :

init3d
  1. C INIT3D SOURCE FD218221 24/02/07 21:15:16 11834
  2. subroutine init3d(xmat,nmat,vnmat,nstype,nbelas,var0,varf,
  3. # nvari,vnvari,ndtens,ierr1)
  4.  
  5. c copie des var0 dans les varf en tenant compte d une dilution
  6. c eventuelle pour les variables scalaire
  7.  
  8. IMPLICIT REAL*8 (A-H,O-Z)
  9. IMPLICIT INTEGER (I-N)
  10.  
  11. integer nmat,nstype,nbelas,nvari,ndtens,ierr1
  12. real*8 xmat(nmat),var0(nvari),varf(nvari)
  13. integer vnmat(nstype),vnvari(nstype,2)
  14.  
  15. c fraction inerte du solide (dont les varible internes sont a zero)
  16. real*8 finr0,finr1,coeffd
  17. logical log_diss
  18. integer numx,ivar,itype,i
  19.  
  20.  
  21. c copie des var0 sur les varf en prenant en compte la variation de
  22. c la fraction inerte pour les vari scalaires pas actuel
  23. call xmat3d(FINR1,xmat,nmat,vnmat,nstype,nbelas,1,8)
  24. c fraction inerte pas precedent
  25. call xvar3d(FINR0,numx,var0,nvari,vnvari,nstype,ndtens,1,9)
  26. c stockage fraction inerte pour pas suivant
  27. varf(numx)=finr1
  28. c coeff de reduction des variabes internes par dilution simple
  29. if(finr1.ne.finr0) then
  30. c la dilution evolue
  31. if(finr1.ne.1.) then
  32. c calcul du coeff de dilution
  33. coeffd=(1.d0-finr0)/(1.d0-finr1)
  34. log_diss=.true.
  35. else
  36. print*,'Passage de FINER a un impossible pour fluiso3d !'
  37. ierr1=1
  38. return
  39. end if
  40. else
  41. c pas d effet de dilution
  42. coeffd=1.d0
  43. log_diss=.false.
  44. end if
  45. c compteur de numero de vari
  46. ivar=0
  47. c compteur type vari
  48. do itype=1,NSTYPE
  49. c copie des variables scalaires avec ou sans dilution
  50. do i=1,VNVARI(itype,1)
  51. ivar=ivar+1
  52. c l effet de dilution ne s applique jamais du ivari(1) est le controle premier pas
  53. if(log_diss.and.(ivar.ne.1)) then
  54. varf(ivar)=var0(ivar)*coeffd
  55. else
  56. varf(ivar)=var0(ivar)
  57. end if
  58. end do
  59. c copie des variables avec ou sans sans dilution
  60. do itens=1,VNVARI(itype,2)
  61. c on ne modifie que les valeurs principales des tenseurs
  62. c boucle sur les valeurs principales
  63. do i=1,ndtens
  64. ivar=ivar+1
  65. if(log_diss) then
  66. c les tenseurs visco elastiques sont traites dans hydr3d
  67. if((itype.le.4).or.(i.gt.3)) then
  68. c pas de dilution de cette variable
  69. varf(ivar)=var0(ivar)
  70. else
  71. c les valeurs principales des def plastiques sont affectes par la dilution
  72. varf(ivar)=var0(ivar)*coeffd
  73. end if
  74. else
  75. c pas de dilution
  76. varf(ivar)=var0(ivar)
  77. end if
  78. end do
  79. end do
  80. end do
  81.  
  82. return
  83. end
  84.  
  85.  
  86.  

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