# change the friction angle with the plastic strain in Abaqus following mohr coulomb model.

AttachmentSize
24.28 KB

Hi,
I want to change the friction angle with the plastic strain in Abaqus following mohr coulomb model.
Vermeer and de Borst (1984) proposed an equation for frictional hardening and I want to use that. In their equation, the shear hardening parameter obtains from below equation(first picture) and then the friction angle changes with the shear hardening parameter.
So I have to use the usdfld code in my model.
I code that to calculate the shear hardening parameter, and then I put it equal to FIELD1. I attached the usdfld code to this post.
can anybody tell me what is wrong in my code? how can save PE11 and PE22 in pervious increment and then call PE11 and PE22 in current increment and then substract them to calculate Delta PE11(PE11(Previous increment)-PE11(current increment) and Delta PE22? How use statev?
Do everybody have Vermeer equation code in Fortran for using in Abaqus?

my code is:

subroutine usdfld(field,statev,pnewdt,direct,t,celent,

1 time,dtime,cmname,orname,nfield,nstatv,noel,npt,layer,

2 kspt,kstep,kinc,ndi,nshr,coord,jmac,jmatyp,matlayo,

3 laccfla)

c

include 'aba_param.inc'

c

character*80 cmname,orname

character*3  flgray(15)

dimension field(nfield),statev(nstatv),direct(3,3),

1 t(3,3),time(2)

dimension array(15),jarray(15),jmac(*),jmatyp(*),

1 coord(*)

c     --------------------------------------------------------------------------

c     USER CODE START

c     it does only for specific material than mention below

if (cmname .eq. 'MATERIAL-1') then

c       get plastic strain (value PE) and save it into 'array'

call getvrm('PE',array,jarray,flgray,jrcd,jmac,jmatyp,

&              matlayo,laccfla)

P1 = abs(array(1))

P2 = abs(array(2))

statev(1)=P1

statev(2)=P2

call getvrm('PE',array,jarray,flgray,jrcd,jmac,jmatyp,

&              matlayo,laccfla)

P3 = abs(array(1))

P4 = abs(array(2))

PS1=ABS(statev(1)-P3)

PS2=ABS(statev(2)-P4)

PM=(1/3)*(PS1+PS2)

PLASTIC= sqrt(0.5*((PS1-PM)**2)+0.5*PM**2+0.5*((PS2-PM)**2))

field(1)= PLASTIC

end if

c     USER CODE END

c     --------------------------------------------------------------------------

return

end