subroutine uinter(stress,ddsddr,amki,amski,flux,ddfddt,ddsddt, 1 ddfddr,statev,sed,sfd,spd,svd,scd,pnewdt,rdisp,drdisp, 2 temp,dtemp,predef,dpred,time,dtime,freqr,ciname,secname, 3 mainname,props,coords,aLocalDir,drot,area,chrLngth,node,ndir, 4 nstatv,npred,nprops,mcrd,kstep,kinc,kit,linper,lOpenClose, 5 lState,lSdi,lPrint) c include 'aba_param.inc' c dimension stress(ndir),ddsddr(ndir,ndir),flux(2),ddfddt(2,2), $ ddsddt(ndir,2),ddfddr(2,ndir),statev(nstatv),rdisp(ndir), $ drdisp(ndir),temp(2),dtemp(2),predef(2,npred),dpred(2,npred), $ time(2),props(nprops),coords(mcrd),aLocalDir(mcrd,mcrd), $ drot(2,2),amki(ndir,ndir),amski(ndir,ndir) character*80 ciname,secname,mainname parameter(toler = 1.D-12, zero=0.d0, one=1.d0, two=2.d0, $ half = one/two, fourth=0.25D0, eighth=0.125D0) c c User defined interfacial constitutive behavior. c c c Local variables p_t = zero tau1_t = zero tau2_t = zero dp = zero c Material properties c ekbar = props(1) ! Modulus in the normal direction c xk=props(2)+props(3)*(temp(1)+temp(2))/two if ( rdisp(1) .ge. toler) then c lOpenClose = 1 c Compute P_(t+dt) and T_crit c p_t = stress(1) tau1_t = stress(2) tau2_t = stress(3) dp = ekbar*drdisp(1) stress(1) = stress(1) + dp stress(2) = drdisp(2)/(xk*dtime) stress(3) = drdisp(3)/(xk*dtime) c ddsddr(1,1) = ekbar ddsddr(2,2)=one/(xk*dtime) ddsddr(3,3)=one/(xk*dtime) ddsddr(1,2)=zero ddsddr(2,1)=zero ddsddr(1,3)=zero ddsddr(3,1)=zero ddsddr(3,2)=zero ddsddr(2,3)=zero c ddsddt(1,1)=zero ddsddt(1,2)=zero ddsddt(2,1)=-0.0001*drdisp(2)/(dtime*two*xk**two) ddsddt(2,2)=ddsddt(2,1) ddsddt(3,1)=-0.0001*drdisp(3)/(dtime*two*xk**two) ddsddt(3,2)=ddsddt(3,1) c sfd = stress(2)*drdisp(2) + stress(3)*drdisp(3) c heatGen = half*sfd flux(1) = half*heatGen/dtime flux(2) = flux(1) c ddfddr(1,1) = zero ddfddr(2,1) = zero ddfddr(1,2) = fourth*stress(2)/dtime ddfddr(2,2) = ddfddr(1,2) ddfddr(1,3) = fourth*stress(3)/dtime ddfddr(2,3) = ddfddr(1,3) c coeff = eighth*props(3)/(xk*xk*dtime*dtime) ddfddt(1,1) = coeff*(drdisp(2)**2 + drdisp(3)**2) ddfddt(1,2) = ddfddt(1,1) ddfddt(2,1) = ddfddt(1,1) ddfddt(2,2) = ddfddt(1,1) c else c lOpenClose = 0 sfd = zero c end if c return end