You are on page 1of 7

Abaqus Users - Johnson Cook VUMAT

http://abaqus-users.1086179.n5.nabble.com/Johnson-Cook-VUMAT-td106...

Abaqus Users

Login Register

Johnson Cook VUMAT


Classic List Threaded 6 messages Options

usamaumer

Mar 01, 2007; 8:45pm Johnson Cook VUMAT Hi all,

Reply | Threaded | More

11 posts

I am trying to write a VUMAT for Johnson cook criteria.With the same Johnson cook coefficients the model works fine in Explicit but through VUMAT the analysis terminates in the very begining due to excessive distrotions of some elements. I am unable to find, where I have done the mistake in the coding. I am pasting here my VUMAT subroutine.I shall be thankful If anybody can help Regards umer C C User subroutine VUMAT subroutine vumat ( C Read only * nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal, * stepTime, totalTime, dt, cmname, coordMp, charLength, * props, density, strainInc, relSpinInc, * tempOld, stretchOld, defgradOld, fieldOld, * stressOld, stateOld, enerInternOld, enerInelasOld, * tempNew, stretchNew, defgradNew, fieldNew, C Write only * stressNew, stateNew, enerInternNew, enerInelasNew ) C include 'vaba_param.inc' C dimension coordMp(nblock,*), charLength(nblock), props(nprops), 1 density(nblock), strainInc(nblock,ndir+nshr), 2 relSpinInc(nblock,nshr), tempOld(nblock), 3 stretchOld(nblock,ndir+nshr), 4 defgradOld(nblock,ndir+nshr+nshr), 5 fieldOld(nblock,nfieldv), stressOld(nblock,ndir+nshr), 6 stateOld(nblock,nstatev), enerInternOld(nblock), 7 enerInelasOld(nblock), tempNew(nblock), 8 stretchNew(nblock,ndir+nshr), 9 defgradNew(nblock,ndir+nshr+nshr), 1 fieldNew(nblock,nfieldv), 2 stressNew(nblock,ndir+nshr), stateNew(nblock,nstatev), 3 enerInternNew(nblock), enerInelasNew(nblock) C character*80 cmname parameter ( zero = 0.d0, one = 1.d0, two = 2.d0, * third = 1.d0 / 3.d0, half = 0.5d0, op5 = 1.5d0 ) C C For plane strain, axisymmetric, and 3D cases using C the J2 Mises Plasticity with linear hardening. C The state variable is stored as: C STATE(*,1) = equivalent plastic strain C STATE(*,2) = plastic strain rate C C C User needs to input

1 of 7

1/16/2014 11:17 AM

Abaqus Users - Johnson Cook VUMAT

http://abaqus-users.1086179.n5.nabble.com/Johnson-Cook-VUMAT-td106...

C C C C

props(1) props(2)

Young's modulus Poisson's ratio

e = props(1) xnu = props(2) twomu = e / ( one + xnu ) alamda = xnu * twomu / ( one - two * xnu ) thremu = op5 * twomu * if ( stepTime .eq. zero ) then do k = 1, nblock trace = strainInc(k,1) + strainInc(k,2) + strainInc(k,3) stressNew(k,1) = stressOld(k,1) * + twomu * strainInc(k,1) + alamda * trace stressNew(k,2) = stressOld(k,2) * + twomu * strainInc(k,2) + alamda * trace stressNew(k,3) = stressOld(k,3) * + twomu * strainInc(k,3) + alamda * trace stressNew(k,4)=stressOld(k,4) + twomu * strainInc(k,4) if ( nshr .gt. 1 ) then stressNew(k,5)=stressOld(k,5) + twomu * strainInc(k,5) stressNew(k,6)=stressOld(k,6) + twomu * strainInc(k,6) end if end do else do k = 1, nblock

* Finding yield value * Johnson cook parameters..A=674.8,B=239.2, C=0.027, n=0.28, m=2.7, Tmelt=1480,Troom=20

if (stateOld(k,2).eq.zero) then yield=674.8 else A=1+0.027*log(stateOld(k,2)) B=1-((tempOld(k)-20)*0.0006849)**2.7 yield=(674.8+239.2* stateOld(k,1)**0.28)* A*B end if

trace = strainInc(k,1) + strainInc(k,2) + strainInc(k,3) s11 = stressOld(k,1) + twomu * strainInc(k,1) + alamda * trace s22 = stressOld(k,2) + twomu * strainInc(k,2) + alamda * trace s33 = stressOld(k,3) + twomu * strainInc(k,3) + alamda * trace s12 = stressOld(k,4) + twomu * strainInc(k,4) if ( nshr .gt. 1 ) then s13 = stressOld(k,5) + twomu * strainInc(k,5) s23 = stressOld(k,6) + twomu * strainInc(k,6) end if * smean = third * ( s11 + s22 + s33 ) s11 = s11 - smean s22 = s22 - smean s33 = s33 - smean if ( nshr .eq. 1 ) then vmises = sqrt( op5*

2 of 7

1/16/2014 11:17 AM

Abaqus Users - Johnson Cook VUMAT

http://abaqus-users.1086179.n5.nabble.com/Johnson-Cook-VUMAT-td106...

(s11*s11+s22*s22+s33*s33+two*s12*s12) ) else vmises = sqrt( op5 * ( s11 * s11 + s22 * s22 + s33 * s33 + * two * s12 * s12 + two * s13 * s13 + two * s23 * s23 ) ) end if * sigdif = vmises - yield facyld = zero if ( sigdif .gt. zero ) facyld = one deqps = facyld * sigdif / thremu * * Update the state variable stateNew(k,1) = stateOld(k,1) + deqps stateNew(k,2) = deqps/dt stateNew(k,3)=yield

* * Update the stress factor = yield / ( yield + thremu * deqps ) stressNew(k,1) = s11 * factor + smean stressNew(k,2) = s22 * factor + smean stressNew(k,3) = s33 * factor + smean stressNew(k,4) = s12 * factor if ( nshr .gt. 1 ) then stressNew(k,5) = s13 * factor stressNew(k,6) = s23 * factor end if * * Update the specific internal energy if ( nshr .eq. 1 ) then stressPower = half * ( * ( stressOld(k,1) + stressNew(k,1) ) * strainInc(k,1) + * ( stressOld(k,2) + stressNew(k,2) ) * strainInc(k,2) + * ( stressOld(k,3) + stressNew(k,3) ) * strainInc(k,3) ) + * ( stressOld(k,4) + stressNew(k,4) ) * strainInc (k,4) else stressPower = half * ( * ( stressOld(k,1) + stressNew(k,1) ) * strainInc(k,1) + * ( stressOld(k,2) + stressNew(k,2) ) * strainInc(k,2) + * ( stressOld(k,3) + stressNew(k,3) ) * strainInc(k,3) ) + * ( stressOld(k,4) + stressNew(k,4) ) * strainInc(k,4) + * ( stressOld(k,5) + stressNew(k,5) ) * strainInc(k,5) + * ( stressOld(k,6) + stressNew(k,6) ) * strainInc (k,6) end if enerInternNew(k) = enerInternOld(k) + stressPower / density (k) * * Update the dissipated inelastic specific energy plasticWorkInc = yield * deqps enerInelasNew(k) = enerInelasOld(k) * + plasticWorkInc / density(k) end do end if *

3 of 7

1/16/2014 11:17 AM

Abaqus Users - Johnson Cook VUMAT

http://abaqus-users.1086179.n5.nabble.com/Johnson-Cook-VUMAT-td106...

return end

Remove Ads

Dean Bonorchis-2 Mar 02, 2007; 12:03pm Re: Johnson Cook VUMAT

Reply | Threaded | More

When you calculate: A=1+0.027*log(stateOld(k,2)) you must not use stateOld(k,2) inside the log, you must use stateOld(k,2)/ref_StrainRate so that the value inside the log is never less than one.
3 posts

Also when you do this: if (stateOld(k,2).eq.zero) then yield=674.8 rather have if (stateOld(k,2).eq.zero) then yield=stateOld(k,3) because you may have had plastic straining previously and your yield surface would have changed. Further: it is difficult to get this simple explicit method of plastic strain calculation (deqps = facyld * sigdif / thremu) to work because of strain rate effects. Rather use one of the iteration (like ABAQUS) or linearisation methods (like AUTODYN). Dean

usamaumer wrote: > > Hi all, > > I am trying to write a VUMAT for Johnson cook criteria.With the same > Johnson cook coefficients the model works fine in Explicit but > through VUMAT the analysis terminates in the very begining due to > excessive distrotions of some elements. I am unable to find, where I > have done the mistake in the coding. I am pasting here my VUMAT > subroutine.I shall be thankful If anybody can help ... [show rest of quote]

usamaumer

Mar 02, 2007; 10:44pm Re: Johnson Cook VUMAT Hi dean Thanks for reply.

Reply | Threaded | More

11 posts

I have ref_strainrate=1...so it will not effect the equation. I have also tried... yield=stateOld(k,3)...but still the problem persists. Could you please more elaborate on how to calculate the incremental plastic strain (deqps) for this problem Regards umer

4 of 7

1/16/2014 11:17 AM

Abaqus Users - Johnson Cook VUMAT

http://abaqus-users.1086179.n5.nabble.com/Johnson-Cook-VUMAT-td106...

--- In [hidden email], Dean Bonorchis <bnrdea001@...> wrote: > > When you calculate: > A=1+0.027*log(stateOld(k,2)) > you must not use stateOld(k,2) inside the log, you must use > stateOld(k,2)/ref_StrainRate so that the value inside the log is never > less than one. > > Also when you do this: > if (stateOld(k,2).eq.zero) then > yield=674.8 > rather have > if (stateOld(k,2).eq.zero) then > yield=stateOld(k,3) > because you may have had plastic straining previously and your yield > surface would have changed. > > Further: it is difficult to get this simple explicit method of plastic > strain calculation (deqps = facyld * sigdif / thremu) to work because > of strain rate effects. Rather use one of the iteration (like ABAQUS) > or linearisation methods (like AUTODYN). > > Dean > > > usamaumer wrote: >> > > Hi all, >> ... [show rest of quote] same > > Johnson cook coefficients the model works fine in Explicit but > > through VUMAT the analysis terminates in the very begining due to > > excessive distrotions of some elements. I am unable to find, where I > > have done the mistake in the coding. I am pasting here my VUMAT > > subroutine.I shall be thankful If anybody can help >> > > Regards >> > > umer >> >>C > > C User subroutine VUMAT ... [show rest of quote]

Dean Bonorchis-2 Mar 05, 2007; 10:35am Re: Re: Johnson Cook VUMAT

Reply | Threaded | More

3 posts

Hi Umer, Even if you have reference strain rate = 1/s you must still have a an IF statement to prevent the value inside the log from being less than one. It will be less than one whenever the strain rate somewhere in your model is less than one. If it is less than one then set the log term to zero. There are modified JC models if you want to avoid this eg.

5 of 7

1/16/2014 11:17 AM

Abaqus Users - Johnson Cook VUMAT

http://abaqus-users.1086179.n5.nabble.com/Johnson-Cook-VUMAT-td106...

(1+ep_rate/ep_rate_ref)^C. You can search the technical reports on the AUTODYN website to see how they do the linearised form which requires no iteration but includes strain rate effects when calculating deqps. Search the technical library (www.autodyn.com) for Johnson-Cook and from the papers select: "Improved numerical integration of elastic-viscoplastic models with hardening and rate-dependence in AUTODYN"

Dean

usamaumer wrote: > > Hi dean > > Thanks for reply. > > I have ref_strainrate=1...so it will not effect the equation. I have > also tried... yield=stateOld(k,3)...but still the problem persists. > > Could you please more elaborate on how to calculate the incremental ... [show rest of quote]

munozcim

Aug 28, 2008; 4:20pm Re: Johnson Cook VUMAT


In reply to this post by usamaumer

Reply | Threaded | More

Dear usamaumer, There is an article describing how to implement Johnson-cook hardening law into Abaqus. If you want, I could send it to you.
1 post

Regards, Raul

usamaumer wrote Hi all,

I am trying to write a VUMAT for Johnson cook criteria.With the same Johnson cook coefficients the model works fine in Explicit but through VUMAT the analysis terminates in the very begining due to excessive distrotions of some elements. I am unable to find, where I have done the mistake in the coding. I am pasting here my VUMAT subroutine.I shall be thankful If anybody can help ... [show rest of quote]

amzir

Nov 09, 2013; 11:33am Re: Johnson Cook VUMAT


This post has NOT been accepted by the mailing list yet.

Reply | Threaded | More

Hi dears Would you please help me to find a vumat code for johnson cook and j2 plasticity? thanks a lot

6 of 7

1/16/2014 11:17 AM

Abaqus Users - Johnson Cook VUMAT

http://abaqus-users.1086179.n5.nabble.com/Johnson-Cook-VUMAT-td106...

5 posts

Remove Ads

Return to Abaqus Users | 381 views

Powered by Nabble

Edit this page

7 of 7

1/16/2014 11:17 AM

You might also like