ProductsAbaqus/Explicit TerminologyThe use of user subroutine VUINTER 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). Local coordinate systemThe array alocaldir defines the direction cosines of a local coordinate system for each slave node. The first local direction corresponds to the contact normal direction from the perspective of the slave node. For a twodimensional VUINTER model the second local direction is the tangent direction defined by the cross product of the vector into the plane of the model (0., 0., −1.0) and the slave normal. For a threedimensional VUINTER model the second and third local directions correspond to two orthogonal tangent directions ${\mathbf{t}}_{1}$ and ${\mathbf{t}}_{2}$, which are set as follows:
For the two cases listed above involving threedimensional analytical surfaces, the local tangent directions will reflect a rotation of the master surface. For the last case (threedimensional, elementbased master surface) the tangent directions may not follow the rotation of either the master or slave surfaces; for example, the local system would remain fixed with respect to the global system if a slave node and its surrounding facets rotate about an axes parallel to the slave normal. The 2 × 2 array stored in drot for each slave node represents the incremental rotation of the tangent directions within the tangent plane corresponding to the tracked point of a threedimensional master surface. (This incremental rotation array is equal to a unit matrix if nDir is equal to 2.) This incremental rotation matrix is provided so that vector or tensorvalued state variables defined within the tangent plane can be rotated in this subroutine. For example, the second and third components of the rdisp array (i.e., the relative slip components) are rotated by this amount before VUINTER is called. However, as already mentioned, the rotation of the tangent directions may not reflect a physical rotation of the master or slave surface. Conventions for heat flux and stressA positive flux indicates heat flowing into a surface, and a negative flux denotes heat leaving the surface. Flux must be specified for both surfaces, and they need not be equal and opposite so that effects such as frictional dissipation and differential surface heating can be modeled. A positive normal stress denotes a pressure directed into the surface (opposite the local normal direction). Positive shear stresses denote shear tractions in the direction of the local surface tangents. User subroutine interfacesubroutine vuinter( C Write only 1 sfd, scd, spd, svd, C Read/Write  2 stress, fluxSlv, fluxMst, sed, statev, C Read only  3 kStep, kInc, nFacNod, nSlvNod, nMstNod, nSurfDir, 4 nDir, nStateVar, nProps, nTemp, nPred, numDefTfv, 5 jSlvUid, jMstUid, jConMstid, timStep, timGlb, 6 dTimCur, surfInt, surfSlv, surfMst, 7 rdisp, drdisp, drot, stiffDflt, condDflt, 8 shape, coordSlv, coordMst, alocaldir, props, 9 areaSlv, tempSlv, dtempSlv, preDefSlv, dpreDefSlv, 1 tempMst, dtempMst, preDefMst, dpreDefMst) C include `vaba_param.inc' C character*80 surfInt, surfSlv, surfMst C dimension props(nProps), statev(nStateVar,nSlvNod), 1 drot(2,2,nSlvNod), sed(nSlvNod), sfd(nSlvNod), 2 scd(nSlvNod), spd(nSlvNod), svd(nSlvNod), 3 rdisp(nDir,nSlvNod), drdisp(nDir,nSlvNod), 4 stress(nDir,nSlvNod), fluxSlv(nSlvNod), 5 fluxMst(nSlvNod), areaSlv(nSlvNod), 6 stiffDflt(nSlvNod), condDflt(nSlvNod), 7 alocaldir(nDir,nDir,nSlvNod), shape(nFacNod,nSlvNod), 8 coordSlv(nDir,nSlvNod), coordMst(nDir,nMstNod), 9 jSlvUid(nSlvNod), jMstUid(nMstNod), 1 jConMstid(nFacNod,nSlvNod), tempSlv(nSlvNod), 2 dtempSlv(nSlvNod), preDefSlv(nPred,nSlvNod), 3 dpreDefSlv(nPred,nSlvNod), tempMst(numDefTfv), 4 dtempMst(numDefTfv), preDefMst(nPred,numDefTfv), 5 dpreDefMst(nPred,numDefTfv) user coding to define stress, and, optionally, fluxSlv, fluxMst, statev, sed, sfd, scd, spd, and svd return end Variables to be defined
Variables that can be updated
Variables passed in for information
