<!-- source-page: 281 -->

“User-defined interfacial constitutive behavior,” Section 37.1.6 of the Abaqus Analysis User’s Guide), 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 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, 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 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 or a coupled thermal-electrical-structural 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.

# 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)

<!-- source-page: 282 -->

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” in “User-defined interfacial constitutive behavior,” Section 37.1.6 of the Abaqus Analysis User’s Guide), 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 steadystate 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” in “User-defined interfacial constitutive behavior,” Section 37.1.6 of the Abaqus Analysis User’s Guide), 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” in “User subroutines: overview,” Section 18.1.1 of the Abaqus Analysis User’s Guide.

# 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.

<!-- source-page: 283 -->

# 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 of the Abaqus Analysis User’s Guide). 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

<!-- source-page: 284 -->

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 of the Abaqus Analysis User’s Guide). 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 slave surface, with respect to the master 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 master surface. For open points on the slave surface for which no pairing master is found, the first component is a very large negative number $( - 1 \times 1 0 ^ { 3 6 } )$ . 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 slave surface and the opposing master surface, respectively.

# DTEMP(2)

Increment in temperature at the point on the slave surface 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 point on the slave surface, and the second value, PFREDEF(2,NPRED), corresponds to the value of the field variable at the nearest point on the opposing surface.

<!-- source-page: 285 -->

# 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.

# 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 local tangent 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 formulations in Abaqus/Standard,” Section 38.1.1 of the Abaqus Analysis User’s Guide, 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

<!-- source-page: 286 -->

# UINTER

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. Corresponds to the predominant slave 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” in “User-defined interfacial constitutive behavior,” Section 37.1.6 of the Abaqus Analysis User’s Guide).

# 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.

<!-- source-page: 287 -->

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 of the Abaqus Analysis User’s Guide). This flag can be used to print out diagnostic messages regarding changes in contact status selectively only when a detailed contact printout is requested.

<!-- source-page: 288 -->

<!-- source-page: 289 -->

# 1.1.43 UMASFL: User subroutine to specify prescribed mass flow rate conditions for a convection/diffusion heat transfer analysis.

Product: Abaqus/Standard

# References

• “Uncoupled heat transfer analysis,” Section 6.5.2 of the Abaqus Analysis User’s Guide   
• \*MASS FLOW RATE   
• “UTEMP, UFIELD, UMASFL, and UPRESS,” Section 4.1.25 of the Abaqus Verification Guide

# Overview

User subroutine UMASFL:

• can be used to prescribe the mass flow rate vector at the nodes of a model as a function of position and time;   
• will be called whenever a current value of mass flow rate (per unit area) is needed for a node listed in a user-subroutine-defined mass flow rate definition (the node should belong to one or more convection/diffusion elements); and   
• will overwrite any flow rate data specified for the associated mass flow rate definition outside the user subroutine.

# User subroutine interface

```fortran
SUBROUTINE UMASFL (FLOW, KFLOW, KSTEP, KINC, TIME, NODE, COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION FLOW (KFLOW), TIME(2), COORDS(3)
C
user coding to define FLOW
RETURN
END 
```

<!-- source-page: 290 -->

# Variable to be defined

# FLOW

Total value of the mass flow rate vector at this point. The number of components in this vector is KFLOW. If KFLOW=1, give the total mass flow rate through the cross-section (for one-dimensional elements). If KFLOW=2, give the x-component and y-component of the flow rate vector as FLOW(1) and FLOW(2). If KFLOW=3, give the x-component, y-component, and z-component as FLOW(1), FLOW(2), and FLOW(3).

# Variables passed in for information

# KFLOW

The number of components in the mass flow rate vector. UMASFL will be called only once per node.

# KSTEP

Step number.

# KINC

Increment number.

# TIME(1)

Current value of step time.

# TIME(2)

Current value of total time.

# NODE

Node number.

# COORDS

An array containing the coordinates of this node.
