Télécharger drpr3d.eso

Retour à la liste

Numérotation des lignes :

drpr3d
  1. C DRPR3D SOURCE PV090527 23/01/27 21:15:27 11574
  2. subroutine DrPr3D(young,hpla,delta,beta,rc,epicc,epleq,rmin,
  3. #sig13,bwpw,bgpg,bsps,tauc,nc,np,na,ig,fa,dpfa_ds,dgfa_ds,dpfa_dp,
  4. #dpfa_dr,dra_dl,fg,i,precision2,rt_dp,drpr,bw,pw,kwrc,
  5. #epeqpc,rt_app)
  6.  
  7. implicit real*8 (a-h,o-z)
  8. implicit integer (i-n)
  9.  
  10. c variables externes
  11. real*8 young,epicc,epleq,rc,rmin,hpla,delta,beta,kwrc
  12. real*8 sig13(3),bwpw,bgpg,bsps,precision2
  13. real*8 sigs,tauc,rt_dp
  14. integer nc,np,na,ig(nc),i
  15. real*8 fa(nc),dpfa_ds(nc,6),dgfa_ds(nc,6),dpfa_dp(nc,np)
  16. real*8 dpfa_dr(nc),dra_dl(nc),fg(nc),bw,pw,epeqpc,rt_app
  17.  
  18. c variables locales
  19. real*8 coeff,rceff,dr_dp,eppc1,rseuil,epseuil,taulim
  20. real*8 x3(3),indict3(3),sigs_3,delta1,beta1,taue2,rpiceff
  21. real*8 sigd6(6)
  22. real*8 Fp,depleq_dl,fglim,x2,fg1,dfc_dpg,seq
  23. integer j,ia
  24. logical drpr
  25.  
  26. c le critere est évalué avec des contraintes limitées soit
  27. c par rt_dp soit pas rt_app
  28. sig_max=min(rt_dp,rt_app)
  29.  
  30. c rapport entre la resistance à la compression et au cisaillement
  31. coeff=(1.d0/dsqrt(3.d0)-delta/3.d0)
  32. c prise en compte de l ecrouissage en cisaillement pre pic
  33. call ecrp3d(rceff,dr_dp,rc,young,epicc,epleq,eppc1,
  34. # rseuil,epseuil,rmin,hpla,beta,epeqpc,rpiceff)
  35. c passage en contrainte de cisaillement
  36. c print*,'ds drpr3d rceff',rceff,'dr/dp',dr_dp
  37. taulim=max(rceff*coeff,rc*coeff*precision2)
  38. c calcul des contraintes equivalentes totales
  39. sigs=0.d0
  40. do j=1,3
  41. c contrainte normale matrice a comparer a la traction matrice
  42. c en enlevant la containte capilliare ce qui revient a
  43. c rajouter delta1*bw*pw a la resistance au cisaillement
  44. c ce qui en gendre dpfa_dpw=-(-delta1*bw)
  45. seq=sig13(j)-bgpg-bsps-bwpw
  46. if(seq.gt.sig_max) then
  47. x3(j)=sig_max
  48. c derive de la contrainte apparente / a la vraie
  49. indict3(j)=1.d0
  50. else
  51. x3(j)=seq
  52. c derive de la contrainte apparente / a la vraie
  53. indict3(j)=1.d0
  54. end if
  55. c trace de sigma apparente
  56. sigs=sigs+x3(j)
  57. end do
  58. c partie spherique vraie : -p
  59. sigs_3=sigs/3.d0
  60. c coeff de Drucker Prager pour le critere
  61. delta1=delta
  62. c coeff de Drucker Prager pour la dilatance
  63. beta1=beta
  64. c calcul du deviateur
  65. taue2=0.d0
  66. do j=1,6
  67. if (j.le.3) then
  68. sigd6(j)=x3(j)-sigs_3
  69. taue2=taue2+sigd6(j)**2
  70. else
  71. sigd6(j)=0.d0
  72. end if
  73. end do
  74. taue=sqrt(taue2/2.d0)
  75. c fonction seuil pour drucker prager
  76. c limitation de la contrainte spherique en cas de traction
  77. c if (sigs_3.lt.taulim/delta1) then
  78. fg1=(taue+delta1*sigs_3)-taulim
  79. fg(i)=fg1
  80. c taux de cisaillement
  81. tauc=max((taue+delta1*sigs_3)/(rpiceff*coeff),0.d0)
  82. c print*,'ds drpr3d tauc:',tauc
  83. c pseudo potentiel plastique
  84. Fp=(taue+beta1*sigs_3)
  85. c initialisation d epl eq / d lambda
  86. depleq_dl=0.d0
  87. c test franchissement du critere
  88. c stockage de la valeur limite du critere
  89. fglim=(taulim*precision2)
  90. c on active le critere que si les rgi sont deja satisfaites
  91. c et si la dilatance induit bien une dissipation
  92. if((fg1.gt.fglim).and.(Fp.gt.fglim)) then
  93. c indicateur de franchissement du critere
  94. drpr=.true.
  95. c print*,'rceff dans crir3d',rceff
  96. c print*,'(taue+delta*sigs_3)-taulim>0'
  97. c print*,fg(i),taue,delta,sigs_3,taulim
  98. c read*
  99. c critere de cisaillement actif
  100. c increment du nbre de critere actifs
  101. na=na+1
  102. ia=na
  103. c tableau de correspondance i global <- i actif
  104. ig(ia)=i
  105. c stockage dans la table des criteres actifs
  106. fa(ia)=fg1
  107. c derive de fg et direction de l ecoulement
  108. x2=0.5d0/taue
  109. c calcul des derivees dans les 6 directions
  110. do k=1,6
  111. c termes de la diagonale
  112. if (k.le.3) then
  113. x0=x2*sigd6(k)
  114. c definition des derivees du potentiel / sigma
  115. dpfa_ds(ia,k)=(x0+delta1/3.d0)*indict3(k)
  116. c definition des derives du pseudo potentiel
  117. c reste non associee meme si perte de l effet du confinement
  118. c sur le critere
  119. c dgfa_ds(ia,k)=(x0+beta1/3.d0)*indict3(k)
  120. dgfa_ds(ia,k)=(x0+beta1/3.d0)
  121. else
  122. c potentiel
  123. x0=x2*sigd6(k)
  124. dpfa_ds(ia,k)=x0
  125. c direction d ecoulement
  126. c calcul de la direction de l ecoulement
  127. c gama (et pas epsilon !)
  128. dgfa_ds(ia,k)=2.d0*x0
  129. end if
  130. if (k.le.3) then
  131. depleq_dl=depleq_dl+x3(k)*dgfa_ds(ia,k)
  132. end if
  133. end do
  134. c derivee de la fonction / pressions
  135. do k=1,np
  136. dpfa_dp(ia,k)=0.d0
  137. end do
  138. c prise en compte de l effet benefique de la tension capillaire
  139. dpfa_dp(ia,1)=kwrc*bw
  140. c normalisation du tau d evolution de la def plastique equivalente
  141. depleq_dl=depleq_dl/Rceff
  142. c derivee de la fonction / resistance
  143. dpfa_dr(ia)=-1.d0
  144. c derive de la resistance par rapport au multiplicateur plastique
  145. c on multiplie par coeff car critere en cisaillement
  146. dra_dl(ia)=dr_dp*depleq_dl*coeff
  147. end if
  148.  
  149. c print*,'a la fin de DRPR3D'
  150. c print*,young,hpla,delta,beta,rc,epicc,epleq,rmin,
  151. c # sig13,bwpw,bgpg,bsps,tauc,nc,np,na,ig(1),fg(1),i
  152. c read*
  153. return
  154. end
  155.  
  156.  
  157.  
  158.  

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