Results 1 to 5 of 5

Thread: Out put variables while using VUSDFLD

  1. #1

    Out put variables while using VUSDFLD

    Hi,

    I am studying the sample of VUSDFLD of ABAQUS user subroutine reference manual.
    I tried to output variables like props and stateNew while debugging using "ABAQUS job=sample user=vusdfld.for interactive" in ABAQUS command.
    But the output is weird. For example, "props" which indicates modulus in the sample, constantly equals zero.

    Thanks!
    DavidZ



    Output:

    Code:
    .................
     nprops=   173011416
     stateNew=  3.9973736E-02
     props=  0.0000000E+00
     nprops=   173112296
     stateNew=  3.9980490E-02
     props=  0.0000000E+00
     nprops=   173011416
     stateNew=  3.9987233E-02
     props=  0.0000000E+00
    ...............

    altered sample subroutine:
    Code:
          subroutine vusdfld(
    c Read only -
         *   nblock, nstatev, nfieldv, nprops, ndir, nshr, 
         *   jElem, kIntPt, kLayer, kSecPt, 
         *   stepTime, totalTime, dt, cmname, 
         *   coordMp, direct, T, charLength, props, 
         *   stateOld, 
    c Write only -
         *   stateNew, field )
    c
          include 'vaba_param.inc'
    c
          dimension jElem(nblock), coordMp(nblock,*), 
         *          direct(nblock,3,3), T(nblock,3,3), 
         *          charLength(nblock), props(nprops), 
         *          stateOld(nblock,nstatev), 
         *          stateNew(nblock,nstatev),
         *          field(nblock,nfieldv)
          character*80 cmname
    c
    c     Local arrays from vgetvrm are dimensioned to 
    c     maximum block size (maxblk)
    c
          parameter( nrData=6 )
          character*3 cData(maxblk*nrData)
          dimension rData(maxblk*nrData), jData(maxblk*nrData)
    c      READ(*,*), rData
    c
          jStatus = 1
          call vgetvrm( 'LE', rData, jData, cData, jStatus )
    c
          if( jStatus .ne. 0 ) then
             call xplb_abqerr(-2,'Utility routine VGETVRM '//
         *      'failed to get variable.',0,zero,' ')
             call xplb_exit
          end if
    c
          call setField( nblock, nstatev, nfieldv, nrData, 
         *   rData, stateOld, stateNew, field)
    c
          return
          end
          subroutine setField( nblock, nstatev, nfieldv, nrData, 
         *   strain, stateOld, stateNew, field )
    c
          include 'vaba_param.inc'
    c
          dimension stateOld(nblock,nstatev), 
         *   stateNew(nblock,nstatev),
         *   field(nblock,nfieldv), strain(nblock,nrData)
    c      Read(*,*), stateOld 
    c
          do k = 1, nblock
    c
    c     Absolute value of current strain:
             eps = abs( strain(k,1) )
    c
    c     Maximum value of strain up to this point in time:
             epsmax = stateOld(k,1)
    c
    c     Use the maximum strain as a field variable
             field(k,1) = max( eps, epsmax )
    c
    c     Store the maximum strain as a solution dependent state 
             stateNew(k,1) = field(k,1)
          print *,'nprops=', nprops 
          print *,'stateNew=', stateNew(k,1)
          print *,'props=', props
          end do
    c
          return
          end

    INP

    Code:
    *HEADING
     Damaged elasticity model with user subroutine vusdfld
    *ELEMENT, TYPE=T2D2, ELSET=ONE
    1, 1, 2
    *NODE, NSET=NALL
       1,  0., 0.
       2, 10., 0.
    *SOLID SECTION, ELSET=ONE, MATERIAL=ELASTIC
    1.
    *MATERIAL, NAME=ELASTIC
    *ELASTIC, DEPENDENCIES=1
    ** Table of modulus values decreasing as a function
    ** of field variable 1.
    2000., 0.3, 0., 0.00
    1500., 0.3, 0., 0.01
    1200., 0.3, 0., 0.02
    1000., 0.3, 0., 0.04
    *DENSITY
    1.0e-6
    *USER DEFINED FIELD
    *DEPVAR
    1
    1,EPSMAX,"Maximum strain value"
    *BOUNDARY
    1, 1, 2
    2, 2
    *AMPLITUDE, NAME=LOAD1
    0.0, 0.0, 1.0, 1.0
    *AMPLITUDE, NAME=LOAD2
    0.0, 0.0, 2.0, 1.0
    *AMPLITUDE, NAME=UNLOAD
    0.0, 1.0, 1.0, 0.0
    *STEP, NLGEOM=NO
    *DYNAMIC, EXPLICIT
     , 1.0
    *CLOAD, AMPLITUDE=LOAD1
    2, 1, 20.
    *OUTPUT, FIELD, VARIABLE=PRESELECT
    *OUTPUT, HISTORY, VARIABLE=PRESELECT
    *ELEMENT OUTPUT, ELSET=ONE
    S, E, SDV
    *NODE OUTPUT, NSET=NALL
    RF, CF, U
    *END STEP
    *STEP, NLGEOM=NO
    *DYNAMIC, EXPLICIT
    , 1.0
    *CLOAD, AMPLITUDE=UNLOAD
    2, 1, 20.
    *END STEP
    *STEP, NLGEOM=NO
    *DYNAMIC, EXPLICIT
     , 2.0
    *CLOAD, AMPLITUDE=LOAD2
    2, 1, 40.
    *END STEP
    Last edited by Davidz; 2012-08-13 at 16:14.

  2. #2
    You have two problems here. First, props isn't your value of Young's Modulus from the INP file. It is an array of material constants that is used with the VUMAT subroutine.

    Second, you aren't passing nprop or the props array into the subroutine where your print statements are so naturally they will have no set value in there.

  3. #3
    Quote Originally Posted by lumpwood View Post
    You have two problems here. First, props isn't your value of Young's Modulus from the INP file. It is an array of material constants that is used with the VUMAT subroutine.

    Second, you aren't passing nprop or the props array into the subroutine where your print statements are so naturally they will have no set value in there.
    Thank you! Lumpwood.
    Is there any way that I can output or check modulus for this sample?
    (modulus decreases as a function of the maximum tensile strain)

  4. #4
    Quote Originally Posted by Davidz View Post
    Thank you! Lumpwood.
    Is there any way that I can output or check modulus for this sample?
    (modulus decreases as a function of the maximum tensile strain)

    Yes, but not directly that I know of. You will know the field variable value, which can be requested as output for the ODB file and viewed as a contour plot. Abaqus will linearly interpolate the value of E based on the table of field variable dependencies in your INP file so you can use a simple interpolation to get E based on the field variable value.

  5. #5
    Thank you.
    Modulus can be tracked by stress/strain. Curve of modulus consistent with the table of field variable dependencies in INP file.

    Redards,
    Davidz

Similar Threads

  1. Latham's damage using VUSDFLD
    By abhi2235 in forum Finite Element Modeling
    Replies: 3
    Last Post: 2011-11-10, 09:15
  2. working with two subroutine vusdfld and vdload at the same time
    By arashn1981 in forum User Material Subroutines
    Replies: 0
    Last Post: 2011-09-16, 12:03
  3. VUSDFLD + Error in connection to analysis
    By priyadd84 in forum Finite Element Modeling
    Replies: 0
    Last Post: 2011-08-18, 01:54
  4. Defining variables in UMAT
    By Lelio Brito in forum Finite Element Modeling
    Replies: 1
    Last Post: 2009-05-16, 20:25
  5. Two variables in VUMAT
    By jingyuan in forum Finite Element Modeling
    Replies: 3
    Last Post: 2007-11-11, 14:38

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •