VUTRS

User subroutine to define a reduced time shift function for a viscoelastic material.

User subroutine VUTRS:

  • can be used to define a temperature-time shift for a time domain viscoelastic analysis;

  • will be called for all material points of elements for which a user-defined shift function is specified to define the time-temperature correspondence as part of the viscoelastic material definition;

  • can use and update solution-dependent state variables; and

  • can have incoming field variables redefined by user subroutine VUSDFLD.

This page discusses:

User Subroutine Interface

      subroutine vutrs(
c Read only variables -
     1   nblock, nstatev, nfieldv, nprops, 
     2   stepTime, totalTime, dt, 
     3   cmname, props, density, coordMp, 
     4   tempOld, fieldOld, stateOld, 
     5   tempNew, fieldNew, 
c Write only variables -
     6   shift, stateNew )
c
      include 'vaba_param.inc'
c     
      dimension props(nprops), density(nblock), coordMp(nblock,*), 
     1   tempOld(nblock),tempNew(nblock),
     2   fieldOld(nblock,nfieldv), fieldNew(nblock,nfieldv),
     3   stateOld(nblock,nstatev), stateNew(nblock,nstatev),
     4   shift(nblock,2)
c      
      character*80 cmname
c
      do 100 k=1, nblock
         user coding to define shift(k,1) and shift(k,2)
  100 continue
c
      return
      end

Variables to Be Defined

shift(nblock,2)

Array that defines the shift function, A (A>0), at the material points. For material point k, shift(k,1) defines the shift function at the beginning of the increment, and shift(k,2) defines the shift function at the end of the increment. Abaqus/Explicit will apply an averaging scheme to these values that assumes that the natural logarithm of the shift function can be approximated by a linear function over the increment.

If either shift(k,1) or shift(k,2) is less than or equal to zero, no time shift will be applied.

Variables That Can Be Updated

stateNew(nblock,nstatev)

Array containing the solution-dependent state variables at the material points. This array will be passed in containing the values of these variables at the start of the increment unless they are updated in user subroutine VUSDFLD, in which case the updated values are passed in. If any of the solution-dependent state variables are being used in conjunction with the viscoelastic behavior, they must be updated in this subroutine to their values at the end of the increment.

Variables Passed in for Information

nblock

Number of material points to be processed in this call to VUTRS.

nstatev

Number of user-defined state variables that are associated with this material type (see Allocating Space for Solution-Dependent State Variables).

nfieldv

Number of user-defined external field variables.

nprops

User-specified number of user-defined material properties.

stepTime

Value of time since the step began.

totalTime

Value of total time. The time at the beginning of the step is given by totalTime-stepTime.

dt

Time increment size.

cmname

Material name, left justified. It is passed in as an uppercase character string. Some internal material models are given names starting with the “ABQ_” character string. To avoid conflict, “ABQ_” should not be used as the leading string for cmname.

props(nprops)

User-supplied material properties.

density(nblock)

Current density at the material points in the midstep configuration. This value may be inaccurate in problems where the volumetric strain increment is very small. If an accurate value of the density is required in such cases, the analysis should be run in double precision. This value of the density is not affected by mass scaling.

coordMp(nblock,*)

Material point coordinates. It is the midplane material point for shell elements and the centroid for beam elements.

tempOld(nblock)

Temperatures at each material point at the beginning of the increment.

fieldOld(nblock,nfieldv)

Values of the user-defined field variables at each material point at the beginning of the increment.

stateOld(nblock,nstatev)

State variables at each material point at the beginning of the increment.

tempNew(nblock)

Temperatures at each material point at the end of the increment.

fieldNew(nblock,nfieldv)

Values of the user-defined field variables at each material point at the end of the increment.