Skip to main content

ABAQUS VUHARD subroutine problem

Submitted by ramaanb on

Hello



I am working on the simulation of ring rolling. I have written the subroutine for the plasticity part in the subroutine VUHARD and have set the PLASTIC part in material definition to USER.

I dont have HARDENING PROPERTIES so i have set it BLANK. i have set the path of the subroutine in the job defintion part too. But abaqus crashes whenever i try to do DATA CHECK

It says ABAQUS KERNEL EXITED WITH AN ERROR.I dont know why this problem arises?. I am stuck.



The curve i want to define is yieldstress=K*plasticstrain^m*plasticstrainrate^n



I have defined the yield,Dyieldeqps(k,1)Dyieldeps(k,2) as abaqus has told.

Abaqus has told to define Statenew too.I dont know how to define it.

This is my subroutine :



c-----subroutine for plasticity

subroutine vuhard(

C Read only -

* nblock, 

* jElem, kIntPt, kLayer, kSecPt, 

* lAnneal, stepTime, totalTime, dt, cmname,

* nstatev, nfieldv, nprops, 

* props, tempOld, tempNew, fieldOld, fieldNew,

* stateOld,

* eqps, eqpsRate,

C Write only -

* 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)



parameter( one=1.0d0,small=1.0d-8)

C

character*80 cmname



double precision a,b,c



k=100.0d0

m=0.30d0

n=0.15d0

C

C

do km = 1,nblock



plstrain=eqps(km)

plstrnrt=eqpsRate(km)







yield(km)=k*(plstrain**m)*(plstrnrt**n)

dyieldDeqps(km,1)=k*m*(plstrain**(m-one))*(plstrnrt**n)

dyieldDeqps(km,2)=k*n*(plstrain**m)*(plstrnrt**(n-one))



end do

C

return 

end

 

I would be grateful if someone could help me figure out the error. 

Hello,

i have the same or similar problem ramaanb posted before. I want abaqus to calculate the yield himself using a formula. I have just started working on abaqus subroutines. it would be great if someone could tell me, whether iam completely wrong or I have made a mistake. I dont really get a error but abaqus stops before startng the simulation.

Iam using Abaqus 10. If you need more information just tell me.

My Subrouine:

     subroutine vuhard(

     * nblock,

     * jElem, kIntPt, kLayer, kSecPt,

     * lAnneal, stepTime, totalTime, dt, cmname,

     * nstatev, nfieldv, nprops,

     * props, tempOld, tempNew, fieldOld, fieldNew,

     * stateOld,

     * eqps, eqpsRate,



     * 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

      character*80 cmname

      Double Precision K, m1, m2, m3, m4

      Double Precision plstrain, plstrnrt, temp

C

      parameter( one=1.0d0, two=2.0d0)

     

      K=789.49487667d0

      m1=0.0108123d0

      m2=-0.00051014d0

      m3=0.14494796d0

      m4=-0.00577363d0   

C

      do km = 1,nblock

C

      if (plstrain .LE. 0.0001D0) then

          plstrain = 0.0001D0

      endif



      if (plstrnrt .LE. 0.00001D0) then

          plstrnrt = 0.00001D0

      endif

C

      plstrain = eqps(km)

C     Plastische Dehnrate

      plstrnrt = eqpsRate(km)             

      temp = tempNew(km)



C

      yield(km)= (K * (plstrnrt**m1) * (exp**(temp*m2))

     1 * (plstrain**m3) * (exp**(m4/plstrain)))

C

      dyieldDtemp(km) = (K * (plstrnrt**m1) * m2*(exp**temp*m2)

     1 * (plstrain**m3) * (exp**(m4/plstrain)))

C

      dyieldDeqps(km,1) = (K * (plstrnrt**m1) * (plstrain**(m3-two))

     1 * (m3 * plstrain - m4) * (exp**(m2*temp+m4/plstrain)))

C

      dyieldDeqps(km,2) = (m1 * K * (plstrnrt**(m1-one))

     1 * (plstrain**m3) * (exp**(m2*temp + m4/plstrain)))

C

      end do

C

      return

      END

I can compile the *.for file. This shouldnt be the problem.

Mon, 11/05/2012 - 12:55 Permalink

you both need to write to a file what you want as output in your vuhard.

 pay attaention that what you can get in aany step by writing to filr.

actully I have written Vuhard for Hollomon, swift and Johnson-cook and it works well. but the way you have written is little bit complicated. 

Fri, 06/14/2013 - 12:23 Permalink

Hello

I am new with abaqus subroutines. I found the following code in <Writing User Subroutines with Abaqus> about the isotropic hardening in plasticity Vumat. But I am very confused with the vuhard part. 
a)how does the short subroutines work
b) what is the "table" and "nvalue" and how does this two variables get their values.

Could you please help me with these questions! Thanks a lot for your kind-hearted.

the subroutines is as follows:

      subroutine vuhard(syield, hard, eqplas, table, nvalue)

      include   'vaba_param.inc'

      dimension table(2, nvalue)

      parameter(zero=0.d0)

      syield=table(1, nvalue)

      hard=zero

      if(nvalue.gt.1) then

        do k1=1, nvalue-1

           eqpl1=table(2,k1+1)

           if(eqplas.lt.eqpl1) then

             eqpl0=table(2, k1)

             deqpl=eqpl1-eqpl0

             syiel0=table(1, k1)

             syiel1=table(1, k1+1)

             dsyiel=syiel1-syiel0

             hard=dsyiel/deqpl

             syield=syiel0+(eqplas-eqpl0)*hard

             goto 10

           end if

         end do

 10     continue

      end if

      return

      end

 

 

Mon, 11/24/2014 - 08:41 Permalink