User subroutine interface
SUBROUTINE FRIC(LM,TAU,DDTDDG,DDTDDP,DSLIP,SED,SFD,
1 DDTDDT,PNEWDT,STATEV,DGAM,TAULM,PRESS,DPRESS,DDPDDH,SLIP,
2 KSTEP,KINC,TIME,DTIME,NOEL,CINAME,SLNAME,MSNAME,NPT,NODE,
3 NPATCH,COORDS,RCOORD,DROT,TEMP,PREDEF,NFDIR,MCRD,NPRED,
4 NSTATV,CHRLNGTH,PROPS,NPROPS)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CINAME,SLNAME,MSNAME
C
DIMENSION TAU(NFDIR),DDTDDG(NFDIR,NFDIR),DDTDDP(NFDIR),
1 DSLIP(NFDIR),DDTDDT(NFDIR,2),STATEV(*),DGAM(NFDIR),
2 TAULM(NFDIR),SLIP(NFDIR),TIME(2),COORDS(MCRD),
3 RCOORD(MCRD),DROT(2,2),TEMP(2),PREDEF(2,*),PROPS(NPROPS)
user coding to define LM, TAU, DDTDDG, DDTDDP,
and, optionally, DSLIP, SED, SFD, DDTDDT, PNEWDT, STATEV
RETURN
END
Variables to be defined
- In all cases
- LM
Relative motion flag. User subroutine
FRIC is called only if the contact point is determined to be
closed; that is, if the contact pressure is positive (the contact point was
closed in the previous iteration) or if the contact point is overclosed (the
contact point was open in the previous iteration).
During iterations LM is passed into the
subroutine as the value defined during the previous iteration. At the start of
an increment or if the contact point opened during the previous iteration, this
variable will be passed into the routine depending on the contact condition in
the previous increment. If the contact point was slipping,
LM is equal to 0; if the contact point was
sticking, LM is equal to 1; and if the contact
point was open, LM is equal to 2.
Set LM equal to 0 if relative motion is
allowed (either due to slip or elastic stick). In this case the subroutine must
specify the frictional stress
(and
for three-dimensional analysis) as a function of the relative sliding motion
(and ),
the interface contact pressure p, and other predefined or
user-defined state variables. In addition, the subroutine must define the
derivatives of the frictional stress with respect to ,
(),
and p. For instance, in the case of isotropic elastic
sticking, ,
,
where
is the elastic stiffness of the interface.
Set LM equal to 1 if no relative motion is
allowed; a rigid sticking condition at the interface is enforced by a Lagrange
multiplier method. In this case no further variables need to be updated. If
LM is always set to 1, a “perfectly rough”
interface is created. It is not advisable to set
LM to 1 when the finite-sliding,
surface-to-surface contact formulation is used.
Set LM equal to 2 if friction is ignored
(frictionless sliding is assumed). In this case no further variables need to be
updated. If LM is always set to 2, a “perfectly
smooth” interface is created.
You can make decisions about the stick/slip condition based on incremental
slip information and calculated frictional stresses. These quantities are
passed in by
Abaqus/Standard,
as discussed below.
To avoid convergence problems for the general class of frictional contact
problems, set LM to 2 and exit this routine if
the contact point was open at the end of the previous increment; that is, if
Abaqus/Standard
sets LM=2 when it calls this routine, simply
exit the routine.
- If the return value of LM is 0
- TAU(NFDIR)
These values are passed in as the values of the frictional stress
components, ,
at the beginning of the increment and must be updated to the values at the end
of the increment. Here, and in the rest of this description, Greek subscripts
(,
)
refer to frictional shear directions. The orientation of these directions on
contact surfaces is defined in
Contact formulations in Abaqus/Standard.
- DDTDDG(NFDIR,NFDIR)
/,
partial derivative of the frictional stress in direction
with respect to the relative motion in direction .
- DDTDDP(NFDIR)
/,
partial derivative of the frictional stress in direction
with respect to the contact pressure. Since these terms yield an unsymmetric
contribution to the stiffness matrix, they are used only if the unsymmetric
equation solver is used (see
Defining an analysis).
Variables that can be updated
- DSLIP(NFDIR)
,
increment in nonrecoverable sliding motion (slip). If
LM was 0 in the previous iteration, this array
is passed in as the user-defined values during the previous iteration;
otherwise, it will be zero. The array should be updated only if the return
value of LM is 0.
This array is useful to detect slip reversals between iterations. It is used
by the output options to indicate whether this point is sticking or slipping.
Upon convergence of an increment, the values in
DSLIP(NFDIR) are accumulated in
SLIP(NFDIR), which are stored as the plastic
strains.
- 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.
- SFD
This variable should be defined as the incremental frictional dissipation.
The units are energy per unit area if the contact element or contact pair
calling
FRIC uses stresses as opposed to forces. For regular stress
analysis this variable is used for output only and has no effect on other
solution variables. In coupled temperature-displacement and coupled
thermal-electrical-structural analyses the dissipation is converted into heat
if the gap heat generation model is used. If SFD
is not defined, the heat generation is calculated based on the dissipation
obtained as the product of the slip increment,
DSLIP, and the frictional stress,
TAU.
- DDTDDT(NFDIR,2)
/,
/
partial derivatives of the frictional stress in direction
with respect to the temperatures of the two surfaces. This is required only for
coupled temperature-displacement and coupled thermal-electrical-structural
elements, in which the frictional stress is a function of the surface
temperatures.
- 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
FRIC.
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.
- STATEV(NSTATV)
An array containing the user-defined solution-dependent state variables. You
specify the number of available state variables; see
Allocating space
for details. This array will be passed in containing the values of these
variables at the start of the increment. If any of the solution-dependent state
variables is being used in conjunction with the friction behavior, they must be
updated in this subroutine to their values at the end of the increment.
Variables passed in for information
- DGAM(NFDIR)
If LM was set to 0 in the previous iteration,
this value is the increment of sliding motion in the current increment,
.
Otherwise, it will be zero. Comparison with
DSLIP(NFDIR) makes it possible to determine
whether slip changes to stick at this point and/or if there is a slip direction
reversal occurring at this point.
- TAULM(NFDIR)
If LM was set to 1 in the previous iteration,
this value is the current value of the constraint stress at the end of the
increment, .
Otherwise, it will be zero. Comparison with the critical shear stress makes it
possible to determine whether stick changes to slip at this point.
- PRESS
p, contact pressure at end of increment.
- DPRESS
,
increment in contact pressure.
- DDPDDH
/,
current contact stiffness, in the case of soft contact (Contact pressure-overclosure relationships).
- SLIP(NFDIR)
Total nonrecoverable sliding motion (slip) at the beginning of the
increment, .
This value is the accumulated value of
DSLIP(NFDIR) from previous increments.
- KSTEP
Step number.
- KINC
Increment number.
- 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.
- NOEL
Element label for contact elements. Passed in as zero if contact surfaces
are defined.
- CINAME
User-specified surface interaction name associated with the friction
definition, left justified. For contact elements it is the element set name
given for the interface definition associated with the friction definition; if
an optional name is assigned to the interface definition,
CINAME is passed in as this name, left
justified.
- SLNAME
Slave surface name. Passed in as blank if contact elements are used.
- MSNAME
Master surface name. Passed in as blank if contact elements are used.
- NPT
Integration point number for contact elements. Passed in as zero if contact
surfaces are defined.
- 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. Passed in as zero if called
from a contact element.
- NPATCH
Not used.
- COORDS(MCRD)
An array containing the current coordinates of this point.
- RCOORD(MCRD)
If the master surface is defined as a rigid surface, this array is passed in
containing the coordinates of the opposing point on the rigid surface in its
current position and orientation.
- 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.
Stress and slip components are already rotated by this amount before
FRIC is called. This matrix is passed in as a unit matrix for
two-dimensional and axisymmetric contact problems.
- TEMP(2)
Current temperature at the slave node and the opposing master surface,
respectively.
- PREDEF(2,NPRED)
An array containing pairs of values of all the user-specified field
variables at the end of the current increment (initial values at the beginning
of the analysis and current values during the analysis). If
FRIC is called from a contact pair, the first value in a pair
corresponds to the slave node and the second value corresponds to the nearest
point on the master surface. If
FRIC is called from a large-sliding contact element,
PREDEF(1,NPRED) corresponds to the value at the
integration point of the element and
PFREDEF(2,NPRED) corresponds to the nearest
point on the opposing surface. If
FRIC is called from a small-sliding contact element,
PREDEF(1,NPRED) corresponds to the value at the
integration point of the first side and
PFREDEF(2,NPRED) corresponds to the value at the
integration point on the opposite face of the element.
- NFDIR
Number of friction directions.
- MCRD
Number of coordinate directions at the contact point.
- NPRED
Number of predefined field variables.
- NSTATV
Number of user-defined state variables.
- CHRLNGTH
Characteristic contact surface face dimension, which can be used to define
the maximum allowable elastic slip.
- PROPS(NPROPS)
Array of user-specified property values that are used to define the
frictional behavior between the contacting surfaces.
- NPROPS
User-specified number of property values associated with this friction
model.
|