ProductsAbaqus/Standard Model descriptionThe user subroutine allows a creep law of the following general form to be defined: where and
The left Cauchy-Green strain tensor, , is defined as where is the deformation gradient with volume change eliminated, which is computed using The user subroutine must define the increment of creep equivalent strain, , as a function of the time increment, , and the variables used in the definition of , as well as the derivatives of the equivalent creep strain increment with respect to those variables. If any solution-dependent state variables are included in the definition of , they must also be integrated forward in time in this user subroutine. User subroutine interface 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,
* io_creep_deqcreepinc_dinv1 = 5,
* io_creep_deqcreepinc_dinv2 = 6,
* io_creep_deqcreepinc_ddetf = 7,
* io_creep_deqcreepinc_dpress = 8 )
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,
* ir_creep_inv1 = 8,
* ir_creep_inv2 = 9,
* ir_creep_detf = 10,
* ir_creep_press = 11 )
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),
outputData(io_creep_deqcreepinc_dinv1crp),
outputData(io_creep_deqcreepinc_dinv1),
outputData(io_creep_deqcreepinc_dinv2),
outputData(io_creep_deqcreepinc_ddetf) and
outputData(io_creep_deqcreepinc_dpress)
return
end
Variables to be defined
Variables that can be updated
Variables passed in for information
Example: Bergstrom-Boyce modelAs 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) where and
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, * io_creep_deqcreepinc_dinv1 = 5, * io_creep_deqcreepinc_dinv2 = 6, * io_creep_deqcreepinc_ddetf = 7, * io_creep_deqcreepinc_dpress = 8 ) 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, * ir_creep_inv1 = 8, * ir_creep_inv2 = 9, * ir_creep_detf = 10, * ir_creep_press = 11 ) 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 outputData(io_creep_deqcreepinc_dinv1) = zero outputData(io_creep_deqcreepinc_dinv2) = zero outputData(io_creep_deqcreepinc_ddetf) = zero outputData(io_creep_deqcreepinc_dpress) = zero C return end |