User login


You are here

Anybody can help me in Drucker-Prager modeling?

Hi, there

I am writting a UMAT modeling Drucker-Prager constitutive model (non-associated flow rule)  in Abaqus. When I using one element to test the code (two load steps, the first is isotropic compression, the second is loading by giving one of the element edges a certain displacement) , it looks well when the element is loaded by compression (a negative displacement, so that negative stresses according to the convention in Abaqus). However, if the element is under extension, I received a warning message of "NEGATIVE EIGENVALUE", then the force or displacement cannot converge finally.

 I am wondering where is a way to solve the problem. Anybody can give me a hand?

 Best regards,




How did you define the parameters inside you model? And what is the type of materials you want to simulate?

In my understanding, inDrucker-Prager model, there are two parameters. One is a value related to the cohension of your material, and the other is the so called friction angle. The first one depends on the maximum von Mises stress, while the hydrostatic compression is zero.

If the first value is very low, that means that your material can not bear larger tensile stress. This is reasonable for granular materials.

Now, does your loading path hit on this yield/failure surface?


Thanks for your kind concern fisrt.

Actually, for conventional D-P Model, generally there are five parameters, two elastic parameters, E and v, internal frictional angle, dilation angle and conhension.

 It is true that friction materials cannot bearing large tensional stress if the conhension is very low. The material fails when the tension develops (when the stress parth touch the downside yield surface). My problem is that if the yield is due to compression (upside yeild surface), the computation can continue even to very large strains. However, if the yield is due to extension, the stiffness matrix has one negative eigenvalue, which causes convergence problem finially in some conditions. I searched so hard but cannot find any useful guidence to solve it.

 for associated-flow rule, there is no problem, of course.

 Any suggestion?

 best regards


Hi, Willness

Usually, UMAT needs two parts of information. The first, how to update your stress according to a given strain increment tensor.  If the plasticity is active, the stress increment can be written as  dS = C(dE-dλ ß), as in classic plasticity book.

But still the second part is missing, Jacobian matrix.

I wrote one UMAT routine about the modified Drucker-Prager-Cap model two years ago, since the one was implemented in ABAQUS is not satisfactory at the region of high temperature creep. The first time I just gave the elastic stiffness matrix as the final Jacobian matrix. Of course as you know, it did not work.So I have to derive the Jacobian matrix, and write it into my UMAT routine. This result does not depend on whether it is an associate flow or not, assuming that the model obays a general non-associate flow law.

Do you have any information on how do you write the Jacobian into your  routine?

BTW, you can also check this:

Simo, J. C. and T. J. R. Hughes (1997). Computational Inelasticity, Springer.


Hi, yixiang

 Yes, there are two parts in one UMAT for Abaqus, one is update of the stresses, and the ohter is update of the Jacobian matrix.

 I think there should be no problem in my stress update. Yesterday, I also douted the validity of update of Jacobian Matrix. I just followed the back-euler intergration procedure in the book "Nonlinear finite element analysis of solids and structures" (by Crisfield). Yesterday I also tried to use consistent stiffness matrix. But the problem is still there. I think I have to read the book you suggested and check step by step by hand calculation of my code.

 By the way, do you mean that Jacobian Matrix has nothing to do with the flow rule? As I know, for non-associate flow rule, Jacobian Matrix is nonsymmetric and it is possible to cause problem in convengence (maybe call it loss of ellipticity of boundary condition problem?). For associated flow rule, the matrix is symmetric, which is no problem for my code. Can you tell me that in your code, for non-associated flow rule, whether you treat it particularly or not?

 Best regards,



I found that If the elastic DDSDDE is used, for simple loading on one element, the analysis can terminate. The results looks resonable. For complex loading(say simulating plate load test), it doesn't work, however.

 I am afraid, there are problems in the the updating of DDSDDE in my code. Hohhhhh..

I would like to use Abaqus to model the viscoelastic material  behaviour of soft soil .and I am glad  to hear   that you did much work on the abaqus umat of D-P model.

Can you  help me and post me the subroutine ?

 my mail is

thanks very much

best regards



hi there;

I have some experience with DP-Cap plasticity with abaqus. My problem was to define a yield criterion which depends on time, explicitly, sort of iterative yield criterion. Any way, I was facing almost the same problem and 90% of the time checking the boundary conditions or redefining them was solving all the problem.


Ismail Cem 

Thanks for your response, icturtuk

Yes, boundary condition is a possible source to cause Negative Eigenvalue in the analysis. But I am afraid, in my verification, boundary condition is not a problem, because I used build-in Mohr-coulomb model, there is no problem. And the verification is very simple on one element. The example is actually from Abaqus manual, with changed material constitutive model.

BTW, did you use non-associated flow rule? I am afraid that's the reason causing Negative Eigenvalue. Anybody can suggest some papers or books on this topic?

 thanks a lot!



did you check the stress state where the problem ocurred?

If it happened at the tip of the cone, you may have to reconsider your non-associated flow rule

Subscribe to Comments for "Anybody can help me in Drucker-Prager modeling?"

Recent comments

More comments


Subscribe to Syndicate