11 KiB
* 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
outputData(io_creep_equiv_creepinc)
Equivalent creep strain increment, \Delta\bar{\varepsilon}^{cr} .
outputData(io_creep_deqcreepinc_deqcreep)
The derivative: \partial\Delta\bar{\varepsilon}^{cr}/\partial\bar{\varepsilon}^{cr} .
outputData(io_creep_deqcreepinc_dqtild)
The derivative: \partial\Delta\bar{\varepsilon}^{cr}/\partial\tilde{q} .
outputData(io_creep_deqcreepinc_dinv1crp)
The derivative: \partial\Delta\bar{\varepsilon}^{cr}/\partial I_{1}^{cr} .
outputData(io_creep_deqcreepinc_dinv1)
The derivative: \partial\Delta\bar{\varepsilon}^{cr}/\partial\bar{I}_{1} .
outputData(io_creep_deqcreepinc_dinv2)
The derivative: \partial\Delta\bar{\varepsilon}^{cr}/\partial\bar{I}_{2} .
outputData(io_creep_deqcreepinc_ddetf)
The derivative: \partial\Delta\bar{\varepsilon}^{cr}/\partial J .
outputData(io_creep_deqcreepinc_dpress)
The derivative: \partial\Delta\bar{\varepsilon}^{cr}/\partial p .
Variable 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.
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.
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, .
r_array(ir_creep_inv1)
The first invariant, , of the left Cauchy-Green strain tensor, .
r_array(ir_creep_inv2)
The second invariant, , of the left Cauchy-Green strain tensor, .
r_array(ir_creep_detf)
The determinant of the deformation gradient, .
r_array(ir_creep_press)
Kirchhoff pressure.
nrarray
Size of array r_array.
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.
Example: Bergstrom-Boyce model
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)
\dot {\bar {\varepsilon}} ^ {c r} = A (\lambda^ {c r} - 1 + E) ^ {C} (\tilde {q}) ^ {m},
where
\lambda^ {c r} = \sqrt {\frac {1}{3} \mathbf {I} : \mathbf {C} ^ {c r}}
and
\mathbf{C}^{cr} is the right Cauchy-Green creep strain tensor, \tilde{q} 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)
include 'aba_param.inc'
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 )
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
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
1.1.24 UDECURRENT: User subroutine to define nonuniform volume current density in an eddy current or magnetostatic analysis.
Product: Abaqus/Standard
References
• “Eddy current analysis,” Section 6.7.5 of the Abaqus Analysis User’s Guide
• “Magnetostatic analysis,” Section 6.7.6 of the Abaqus Analysis User’s Guide
• *DECURRENT
Overview
User subroutine UDECURRENT:
• can be used to define the variation of volume current density vector as a function of position, time, element number, etc. for a transient eddy current or magnetostatic analysis or as a function of position, excitation frequency, phase, element number, etc. for a time-harmonic eddy current analysis;
• will be called at each load integration point for each element-based nonuniform volume current density definition during eddy current or magnetostatic analysis; and
• ignores any amplitude references that may appear with the associated step definition or nonuniform distributed volume current density definition.
User subroutine interface
subroutine udecurrent (
C Write only -
* bodycurrent,
C Read only -
* predef, coords, nBlock,
* i_array, niarray,
* r_array, nrarray,
* c_array, narray )
C
include 'aba_param.inc'
C
dimension bodycurrent(nBlock,*),
* predef(nBlock,2,*),
* coords(nBlock,*),
* i_array(*),
* r_array(*)
c
character*80 c_array(*)
parameter( i_udecurr_kstep = 1,
* i_udecurr_kinc = 2,
* i_udecurr_noel = 3,
* i_udecurr_npt = 4,
* i_udecurr_jltyp = 5,
* i_udecurr_phase = 6,
* i_udecurr_proc = 7,
* i_udecurr_nfld = 8 )
parameter( ir_udecurr_time_1 = 1,
* ir_udecurr_time_2 = 2,
* ir_udecurr_time_3 = 3 )
parameter( i_jltyp_cj = 1 )
parameter( i_proc_lf_th = 1,
* i_proc_lf_td = 2,
* i_proc_ms = 3 )
parameter( i_udecurr_phase_real = 1,
* i_udecurr_phase_imag = 2 )
user coding to define bodycurrent
return
end
Variable to be defined
bodycurrent(nBlock,*)
Components of the body current density vector for a block of load integration points. The units are \mathrm { C L } ^ { - 2 } \mathrm { T } ^ { - 1 } . bodycurrent will be passed into the routine as the vector specified as part of the elementbased distributed volume current density definition. If the vector is not defined, bodycurrent will be passed in as zero.
Variables passed in for information
predef(2,*)
An array containing values of temperature and all the predefined field variables at the current load integration point, based on interpolation from the values specified at the nodes. The first value in a pair, predef(1,*), corresponds to initial values; the second value, predef(2,*), corresponds to