Product: ABAQUS/Standard
User subroutine UINTER:
is called at the slave nodes 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, Section 22.1.2) or the extended versions of the classical Coulomb friction model (Frictional behavior, Section 22.1.4) are too restrictive and a more complex definition of normal and shear transmission between contacting surfaces is 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 use and update solution-dependent state variables; and
is available only for surface-based contact definitions.
SUBROUTINE UINTER(STRESS,DDSDDR,FLUX,DDFDDT,DDSDDT,DDFDDR, 1 STATEV,SED,SFD,SPD,SVD,SCD,PNEWDT,RDISP,DRDISP, 2 TEMP,DTEMP,PREDEF,DPRED,TIME,DTIME,CINAME,SLNAME,MSNAME, 3 PROPS,COORDS,ALOCALDIR,DROT,AREA,CHRLNGTH,NODE,NDIR,NSTATV, 4 NPRED,NPROPS,MCRD,KSTEP,KINC,KIT,LINPER,LOPENCLOSE,LSTATE, 5 LSDI,LPRINT) C INCLUDE 'ABA_PARAM.INC' C CHARACTER*80 CINAME,SLNAME,MSNAME 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) user coding to define STRESS, DDSDDR, FLUX, DDFDDT, DDSDDT, DDFDDR, and, optionally, STATEV, SED, SFD, SPD, SVD, SCD, PNEWDT, LOPENCLOSE, LSTATE, LSDI RETURN END
STRESS(NDIR)
This array is passed in as the stress between the slave node and the master surface 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 or a fully coupled temperature-displacement 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” in “User-defined interfacial constitutive behavior, Section 22.1.5), ABAQUS/Standard will use only the symmetric part of DDSDDR. This variable must be defined for a stress/displacement or a fully coupled temperature-displacement analysis to ensure proper convergence characteristics.
FLUX(2)
Magnitude of the heat flux flowing into the slave and master 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 or a fully coupled temperature-displacement 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 or a fully coupled temperature-displacement 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 analysis), in which the stress is a function of the surface temperatures. DDSDDT(NDIR,1) corresponds to the slave surface, and DDSDDT(NDIR,2) corresponds to the master 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 analysis), in which the flux is a function of the relative displacement. DDFDDR(1,NDIR) corresponds to the slave surface, and DDFDDR(2,NDIR) corresponds to the master surface.
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” in “User subroutines: overview, Section 25.1.1.
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 “Output, Section 4.1.1). 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 “Output, Section 4.1.1). 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.
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 slave node, with respect to the master surface, in the normal direction. The second and third components, if applicable, are the accumulated incremental relative tangential displacements of the slave node, 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 of the slave node into the master surface. For open slave nodes for which no pairing master 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 the slave node and the opposing master surface, respectively.
DTEMP(2)
Increment in temperature at the slave node and the opposing master 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 slave node, 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.
CINAME
User-specified surface interaction name, left justified.
SLNAME
Slave surface name.
MSNAME
Master 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 slip directions in the plane of the surface. The local system is defined by the geometry of the master 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 formulation for ABAQUS/Standard contact pairs, Section 21.2.2, 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 slave node number (or internal node number for models defined in terms of an assembly of part instances) involved with this contact point.
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” in “User-defined interfacial constitutive behavior, Section 22.1.5).
MCRD
Number of coordinate directions at the contact point.
KSTEP
Step number.
KINC
Increment number.
KIT
Iteration number. KIT=0 for the first assembly, KIT=1 for the first recovery/second assembly, KIT=2 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” in “Output, Section 4.1.1). This flag can be used to print out diagnostic messages regarding changes in contact status selectively only when a detailed contact printout is requested.