1 : C ELNLIN SOURCE AM 11/05/26 21:15:22 6982 2 : subroutine ELNLIN (da, uel, force, XMKel, 3 : & delta_prec, Ftr, delta,deltamax) 4 : 5 : IMPLICIT INTEGER(I-N) 6 : IMPLICIT REAL*8(A-H,O-Z) 7 : * 8 : DIMENSION da(20), XMKel(5,5), uel(5), force(5), Ftr(5) 9 : DIMENSION Res(3), AA(3,3),AA1(3,3),DVM(3) 10 : * 11 : a=da(8) 12 : b=da(9) 13 : c=da(10) 14 : d=da(11) 15 : e=da(12) 16 : f=da(13) 17 : a9=da(15) 18 : * 19 : A1=2.5 20 : epsilon2=1E-12 21 : C Calcul de la limite élastique en décollement. 22 : uelu=sqrt(uel(3)**2+uel(5)**2) 23 : forceu=sqrt(force(3)**2+force(5)**2) 24 : XMKelu=1/sqrt(2.)*sqrt(XMKel(3,3)**2+XMKel(5,5)**2) 25 : * 26 : if (a9.eq.1) then 27 : q_1=4. 28 : q_2=1. 29 : else 30 : if (a9.eq.2) then 31 : q_1=4. 32 : q_2=1. 33 : else 34 : q_1=6. 35 : q_2=2. 36 : endif 37 : endif 38 : * 39 : fe=forceu**2.-(force(1)/q_1*EXP(-A1*force(1)))**2. 40 : * 41 : if (fe.le.0) then 41 : call MATVE1 (XMKel, uel, 5,5, Ftr,2) 42 : delta=delta_prec 43 : else 44 : * 45 : deltamax=1 46 : * 47 : ff1=(force(1)*(EXP(-A1*force(1)) 48 : & +q_2*(delta_prec*deltamax)))/q_1-forceu 49 : gg1=-(((delta_prec/1.)/(1-(delta_prec/1.)) 50 : & +LOG(1.-(delta_prec/1.))) 51 : & *force(1)*EXP(-A1*force(1))) 52 : & /(2*q_1*XMKelu)+force(1)/XMKel(1,1)-uel(1) 53 : Xhh1=((delta_prec/1.)**2.*force(1)*EXP(-A1*force(1)))/q_1 54 : & +(1.-(delta_prec/1.))*(forceu-XMKelu*uelu) 55 : Res(1)=-ff1 56 : Res(2)=-gg1 57 : Res(3)=-Xhh1 58 : XNorm_Res=SQRT(Res(1)**2.+Res(2)**2.+Res(3)**2.) 59 : do while (XNorm_Res.gt.epsilon2) 60 : dff1dV=(EXP(-A1*force(1))+q_2*(delta_prec*deltamax))/q_1 61 : & -(A1*force(1)*EXP(-A1*force(1)))/q_1 62 : dff1dM=-1. 63 : dff1ddelta=1*deltamax*q_2*force(1)/q_1 64 : dgg1dV=(((delta_prec/1)/(1.-(delta_prec/1)) 65 : & +LOG(1.-(delta_prec/1)))*A1*force(1)*EXP(-A1*force(1))) 66 : & /(2*q_1*XMKelu) 67 : & -(((delta_prec/1)/(1.-(delta_prec/1)) 68 : & +LOG(1.-(delta_prec/1))) 69 : & *EXP(-A1*force(1)))/(2*q_1*XMKelu)+1./XMKel(1,1) 70 : dgg1dM=0 71 : dgg1ddelta=-1/1*(((delta_prec/1)*force(1) 72 : & *EXP(-A1*force(1)))/(2*q_1*(1.-(delta_prec/1))**2.*XMKelu)) 73 : dhh1dV=((delta_prec/1)**2.*EXP(-A1*force(1)))/q_1 74 : & -((delta_prec/1)**2.*A1*force(1)*EXP(-A1*force(1)))/q_1 75 : dhh1dM=1.-(delta_prec/1) 76 : dhh1ddelta=1/1*(2*((delta_prec/1)*force(1) 77 : & *EXP(-A1*force(1)))/q_1-forceu+XMKelu*uelu) 78 : AA(1,1)=dff1dV 79 : AA(1,2)=dff1dM 80 : AA(1,3)=dff1ddelta 81 : AA(2,1)=dgg1dV 82 : AA(2,2)=dgg1dM 83 : AA(2,3)=dgg1ddelta 84 : AA(3,1)=dhh1dV 85 : AA(3,2)=dhh1dM 86 : AA(3,3)=dhh1ddelta 86 : call HINV33(AA,AA1) 86 : call MATVE1(AA1,Res,3,3,DVM,2) 87 : force(1)=force(1)+DVM(1) 88 : forceu=forceu+DVM(2) 89 : delta_prec=delta_prec+DVM(3) 90 : * 91 : ff1=(force(1)*(EXP(-A1*force(1)) 92 : & +q_2*(delta_prec*deltamax)))/q_1-forceu 93 : gg1=-(((delta_prec/1.)/(1.-(delta_prec/1.)) 94 : & +LOG(1.-(delta_prec/1.))) 95 : & *force(1)*EXP(-A1*force(1))) 96 : & /(2*q_1*XMKelu)+force(1)/XMKel(1,1)-uel(1) 97 : Xhh1=((delta_prec/1.)**2.*force(1)*EXP(-A1*force(1)))/q_1 98 : & +(1.-(delta_prec/1.))*(forceu-XMKelu*uelu) 99 : Res(1)=-ff1 100 : Res(2)=-gg1 101 : Res(3)=-Xhh1 102 : XNorm_Res=SQRT(Res(1)**2.+Res(2)**2.+Res(3)**2.) 103 : enddo 104 : force(2)=XMKel(2,2)*uel(2) 105 : force(4)=XMKel(2,2)*uel(4) 106 : force(3)=uel(3)/uelu*forceu 107 : force(5)=uel(5)/uelu*forceu 108 : uelu1=sqrt(uel(3)**2+uel(5)**2) 109 : DO I=1,5 110 : Ftr(I)=force(I) 111 : ENDDO 112 : delta=delta_prec 113 : endif 114 : return 115 : end 116 :
© Cast3M 2003 - All rights reserved.
Disclaimer