Download elnlin.eso

Back to the list

   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