Hello, I am working on simulating the segmented chip formation of Ti-6Al-4V. I am trying to use the user subroutine VUHARD to define hardening part. I have set the PLASTIC part in material definition to USER and defined two parameters as hardening properties. I have set the path of the subroutine in the job defintion part too.

I am running the subroutine from command line also and checking the values of different variables. Program is running completely without any error but showing the Mises Stress values to be completely zero. That is the main problem i am encountering. And one more surprising thing I have seen is plastic strain-rate "eqpsRate" is coming to be zero which is supposed to be very high. I am just trying to model JOHNSON-COOK model via subroutine. Can any one please suggest where the mistake can be ? I suppose it's a gross mistake i am making and is it also possible that ABAQUS itself is not giving correct input to the subroutine ??

JOHNSON-COOK model looks like:

stress = (PA + PB*Ep**pn)*(1 - ((T - Tref)/(Tm - Tref))**pm)*(1 + PC*Log(Epdot/Epdot0))

My subroutine is following:

C SUBROUTINE FOR JC HARDENING MODEL

subroutine vuhard(

C Read only -

1 nblock, jElem, kIntPt, kLayer, kSecPt, lAnneal, stepTime,

2 totalTime, dt, cmname, nstatev, nfieldv, nprops,props, tempOld,

3 tempNew, fieldOld, fieldNew, stateOld, eqps, eqpsRate

C

C Write only -

4 yield, dyieldDtemp, dyieldDeqps, stateNew )

C

include 'vaba_param.inc'

C

dimension props(nprops), tempOld(nblock), tempNew(nblock),

1 fieldOld(nblock,nfieldv), fieldNew(nblock,nfieldv),

2 stateOld(nblock,nstatev), eqps(nblock), eqpsRate(nblock),

3 yield(nblock), dyieldDtemp(nblock), dyieldDeqps(nblock,2),

4 stateNew(nblock,nstatev), jElem(nblock)

C

C dyieldDeqps(i,1) = derivative of yield stress w.r.t. the plastic equivalent strain

C dyieldDeqps(i,2) = derivative of yield stress w.r.t. the plastic equivalent strain-rate

C

double precision :: Ep, Epdot,T, pn, pm

C

integer i

C

character*80 cmname

C

real, parameter :: PA= 782.7d0, PB= 498.4d0, PC= 0.028d0,

1 Tm= 1600.d0, Tref= 20.d0, Epdot0=0.001d0, small = 0.00000001d0

C

pn = props(1)

pm = props(2)

C

C PA , PB are in N/mm^2 and Epdot0 is in 1/msec

C Tm , Tref are in °C

C PC, PD, pn, pm are dimensionless constant

C

do 100 i = 1, nblock

C

Ep = small + eqps(i)

Epdot = small + eqpsRate(i)

T = tempNew(i)

C

yield(i) = (PA + Ep**pn*PB)*(1 - ((T - Tref)/

1 (Tm - Tref))**pm)*(1 + PC*Log(Epdot/Epdot0))

C

dyieldDeqps(i,1) = Ep**(-1 + pn)*PB*pn*(1 - ((T - Tref)/

1 (Tm - Tref))**pm)*(1 + PC*Log(Epdot/Epdot0))

C

dyieldDeqps(i,2) = ((PA +Ep**pn*PB)*PC*

1 (1 -((T - Tref)/(Tm - Tref))**pm))/Epdot

C

dyieldDtemp(i) = ((PA + Ep**pn*PB)*

1 (1 + PC*Log(Epdot/Epdot0)))/(Tref-Tm)

C

100 continue

C

return

end

I am running the subroutine from command line also and checking the values of different variables. Program is running completely without any error but showing the Mises Stress values to be completely zero. That is the main problem i am encountering. And one more surprising thing I have seen is plastic strain-rate "eqpsRate" is coming to be zero which is supposed to be very high. I am just trying to model JOHNSON-COOK model via subroutine. Can any one please suggest where the mistake can be ? I suppose it's a gross mistake i am making and is it also possible that ABAQUS itself is not giving correct input to the subroutine ??

JOHNSON-COOK model looks like:

stress = (PA + PB*Ep**pn)*(1 - ((T - Tref)/(Tm - Tref))**pm)*(1 + PC*Log(Epdot/Epdot0))

My subroutine is following:

C SUBROUTINE FOR JC HARDENING MODEL

subroutine vuhard(

C Read only -

1 nblock, jElem, kIntPt, kLayer, kSecPt, lAnneal, stepTime,

2 totalTime, dt, cmname, nstatev, nfieldv, nprops,props, tempOld,

3 tempNew, fieldOld, fieldNew, stateOld, eqps, eqpsRate

C

C Write only -

4 yield, dyieldDtemp, dyieldDeqps, stateNew )

C

include 'vaba_param.inc'

C

dimension props(nprops), tempOld(nblock), tempNew(nblock),

1 fieldOld(nblock,nfieldv), fieldNew(nblock,nfieldv),

2 stateOld(nblock,nstatev), eqps(nblock), eqpsRate(nblock),

3 yield(nblock), dyieldDtemp(nblock), dyieldDeqps(nblock,2),

4 stateNew(nblock,nstatev), jElem(nblock)

C

C dyieldDeqps(i,1) = derivative of yield stress w.r.t. the plastic equivalent strain

C dyieldDeqps(i,2) = derivative of yield stress w.r.t. the plastic equivalent strain-rate

C

double precision :: Ep, Epdot,T, pn, pm

C

integer i

C

character*80 cmname

C

real, parameter :: PA= 782.7d0, PB= 498.4d0, PC= 0.028d0,

1 Tm= 1600.d0, Tref= 20.d0, Epdot0=0.001d0, small = 0.00000001d0

C

pn = props(1)

pm = props(2)

C

C PA , PB are in N/mm^2 and Epdot0 is in 1/msec

C Tm , Tref are in °C

C PC, PD, pn, pm are dimensionless constant

C

do 100 i = 1, nblock

C

Ep = small + eqps(i)

Epdot = small + eqpsRate(i)

T = tempNew(i)

C

yield(i) = (PA + Ep**pn*PB)*(1 - ((T - Tref)/

1 (Tm - Tref))**pm)*(1 + PC*Log(Epdot/Epdot0))

C

dyieldDeqps(i,1) = Ep**(-1 + pn)*PB*pn*(1 - ((T - Tref)/

1 (Tm - Tref))**pm)*(1 + PC*Log(Epdot/Epdot0))

C

dyieldDeqps(i,2) = ((PA +Ep**pn*PB)*PC*

1 (1 -((T - Tref)/(Tm - Tref))**pm))/Epdot

C

dyieldDtemp(i) = ((PA + Ep**pn*PB)*

1 (1 + PC*Log(Epdot/Epdot0)))/(Tref-Tm)

C

100 continue

C

return

end

## Comment