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