30.1.6 User-defined interfacial constitutive behavior

Products: ABAQUS/Standard  ABAQUS/Explicit  



User-defined interfacial constitutive behavior in ABAQUS:

  • is provided so that any constitutive behavior across an interface can be added to the library of existing models such as softened contact and Coulomb friction;

  • requires that a constitutive model (or a library of models) for the interface be programmed in user subroutine UINTER (ABAQUS/Standard) or VUINTER (ABAQUS/Explicit);

  • is available only for surface-based contact definition involved in stress/displacement, coupled temperature-displacement, or heat transfer analysis;

  • can be used in ABAQUS/Explicit only with the contact pair algorithm; and

  • requires considerable effort and expertise: the feature is very general and powerful, but it is intended for advanced users.

Purpose of user subroutines UINTER and VUINTER

User subroutines UINTER and VUINTER provide a very general interface for you to define the constitutive behavior across the interface between two surfaces. These subroutines replace all built-in interfacial constitutive behavior models; hence, no other contact property definitions (e.g., friction, thermal conductance, etc.) can be specified in conjunction with them.

User subroutine UINTER will be called for each contact constraint location of affected contact pairs in each iteration of an ABAQUS/Standard analysis. The input to this user subroutine includes the current relative position of a particular constraint point on the slave surface with respect to the corresponding closest point on the master surface, as well as the incremental relative motion between these two points. Values of temperature and field variables at the constraint point on the slave surface and the corresponding closest point on the master surface and several other variables are also provided as input.

User subroutine VUINTER will be called multiple times for the affected contact pairs in each time increment of an ABAQUS/Explicit analysis. All slave nodes are processed in each call to VUINTER, whereas only a single constraint is processed in each call to UINTER. Similar input is provided to VUINTER as UINTER.

In a stress/displacement analysis you must define the stresses, both normal and tangential, at the slave node (or points on the slave surface) at the current point in time. In a coupled temperature-displacement analysis you must also define the heat flux across the interface. The constitutive calculation thus involves computing the stresses and heat fluxes based on the increments in relative position of the slave node with respect to the master surface (which act as strains in this context), temperature at the surface, and predefined field variables. The calculations would typically involve solution-dependent state variables, which can be updated inside UINTER or VUINTER. In addition to the above basic calculations, appropriate Jacobian terms must also be defined for UINTER to ensure proper convergence characteristics in ABAQUS/Standard.

When user subroutine UINTER or VUINTER is used to define the interfacial constitutive behavior, all decisions regarding the contact status of a slave node must be made inside the subroutine based on the information provided. You can make such decisions based on the values of the relative position of the point on the slave surface with respect to the master surface and appropriately defined solution-dependent state variables. Thus, usage of this feature not only involves developing a constitutive behavior of the interface, but it also involves developing conditions under which a given point on the slave surface is in contact (“open” or “closed” in the standard contact terminology).

The interface is always assumed to be massless.

Interfacial constants

You must specify the number of interfacial constants that are needed in user subroutine UINTER or VUINTER, and you must provide values for all these constants. All surface constitutive behavior calculations and all decisions regarding the contact status at a slave node (or a point on the slave surface in question) must be programmed in subroutine UINTER or VUINTER. Any other contact property definitions included in the analysis will be reported as an error.

Input File Usage:           
*SURFACE INTERACTION, USER, PROPERTIES=number_of_material_constants

Interfacial state

Constitutive models used to define the interfacial behavior may require the storage of solution-dependent state variables. You must allocate storage space for these variables by indicating the number of variables. There is no restriction on the number of state variables associated with a user-defined constitutive behavior for the interface.

User subroutine UINTER is called for points on the slave surface at each iteration of every increment. User subroutine VUINTER is called in every time increment for each master-slave view of each contact pair it affects, as discussed earlier. The subroutine is provided with the slave node state at the start of the increment (slave node state includes stress, flux, solution-dependent state variables, temperature, and any predefined field variables) and with the increments in temperature, predefined state variables, relative position, and time.

Input File Usage:           Use the following option to allocate storage space for solution-dependent state variables:
*SURFACE INTERACTION, USER, DEPVAR=number_of_state_variables

Use with the unsymmetric equation solver in ABAQUS/Standard

If the constitutive Jacobian matrix, , is not symmetric, you should invoke the unsymmetric equation solution capability in ABAQUS/Standard (see Procedures: overview, Section 6.1.1).

Input File Usage:           

Defining the contact status in ABAQUS/Standard

In addition to defining the constitutive behavior, in ABAQUS/Standard you may also update the flags LOPENCLOSE, LSTATE, and LSDI. The flag LOPENCLOSE is useful when UINTER is used to model standard contact between two surfaces (similar to the default hard contact in ABAQUS). It should be set to 0 to indicate an open status and to 1 to indicate a closed status. At the beginning of the analysis it is set to –1 before UINTER is called. A change in this flag from one iteration to the next will have two consequences. It will result in output related to the change in contact status if detailed contact output has been requested to the message file (see The ABAQUS/Standard message file” in “Output, Section 4.1.1), and it will also trigger a severe discontinuity iteration. The flag LSTATE can be used to store the current contact status of the points on the slave surface in non-standard situations where a simple open/close status is not appropriate. An example of such a situation is debonding, where three different states can be defined—fully bonded, partially bonded or debonding, and fully debonded. You can assign an integer to each of these states and set LSTATE accordingly. At the beginning of the analysis LSTATE is set to –1 before UINTER is called. When this flag is used and it changes from one iteration to the next, you can output messages to the message file (unit 7) related to such a change in state directly from user subroutine UINTER. The flag LPRINT is provided to allow you to output messages related to change in contact status only when you request detailed contact output to the message file. In such a situation the LSDI flag may be set to 1 to trigger a severe discontinuity iteration (this issue is discussed in detail later).

An example of a situation where both the flags LOPENCLOSE and LSTATE can be used arises in the modeling of debonding between two surfaces. When the surface is in a state of transition from bonded to debonded, the flag LSTATE may be used, while the flag LOPENCLOSE may be left to its original value of –1. However, once complete debonding has taken place, the contact between the two surfaces may be modeled using standard hard contact. In that situation the LSTATE flag may be set to –1, and the LOPENCLOSE flag used. Any time one of these two flags is set to –1, ABAQUS/Standard assumes that it is not being used. A change of these flags from some other value to –1 does not result in contact-status related output or severe discontinuity iterations. Similarly, a change of these flags from –1 to some other value will not result in contact-status related output or severe discontinuity iterations.

If these flags are not used, there will be no output related to change in contact status unless you decide to output messages that are not based on these flags directly from UINTER.

Severe discontinuity iterations in ABAQUS/Standard

The contact algorithm used by ABAQUS/Standard involves use of severe discontinuity iterations when the contact state at the end of an iteration is different from the state assumed for that iteration. Severe discontinuity iterations are different from regular equilibrium iterations in only one respect—ABAQUS/Standard does not check the residuals for convergence at the end of a severe discontinuity iteration. Instead, one more iteration is performed, and the contact status is checked again. This is continued until a consistent contact state is reached between two adjacent iterations. At this point, residuals are checked for convergence of the overall solution.

When you define the interfacial constitutive behavior through user subroutine UINTER and do not use the LOPENCLOSE flag, it is your responsibility to provide ABAQUS/Standard with input on how an iteration should be treated. The flag LSDI is provided in user subroutine UINTER for this purpose. It is set to 0 before each call to UINTER; you should set it to 1 to treat the current iteration as a severe discontinuity iteration. If the LOPENCLOSE flag is used, the value of this flag alone determines whether a severe discontinuity iteration is necessary or not, and the LSDI flag is ignored.

Use with contact in ABAQUS/Explicit

The penalty contact pair algorithm must be used with user subroutine VUINTER; see Penalty contact algorithm” in “Contact formulation for ABAQUS/Explicit contact pairs, Section 29.4.4.

If balanced master-slave contact is specified (i.e., the contact pair weighting factor is not equal to 0.0 or 1.0), VUINTER will be called for each surface in the contact pair that can act as a slave surface. The forces and fluxes defined in VUINTER will be multiplied by the weight value for the master-slave view before they are applied.

Effects on solution time in ABAQUS/Explicit

ABAQUS/Explicit accounts for the contact stiffness and conductance in the stable time increment calculation. Specifying stresses and fluxes in VUINTER that correspond to large contact stiffness (e.g., large slope of contact pressure versus penetration) and large contact conductance will cause a significant drop in the stable time increment and, therefore, an increase in the solution time. Tangent stiffnesses and conductances associated with a VUINTER model are determined by ABAQUS/Explicit using a finite difference method. VUINTER is called three times per increment for each master-slave view of each two-dimensional contact pair that references it and four times per increment for each three-dimensional contact pair that references it. It is called once with the actual configuration and subsequently with perturbed configurations based on displacement perturbations in the normal direction, the tangential direction, and, in three-dimensional cases, the tangential direction, respectively (see the local coordinate system discussion in VUINTER, Section 1.2.3 of the ABAQUS User Subroutines Reference Manual, for an explanation of how the and directions are defined). For example, each component of contact stiffness is computed as a difference in contact stress divided by a difference in relative position. You do not have access to the computed values of contact stiffness and conductance but will have control of the constitutive behavior of the model. Estimated default penalty stiffness (and conductance) values are provided to VUINTER for comparison purposes. Contact stiffnesses or conductances that exceed the default penalty values can significantly reduce the time increment size. The default penalty stiffnesses and conductances provided to VUINTER are based on an assumption that all slave nodes are in contact. If only a fraction of the slave nodes are in contact, higher penalties than are reported in VUINTER would be assigned in some cases with the default penalty algorithm.

Since VUINTER is called each increment with the actual configuration and with perturbed configurations, you should update state variables upon each call to VUINTER. Changes to state variables are not saved for the perturbation calls (i.e., the state variables are passed in as separate, temporary variables for the perturbation calls).

There can be significant additional CPU expense associated with contact tracking for VUINTER. Since the contact state is unknown on entry to VUINTER, all nodes on the slave surface must be tracked in every increment. This can increase the cost of an analysis significantly compared to the contact models in ABAQUS/Explicit if a large proportion of the slave nodes are not involved in the contact.

Use with other subroutines

Any other user subroutine that does not deal with constitutive behavior across an interface can be used in conjunction with UINTER or VUINTER.

For example, user subroutines UMAT and UMATHT can be used in conjunction with UINTER to define the constitutive mechanical and thermal behaviors of the material underlying the contact surfaces. User subroutine VUMAT can be used in conjunction with VUINTER to define the mechanical constitutive behavior of the material underlying the contact surfaces. However, user subroutines FRIC, GAPCON, and GAPELECTR—available in ABAQUS/Standard for defining mechanical, thermal, and electrical interactions between surfaces—can be used in conjunction with UINTER only if they are referenced on separate surface interactions. The same restriction applies to user subroutine VFRIC used in conjunction with VUINTER.

Use with contact controls

In ABAQUS/Standard contact controls will not have any effect when used at an interface whose constitutive behavior is defined through user subroutine UINTER.

In ABAQUS/Explicit contact controls can be specified for a contact pair referencing a user-defined surface interaction. However, the penalty stiffness scale factor will be ignored for contact pairs in which VUINTER is specified.


Most of the standard output variables that are normally available in an analysis involving contact are available with this capability.

Output for UINTER

The variables COPEN and CSLIP represent the relative positions normal and tangential to the interface, respectively. The surface-based thermal interaction variable, SFDR, contains the heat flux due to the total energy dissipated due to friction, and not some fraction of it. This is unlike using the built-in capability in ABAQUS/Standard, where SFDR may contain the heat flux due to only a fraction of the total frictional dissipation, depending on the specified fraction of the dissipated energy that is converted into heat. In addition, the surface-based thermal interaction variable WEIGHT, which represents the weighting factor for heat flux (generated by frictional sliding) distribution between the surfaces, is not available with this capability.

Additional user-defined output variables can be defined for UINTER by using the solution-dependent state variables (SDV).

Output for VUINTER

All contact output variables in ABAQUS/Explicit will be available except output for spot welds (BONDSTAT and BONDLOAD).

The following user subroutine variables will contribute to the associated total energy variables: the variable sed will contribute to the energy output variable ALLSE; sfd will contribute to ALLFD; scd will contribute to ALLCD; spd will contribute to ALLPD; and svd will contribute to ALLVD.

If SFDR is requested, sfd, scd, spd, and svd will also be used to calculate the heat generated at the interface (for output purposes only; the generated heat will not be applied to the model). The default values of the fraction of mechanical energy converted into heat and the weighting factor for the distribution of heat between the two surfaces (1.0 and 0.5, respectively) are used.

User-defined, solution-dependent state variables associated with VUINTER cannot be output to the output database file (.odb) or results file (.fil).