subroutine fric_coef(fCoef, fCoefDeriv, nBlock, nProps, * nTemp, nFields, iData, rData, surfInt, surfSec, surfMain, * props, slipData, pressure, tempAvg, fieldAvg ) include 'aba_param.inc' c parameter( i_ifc_KStep = 1, * i_ifc_kinc = 2, $ i_ifc_kitgen = 3, $ i_ifc_node = 4, $ i_ifc_nStateV = 5, $ i_ifc_nFDir = 6) c parameter( i_rfc_TimStep = 1, * i_rfc_TimGlb = 2, * i_rfc_DTimCur = 3, $ i_rfc_Drot = 4, $ i_rfc_StateV = 8) parameter( idfdSlipRate = 1, * idfdPressure = 2, * idfdtemperature = 3) dimension fCoef(nBlock), fCoefDeriv(nBLock,20), * props(nProps),slipData(nBlock,*),pressure(nBlock), * tempAvg(nBlock), fieldAvg(nBlock,nFields), * iData(*), rData(*) c parameter (nDataSize=10) dimension array(nDataSize),jarray(nDataSize) character*3 flgray(nDataSize) c character*80 surfInt, surfSec, surfMain pointer (ptrDrot,Drot) dimension Drot(2,*) pointer (ptrSdv,Sdv) dimension Sdv(*) c real*8 mu_initial,mu_final,SlipScaleFac,cslipeq,mu_Cur ptrSdv = loc(rData(i_rfc_StateV)) ptrDrot= loc(rData(i_rfc_Drot)) nStateV = iData(i_ifc_nStateV) c c Access equivalent contact slip at the beginning of the increment c call GETVRC('CSLIPEQ',array,jarray,flgray,nDataSize,jrcd) c kstep = iData(i_ifc_KStep) kinc = iData(i_ifc_kinc) kitgen= iData(i_ifc_kitgen) iNode = iData(i_ifc_node) c 100 format('Step/Inc/Iter/Node=', 4(1x,i3),'MU= ',(1x,e19.11),' SDV',4(1x,e19.11)) mu_initial = props(1) mu_final = props(2) alpha = props(3) beta = props(4) c cSlipEQ = array(1) c c** SDV(1) = Current friction coefficient for visualization purposes only c** SDV(2) = Solution dependent variable that depends on equivalent contact slip Sdv(2) = alpha*cSlipEQ + beta fCoef(1) = mu_initial + (mu_final - mu_initial)*(1.d0 - exp(Sdv(2))) Sdv(1) = fCoef(1) c c if (iNode .eq. 121.or. iNode .eq. 123) then c write(7,100) kstep,kinc,kitgen,iNode,fCoef(1),(Sdv(k),k=1,nStateV) c end if c do k1=1,nBlock fCoefDeriv(k1,idfdSlipRate) = 0.d0 fCoefDeriv(k1,idfdPressure) = 0.d0 fCoefDeriv(k1,idfdTemperature) = 0.d0 end do return end