ampl3d
C AMPL3D SOURCE PV090527 23/01/27 21:15:05 11574 subroutine ampl3d(souplesse66,sigm06,fshr06,skdw,alphaw, # epse6,sigef06,epse_tild6,sref) c concentration des contraintes de compression du a lendommagement c hydrique pour le calcul du potentiel de fluage, c en l etat ces endommagements sont reversibles c tables de dimension fixe pour resolution des sytemes lineaires implicit real*8 (a-h,o-z) implicit integer (i-n) real*8 souplesse66(6,6),skdw,alphaw,sref real*8 sigm06(6),fshr06(6),epse6(6),ampli6(6),sigef06(6) real*8 epse_tild6(6) real*8 sige3(3),vsige33(3,3),vsige33t(3,3), # siget6(6),sigec6(6),sigec3(3),siget3(3) real*8 dwt3(3),dwc3(3),dmaxi,sigft61(6),sigfc61(6) logical endor integer i,j,k,l real*8 xx1 real*8 fshr33(3,3),fshr3(3),vfshr33(3,3),vfshr33t(3,3) real*8 sigec6p(6),sigm16(6),sigm133(3,3),sigm13(3) real*8 vsigm133(3,3), vsigm133t(3,3),sigm16p(6) real*8 epse_tilde6(6),sigef6p(6),sigefa6p(6),sigefa6(6),dcws real*8 alphaw_p c ***************************************************************** c decomposition du tenseur des contraintes apparentes call prtt3d(sigm06,sige3,vsige33,vsige33t, # siget6,sigec6,sigec3,siget3) c ***************************************************************** c endommagement du a la pression capillaire c rangement des contraintes effectives en tableau 3*3 call x6x33(fshr06,fshr33) c diagonalisation contraintes effectives actuelles c et valeurs propres par la methode de jacobi call b3_v33(fshr33,fshr3,vfshr33) c creation de la matrice de passage inverse call traps1(vfshr33t,vfshr33,3) c calcul des endommagements hydriques de traction endor=.false. alphaw_p=alphaw if ((skdw.gt.0.).and.(alphaw_p.gt.0.)) then do i=1,3 xx1=fshr3(i) if(xx1.gt.0.d0) then endor=.true. else xx1=0.d0 end if c endo de rgi et borne de dgt dwt3(i)=min(dmaxi,max((xx1/(xx1+skdw)),0.d0)) c print*,'ds endort dwt3(',i,')',dwt3(i) end do if(endor) then c calcul des endommagements hydriques de compression do i=1,3 c complementarite par orthogonalite call indce1(i,k,l) dwc3(i)=1.d0-((1.d0-dwt3(k))*(1.d0-dwt3(l)))**alphaw_p dwc3(i)=min(dmaxi,dwc3(i)) c print*,'dwc3(',i,')',dwc3(i) end do else do i=1,3 dwc3(i)=0.d0 end do end if else do i=1,3 dwc3(i)=0.d0 end do end if c ***************************************************************** c amplification seulement dans les directions des contraintes c de compression macroscopiques c passage des contraintes de compression en base prin des endo-w if(endor) then call chrep6(sigec6,vfshr33,.false.,sigec6p) call chrep6(sigef06,vfshr33,.false.,sigef6p) do i=1,6 if(i.le.3) then if(sigec6p(i).lt.(-sref)) then sigefa6p(i)=sigef6p(i)/(1.d0-dwc3(i)) else coeff=-sigec6p(i)/sref if(coeff.gt.0.d0) then sigefa6p(i)=sigef6p(i)/(1.d0-coeff*dwc3(i)) else sigefa6p(i)=sigef6p(i) end if end if else call indce0(i,k,l) dcws=0.d0 c la resistance au cisaillement depend de l etat de refermeture if(sigec6p(k).lt.(-sref)) then dcws=max(dcws,dwc3(k)) else coeff=-sigec6p(k)/sref if(coeff.gt.0.d0) then dcws=max(dcws,coeff*dwc3(k)) end if end if c prise en compte etat de refermeture if(sigec6p(l).lt.(-sref)) then dcws=max(dcws,dwc3(l)) else coeff=-sigec6p(l)/sref if(coeff.gt.0.d0) then dcws=max(dcws,coeff*dwc3(l)) end if end if c la fissure la moins fermee controle le cosaillement sigefa6p(i)=sigef6p(i)/(1.d0-dcws) end if end do c retour en base fixe call chrep6(sigefa6p,vfshr33t,.false.,sigefa6) c deformations effective elastiques amplifiee do i=1,6 epse_tild6(i)=0.d0 do j=1,6 epse_tild6(i)=epse_tild6(i)+souplesse66(i,j)*sigefa6(j) end do end do else c si pas d endo hydrique, pas d apmlification do i=1,6 epse_tild6(i)=epse6(i) end do end if c do i=1,6 c ampli6(i)=1.d0 c print*,'ampli',i,'=',ampli6(i) c end do c ***************************************************************** return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales