Download dam_ab.eso

Back to the list

   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