dffn3d
C DFFN3D SOURCE PV090527 23/02/06 21:15:02 11587
c***********************************************************************
subroutine dffn3d(sigm16,delta,rc_app,rt_app,xflu,
# ssfl,dfin,cmp1,dfmx2,hydr,hyds,err1)
c endommagement asymptotique par fluage
implicit real*8 (a-h,o-z)
implicit integer (i-n)
real*8 tauflu,taulim_taucr,cmp1,xflu
real*8 dflu0,dflu1,dfin,ccmax,rc_app,dfmx2
real*8 delta
real*8 ssfl
logical dciso
real*8 xmc,dcpp
real*8 sigm16(6)
integer err1
real*8 tau_sph,tau_dev
real*8 taucr,dflu,tauflu1,sigs,sig0,sigd6(6),sigeq,sigs3,taulim
real*8 taueq,tauflu0,tauseuil
integer i
real*8 xmax,coeff1
real*8 khi,x,xlim,xth,dcpp1,xcpp,xl,xcr,coeff
real*8 sigm33(3,3),sigm3(3),vsigm33(3,3),vsigm33t(3,3),sigm6p(6)
real*8 sigm6(6)
c multiplicateur non lineaire maxi de potentiel de fluage
parameter (xmax=25.d0)
c***********************************************************************
c la non linearite est estimee avec le deviateur de la contrainte
c macroscopique apparente bornee à la nouvelle resistance en traction
c***********************************************************************
c on borne les valeurs princpales positive a rt_app car
c la contribution hydrique de pw a rt_app a pu changer depuis le pas precedent
call x6x33(sigm16,sigm33)
call b3_v33(sigm33,sigm3,vsigm33)
call traps1(vsigm33t,vsigm33,3)
do i=1,3
sigm6p(i)=min(sigm3(i),rt_app)
sigm6p(3+i)=0.d0
end do
call chrep6(sigm6p,vsigm33t,.false.,sigm6)
c calcul du deviateur des contraintes macroscopiques
sigs=0.d0
c partie spherique de la contrainte effective moyenne
do i=1,3
sigs=sigs+sigm6(i)
end do
sigs3=sigs/3.d0
c partie deviatorique
sigeq=0.d0
do i=1,3
sigd6(i)=sigm6(i)-sigs3
sigeq=sigeq+sigd6(i)**2.d0
end do
do i=4,6
sigeq=sigeq+2.d0*(sigm6(i)**2.d0)
end do
sigeq=sqrt(sigeq/2.d0)
coeff1=(1.d0/sqrt(3.d0)-delta/3.d0)
taulim=rc_app*coeff1
tauseuil=ssfl*coeff1
if(sigs3.le.0.) then
taueq=min(sigeq+delta*sigs3,taulim)
else
taueq=sigeq
end if
c print*,'ds dffn3d'
c print*,rc_app,ssfl,sigm6
c print*,taueq
c print*,tauseuil,taulim
khi=xflu
x=taueq
xl=taulim
xth=tauseuil
c au jeune age on utilise le coeff partant du seuil en cisaillement
c apres le seuil de percolation on utilise la fonction partant du seuil nul
c pondéré par le degré d'hydratation
c estimation du comportement fluide a seuil
if(x.le.xth) then
c pas d ecoulement
cmp1=0.d0
else
c prise en compte du seuil d ecoulement
if((xth.gt.0.).and.(x.gt.xth)) then
cmp1=(x-xth)/x
else if((xth.eq.0.).and.(x.gt.0.)) then
cmp1=1.d0
else if((xth.ge.0.).and.(x.lt.0.)) then
cmp1=0.d0
else
print*,'Valeur inattendue de x dans dffn3d',x
err1=1
return
end if
end if
c pour le materiau durci on fractionne l amplification en fonction
c du taux d hydratation pour passer progressivement au materiau
c totalement hydrate
if(hydr.gt.hyds) then
c coeff pour les cas d hydratation < 1
coeff=(hydr-hyds)/(1.d0-hyds)
if(khi.gt.1.) then
xcr = xl*(0.2D1*khi-0.1D1)/(khi-0.1D1)/0.3D1
if(x.gt.0.) then
c coeff d amplification pour materiau hydrate
c remarque: risque de fluage tertiaire si cmp grand
cmp2=max(1.d0,cmp2)
c calcul de l endommagement final
dfin=coeff*min(dfmx2*x/xcr,0.999d0)
else
c pas de fluage non lineaire
cmp2=1.d0
c pas d'endommagement
dfin=0.d0
end if
else
c pas d'endommagement
dfin=0.d0
c pas de fluage non lineaire
cmp2=1.d0
end if
else
c coeff pour les cas d hydratation < seuil de percolation
coeff=1.d0
c pas d'endommagement en phase fluide
dfin=0.d0
c pas de fluage non lineaire
cmp2=1.d0
end if
c combinaison des comportements pré et post seuil d hydratation
cmp1=cmp1*(1.d0-coeff)+coeff*cmp2
c print*,'dffn3d: cmp',cmp1,'dfin',dfin
return
end
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales