C C User subroutine VFRIC subroutine vfric ( C Write only - * fTangential, C Read/Write - * statev, C Read only - * kStep, kInc, nContact, nFacNod, nSecNod, nMainNod, * nFricDir, nDir, nStateVar, nProps, nTemp, nPred, numDefTfv, * jSecUid, jMainUid, jConSecid, jConMainid, timStep, timGlb, * dTimCur, surfInt, surfSec, surfMast, lContType, * dSlipFric, fStickForce, fTangPrev, fNormal, frictionWork, * shape, coordSec, coordMain, dircosSec, dircosN, props, * areaSec, tempSec, preDefSec, tempMain, preDefMain ) C include 'vaba_param.inc' C dimension props(nProps), statev(*), 1 dSlipFric(nDir,nContact), 2 fTangential(nFricDir,nContact), 3 fTangPrev(nDir,nContact), 4 fStickForce(nContact), areaSec(nSecNod), 5 fNormal(nContact), shape(nFacNod,nContact), 6 coordSec(nDir,nSecNod), coordMain(nDir,nMainNod), 7 dircosSec(nDir,nContact), dircosN(nDir,nContact), 8 jSecUid(nSecNod), jMainUid(nMainNod), 9 jConSecid(nContact), jConMainid(nFacNod,nContact), 1 tempSec(nContact), tempMain(numDefTfv), 2 preDefSec(nContact, nPred), 3 preDefMain(numDefTfv, nPred) C character*80 surfInt, surfSec, surfMast character*80 cpname parameter ( j_node = 0, zero = 0.d0 ) * jrcd = 0 cpname = ' ' xMu = props(1) do kcon = 1, ncontact locnum = 0 jusernode = jSecUid(jConSecid(kcon)) call vgetpartinfo(jusernode, j_node, cpname, locnum, jrcd) if (cpname(1:5).eq.'BLOCK' .and. 1 (locnum.eq.101 .or. locnum.eq.102)) then if ( nDir .eq. 2 ) then fn = fNormal(kcon) fs = fStickForce(kcon) ft = min ( xMu * fn, fs ) fTangential(1,kcon) = -ft else if ( nDir .eq. 3 ) then fn = fNormal(kcon) fs = fStickForce(kcon) ft = min ( xMu * fn, fs ) fTangential(1,kcon) = -ft fTangential(2,kcon) = zero end if end if end do * return end