endort
C ENDORT SOURCE FD218221 24/02/07 21:15:10 11834 subroutine endort(epspg6,dgt3,dgc3,dmaxi,drgimaxi,ekdg, #alphar,epsseuil0,sigft61,sigfc61) implicit real*8 (a-h,o-z) implicit integer (i-n) c variables externes real*8 epspg6(6),epsseuil0,dgt3(3),dgc3(3),dmaxi,drgimaxi,ekdg real*8 alphar real*8 sigft61(6),sigfc61(6) c variables locales real*8 epspg33(3,3),epspg3(3),vepspg33(3,3),vepspg33t(3,3) real*8 sigft6p(6),sigfc6p(6),sigft6d(6),sigfc6d(6) logical endor real*8 xx1 integer i,k,l c*********************************************************************** c calcul de l endommagement due au franchissement d une critere c orthotrope (rgi ou capillaire par exple) c*********************************************************************** if(ekdg.gt.0.) then c valeurs propres des deformations plastiques de rgi c passage 33 call x6x33(epspg6,epspg33) c diagonalisation call b3_v33(epspg33,epspg3,vepspg33) c construction matrice de passage inverse call traps1(vepspg33t,vepspg33,3) c calcul des endommagements endor=.false. do i=1,3 xx1=epspg3(i)-epsseuil0 if(xx1.gt.0.d0) then endor=.true. else xx1=0.d0 end if c endo de rgi et borne de dgt dgt3(i)=min(dmaxi,drgimaxi,max((xx1/(xx1+ekdg)),0.d0)) c print*,'ds endort dgt3(',i,')',dgt3(i) end do c*********************************************************************** c test utilite endo de rgi if(endor) then c calcul des endommagements de compression de rgi do i=1,3 if(alphar.gt.0.) then c complementarite par orthogonalite call indce1(i,k,l) dgc3(i)=1.d0-((1.d0-dgt3(k))*(1.d0-dgt3(l)))**alphar dgc3(i)=min(dmaxi,drgimaxi,dgc3(i)) else dgc3(i)=0.d0 end if c print*,'dgc3(',i,')',dgc3(i) end do c*********************************************************************** c prise en compte des endo rgi de traction c*********************************************************************** c passage des contraintes effectives dans la base prin des endo call chrep6(sigft61,vepspg33,.false.,sigft6p) c application du tenseur d endommagement aux c contraintes de tractions do i=1,6 if(i.le.3) then sigft6d(i)=(1.d0-dgt3(i))*sigft6p(i) else call indce0(i,k,l) sigft6d(i)=(1.d0-max(dgt3(k),dgt3(l)))*sigft6p(i) end if end do c retour des contraintes positives en base fixe call chrep6(sigft6d,vepspg33t,.false.,sigft61) c*********************************************************************** c prise en compte des endo rgi de compression c*********************************************************************** c passage des contraintes effectives dans la base prin des endo call chrep6(sigfc61,vepspg33,.false.,sigfc6p) c application du tenseur d endommagement aux contraintes de tractions do i=1,6 if(alphar.gt.0.) then if(i.le.3) then c print*,'dgc3(',i,')=',dgc3(i) c if(dgc3(i).ge.1.)stop sigfc6d(i)=(1.d0-dgc3(i))*sigfc6p(i) else call indce0(i,k,l) sigfc6d(i)=(1.d0-max(dgc3(k),dgc3(l)))*sigfc6p(i) end if else sigfc6d(i)=sigfc6p(i) end if c print*,'av',sigfc6p(i),' ap',sigfc6d(i) c print*,'effacement effect dgc' c sigfc6d(i)=sigfc6p(i) end do c retour des contraintes en base fixe call chrep6(sigfc6d,vepspg33t,.false.,sigfc61) else c inutile de calculer les endo de compression do i=1,3 dgc3(i)=0.d0 end do end if else c pas de calcul d endo orthotrope dans ce cas do i=1,3 dgc3(i)=0.d0 dgt3(i)=0.d0 end do end if return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales