Télécharger dam_ab.eso

Retour à la liste

Numérotation des lignes :

  1. C DAM_AB SOURCE FANDEUR 11/07/20 21:15:01 7043
  2. c
  3. SUBROUTINE DAM_AB (AVALC, BVALC, cons1, cons2, cons3, EBOUN,
  4. & HBOUN, stra1, stra2, stre1, stre2, thr0c)
  5. c
  6. c=====================================================================
  7. c =
  8. c Evaluation of parameters A and B (plastic-damage model) is made =
  9. c by means of the Newton-Raphson method. =
  10. c =
  11. c Author: Rui Faria Version: 93.04.20 =
  12. c -------- =
  13. c=====================================================================
  14. IMPLICIT INTEGER(I-N)
  15. IMPLICIT REAL*8(A-H,O-Z)
  16. real*8 AVALC, BVALC, cons1, cons2, cons3, EBOUN, HBOUN,
  17. . stra1, stra2, stre1, stre2, thr0c
  18. c
  19. integer itera, miter
  20. real*8 a1 , a2 , a3 , a4 , a5 , a6 , a7 ,
  21. . a8 , a9 , a10 , a11 , a12 , boldv, btria,
  22. . deriv, error, funct, prov0, prov1, prov2, r1 ,
  23. . r2 , str01, str02, toler
  24. c
  25. parameter (miter = 150, btria = 0.1 d-17, toler = 0.1 d-08)
  26. c=====----------------------------------------------------------------
  27. c determination of str01 and str02 |
  28. c=====----------------------------------------------------------------
  29. str01 = cons1 * stra1 + cons2
  30. str02 = cons1 * stra2 + cons2
  31. c=====----------------------------------------------------------------
  32. c equivalent "strains" |
  33. c=====----------------------------------------------------------------
  34. r1 = cons3 * str01
  35. r2 = cons3 * str02
  36. IF (r1.LT.0.D0 .OR. r2.LT.0.D0) THEN
  37. write(*,*) '===== DAM_AB ===='
  38. write(*,*) 'Donnees incompatibles ( sqrt(val<0) )'
  39. write(*,*) 'Revoir vos parametres materiau (compression)'
  40. CALL ERREUR(5)
  41. ENDIF
  42. r1 = SQRT (r1)
  43. r2 = SQRT (r2)
  44. c
  45. eboun = r2
  46. c=====----------------------------------------------------------------
  47. c many constants |
  48. c=====----------------------------------------------------------------
  49. a4 = thr0c / r2
  50. a1 = (stre2 - a4 * str02) * str01
  51. a2 = thr0c / r1
  52. a11 = stre1 - a2 * str01
  53. a3 = a11 * str02
  54. a5 = a1 * a2
  55. a6 = a3 * a4
  56. a7 = thr0c - r1
  57. a8 = thr0c - r2
  58. a9 = a1 * a7
  59. a10 = a3 * a8
  60. a12 = a6 - a5
  61. c=====----------------------------------------------------------------
  62. c newton method for A and B |
  63. c=====----------------------------------------------------------------
  64. boldv = btria
  65. itera = 1
  66. c
  67. do while (itera .le. miter)
  68. prov0 = EXP(boldv*a7)
  69. prov1 = a1 * prov0
  70. prov2 = a3 * EXP(boldv*a8)
  71. c
  72. funct = prov1 - prov2 + a12
  73. deriv = prov1 * a7 - prov2 * a8
  74. c
  75. bvalc = boldv - funct / deriv
  76. c
  77. error = ABS ((bvalc-boldv)/bvalc)
  78. c
  79. if (error .lt. toler) then
  80. avalc = a11 / (str01 * (prov0 - a2))
  81. hboun = thr0c / r2**2 * (1.0 d0 - avalc) +
  82. . avalc * bvalc * exp (bvalc*(thr0c-r2))
  83. RETURN
  84. else
  85. itera = itera + 1
  86. boldv = bvalc
  87. end if
  88. end do
  89. c=====----------------------------------------------------------------
  90. c not converged |
  91. c=====----------------------------------------------------------------
  92. write(*,'(/,''***** Pas de convergence dans DAM_AB *****'')')
  93. CALL ERREUR(5)
  94. c
  95. RETURN
  96. END
  97.  
  98.  
  99.  
  100.  

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