UTRSNETWORK

User subroutine to define a reduced time shift function for models defined within the parallel rheological framework.

User subroutine UTRSNETWORK:

  • can be used to define a time-temperature shift for a nonlinear viscoelastic network for models defined using the parallel rheological framework;

  • 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 be used in conjunction with user subroutine USDFLD to redefine any field variables before they are passed in.

This page discusses:

User Subroutine Interface

      subroutine utrsnetwork (
C Must be updated
     *   outputData,
C Can be updated
     *   statev,
C Information (Read only)
     *   nOutput,
     *   nstatv,
     *   networkid,
     *   coords,
     *   temp,
     *   dtemp,
     *   nfield,
     *   predef,
     *   dpred,
     *   nprops,
     *   props,
     *   i_array,
     *   niarray,
     *   r_array,
     *   nrarray,
     *   c_array,
     *   ncarray)
C
      include 'aba_param.inc'
C
      parameter( io_trs_shift_begin = 1,
     *           io_trs_shift_end   = 2 )
C
      parameter( i_trs_kstep   = 1,
     *           i_trs_kinc    = 2,
     *           i_trs_noel    = 3,
     *           i_trs_npt     = 4,
     *           i_trs_layer   = 5,
     *           i_trs_kspt    = 6 )
C
      parameter( ir_trs_step_time  = 1,
     *           ir_trs_total_time = 2,
     *           ir_trs_creep_time = 3,
     *           ir_trs_timeinc    = 4 )

C
      parameter( ic_trs_material_name = 1 )
C
      dimension 
     *   statev(nstatv),
     *   predef(nfield),
     *   dpred(nfield),
     *   props(nprops),
     *   coords(*),
     *   outputData(nOutput),
     *   i_array(niarray),
     *   r_array(nrarray)

      character*80 c_array(ncarray)
C

      user coding to define outputData(io_trs_shift_begin) 
         and outputData(io_trs_shift_end)

      return
      end

Variables to Be Defined

outputData(io_trs_shift_begin)

The shift function at the beginning of the increment.

outputData(io_trs_shift_end)

The shift function at the end of the increment.

Variables That Can Be Updated

statev

An array containing the user-defined solution-dependent state variables at this point.

Variables Passed in for Information

nOutput

Size of array outputData. Currently equal to 2.

nstatv

Number of solution-dependent state variables associated with this material.

networkid

Network identification number, which identifies the network for which creep is defined.

coords

An array containing the current coordinates at this point.

temp

Temperature at the end of the increment.

dtemp

Increment of temperature.

nfield

Number of field variables.

predef

An array of interpolated values of predefined field variables at this point at the end of the increment, based on the values read in at the nodes and, optionally, redefined in user subroutine USDFLD.

dpred

An array of increments of predefined field variables.

nprops

User-specified number of user-defined material properties.

props

An array of user-specified property values.

i_array(i_trs_kstep)

Step number.

i_array(i_trs_kinc)

Increment number.

i_array(i_trs_noel)

Element number.

i_array(i_trs_npt)

Integration point.

i_array(i_trs_layer)

Layer number (for layered solids).

i_array(i_trs_kspt)

Section point number within the current layer.

niarray

Size of array i_array. Currently equal to 6.

r_array(ir_trs_step_time)

Value of step time at the end of the increment.

r_array(ir_trs_total_time)

Value of total time at the end of the increment.

r_array(ir_trs_creep_time)

Value of creep time at the end of the increment.

r_array(ir_trs_timeinc)

Time increment.

nrarray

Size of array r_array. Currently equal to 4.

c_array(ic_trs_material_name)

User-specified material name, left justified. Some internal material models are given names starting with the “ABQ_” character string. To avoid conflict, you should not use “ABQ_” as the leading string for the material name.

ncarray

Size of array c_array. Currently equal to 1.

Example: Williams-Landel-Ferry Shift Function

As an example of the coding of user subroutine UTRSNETWORK, consider the William-Landel-Ferry model to define the shift function. In this case the shift function is expressed as (see Thermorheologically Simple Temperature Effects)

log10(A)=-C1(θ-θ0)C2+(θ-θ0),

where

θ

is the temperature,

θ0

is the reference temperature, and

C1 and C2

are constants.

The user subroutine would be coded as follows:

      subroutine utrsnetwork (
C Must be updated
     *   outputData,
C Can be updated
     *   statev,
C Information (Read only)
     *   nOutput,
     *   nstatv,
     *   networkid,
     *   coords,
     *   temp,
     *   dtemp,
     *   nfield,
     *   predef,
     *   dpred,
     *   nprops,
     *   props,
     *   i_array,
     *   niarray,
     *   r_array,
     *   nrarray,
     *   c_array,
     *   ncarray)
C
      include 'aba_param.inc'
C
      parameter( io_trs_shift_begin = 1,
     *           io_trs_shift_end   = 2 )
C
      parameter( i_trs_kstep   = 1,
     *           i_trs_kinc    = 2,
     *           i_trs_noel    = 3,
     *           i_trs_npt     = 4,
     *           i_trs_layer   = 5,
     *           i_trs_kspt    = 6 )
C
      parameter( ir_trs_step_time  = 1,
     *           ir_trs_total_time = 2,
     *           ir_trs_creep_time = 3,
     *           ir_trs_timeinc    = 4 )

C
      parameter( ic_trs_material_name = 1 )
C
C
      parameter( zero=0.0d0, one=1.0d0, dln10=2.30258509299d0)
C
      dimension 
     *   statev(nstatv),
     *   predef(nfield),
     *   dpred(nfield),
     *   props(nprops),
     *   coords(*),
     *   outputData(nOutput),
     *   i_array(niarray),
     *   r_array(nrarray)

      character*80 c_array(ncarray)
C
      outputData(io_trs_shift_begin) = zero
      outputData(io_trs_shift_end) = zero
      temp0 = temp-dtemp
C
C WLF
C
      theta0 = props(1)
      C1 = props(2)
      C2 = props(3)
      outputData(io_trs_shift_begin) = 
     &   exp(-dln10*C1*(temp0-theta0)/(C2+(temp0-theta0)))
      outputData(io_trs_shift_end) = 
     &   exp(-dln10*C1*(temp-theta0)/(C2+(temp-theta0)))
C
      return
      end