<!-- source-page: 21 -->

$$
\Delta \varepsilon_ {s} ^ {c r} = \frac {\Delta \bar {\varepsilon} _ {s} ^ {c r}}{f ^ {c r}} \left(\frac {q}{\sqrt {(0 . 1 \frac {d}{(1 - \frac {1}{3} \tan \beta)} \tan \beta) ^ {2} + q ^ {2}}} \mathbf {n} + \frac {1}{3} \tan \beta \mathbf {I}\right),
$$

where $\mathbf { n } = \partial \tilde { q } / \partial \sigma$ d is the material cohesion, the variable $f ^ { c r }$ is determined in such a way that

$$
f ^ {c r} = \frac {1}{\bar {\sigma} ^ {c r}} \pmb {\sigma}: \frac {\partial G _ {s} ^ {c r}}{\partial \pmb {\sigma}},
$$

and $G _ { s } ^ { c r }$ is the cohesion creep potential

$$
G _ {s} ^ {c r} = \sqrt {(0 . 1 \frac {d}{(1 - \frac {1}{3} \tan \beta)} \tan \beta) ^ {2} + q ^ {2}} - p \tan \beta .
$$

# Calculation of incremental creep strains for the consolidation mechanism

Abaqus computes the incremental creep strain (or the incremental viscoplastic strain) components of the consolidation mechanism as

$$
\Delta \varepsilon_ {c} ^ {c r} = \frac {\triangle \overline {{\varepsilon}} _ {c} ^ {c r}}{G _ {c} ^ {c r}} (R ^ {2} q \mathbf {n} - \frac {1}{3} (p - p _ {a}) \mathbf {I}),
$$

where R controls the shape of the cap, and $G _ { c } ^ { c r }$ is the consolidation creep potential

$$
G _ {c} ^ {c r} = \sqrt {(p - p _ {a}) ^ {2} + (R q) ^ {2}}.
$$

Cohesion material properties are determined with a uniaxial compression test in which $\begin{array} { r l } { d \mathcal { \bar { E } } _ { s } ^ { c r } = } \end{array}$ $\| d \epsilon _ { 1 1 } ^ { c r } \|$ , and consolidation material properties are determined with a volumetric compression test in which $d \bar { \varepsilon } _ { c } ^ { c r } = \| d \epsilon _ { v o l } ^ { c r } \|$ . Most likely, $g _ { s } ^ { c r }$ is a positive function of $\bar { \sigma } ^ { c r }$ , and $g _ { \mathrm { c } } ^ { c r }$ is a positive function of $\overline { { p } } ^ { c r }$ .

# Gaskets

For gaskets whose behavior includes creep, the routine allows any “creep” law of the following general form to be defined:

$$
\dot {\varepsilon} ^ {c r} = g ^ {c r} (\sigma , \varepsilon^ {c r}, \mathrm{time}, \ldots),
$$

where $\varepsilon ^ { c r }$ is the compressive creep strain, conjugate to $\sigma ,$ the compressive stress in the gasket.

The user subroutine must define the increments of inelastic creep strain, $\triangle \varepsilon ^ { c r }$ , as functions of and any other variables used in the definitions of $\boldsymbol { g } ^ { c r }$ (such as solution-dependent state variables introduced by you) and of the time increment, $\triangle t .$ . If any solution-dependent state variables are included in the definitions of ${ \bf { \dot { g } } } ^ { c r }$ , they must also be integrated forward in time in this routine. Abaqus will automatically multiply this creep strain by the proper thickness (see “Defining the gasket behavior directly using a gasket behavior model,” Section 32.6.6 of the Abaqus Analysis User’s Guide) to obtain a creep closure.

<!-- source-page: 22 -->

Abaqus provides both explicit and implicit time integration of creep and swelling behavior defined in this routine. The choice of the time integration scheme depends on the procedure type, the procedure definition, and whether a geometric linear or nonlinear analysis is requested (see “Rate-dependent plasticity: creep and swelling,” Section 23.2.4 of the Abaqus Analysis User’s Guide).

Implicit integration is generally more effective when the response period is long relative to typical relaxation times for the material. Simple high-temperature structural design applications usually do not need implicit integration, but more complicated problems (such as might arise in manufacturing processes), creep buckling applications, or nonstructural problems (such as geotechnical applications) often are integrated more efficiently by the implicit method provided in the program. If implicit integration is used with this subroutine, nonlinear equations must be solved at each time step and the variations of $\triangle \bar { \varepsilon } ^ { c r } , \triangle \bar { \varepsilon } ^ { s w } , \triangle \bar { \varepsilon } _ { s } ^ { c r }$ , or $\triangle \bar { \varepsilon } _ { c } ^ { c r }$ with respect to $\bar { \varepsilon } ^ { c r } , \bar { \varepsilon } ^ { s w } , \bar { \varepsilon } _ { s } ^ { c r } , \bar { \varepsilon } _ { c } ^ { c r } , { \pmb { p } } , \tilde { q } , \bar { p } ^ { c r }$ , or $\bar { \sigma } ^ { c r }$ must be defined in the subroutine. To obtain good convergence during implicit integration, it is essential to define these quantities accurately.

At the start of a new increment the subroutine is called once for each integration point to calculate the estimated creep strain based on the state at the start of the increment. Subsequently, it is called twice for each iteration if explicit integration is used: once to calculate the creep strain increment at the start of the increment and once to calculate it at the end of the increment. This is needed to test the validity of the time increment with respect to the user-specified maximum allowable difference in the creep strain increment. The flag LEND indicates whether the routine is called at the start or the end of the increment. The subroutine must use the corresponding values of time, temperature, field variables, and solution-dependent state variables in the calculation of the creep strain increment.

For implicit integration Abaqus uses a local iteration procedure to solve the nonlinear constitutive equations, and the subroutine is called multiple times. The exact number of calls depends on the convergence rate of the local iteration procedure and, hence, will vary from point to point. During these iterations it is possible for the values of the state variables to be far from their final values when the equations are solved. Therefore, the coding in the subroutine must adequately protect against arithmetic failures (such as floating point overflows) even when variables are passed in with physically unreasonable values. As in explicit integration, the variable LEND indicates whether the routine is called at the start or the end of the increment.

# Constant stress assumption when defining creep and swelling

When the creep and swelling behavior are defined by simple formulæ, it is often possible to calculate the increments of equivalent creep and swelling strain exactly if it is assumed that the stress is constant during the increment. This approach has the advantage that it provides very good accuracy within the constant stress assumption. It also avoids the problem that arises for some creep behavior definitions: that the creep strain rate becomes infinite at zero time (or strain). Otherwise, in such a case you must protect against causing arithmetic failures at the start of the solution.

<!-- source-page: 23 -->

# Defining both plasticity and creep

If both plasticity and creep are defined for a material, Abaqus will calculate the creep strain before entering the plasticity routines. The stresses passed into the creep routine may, therefore, exceed the yield stress.

# Interpretation of stress and strain variables

In finite-strain applications strain variables should be interpreted as logarithmic strains and stresses as “true” stress.

# User subroutine interface

```txt
SUBROUTINE CREEP (DECRA, DESWA, STATEV, SERD, EC, ESW, P, QTILD,
1 TEMP, DTEMP, PREDEF, DPRED, TIME, DTIME, CMNAME, LEXIMP, LEND,
2 COORDS, NSTATV, NOEL, NPT, LAYER, KSPT, KSTEP, KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
C
DIMENSION DECRA(5), DESWA(5), STATEV(*), PREDEF(*), DPRED(*),
1 TIME(3), EC(2), ESW(2), COORDS(*)
user coding to define DECRA, DESWA
RETURN
END 
```

# Variables to be defined

# In all cases

# DECRA(1)

The definition depends on the usage:

• Metal creep: $\bigtriangleup \bar { \varepsilon } ^ { c r }$ , equivalent (uniaxial) deviatoric creep strain increment.   
• Drucker-Prager creep: $\bigtriangleup \bar { \varepsilon } ^ { c r }$ , equivalent (uniaxial) creep strain increment.   
• Capped Drucker-Prager creep: $\triangle \bar { \varepsilon } _ { s } ^ { c r }$ , equivalent (uniaxial) cohesion creep strain increment.   
• Gasket creep: $\triangle \varepsilon ^ { c r }$ , uniaxial compressive creep strain increment.

# DESWA(1)

The definition depends on the usage:

• Metal creep: $\bigtriangleup \bar { \varepsilon } ^ { s w }$ , volumetric swelling strain increment.

<!-- source-page: 24 -->

• Capped Drucker-Prager creep: $\triangle \bar { \varepsilon } _ { c } ^ { c r }$ , equivalent (volumetric) consolidation creep strain increment.   
• Drucker-Prager and gasket creep: = 0.

# For implicit creep integration (LEXIMP=1, see below)

# DECRA(2)

The definition depends on the usage:

• Metal creep and Drucker-Prager creep: $\partial \triangle \bar { \varepsilon } ^ { c r } / \partial \bar { \varepsilon } ^ { c r }$ .   
• Capped Drucker-Prager creep: $\partial \triangle \bar { \varepsilon } _ { s } ^ { c r } / \partial \bar { \varepsilon } _ { s } ^ { c r }$   
• Gasket creep: $\partial \triangle \varepsilon ^ { c r } / \partial \varepsilon ^ { c r }$ .

# DECRA(3)

The definition depends on the usage:

• Metal creep: $\partial \triangle \bar { \varepsilon } ^ { c r } / \partial \bar { \varepsilon } ^ { s w }$ .   
• Drucker-Prager creep, gasket creep, and capped Drucker-Prager creep: = 0.

# DECRA(4)

The definition depends on the usage:

• Metal creep: $\partial \triangle \bar { \varepsilon } ^ { c r } / \partial p$   
• Drucker-Prager creep, gasket creep, and capped Drucker-Prager creep: = 0.

# DECRA(5)

The definition depends on the usage:

• Metal creep: ${ \partial \triangle E ^ { c r } } / { \partial \tilde { q } } .$   
• Drucker-Prager creep: $\partial \Delta \bar { \varepsilon } ^ { c r } / \partial \bar { \sigma } ^ { c r }$   
• Capped Drucker-Prager creep: $\partial \Delta \bar { \varepsilon } _ { s } ^ { c r } / \partial \bar { \sigma } ^ { c r }$ .   
• Gasket creep: $\partial \triangle \varepsilon ^ { c r } / \partial \sigma$

# DESWA(2)

The definition depends on the usage:

• Metal creep: $\partial \triangle \bar { \varepsilon } ^ { s w } / \partial \bar { \varepsilon } ^ { c r }$ .   
• Drucker-Prager creep, gasket creep, and capped Drucker-Prager creep: = 0.

# DESWA(3)

The definition depends on the usage:

• Metal creep: $\partial \triangle \bar { \varepsilon } ^ { s w } / \partial \bar { \varepsilon } ^ { s w }$ .   
• Capped Drucker-Prager creep: ${ \partial \bigtriangleup \bar { \varepsilon } _ { c } ^ { c r } } / { \partial \bar { \varepsilon } _ { c } ^ { c r } }$ .   
• Drucker-Prager and gasket creep: = 0.

# DESWA(4)

The definition depends on the usage:

<!-- source-page: 25 -->

• Metal creep: $\partial \triangle \bar { \varepsilon } ^ { s w } / \partial p$ .   
• Capped Drucker-Prager creep: ${ \partial \bigtriangleup \bar { \varepsilon } _ { c } ^ { c r } } / { \partial \bar { p } ^ { c r } }$ .   
• Drucker-Prager and gasket creep: = 0.

# DESWA(5)

The definition depends on the usage:

• Metal creep: $\partial \triangle \bar { \varepsilon } ^ { s w } / \partial \tilde { q } .$ .   
• Drucker-Prager creep, gasket creep, and capped Drucker-Prager creep: = 0.

# Variables that can be updated

# STATEV

An array containing the user-defined solution-dependent state variables at this point. 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 USDFLD or UEXPAN, in which case the updated values are passed in. If any of the solution-dependent variables are being used in conjunction with the creep behavior and the routine was called at the end of the increment (LEND=1, see the definition of LEND below), they must be updated in this subroutine to their values at the end of the increment. Furthermore, if the solution-dependent state variables are defined as a function of the creep (swelling) strain increment, they must be updated based on the creep (swelling) strain increment computed as EC(2)-EC(1) (likewise ESW(2)-ESW(1)), where EC(1), EC(2), ESW(1), and ESW(2) are defined below. You define the size of this array by allocating space for it (see “Allocating space” in “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide, for more information).

# SERD

Magnitude of the strain energy rate density, $\dot { W }$ (required only in -integral calculations). The strain energy rate density is defined as

$$
\dot {W} = \int_ {0} ^ {\dot {\bar {\varepsilon}} ^ {c r}} q d \dot {\bar {\varepsilon}} ^ {c r} + \int_ {0} ^ {\dot {\bar {\varepsilon}} ^ {s w}} p d \dot {\bar {\varepsilon}} ^ {s w} = \int_ {0} ^ {\dot {\bar {\varepsilon}}} \boldsymbol {\sigma}: (d \dot {\bar {\varepsilon}} ^ {c r} + d \dot {\bar {\varepsilon}} ^ {s w}).
$$

Elastic rates are ignored in the calculation of $\dot { W } .$ . The contour integral will, therefore, be path independent only for steady-state creep conditions; that is, when the creep straining dominates throughout the specimen.

# Variables passed in for information

# EC(1)

The definition depends on the usage:

• Metal creep and Drucker-Prager creep: $\bar { \varepsilon } ^ { c r }$ at the start of the increment.   
• Capped Drucker-Prager creep: $\bar { \varepsilon } _ { s } ^ { c r }$ at the start of the increment.   
• Gasket creep: $\varepsilon ^ { c r }$ at the start of the increment.

<!-- source-page: 26 -->

# EC(2)

The definition depends on the usage:

• Metal creep and Drucker-Prager creep: $\bar { \varepsilon } ^ { c r }$ at the end of the increment.   
• Capped Drucker-Prager creep: $\bar { \varepsilon } _ { s } ^ { c r }$ at the end of the increment.   
• Gasket creep: $\varepsilon ^ { c r }$ at the end of the increment.

# ESW(1)

The definition depends on the usage:

• Metal creep: $\bar { \varepsilon } ^ { s w }$ at the start of the increment.   
• Capped Drucker-Prager creep: $\bar { \varepsilon } _ { c } ^ { c r }$ at the start of the increment.   
• Drucker-Prager and gasket creep: = 0.

# ESW(2)

The definition depends on the usage:

• Metal creep: $\bar { \varepsilon } ^ { s w }$ at the end of the increment.   
• Capped Drucker-Prager creep: $\bar { \varepsilon } _ { c } ^ { c r }$ at the end of the increment.   
• Drucker-Prager and gasket creep: = 0.

# P

The definition depends on the usage:

• Metal creep and Drucker-Prager creep: $\begin{array} { r } { p = - \frac { 1 } { 3 } ( \sigma _ { 1 1 } + \sigma _ { 2 2 } + \sigma _ { 3 3 } ) } \end{array}$ , equivalent pressure stress (in soils analysis this is the equivalent effective pressure stress).   
• Capped Drucker-Prager creep: $\bar { p } ^ { c r } = p - p _ { a }$ , effective creep pressure (in soils analysis p is the effective pressure stress).   
• Gasket creep: = 0.

If LEND=0, the value is p or $\bar { p } ^ { c r }$ at the beginning of the increment. If LEND=1, the value is p or $\bar { p } ^ { c r }$ at the end of the increment.

# QTILD

The definition depends on the usage:

• Metal creep: ${ \tilde { q } } ,$ Mises or Hill equivalent stress (the Hill formula is used if anisotropic creep is defined; see “Anisotropic creep” in “Rate-dependent plasticity: creep and swelling,” Section 23.2.4 of the Abaqus Analysis User’s Guide).   
• Gasket creep: $\sigma ,$ the uniaxial compressive stress.   
• Drucker-Prager creep: $\bar { \sigma } ^ { c r }$ , equivalent creep stress (in soils analysis this is based on effective stresses).   
• Capped Drucker-Prager creep: $\bar { \sigma } ^ { c r }$ , equivalent creep stress (in soils analysis this is based on effective stresses).

<!-- source-page: 27 -->

If LEND=0, the value is $\tilde { q }$ or $\bar { \sigma } ^ { c r }$ at the beginning of the increment. If LEND=1, the value is $\tilde { q }$ or $\bar { \sigma } ^ { c r }$ at the end of the increment.

# TEMP

Temperature at the end of the increment.

# DTEMP

Increment of temperature during the time increment.

# PREDEF

An array containing the values of all of the user-specified predefined variables at this point at the end of the increment (initial values at the beginning of the analysis and current values during the analysis).

# DPRED

An array containing the increments of all of the predefined variables during the time increment.

# TIME(1)

Value of step time at the end of the increment.

# TIME(2)

Value of total time at the end of the increment.

# TIME(3)

Value of creep time at the end of the increment.

# DTIME

Time increment.

# CMNAME

User-specified material name or gasket behavior name, left justified. Some internal creep models are given names starting with the “ABQ\_” character string. To avoid conflict, you should not use “ABQ\_” as the leading string for CMNAME.

# LEXIMP

Explicit/implicit flag.

If LEXIMP=0, explicit creep integration is being used and only DECRA(1) and DESWA(1) need be defined; DECRA(I) and DESWA(I), I=2,5, need not be defined.

If LEXIMP=1, implicit creep integration is being used. The derivatives, DECRA(I) and DESWA(I), I=2,5, should be defined accurately to achieve rapid convergence of the solution.

# LEND

Start/end of increment flag.

If LEND=0, the routine is being called at the start of the increment. In this case DECRA(1) and DESWA(1) must be defined as the equivalent creep and swelling rates calculated at the beginning of the increment, multiplied by the time increment.

<!-- source-page: 28 -->

If LEND=1, the routine is being called at the end of the increment. In this case DECRA(1) and DESWA(1) must be defined as the equivalent creep and swelling rates calculated at the end of the increment, multiplied by the time increment. If applicable, the solution-dependent state variables STATEV must be updated as well.

# COORDS(3)

An array containing the current coordinates of this point.

# NSTATV

Number of solution-dependent state variables associated with this material or gasket behavior type (specified when space is allocated for the array; see “Allocating space” in “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide).

# NOEL

Element number.

# NPT

Integration point number.

# LAYER

Layer number (for composite shells and layered solids).

# KSPT

Section point number within the current layer.

# KSTEP

Step number.

# KINC

Increment number.

# Example: Hyperbolic sine creep law

Suppose that we wish to model a metal using the creep behavior

$$
\bar {\varepsilon} ^ {\dot {c} r} = A (\sinh \frac {q}{\sigma_ {0}}) ^ {n}, \quad \bar {\varepsilon} ^ {\dot {s} w} = 0,
$$

where A, , and n are constants.

User subroutine CREEP can be coded as follows:
```csv
SUBROUTINE CREEP (DECRA, DESWA, STATEV, SERD, EC, ESW, P, QTILD,
1 TEMP, DTEMP, PREDEF, DPRED, TIME, DTIME, CMNAME, LEXIMP, LEND,
2 COORDS, NSTATV, NOEL, NPT, LAYER, KSPT, KSTEP, KINC)
C
INCLUDE 'ABA_PARAM.INC'
C 
```

<!-- source-page: 29 -->

```txt
CHARACTER*80 CMNAME
C
DIMENSION DECRA(5), DESWA(5), STATEV(*), PREDEF(*), DPRED(*), 1 TIME(3), COORDS(*), EC(2), ESW(2)
C
C DEFINE CONSTANTS
C
A=
SIG0=
AN=
C
T1=EXP(QTILD/SIG0)
T2=EXP(-QTILD/SIG0)
DECRA(1) = A*(.5*(T1-T2))**AN*DTIME
IF(LEXIMP.EQ.1) THEN
DECRA(5) = AN*A*(.5*(T1-T2))**(AN-1.)*DTIME/
1 SIG0*.5*(T1+T2)
END IF
C
RETURN
END 
```

The derivative

$$
\frac {\partial \triangle \overline {{\varepsilon}} ^ {c r}}{\partial q} = \frac {n A \Delta t}{\sigma_ {0}} (\sinh \frac {q}{\sigma_ {0}}) ^ {n - 1} \cosh \frac {q}{\sigma_ {0}}
$$

has been defined on the assumption that the subroutine will be used with implicit integration.

<!-- source-page: 30 -->
