C ELNLIN SOURCE AM 11/05/26 21:15:22 6982 subroutine ELNLIN (da, uel, force, XMKel, & delta_prec, Ftr, delta,deltamax) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * DIMENSION da(20), XMKel(5,5), uel(5), force(5), Ftr(5) DIMENSION Res(3), AA(3,3),AA1(3,3),DVM(3) * a=da(8) b=da(9) c=da(10) d=da(11) e=da(12) f=da(13) a9=da(15) * A1=2.5 epsilon2=1E-12 C Calcul de la limite élastique en décollement. uelu=sqrt(uel(3)**2+uel(5)**2) forceu=sqrt(force(3)**2+force(5)**2) XMKelu=1/sqrt(2.)*sqrt(XMKel(3,3)**2+XMKel(5,5)**2) * if (a9.eq.1) then q_1=4. q_2=1. else if (a9.eq.2) then q_1=4. q_2=1. else q_1=6. q_2=2. endif endif * fe=forceu**2.-(force(1)/q_1*EXP(-A1*force(1)))**2. * if (fe.le.0) then call MATVE1 (XMKel, uel, 5,5, Ftr,2) delta=delta_prec else * deltamax=1 * ff1=(force(1)*(EXP(-A1*force(1)) & +q_2*(delta_prec*deltamax)))/q_1-forceu gg1=-(((delta_prec/1.)/(1-(delta_prec/1.)) & +LOG(1.-(delta_prec/1.))) & *force(1)*EXP(-A1*force(1))) & /(2*q_1*XMKelu)+force(1)/XMKel(1,1)-uel(1) Xhh1=((delta_prec/1.)**2.*force(1)*EXP(-A1*force(1)))/q_1 & +(1.-(delta_prec/1.))*(forceu-XMKelu*uelu) Res(1)=-ff1 Res(2)=-gg1 Res(3)=-Xhh1 XNorm_Res=SQRT(Res(1)**2.+Res(2)**2.+Res(3)**2.) do while (XNorm_Res.gt.epsilon2) dff1dV=(EXP(-A1*force(1))+q_2*(delta_prec*deltamax))/q_1 & -(A1*force(1)*EXP(-A1*force(1)))/q_1 dff1dM=-1. dff1ddelta=1*deltamax*q_2*force(1)/q_1 dgg1dV=(((delta_prec/1)/(1.-(delta_prec/1)) & +LOG(1.-(delta_prec/1)))*A1*force(1)*EXP(-A1*force(1))) & /(2*q_1*XMKelu) & -(((delta_prec/1)/(1.-(delta_prec/1)) & +LOG(1.-(delta_prec/1))) & *EXP(-A1*force(1)))/(2*q_1*XMKelu)+1./XMKel(1,1) dgg1dM=0 dgg1ddelta=-1/1*(((delta_prec/1)*force(1) & *EXP(-A1*force(1)))/(2*q_1*(1.-(delta_prec/1))**2.*XMKelu)) dhh1dV=((delta_prec/1)**2.*EXP(-A1*force(1)))/q_1 & -((delta_prec/1)**2.*A1*force(1)*EXP(-A1*force(1)))/q_1 dhh1dM=1.-(delta_prec/1) dhh1ddelta=1/1*(2*((delta_prec/1)*force(1) & *EXP(-A1*force(1)))/q_1-forceu+XMKelu*uelu) AA(1,1)=dff1dV AA(1,2)=dff1dM AA(1,3)=dff1ddelta AA(2,1)=dgg1dV AA(2,2)=dgg1dM AA(2,3)=dgg1ddelta AA(3,1)=dhh1dV AA(3,2)=dhh1dM AA(3,3)=dhh1ddelta call HINV33(AA,AA1) call MATVE1(AA1,Res,3,3,DVM,2) force(1)=force(1)+DVM(1) forceu=forceu+DVM(2) delta_prec=delta_prec+DVM(3) * ff1=(force(1)*(EXP(-A1*force(1)) & +q_2*(delta_prec*deltamax)))/q_1-forceu gg1=-(((delta_prec/1.)/(1.-(delta_prec/1.)) & +LOG(1.-(delta_prec/1.))) & *force(1)*EXP(-A1*force(1))) & /(2*q_1*XMKelu)+force(1)/XMKel(1,1)-uel(1) Xhh1=((delta_prec/1.)**2.*force(1)*EXP(-A1*force(1)))/q_1 & +(1.-(delta_prec/1.))*(forceu-XMKelu*uelu) Res(1)=-ff1 Res(2)=-gg1 Res(3)=-Xhh1 XNorm_Res=SQRT(Res(1)**2.+Res(2)**2.+Res(3)**2.) enddo force(2)=XMKel(2,2)*uel(2) force(4)=XMKel(2,2)*uel(4) force(3)=uel(3)/uelu*forceu force(5)=uel(5)/uelu*forceu uelu1=sqrt(uel(3)**2+uel(5)**2) DO I=1,5 Ftr(I)=force(I) ENDDO delta=delta_prec endif return end