ProductsAbaqus/Explicit TerminologyThe use of user subroutine VFRIC requires familiarity with the following terminology. Surface node numbersThe “surface node number” refers to the position of a particular node in the list of nodes on the surface. For example, there are nSlvNod nodes on the slave surface. Number $n,n=1,\mathrm{2...}$nSlvNod, is the surface node number of the nth node in this list; jSlvUid$\left(n\right)$ is the userdefined global number of this node. An Abaqus/Explicit model can be defined in terms of an assembly of part instances (see Assembly definition). In such models a node number in jSlvUid is an internally generated node number. If the original node number and part instance name are required, call the utility routine VGETPARTINFO (see Obtaining part information). Contact pointsThe nodes on the slave surface that are in contact in the current time increment are defined as “contact points.” The number of contact points is passed into this subroutine as nContact. The array jConSlvid(nContact) gives the surface node numbers for the contact points. Local coordinate systemA local coordinate system is defined for each contact point to facilitate specification of frictional forces and incremental slips. The local 1direction for both twodimensional and threedimensional contact is tangential to the master surface, and it is defined by ${\mathbf{t}}_{1}=d\mathbf{s}/\leftd\mathbf{s}\right$, where $d\mathbf{s}$ is the incremental slip vector. The incremental slip vector used to define ${\mathbf{t}}_{1}$ corresponds to the incremental slip in the current time increment for penalty contact and the predicted incremental slip for kinematic contact. The master surface normal direction, $\mathbf{n}$, is the local 2direction for twodimensional contact and the local 3direction for threedimensional contact. The local 2direction for threedimensional contact is given by ${\mathbf{t}}_{2}=\mathbf{n}\times {\mathbf{t}}_{1}$, which is also tangent to the master surface. The vectors are shown in Figure 1 and Figure 2. The direction cosines for ${\mathbf{t}}_{1}$ and $\mathbf{n}$ with respect to the global coordinate system are available in dirCosT1 and dirCosN, respectively. In the case of zero incremental slip ($\leftd\mathbf{s}\right=0$) we choose an arbitrary direction for ${\mathbf{t}}_{1}$ that is orthogonal to the normal direction, $\mathbf{n}$. Figure 1. Local coordinate system for twodimensional contact with VFRIC.
Figure 2. Local coordinate system for threedimensional contact with VFRIC.
Frictional forcesYou specify the frictional force, fTangential, at each contact point in local coordinates in this subroutine. The array fTangential is dimensioned such that only the tangential components can be specified. Any components of the frictional force that are not specified will remain equal to zero. For threedimensional contact with isotropic friction, only the first component of the frictional force need be specified since the second component should be zero. A “stick force” at each contact point is provided in the array fStickForce to assist you in setting the appropriate frictional force values. The stick force is the force required to prevent additional “plastic” slipping. The stick force at each contact point is provided as a scalar value as it would act in the direction opposite to ${\mathbf{t}}_{1}$. The stick force is computed prior to calling user subroutine VFRIC by either the kinematic or the penalty contact algorithm. See Contact constraint enforcement methods in Abaqus/Explicit for descriptions of the kinematic and penalty contact algorithms and the user interface for choosing between them. The first component of the frictional force should be in the range between zero and minus the stick force value. Typically, the stick force will be positive and the first component of the applied frictional force will be negative, opposing the incremental slip. Penalty contact includes an elastic slip regime due to finite penalty stiffness, so occasionally, during recovery of elastic slip, the stick force will be negative, indicating that it is appropriate for the first component of the frictional force to be positive (i.e., acting in the same direction as the incremental slip). A noisy or unstable solution is likely to result if the first component of fTangential is set outside of the range between zero and negative the value of the stick force. After user subroutine VFRIC is called, frictional forces that oppose the forces specified at the contact points are distributed to the master nodes. For balanced masterslave contact we then compute weighted averages of the frictional forces for both masterslave orientations. These forces are directly applied if the penalty contact algorithm is being used. If the kinematic contact algorithm is being used, the frictional forces are converted to acceleration corrections by dividing by the nodal masses. User subroutine interfacesubroutine vfric( C Write only  1 fTangential, C Read/Write  2 statev, C Read only  3 kStep, kInc, nContact, nFacNod, nSlvNod, nMstNod, 4 nFricDir, nDir, nStateVar, nProps, nTemp, nPred, numDefTfv, 5 jSlvUid,jMstUid, jConSlvid, jConMstid, timStep, timGlb, 6 dTimCur, surfInt, surfSlv, surfMst, lContType, 7 dSlipFric, fStickForce, fTangPrev, fNormal, frictionWork, 8 shape, coordSlv, coordMst, dirCosSl, dircosN, props, 9 areaSlv, tempSlv, preDefSlv, tempMst, preDefMst) C include `vaba_param.inc' C character*80 surfInt, surfSlv, surfMst C dimension props(nProps), statev(nStateVar,nSlvNod), 1 dSlipFric(nDir,nContact), 2 fTangential(nFricDir,nContact), 3 fTangPrev(nDir,nContact), 4 fStickForce(nContact), areaSlv(nSlvNod), 5 fNormal(nContact), shape(nFacNod,nContact), 6 coordSlv(nDir,nSlvNod), coordMst(nDir,nMstNod), 7 dirCosSl(nDir,nContact), dircosN(nDir,nContact), 8 jSlvUid(nSlvNod), jMstUid(nMstNod), 9 jConSlvid(nContact), jConMstid(nFacNod,nContact) 1 tempSlv(nContact), preDefSlv(nContact,nPred), 2 tempMst(numDefTfv), preDefMst(numDefTfv,nPred) user coding to define fTangential and, optionally, statev return end Variables to be defined
Variables that can be updated
Variables passed in for information
