<!-- source-page: 11 -->

This guide describes all of the user subroutines and utility routines available in Abaqus. The interface and requirements for each user subroutine are discussed in detail. References to practical examples of most subroutines are also provided. Utility routines can be used within user subroutines to perform a variety of common tasks. The interface for all available utility routines appears in a separate chapter. For information on incorporating a user subroutine into an Abaqus analysis, see “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide.

Most user subroutine interfaces in this guide use the Fortran language, although user subroutines can be written using the C and C++ languages. Similarly, the utility routines can be invoked from within these C and C++ user subroutines. For more information, refer to “Writing a user subroutine” in “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide, and “Writing user subroutines in C++” in the Dassault Systèmes Knowledge Base at www.3ds.com/support/knowledge-base.

This guide is divided into four main sections:

• “Abaqus/Standard subroutines,” Section 1.1 covers all of the user subroutines available for use in an Abaqus/Standard analysis. Each section discusses a particular subroutine. The sections are organized alphabetically according to the subroutine name.   
• “Abaqus/Explicit subroutines,” Section 1.2 covers all of the user subroutines available for use in an Abaqus/Explicit analysis. Each section discusses a particular subroutine. The sections are organized alphabetically according to the subroutine name.   
• “Abaqus/CFD subroutines,” Section 1.3 covers all of the user subroutines available for use in an Abaqus/CFD analysis. Each section discusses a particular subroutine. The sections are organized alphabetically according to the subroutine name.   
• “Utility routines,” Section 2.1 covers all of the utility routines available for use in coding user subroutines. Each section discusses a task that can be performed using a utility routine. All of the utility routines associated with a particular task appear in the same section.

<!-- source-page: 12 -->

<!-- source-page: 13 -->

# 1. User Subroutines

• “Abaqus/Standard subroutines,” Section 1.1   
• “Abaqus/Explicit subroutines,” Section 1.2   
• “Abaqus/CFD subroutines,” Section 1.3

<!-- source-page: 14 -->

<!-- source-page: 15 -->

# 1.1 Abaqus/Standard subroutines

• “CREEP,” Section 1.1.1   
• “DFLOW,” Section 1.1.2   
• “DFLUX,” Section 1.1.3   
• “DISP,” Section 1.1.4   
• “DLOAD,” Section 1.1.5   
• “FILM,” Section 1.1.6   
• “FLOW,” Section 1.1.7   
• “FRIC,” Section 1.1.8   
• “FRIC\_COEF,” Section 1.1.9   
• “GAPCON,” Section 1.1.10   
• “GAPELECTR,” Section 1.1.11   
• “HARDINI,” Section 1.1.12   
• “HETVAL,” Section 1.1.13   
• “MPC,” Section 1.1.14   
• “ORIENT,” Section 1.1.15   
• “RSURFU,” Section 1.1.16   
• “SDVINI,” Section 1.1.17   
• “SIGINI,” Section 1.1.18   
• “UAMP,” Section 1.1.19   
• “UANISOHYPER\_INV,” Section 1.1.20   
• “UANISOHYPER\_STRAIN,” Section 1.1.21   
• “UCORR,” Section 1.1.22   
• “UCREEPNETWORK,” Section 1.1.23   
• “UDECURRENT,” Section 1.1.24   
• “UDEMPOTENTIAL,” Section 1.1.25   
• “UDMGINI,” Section 1.1.26   
• “UDSECURRENT,” Section 1.1.27   
• “UEL,” Section 1.1.28   
• “UELMAT,” Section 1.1.29   
• “UEXPAN,” Section 1.1.30   
• “UEXTERNALDB,” Section 1.1.31   
• “UFIELD,” Section 1.1.32

<!-- source-page: 16 -->

• “UFLUID,” Section 1.1.33   
• “UFLUIDCONNECTORLOSS,” Section 1.1.34   
• “UFLUIDCONNECTORVALVE,” Section 1.1.35   
• “UFLUIDLEAKOFF,” Section 1.1.36   
• “UGENS,” Section 1.1.38   
• “UHARD,” Section 1.1.39   
• “UHYPEL,” Section 1.1.40   
• “UHYPER,” Section 1.1.41   
• “UINTER,” Section 1.1.42   
• “UMASFL,” Section 1.1.43   
• “UMAT,” Section 1.1.44   
• “UMATHT,” Section 1.1.45   
• “UMESHMOTION,” Section 1.1.46   
• “UMOTION,” Section 1.1.47   
• “UMULLINS,” Section 1.1.48   
• “UPOREP,” Section 1.1.49   
• “UPRESS,” Section 1.1.50   
• “UPSD,” Section 1.1.51   
• “URDFIL,” Section 1.1.52   
• “USDFLD,” Section 1.1.53   
• “UTEMP,” Section 1.1.54   
• “UTRACLOAD,” Section 1.1.55   
• “UTRS,” Section 1.1.56   
• “UTRSNETWORK,” Section 1.1.57   
• “UVARM,” Section 1.1.58   
• “UWAVE,” Section 1.1.59   
• “UXFEMNONLOCALWEIGHT,” Section 1.1.60   
• “VOIDRI,” Section 1.1.61

<!-- source-page: 17 -->

# 1.1.1 CREEP: User subroutine to define time-dependent, viscoplastic behavior (creep and swelling).

Product: Abaqus/Standard

# References

• “Rate-dependent plasticity: creep and swelling,” Section 23.2.4 of the Abaqus Analysis User’s Guide   
• “Extended Drucker-Prager models,” Section 23.3.1 of the Abaqus Analysis User’s Guide   
• “Modified Drucker-Prager/Cap model,” Section 23.3.2 of the Abaqus Analysis User’s Guide   
• “Defining the gasket behavior directly using a gasket behavior model,” Section 32.6.6 of the Abaqus Analysis User’s Guide   
• \*CAP CREEP   
• \*CREEP   
• \*DRUCKER PRAGER CREEP   
• \*SWELLING   
• “Verification of creep integration,” Section 3.2.6 of the Abaqus Benchmarks Guide

# Overview

User subroutine CREEP will be called at all integration points of elements for which the material definition contains user-subroutine-defined metal creep, time-dependent volumetric swelling, Drucker-Prager creep, or cap creep behavior, during procedures that allow viscoplastic response of the above type to occur (such as the quasi-static procedure). This subroutine will also be called at all integration points of gasket elements for which the behavior definition contains user-subroutine-defined creep.

If user subroutine CREEP is used to define a material behavior, the subroutine:

• is intended to provide the “uniaxial” creep laws that are to be included in a general time-dependent, viscoplastic material formulation;   
• can be used in the coupled-temperature displacement (“Fully coupled thermal-stress analysis,” Section 6.5.3 of the Abaqus Analysis User’s Guide), coupled thermal-electrical-structural (“Fully coupled thermal-electrical-structural analysis,” Section 6.7.4 of the Abaqus Analysis User’s Guide), soils (“Coupled pore fluid diffusion and stress analysis,” Section 6.8.1 of the Abaqus Analysis User’s Guide), and quasi-static (“Quasi-static analysis,” Section 6.2.5 of the Abaqus Analysis User’s Guide) procedures;   
• allows for the definition of creep laws for which the meaning and internal use depend on the material model with which they are being used;

<!-- source-page: 18 -->

• allows creep and swelling to be combined with rate-independent plastic behavior in a coupled manner, or they may simply be the only inelastic behaviors of the material, in which case Mises behavior is assumed;   
• 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.

If user subroutine CREEP is used to define rate-dependent behavior in the thickness direction for a gasket, the subroutine:

• is intended to provide the creep laws that are used to prescribe the thickness-direction behavior for a gasket;   
• can be used only in a quasi-static (“Quasi-static analysis,” Section 6.2.5 of the Abaqus Analysis User’s Guide) procedure;   
• is used in a coupled form with the elastic-plastic model used to define the rate-independent part of the thickness-direction behavior of the gasket; and   
• can use and update solution-dependent variables.

# Metals

For metals whose material behavior includes metal creep and/or time-dependent volumetric swelling, the routine allows any “creep” and “swelling” laws (viscoplastic behavior) of the following general form to be defined:

$$
\bar {\varepsilon} ^ {\dot {c} r} = g ^ {c r} (p, \tilde {q}, \bar {\varepsilon} ^ {s w}, \bar {\varepsilon} ^ {c r}, \mathrm{time}, \dots),
$$

$$
\bar {\varepsilon} ^ {\dot {s} w} = g ^ {s w} (p, \tilde {q}, \bar {\varepsilon} ^ {s w}, \bar {\varepsilon} ^ {c r}, \mathrm{time}, \dots),
$$

where

$\bar { \varepsilon } ^ { c r }$ is the uniaxial equivalent “creep” strain, conjugate to $\tilde { q } ,$ the Mises or Hill equivalent stress; $\bar { \varepsilon } ^ { s w }$ is the volumetric swelling strain;

$\pmb { p }$ is the equivalent pressure stress, $\begin{array} { r } { p = - \frac { 1 } { 3 } ( \sigma _ { 1 1 } + \sigma _ { 2 2 } + \sigma _ { 3 3 } ) } \end{array}$ ; and

$\tilde { q }$ is the equivalent deviatoric stress (Mises’ or, if anisotropic creep behavior is defined, Hill’s definition).

The user subroutine must define the increments of inelastic strain, $\bigtriangleup \bar { \varepsilon } ^ { c r }$ and $\triangle \bar { \varepsilon } ^ { s w }$ , as functions of $\pmb { p }$ and $\tilde { q }$ and any other variables used in the definitions of $\boldsymbol { g } ^ { c r }$ and $g ^ { s w }$ (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 $\boldsymbol { g } ^ { c r }$ and $g ^ { s w }$ , they must also be integrated forward in time in this routine.

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

<!-- source-page: 19 -->

$$
\Delta \varepsilon^ {c r} = \frac {1}{3} \Delta \bar {\varepsilon} ^ {s w} \mathbf {R} + \Delta \bar {\varepsilon} ^ {c r} \mathbf {n},
$$

where is the gradient of the deviatoric stress potential, defined as

$$
\mathbf {n} = \frac {\partial \tilde {q}}{\partial \pmb {\sigma}},
$$

and is a matrix with the anisotropic swelling ratios in the diagonal if anisotropic swelling is defined; otherwise, $\mathbf { R } = \mathbf { I }$ .

# Drucker-Prager materials

For materials that yield according to the extended Drucker-Prager plasticity models using Drucker-Prager creep, the routine allows any “creep” laws (viscoplastic behavior) of the following general form to be defined:

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

where

gcr $\bar { \boldsymbol { \sigma } } ^ { c r }$ is the equivalent creep stress defined as

$$
\begin{array}{l} \frac {q - p \tan \beta}{1 - \frac {1}{3} \tan \beta} \quad \text {   if   creep   is   defined   in   terms   of   uniaxial   compression,   } \\ \frac {q - p \tan \beta}{1 + \frac {1}{3} \tan \beta} \quad \text {   if   creep   is   defined   in   terms   of   uniaxial   tension,   and   } \\ q - p \tan \beta \quad \text {   if   creep   is   defined   in   terms   of   pure   shear,   } \\ \end{array}
$$

where q is the equivalent deviatoric Mises’ stress, p is the pressure stress, and $\beta$ is the friction angle, and

mCr $\bar { \varepsilon } ^ { c r }$ is the uniaxial equivalent “creep” strain, conjugate to $\bar { \sigma } ^ { c r }$ such that $\bar { \sigma } ^ { c r } \Delta \bar { \varepsilon } ^ { c r } = \sigma _ { i j } \Delta \varepsilon _ { i j } ^ { c r }$

The user subroutine must define the increment of inelastic strain, $\bigtriangleup \bar { \varepsilon } ^ { c r }$ , as a function of ${ \bar { \sigma } } ^ { c r }$ 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 $\boldsymbol { g } ^ { c r }$ , they must also be integrated forward in time in this routine.

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

$$
\Delta \varepsilon^ {c r} = \frac {\Delta \bar {\varepsilon} ^ {c r}}{f ^ {c r}} \left(\frac {q}{\sqrt {(\epsilon \bar {\sigma} | _ {0} \tan \psi) ^ {2} + q ^ {2}}} \mathbf {n} + \frac {1}{3} \tan \psi \mathbf {I}\right),
$$

where $\mathbf { n } = \partial \tilde { q } / \partial \pmb { \sigma }$ 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 ^ {c r}}{\partial \pmb {\sigma}},
$$

<!-- source-page: 20 -->

and

$$
G ^ {c r} = \sqrt {(\epsilon \bar {\sigma} | _ {0} \tan \psi) ^ {2} + q ^ {2}} - p \tan \psi
$$

is the hyperbolic creep potential, where $\psi ( \theta , f ^ { \alpha } )$ is the dilation angle measured in the p–q plane at high confining pressure, $\bar { \sigma } | _ { 0 } = \bar { \sigma } | _ { \bar { \varepsilon } ^ { p l } = 0 , \dot { \bar { \varepsilon } } ^ { p l } = 0 }$ is the initial yield stress, and is the eccentricity. See “Extended Drucker-Prager models,” Section 23.3.1 of the Abaqus Analysis User’s Guide, for a discussion of $\psi _ { : }$ , , and $\bar { \sigma } | _ { 0 }$ .

# Capped Drucker-Prager materials

For materials that yield according to the modified Drucker-Prager/Cap plasticity model using cap creep, the routine allows any “cohesion creep” and “consolidation creep” laws (viscoplastic behavior) of the following general form to be defined:

$$
\bar {\varepsilon} _ {s} ^ {\dot {c} r} = g _ {s} ^ {c r} (\bar {\sigma} ^ {c r}, \bar {\varepsilon} _ {s} ^ {c r}, \mathrm{time}, \dots),
$$

$$
\bar {\varepsilon} _ {c} ^ {\dot {c} r} = g _ {c} ^ {c r} (\bar {p} ^ {c r}, \bar {\varepsilon} _ {c} ^ {c r}, \mathrm{time}, \dots),
$$

where

gcr $\bar { \boldsymbol { \sigma } } ^ { c r }$ is the equivalent creep stress defined from uniaxial compression test data as

$$
\bar {\sigma} ^ {c r} = \frac {q - p \tan \beta}{(1 - \frac {1}{3} \tan \beta)},
$$

where q is the equivalent deviatoric Mises’ stress, p is the pressure stress, and $\beta$ is the friction angle;

$\bar { \varepsilon } _ { s } ^ { c r }$ is the equivalent cohesion creep uniaxial strain, conjugate to $\bar { \sigma } ^ { c r }$ such that $\bar { \sigma } ^ { c r } \Delta \bar { \varepsilon } _ { s } ^ { c r } = \pmb { \sigma } : \Delta \varepsilon _ { s } ^ { c r }$ , where $\Delta \varepsilon _ { s } ^ { c r }$ is defined below;

$\bar { p } ^ { c r } = p - p _ { a }$ is the effective creep pressure $\begin{array} { r } { ( p = - \frac { 1 } { 3 } ( \sigma _ { 1 1 } + \sigma _ { 2 2 } + \sigma _ { 3 3 } ) } \end{array}$ and $p _ { a }$ is the cap hardening parameter); and

$\bar { \varepsilon } _ { c } ^ { c r }$ is the volumetric consolidation creep strain.

The user subroutine must define the increments of inelastic strain, $\bigtriangleup \bar { \varepsilon } _ { s } ^ { c r }$ and/or $\triangle \bar { \varepsilon } _ { c } ^ { c r }$ , as functions of $\bar { \sigma } ^ { c r }$ and/or $\bar { p } ^ { c r }$ and any other variables used in the definitions of $g _ { s } ^ { c r }$ and $g _ { c } ^ { 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 $g _ { s } ^ { c r }$ and $g _ { c } ^ { c r }$ , they must also be integrated forward in time in this routine.

# Calculation of incremental creep strains for the cohesion mechanism

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