Télécharger elnlin.eso

Retour à la liste

Numérotation des lignes :

elnlin
  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
  42. call MATVE1 (XMKel, uel, 5,5, Ftr,2)
  43. delta=delta_prec
  44. else
  45. *
  46. deltamax=1
  47. *
  48. ff1=(force(1)*(EXP(-A1*force(1))
  49. & +q_2*(delta_prec*deltamax)))/q_1-forceu
  50. gg1=-(((delta_prec/1.)/(1-(delta_prec/1.))
  51. & +LOG(1.-(delta_prec/1.)))
  52. & *force(1)*EXP(-A1*force(1)))
  53. & /(2*q_1*XMKelu)+force(1)/XMKel(1,1)-uel(1)
  54. Xhh1=((delta_prec/1.)**2.*force(1)*EXP(-A1*force(1)))/q_1
  55. & +(1.-(delta_prec/1.))*(forceu-XMKelu*uelu)
  56. Res(1)=-ff1
  57. Res(2)=-gg1
  58. Res(3)=-Xhh1
  59. XNorm_Res=SQRT(Res(1)**2.+Res(2)**2.+Res(3)**2.)
  60. do while (XNorm_Res.gt.epsilon2)
  61. dff1dV=(EXP(-A1*force(1))+q_2*(delta_prec*deltamax))/q_1
  62. & -(A1*force(1)*EXP(-A1*force(1)))/q_1
  63. dff1dM=-1.
  64. dff1ddelta=1*deltamax*q_2*force(1)/q_1
  65. dgg1dV=(((delta_prec/1)/(1.-(delta_prec/1))
  66. & +LOG(1.-(delta_prec/1)))*A1*force(1)*EXP(-A1*force(1)))
  67. & /(2*q_1*XMKelu)
  68. & -(((delta_prec/1)/(1.-(delta_prec/1))
  69. & +LOG(1.-(delta_prec/1)))
  70. & *EXP(-A1*force(1)))/(2*q_1*XMKelu)+1./XMKel(1,1)
  71. dgg1dM=0
  72. dgg1ddelta=-1/1*(((delta_prec/1)*force(1)
  73. & *EXP(-A1*force(1)))/(2*q_1*(1.-(delta_prec/1))**2.*XMKelu))
  74. dhh1dV=((delta_prec/1)**2.*EXP(-A1*force(1)))/q_1
  75. & -((delta_prec/1)**2.*A1*force(1)*EXP(-A1*force(1)))/q_1
  76. dhh1dM=1.-(delta_prec/1)
  77. dhh1ddelta=1/1*(2*((delta_prec/1)*force(1)
  78. & *EXP(-A1*force(1)))/q_1-forceu+XMKelu*uelu)
  79. AA(1,1)=dff1dV
  80. AA(1,2)=dff1dM
  81. AA(1,3)=dff1ddelta
  82. AA(2,1)=dgg1dV
  83. AA(2,2)=dgg1dM
  84. AA(2,3)=dgg1ddelta
  85. AA(3,1)=dhh1dV
  86. AA(3,2)=dhh1dM
  87. AA(3,3)=dhh1ddelta
  88. call HINV33(AA,AA1)
  89. call MATVE1(AA1,Res,3,3,DVM,2)
  90. force(1)=force(1)+DVM(1)
  91. forceu=forceu+DVM(2)
  92. delta_prec=delta_prec+DVM(3)
  93. *
  94. ff1=(force(1)*(EXP(-A1*force(1))
  95. & +q_2*(delta_prec*deltamax)))/q_1-forceu
  96. gg1=-(((delta_prec/1.)/(1.-(delta_prec/1.))
  97. & +LOG(1.-(delta_prec/1.)))
  98. & *force(1)*EXP(-A1*force(1)))
  99. & /(2*q_1*XMKelu)+force(1)/XMKel(1,1)-uel(1)
  100. Xhh1=((delta_prec/1.)**2.*force(1)*EXP(-A1*force(1)))/q_1
  101. & +(1.-(delta_prec/1.))*(forceu-XMKelu*uelu)
  102. Res(1)=-ff1
  103. Res(2)=-gg1
  104. Res(3)=-Xhh1
  105. XNorm_Res=SQRT(Res(1)**2.+Res(2)**2.+Res(3)**2.)
  106. enddo
  107. force(2)=XMKel(2,2)*uel(2)
  108. force(4)=XMKel(2,2)*uel(4)
  109. force(3)=uel(3)/uelu*forceu
  110. force(5)=uel(5)/uelu*forceu
  111. uelu1=sqrt(uel(3)**2+uel(5)**2)
  112. DO I=1,5
  113. Ftr(I)=force(I)
  114. ENDDO
  115. delta=delta_prec
  116. endif
  117. return
  118. end
  119.  
  120.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales