Abaqus user subroutines

Abaqus provides a wide range of user subroutines and utility routines, but what do we mean when we talk about user subroutines in Abaqus?

An example can be seen above. Imagine you have a laminated composite plate in which damage occurs when subjected to in-plane compression.

The plate consists of graphite-epoxy plies with fiber directions that are in a (-45/+45) layup. The complex composite failure model (matrix failure, fiber-matrix failure, shear damage, …) is not available in Abaqus, so it is defined via an Abaqus user subroutine.

Fortran user subroutines

Abaqus provides an extensive array of user subroutines that allows the adaptation of Abaqus to particular analysis requirements. User subroutines are mostly written in Fortran, although it is also possible to develop your code in C or C++. User subroutines are available for Abaqus/Standard or Abaqus/Explicit. For example, (V)DLOAD refers to subroutines DLOAD (Abaqus/Standard) and VDLOAD (Abaqus/Explicit).

User subroutine examples

Here are some examples of user subroutines:

  • CREEP: Use this subroutine to define time-dependent, viscoplastic deformation in a material. The deformation is divided in deviatoric behavior (creep) and volumetric behavior (swelling).
  • FILM: Use this subroutine to describe complex film coefficient behavior (temperature and field variable dependence) and complex sink temperature behavior.
  • (V)UEL: Use this subroutine when it is necessary to create elements with an element formulation that is not available in Abaqus.
  • (V)UAMP: Use this subroutine to describe the control logic. Within Abaqus it is possible to define sensors, actuators and control logic to include logic modeling (mechatronics).

Utility routines

Abaqus provides an extensive array of utility routines that allows the access to solution data from with a user subroutine.

Utility routine examples

GETVRN: Use this routine to access node point information. It is accessible from user subroutine UMESHMOTION.
GETVRC: Use this routine to access contact point information. It is accessible from within any contact-related user subroutine.

Execution of user subroutines

To include user subroutines in an analysis, you should specify the name of a file with the user parameter on the Abaqus execution command

Abaqus job=my_analysis user=my_subroutine

The file should be either source code (extension .f or .for) or an object file.
In Abaqus/CAE, you can edit the job (General tab –> User subroutine file) to specify the file containing the user subroutine (extension can be .f or .for).

Compiling and linking user subroutine

When a simulation model that contains user subroutines is submitted to Abaqus, the correct compile and link commands should be used automatically.
Abaqus includes the compile and link commands for every platform on which Abaqus is supported in a platform-specific environment file (win86_64.env or lnx86_64.env) located in the site directory (abaqus installation directory\os\SMA\site).
If you encounter compile or link errors, check that the platform-specific environment file defines the compile and link commands.

Required Fortran compiler level

The fortran compiler levels used to create Abaqus are shown in the program directories of Dassault Systemes (https://www.3ds.com/support/documentation/program-directories/). A 3DS passport is required to access the directories.
For Abaqus 2019, the Intel® Visual Fortran 16.0 Update 1 is officially supported as fortran compiler.
If the version of your Fortran compiler does not correspond to that specified, incompatibilities may occur.

Please contact us if you have additional questions related to Abaqus user subroutines.