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)' 39 : CALL ERREUR(5) 40 : ENDIF 41 : r1 = SQRT (r1) 42 : r2 = SQRT (r2) 43 : c 44 : eboun = r2 45 : c=====---------------------------------------------------------------- 46 : c many constants | 47 : c=====---------------------------------------------------------------- 48 : a4 = thr0c / r2 49 : a1 = (stre2 - a4 * str02) * str01 50 : a2 = thr0c / r1 51 : a11 = stre1 - a2 * str01 52 : a3 = a11 * str02 53 : a5 = a1 * a2 54 : a6 = a3 * a4 55 : a7 = thr0c - r1 56 : a8 = thr0c - r2 57 : a9 = a1 * a7 58 : a10 = a3 * a8 59 : a12 = a6 - a5 60 : c=====---------------------------------------------------------------- 61 : c newton method for A and B | 62 : c=====---------------------------------------------------------------- 63 : boldv = btria 64 : itera = 1 65 : c 66 : do while (itera .le. miter) 67 : prov0 = EXP(boldv*a7) 68 : prov1 = a1 * prov0 69 : prov2 = a3 * EXP(boldv*a8) 70 : c 71 : funct = prov1 - prov2 + a12 72 : deriv = prov1 * a7 - prov2 * a8 73 : c 74 : bvalc = boldv - funct / deriv 75 : c 76 : error = ABS ((bvalc-boldv)/bvalc) 77 : c 78 : if (error .lt. toler) then 79 : avalc = a11 / (str01 * (prov0 - a2)) 80 : hboun = thr0c / r2**2 * (1.0 d0 - avalc) + 81 : . avalc * bvalc * exp (bvalc*(thr0c-r2)) 82 : RETURN 83 : else 84 : itera = itera + 1 85 : boldv = bvalc 86 : end if 87 : end do 88 : c=====---------------------------------------------------------------- 89 : c not converged | 90 : c=====---------------------------------------------------------------- 91 : write(*,'(/,''***** Pas de convergence dans DAM_AB *****'')') 91 : CALL ERREUR(5) 92 : c 93 : RETURN 94 : END 95 : 96 : 97 :
© Cast3M 2003 - All rights reserved.
Disclaimer