Product: Abaqus/Standard
User subroutine UCREEPNETWORK:
is intended to provide creep laws for nonlinear viscoelastic networks for models defined using the parallel rheological framework (see “Parallel rheological framework,” Section 22.8.2 of the Abaqus Analysis User's Guide);
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.
subroutine ucreepnetwork ( 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_creep_equiv_creepinc = 1, * io_creep_deqcreepinc_deqcreep = 2, * io_creep_deqcreepinc_dqtild = 3, * io_creep_deqcreepinc_dinv1crp = 4 ) C parameter( i_creep_kstep = 1, * i_creep_kinc = 2, * i_creep_noel = 3, * i_creep_npt = 4, * i_creep_layer = 5, * i_creep_kspt = 6, * i_creep_lend = 7 ) C parameter( ir_creep_step_time = 1, * ir_creep_total_time = 2, * ir_creep_creep_time = 3, * ir_creep_timeinc = 4, * ir_creep_equiv_creep_strain = 5, * ir_creep_qtild = 6, * ir_creep_inv1crp = 7 ) C parameter( ic_creep_material_name = 1 ) C dimension * statev(nstatv), * predef(nfield), * dpred(nfield), * coords(*), * props(nprops), * outputData(nOutput), * i_array(niarray), * r_array(nrarray) character*80 c_array(ncarray) C user coding to define outputData(io_creep_equiv_creepinc), outputData(io_creep_deqcreepinc_deqcreep), outputData(io_creep_deqcreepinc_dqtild) and outputData(io_creep_deqcreepinc_dinv1crp) return end
outputData(io_creep_equiv_creepinc)
Equivalent creep strain increment, .
outputData(io_creep_deqcreepinc_deqcreep)
The derivative: .
outputData(io_creep_deqcreepinc_dqtild)
The derivative: .
outputData(io_creep_deqcreepinc_dinv1crp)
The derivative: .
statev
An array containing the user-defined solution-dependent state variables at this point.
nOutput
Size of array outputData. Currently equal to 4.
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 property values associated with this creep model.
props
An array of user-specified property values that are used to define the creep model.
i_array(i_creep_kstep)
Step number.
i_array(i_creep_kinc)
Increment number.
i_array(i_creep_noel)
Element number.
i_array(i_creep_npt)
Integration point.
i_array(i_creep_layer)
Layer number (for layered solids).
i_array(i_creep_kspt)
Section point number within the current layer.
i_array(i_creep_lend)
Start/end of increment flag. The value of 0 denotes the beginning of the increment, and the value of 1 denotes the end of the increment.
niarray
Size of array i_array. Currently equal to 7.
r_array(ir_creep_step_time)
Value of step time at the end of the increment.
r_array(ir_creep_total_time)
Value of total time at the end of the increment.
r_array(ir_creep_creep_time)
Value of creep time at the end of the increment.
r_array(ir_creep_timeinc)
Time increment.
r_array(ir_creep_equiv_creep_strain)
Equivalent creep strain.
r_array(ir_creep_qtild)
Equivalent deviatoric Kirchhoff stress.
r_array(ir_creep_inv1crp)
The first invariant, , of the right Cauchy-Green creep strain tensor,
.
nrarray
Size of array r_array. Currently equal to 7.
c_array(ic_creep_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.
As an example of the coding of user subroutine UCREEPNETWORK, consider the Bergstrom-Boyce model. In this case the equivalent creep strain rate is expressed as (see “Parallel rheological framework,” Section 22.8.2 of the Abaqus Analysis User's Guide)
is the right Cauchy-Green creep strain tensor,
is the equivalent deviatoric Kirchhoff stress, and
A, m, C, and E
are material parameters.
The user subroutine would be coded as follows:
subroutine ucreepnetwork ( 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_creep_equiv_creepinc = 1, * io_creep_deqcreepinc_deqcreep = 2, * io_creep_deqcreepinc_dqtild = 3, * io_creep_deqcreepinc_dinv1crp = 4 ) C parameter( i_creep_kstep = 1, * i_creep_kinc = 2, * i_creep_noel = 3, * i_creep_npt = 4, * i_creep_layer = 5, * i_creep_kspt = 6, * i_creep_lend = 7 ) C parameter( ir_creep_step_time = 1, * ir_creep_total_time = 2, * ir_creep_creep_time = 3, * ir_creep_timeinc = 4, * ir_creep_equiv_creep_strain = 5, * ir_creep_qtild = 6, * ir_creep_inv1crp = 7 ) C parameter( ic_creep_material_name = 1 ) C C model parameters parameter ( zero=0.0d0,half=0.5d0,one=1.0d0,two=2.0d0, & three=3.0d0,five=5.0d0,six=6.0d0 ) C dimension * statev(nstatv), * predef(nfield), * dpred(nfield), * coords(*), * props(nprops), * outputData(nOutput), * i_array(niarray), * r_array(nrarray) character*80 c_array(ncarray) C C Bergstrom-Boyce Model C A = props(1) dm = props(2) C = props(3) E = props(4) C dI1 = r_array(ir_creep_inv1crp) dLamb = (dI1/three)**half sigmaB = r_array(ir_creep_qtild) dt = r_array(ir_creep_timeinc) C C deq deq = dt*A*(dLamb-one+E)**C*sigmaB**dm C C d(deq)/(dI1crp) deqdi1 = deq*C/(dLamb-one+E)/dLamb/six C C d(eq)/d(eq) deqeq = zero C C d(eq)/d(q) deqdq = dm*dt*A*(dLamb-one+E)**C*sigmaB**(dm-one) C C set output outputData(io_creep_equiv_creepinc) = deq outputData(io_creep_deqcreepinc_deqcreep) = deqeq outputData(io_creep_deqcreepinc_dqtild) = deqdq outputData(io_creep_deqcreepinc_dinv1crp) = deqdi1 C return end