UINTER

User subroutine to define surface interaction behavior for contact surfaces.

User subroutine UINTER:

  • is called at points on the secondary surface of a contact pair with a user-defined constitutive model defining the interaction between the surfaces;

  • can be used to define the mechanical (normal and shear) and thermal (heat flux) interactions between surfaces;

  • can be used when the normal surface behavior (contact pressure versus overclosure) models (Contact Pressure-Overclosure Relationships) or the extended versions of the classical Coulomb friction model (Frictional Behavior) are too restrictive and a more complex definition of normal and shear transmission between contacting surfaces, including damping properties, are required;

  • must provide the entire definition of the mechanical and the thermal interaction between the contacting surfaces (hence, no additional surface behaviors can be specified in conjunction with this capability);

  • can provide the entire definition of viscous and structural damping for interactions between the contacting surfaces for direct and mode-based steady-state dynamic analysis (including the subspace projection method), transient mode-based analysis, complex eigenvalue extraction, matrix generation, and substructure generation;

  • only accounts for element damping in mode-based procedures if the SIM architecture is used;

  • can use and update solution-dependent state variables; and

  • is not available for contact elements.

This page discusses:

User Subroutine Interface

      SUBROUTINE UINTER(STRESS,DDSDDR,DVISCOUS,DSTRUCTURAL,FLUX,DDFDDT,
     1 DDSDDT,DDFDDR,STATEV,SED,SFD,SPD,SVD,SCD,PNEWDT,RDISP,
     2 DRDISP,
     3 TEMP,DTEMP,PREDEF,DPRED,TIME,DTIME,FREQR,CINAME,SECNAME,
     4 MAINNAME,
     5 PROPS,COORDS,ALOCALDIR,DROT,AREA,CHRLNGTH,NODE,NDIR,NSTATV,
     6 NPRED,NPROPS,MCRD,KSTEP,KINC,KIT,LINPER,LOPENCLOSE,LSTATE,
     7 LSDI,LPRINT)
C
      INCLUDE 'ABA_PARAM.INC'
C
      CHARACTER*80 CINAME,SECNAME,MAINNAME
      DIMENSION STRESS(NDIR),DDSDDR(NDIR,NDIR),FLUX(2),DDFDDT(2,2),
     1 DDSDDT(NDIR,2),DDFDDR(2,NDIR),STATEV(NSTATV),
     2 RDISP(NDIR),DRDISP(NDIR),TEMP(2),DTEMP(2),PREDEF(2,NPRED),
     3 DPRED(2,NPRED),TIME(2),PROPS(NPROPS),COORDS(MCRD),
     4 ALOCALDIR(3,3),DROT(2,2),DVISCOUS(NDIR,NDIR),
     5 DSTRUCTURAL(NDIR,NDIR)

      user coding to define STRESS, DDSDDR, FLUX, DDFDDT,
                    DDSDDT, DDFDDR, 


      and, optionally, STATEV, SED, SFD, SPD, SVD, SCD, PNEWDT, 
                    LOPENCLOSE, LSTATE, LSDI, DVISCOUS, DSTRUCTURAL

      RETURN
     
 END

Variables to Be Defined

STRESS(NDIR)

This array is passed in as the stress between the secondary and main surfaces at the beginning of the increment and must be updated in this routine to be the stress at the end of the increment. The stress must be defined in a local coordinate system (see ALOCDIR). This variable must be defined for a stress/displacement, a fully coupled temperature-displacement, or a coupled thermal-electrical-structural analysis. The sign convention for stresses is that a positive stress indicates compression across contact surfaces, while a negative stress indicates tension.

DDSDDR(NDIR,NDIR)

Interface stiffness matrix. DDSDDR(I,J) defines the change in the Ith stress component at the end of the time increment caused by an infinitesimal perturbation of the Jth component of the relative displacement increment array. Unless you invoke the unsymmetric equation solution capability in the contact property model definition (Use with the Unsymmetric Equation Solver in Abaqus/Standard), Abaqus/Standard will use only the symmetric part of DDSDDR. For a particular off-diagonal (I,J) entry, the symmetrization is done by halving the sum of (I,J) and (J,I) components. DDSDDR must be defined for a stress/displacement, a fully coupled temperature-displacement, or a coupled thermal-electrical-structural analysis to ensure proper convergence characteristics.

FLUX(2)

Magnitude of the heat flux flowing into the secondary and main surfaces, respectively. This array is passed in as the value at the beginning of the increment and must be updated to the flux at the end of the increment. The convention for defining the flux is that a positive flux indicates heat flowing into a surface, while a negative flux indicates heat flowing out of the surface. This variable must be defined for a heat transfer, a fully coupled temperature-displacement, or a coupled thermal-electrical-structural analysis. The sum of these two flux terms represents the heat generated in the interface, and the difference in these flux terms represents the heat conducted through the interface.

DDFDDT(2,2)

The negative of the variation of the flux at the two surfaces with respect to their respective temperatures, for a fixed relative displacement. This variable must be defined for a heat transfer, a fully coupled temperature-displacement, or a coupled thermal-electrical-structural analysis to ensure proper convergence characteristics. The entries in the first row contain the negatives of the derivatives of FLUX(1) with respect to TEMP(1) and TEMP(2), respectively. The entries in the second row contain the negatives of the corresponding derivatives of FLUX(2).

DDSDDT(NDIR,2)

Variation of the stress with respect to the temperatures of the two surfaces for a fixed relative displacement. This variable is required only for thermally coupled elements (in a fully coupled temperature-displacement or a coupled thermal-electrical-structural analysis), in which the stress is a function of the surface temperatures. DDSDDT(NDIR,1) corresponds to the secondary surface, and DDSDDT(NDIR,2) corresponds to the main surface.

DDFDDR(2,NDIR)

Variation of the flux with respect to the relative displacement between the two surfaces. This variable is required only for thermally coupled elements (in a fully coupled temperature-displacement or a coupled thermal-electrical-structural analysis), in which the flux is a function of the relative displacement. DDFDDR(1,NDIR) corresponds to the secondary surface, and DDFDDR(2,NDIR) corresponds to the main surface.

Variables That Can Be Updated

DVISCOUS(NDIR,NDIR)

Interface viscous damping matrix that can be used in direct steady-state dynamic analysis and transient and steady-state mode-based dynamic analysis (including the subspace projection method), as well as in complex eigenvalue extraction, matrix generation, and substructure generation. DVISCOUS(I,J) defines an element in the material viscous damping matrix at the current frequency. Abaqus/Standard requires that this element is defined as a damping value for each (I,J) entry in the damping matrix.

Unless you invoke the unsymmetric equation solution capability in the contact property model definition (Use with the Unsymmetric Equation Solver in Abaqus/Standard), Abaqus/Standard uses only the symmetric part of DVISCOUS. For a particular off-diagonal (I,J) entry the symmetrization is done by halving the sum of the (I,J) and (J,I) components.

DSTRUCTURAL(NDIR,NDIR)

Interface structural damping matrix that can be used in direct steady-state dynamic analysis and steady-state mode-based dynamic analysis (including the subspace projection method), as well as in complex eigenvalue extraction, matrix generation, and substructure generation. DSTRUCTURAL(I,J) defines an element in the material structural damping matrix.

Unless you invoke the unsymmetric equation solution capability in the contact property model definition (Use with the Unsymmetric Equation Solver in Abaqus/Standard), Abaqus/Standard uses only the symmetric part of DSTRUCTURAL. For a particular off-diagonal (I,J) entry the symmetrization is done by halving the sum of the (I,J) and (J,I) components.

STATEV(NSTATV)

An array containing the solution-dependent state variables. These are passed in as values at the beginning of the increment and must be returned as values at the end of the increment. You define the number of available state variables as described in Allocating Space for Solution-Dependent State Variables.

SED

This variable is passed in as the value of the elastic energy density at the start of the increment and should be updated to the elastic energy density at the end of the increment. This variable is used for output only and has no effect on other solution variables. It contributes to the output variable ALLSE.

SFD

This variable should be defined as the incremental frictional dissipation. The units are energy per unit area. This variable is used for output only and has no effect on other solution variables. It contributes to the output variables ALLFD and SFDR (and related variables). For computing its contribution to SFDR, SFD is divided by the time increment.

SPD

This variable should be defined as the incremental dissipation due to plasticity effects in the interfacial constitutive behavior. The units are energy per unit area. This variable is used for output only and has no effect on other solution variables. It contributes to the output variable ALLPD.

SVD

This variable should be defined as the incremental dissipation due to viscous effects in the interfacial constitutive behavior. The units are energy per unit area. This variable is used for output only and has no effect on other solution variables. It contributes to the output variable ALLVD.

SCD

This variable should be defined as the incremental dissipation due to creep effects in the interfacial constitutive behavior. The units are energy per unit area. This variable is used for output only and has no effect on other solution variables. It contributes to the output variable ALLCD.

PNEWDT

Ratio of suggested new time increment to the time increment currently being used (DTIME, see below). This variable allows you to provide input to the automatic time incrementation algorithms in Abaqus/Standard (if automatic time incrementation is chosen).

PNEWDT is set to a large value before each call to UINTER.

If PNEWDT is redefined to be less than 1.0, Abaqus/Standard must abandon the time increment and attempt it again with a smaller time increment. The suggested new time increment provided to the automatic time integration algorithms is PNEWDT × DTIME, where the PNEWDT used is the minimum value for all calls to user subroutines that allow redefinition of PNEWDT for this iteration.

If PNEWDT is given a value that is greater than 1.0 for all calls to user subroutines for this iteration and the increment converges in this iteration, Abaqus/Standard may increase the time increment. The suggested new time increment provided to the automatic time integration algorithms is PNEWDT × DTIME, where the PNEWDT used is the minimum value for all calls to user subroutines for this iteration.

If automatic time incrementation is not selected in the analysis procedure, values of PNEWDT greater than 1.0 will be ignored and values of PNEWDT less than 1.0 will cause the job to terminate.

LOPENCLOSE

An integer flag that is used to track the contact status in situations where user subroutine UINTER is used to model standard contact between two surfaces, like the default hard contact model in Abaqus/Standard. It comes in as the value at the beginning of the current iteration and should be set to the value at the end of the current iteration. It is set to −1 at the beginning of the analysis before UINTER is called. You should set it to 0 to indicate an open status and to 1 to indicate a closed status. A change in this flag from one iteration to the next will have two effects. It will result in output related to a change in contact status if you request a detailed contact printout in the message file (The Abaqus/Standard Message File). In addition, it will also trigger a severe discontinuity iteration. Any time this flag is reset to a value of −1, Abaqus/Standard assumes that the flag is not being used. A change in this flag from −1 to another value or vice versa will not have any of the above effects.

LSTATE

An integer flag that should be used in non-standard contact situations where a simple open/close status is not appropriate or enough to describe the state. It comes in as the value at the beginning of the current iteration and should be set to the value at the end of the current iteration. It is set to −1 at the beginning of the analysis before UINTER is called. It can be assigned any user-defined integer value, each corresponding to a different state. You can track changes in the value of this flag and use it to output appropriate diagnostic messages to the message file (unit 7). You may choose to output diagnostic messages only when a detailed contact printout is requested (The Abaqus/Standard Message File). In the latter case, the LPRINT parameter is useful. In conjunction with the LSTATE flag, you may also utilize the LSDI flag to trigger a severe discontinuity iteration any time the state changes from one iteration to the next. Any time this flag is reset to a value of −1, Abaqus/Standard assumes that the flag is not being used.

LSDI

This flag is set to 0 before each call to UINTER and should be set to 1 if the current iteration should be treated as a severe discontinuity iteration. This would typically be done in non-standard contact situations based on a change in the value of the LSTATE flag from one iteration to the next. The use of this flag has no effect when the LOPENCLOSE flag is also used. In that case, severe discontinuity iterations are determined based on changes in the value of LOPENCLOSE alone.

Variables Passed in for Information

RDISP(NDIR)

An array containing the current relative positions between the two surfaces at the end of the increment. The first component is the relative position of the point on the secondary surface, with respect to the main surface, in the normal direction. The second and third components, if applicable, are the accumulated incremental relative tangential displacements, measured from the beginning of the analysis. For the relative position in the normal direction a negative quantity represents an open status, while a positive quantity indicates penetration into the main surface. For open points on the secondary surface for which no pairing main is found, the first component is a very large negative number (−1 × 1036). The local directions in which the relative displacements are defined are stored in ALOCALDIR.

DRDISP(NDIR)

An array containing the increments in relative positions between the two surfaces.

TEMP(2)

Temperature at the end of the increment at a point on the secondary surface and the opposing main surface, respectively.

DTEMP(2)

Increment in temperature at the point on the secondary surface and the opposing main surface, respectively.

PREDEF(2,NPRED)

An array containing pairs of values of all the predefined field variables at the end of the current increment (initial values at the beginning of the analysis and current values during the analysis). The first value in a pair, PREDEF(1,NPRED), corresponds to the value at the point on the secondary surface, and the second value, PFREDEF(2,NPRED), corresponds to the value of the field variable at the nearest point on the opposing surface.

DPRED(2,NPRED)

Array of increments in predefined field variables.

TIME(1)

Value of step time at the end of the increment.

TIME(2)

Value of total time at the end of the increment.

DTIME

Current increment in time.

FREQR

Current frequency for steady-state dynamic analysis in rad/time.

CINAME

User-specified surface interaction name, left justified.

SECNAME

Secondary surface name.

MAINNAME

Main surface name.

PROPS(NPROPS)

User-specified array of property values to define the interfacial constitutive behavior between the contacting surfaces.

COORDS(MCRD)

An array containing the current coordinates of this point.

ALOCALDIR(3,3)

An array containing the direction cosines of the local surface coordinate system. The directions are stored in columns. For example, ALOCALDIR(1,1), ALOCALDIR(2,1), and ALOCALDIR(3,1) give the (1, 2, 3) components of the normal direction. Thus, the first direction is the normal direction to the surface, and the remaining two directions are the local tangent directions in the plane of the surface. The local system is defined by the geometry of the main surface. The convention for the local directions is the same as the convention in situations where the model uses the built-in contact capabilities in Abaqus/Standard (described in Contact Formulations in Abaqus/Standard for the tangential directions).

DROT(2,2)

Rotation increment matrix. For contact with a three-dimensional rigid surface, this matrix represents the incremental rotation of the surface directions relative to the rigid surface. It is provided so that vector- or tensor-valued state variables can be rotated appropriately in this subroutine. Relative displacement components are already rotated by this amount before UINTER is called. This matrix is passed in as a unit matrix for two-dimensional and axisymmetric contact problems.

AREA

Surface area associated with the contact point.

CHRLNGTH

Characteristic contact surface face dimension.

NODE

User-defined global secondary node number (or internal node number for models defined in terms of an assembly of part instances) involved with this contact point. Corresponds to the predominant secondary node of the constraint if the surface-to-surface contact formulation is used.

NDIR

Number of force components at this point.

NSTATV

Number of solution-dependent state variables.

NPRED

Number of predefined field variables.

NPROPS

User-defined number of property values associated with this interfacial constitutive model (Interfacial Constants).

MCRD

Number of coordinate directions at the contact point.

KSTEP

Step number.

KINC

Increment number.

KIT

Iteration number. KIT=1 for the first assembly, KIT=2 for the first recovery/second assembly, KIT=3 for the second recovery/third assembly, and so on.

LINPER

Linear perturbation flag. LINPER=1 if the step is a linear perturbation step. LINPER=0 if the step is a general step. For a linear perturbation step, the inputs to user subroutine UINTER represent perturbation quantities about the base state. The user-defined quantities in UINTER are also perturbation quantities. The Jacobian terms should be based on the base state. No change in contact status should occur during a linear perturbation step.

LPRINT

This flag is equal to 1 if a detailed contact printout to the message file is requested and 0 otherwise (The Abaqus/Standard Message File). This flag can be used to print out diagnostic messages regarding changes in contact status selectively only when a detailed contact printout is requested.