5.4. VUMAT
USER SUBROUTINE FILE = <string>sub_file_name
BEGIN MATERIAL <string>mat_name
DENSITY = <real>density_value
BEGIN PARAMETERS FOR MODEL ABAQUS_VUMAT
#
# Elastic constants
#
YOUNGS MODULUS = <real>
POISSONS RATIO = <real>
SHEAR MODULUS = <real>
BULK MODULUS = <real>
LAMBDA = <real>
#
# Required parameters
#
VUMAT SUBROUTINE = <string>sub_name
PROPERTIES = <real list>props
DEPVAR = <int>num_state
#
# Optional parameters
#
COORDINATE SYSTEM = <string>coordinate_system_name
END
END
The ABAQUS_VUMAT model in Sierra/SM provides an interface for mos user-defined material subroutines which conform to the Abaqus VUMAT standard The VUMAT interface currently supports both shell and solid elements.
The following commands are available.
Although the material response is defined solely by the user subroutine, at least two elastic constants must still be provided. The elastic constants are used in computation of hourglass stiffness, contact stiffness, solver preconditioners, and other capabilities that require a measure of approximate material stiffness. See Section 5.1.5 for more information on elastic constants input.
The name of the VUMAT subroutine is specified by the
VUMAT SUBROUTINEcommand line. TheUSER SUBROUTINE FILEshould contain the source code for the material subroutine. User subroutines are built into Sierra/SM using thesierra --makeoption. Consult Section 10 for more information on building and running user subroutines.Warning
The subroutine name
sub_namemust not beVUMATorvumat. Instead, choose a unique name.The user may supply a list of material properties for the ABAQUS_VUMAT model associated with material
mat_nameusing thePROPERTIEScommand line. The order of the property list will be the same as the order of thePROPSarray in the material subroutine.The
DEPVARcommand line specifies the number of state variables which should be allocated for the VUMAT material.Users may also specify a material coordinate system for the VUMAT. In order to use a material coordinate system, the user must specify a coordinate system using the
COORDINATE SYSTEMcommand line in theVUMATcommand block. Consult Section 5.1.7 for additional guidance on defining coordinate systems.If a custom coordinate system is specified,
STRESSOLD,STRAININC,DEFGRADOLD, andDEFGRADNEWwill be rotated into the material frame before entering the VUMAT subroutine. Output stressSTRESSNEWshould be computed in the material coordinate frame, since it will automatically be rotated into the global Cartesian coordinate frame upon leaving the material subroutine.In addition to specifying a coordinate system, the user may input up to three ordered rotation axis-Euler angle pairs for additional rotation. Axis-angle pairs may be prescribed on an element-by-element basis using an
INITIAL CONDITIONcommand block to set VUMAT state variablesANGLE_1,AXIS_1,ANGLE_2,AXIS_2, andANGLE_3,AXIS_3. Angles are specified in degrees, while axes are denoted \((1, 2, 3)\), representing \((X, Y, Z)\), respectively. These variables may be, e.g., read from a file or expressed as a user function. Use ofINITIAL CONDITIONcommand blocks is described in the chapter on Boundary Conditions and Initial Conditions, see Section 7.3.Built-in state variables pertaining to material coordinate system rotations are listed in Table Table 5.37.
The VUMAT state variables are available for output as ABQ_STATE_:math:j, where \(j\) is a one-based index \(1 \le j \le\) DEPVAR. Consule Section 9 for additional details on output of variables.
Input and output subroutine arguments are listed in Tables Table 5.35 and Table 5.36. Arguments which are not currently fully supported in the VUMAT interface are indicated with a !.
Argument Name |
Description (Value) |
|---|---|
|
Number of elements in workset (always one, since the VUMAT currently processes one element at a time) |
|
Number of stress components (three for both solids and shells) |
|
Number of shear components (three for solids or one for shells) |
|
Number of state variables (input |
|
Number of user-defined field variables (zero) |
|
Length of property array (length of input |
|
Annealing process flag (zero) |
|
Current analysis time |
|
Current analysis time (identical to |
|
Current time step size |
|
Material name (empty string) |
|
Material point coordinates (zero) |
|
Element characteristic size (cube root of solid volume or square root of shell area) |
|
User-defined property array (input |
|
Current material point density (zero) |
|
Strain increment over the current time step |
|
Incremental relative rotation at each material point (zero) |
|
Temperature at start of time step |
|
Stretch at start of time step (identity tensor) |
|
Deformation gradient (calculated for solids; unsupported for shells and set to identity tensor) |
|
User-defined field variable values at start of time step (zero) |
|
Material stress at start of time step |
|
Material state variables at start of time step |
|
Internal energy per unit mass at start of time step (zero) |
|
Dissipated inelastic energy per unit mass at start of time step (zero) |
|
Temperature at end of time step |
|
Stretch tensor at end of time step (identity tensor) |
|
Deformation gradient (calculated for solids; unsupported for shells and set to identity tensor) |
|
User-defined field variable values at end of time step (zero) |
Argument Name |
Description |
|---|---|
|
Updated material stress at end of step |
|
Updated material state variables at end of step |
|
Updated internal energy per unit mass at start of time step (ignored) |
|
Updated dissipated inelastic energy per unit mass at end of time step (ignored) |
Index |
Name |
Variable Description |
|---|---|---|
|
|
X component of the material 11 unit vector |
|
|
Y component of the material 22 unit vector |
|
|
Z component of the material 33 unit vector |
|
|
Y component of the material 11 unit vector |
|
|
Z component of the material 22 unit vector |
|
|
X component of the material 33 unit vector |
|
|
X component of the material 22 unit vector |
|
|
Y component of the material 33 unit vector |
|
|
Z component of the material 11 unit vector |
|
|
Rotation angle about axis 1 (degrees) |
|
|
Rotation angle about axis 2 (degrees) |
|
|
Rotation angle about axis 3 (degrees) |
|
|
First axis of rotation |
|
|
Second axis of rotation |
|
|
Third axis of rotation |
5.4.1. Other Guidelines for VUMAT Use
The shell VUMAT is currently only supported for plane stress conditions. The out-of-plane stress, STRESSNEW(i,3), is explicitly set to zero upon return. The VUMAT can alter the plane strain increment STRAININC(i,3) accordingly to satisfy plane stress.
When implementing a VUMAT, it is important to note that all internal variables are initialized to zero, so constitutive routines must be designed accordingly. For example, in the presence of a damage-type variable, it is recommended to adopt the convention that an undamaged state has damage \(d = 0.0\), while a damaged state has damage \(d > 0.0\). Because there is currently no way to detect the beginning of a simulation from within the VUMAT interface, there is no reliable way to use the standard VUMAT initialization.
As noted in Tables Table 5.35 and Table 5.36, internal work and plastic dissipation may not be specified or accessed within the current VUMAT interface. External work and kinetic energy are computed outside of the material subroutine by LAMÉ and can be accessed via a USER OUTPUT block in the Sierra/SM input file (consult Section 9 for details). To store dissipated plastic energy, an additional internal state variable may be defined and updated within the VUMAT.