Problems with Hertz Mindlin and momentum conservation

Dear lammps users,

I am testing the hertz-mindlin interaction in some examples of single particle collisions . I have found that when i don't use the tangential interaction (choosing 0 for the tangential coefficients) the angular momentum is conserved while when i use tangential interaction it changes after the collision.

In this script the collision occurs in the x y plane and what i see is a non conservation of the z component of the angular momentum (taking account also the rotational contribute of the finite size sphere particle via Konig theorem).

commenting/uncommenting the pair style commands you can switch from the tangential case to the non tangential one.

Is this a limit in precision of lammps calculation or am i doing something wrong?

Thank you in advance!


Dan can perhaps comment on this, CCd.



I haven’t looked at this in detail, but wouldn’t you expect the total angular momentum to change when you have friction vs no friction? For gran/hertz/history, the friction model truncates the tangential force to be less than mu*F_normal, so wouldn’t that have an effectively dissipative effect?

There is also a known ‘bug’ with the current hertz implementation, where rotation of the accumulated tangential displacement into the frame of reference of the contacting particles is not quite correct. That may be at play here, and there’s an updated granular pair style that will be released soon that will hopefully fix that issue.

Let me know, I’d be interested in tracking this down.


Thank you Dan, Thank you Steve!

Even in the presence of fricton the newton's third law implies that the total angular momentum has to remain the same if there are not external forces. Despite the truncation, the forces between the two particles
are always opposite in sign and direction so the total torque on the system
is zero.

I think that the bug that you have mentioned would be in play here...
Another sign of this is that the error seems to be independent from the dt of the integration.

Do you know a little bit more about this bug? How could i be advised
when the updated pair style is ready?


Hi Andrea,

I think I see your point. I suspect this is related to an issue with the current LAMMPS implementation of the Mindlin model. There’s some discussion of this in Thornton et al, “An investigation of the comparative behaviour of alternative contact force models during inelastic collisions”, Powder Tech. 2013. See their equations 18a and b, and discussion that follows. In LAMMPS, the tangential stiffness is not being re-scaled as per equation 18b of that paper. I will think about how to add this rescaling to the new version of the granular pair styles, and your script will be a great test case for that, so thank you. If you’re interested, there’s currently a pull request on the LAMMPS github page here:

Of course, it may change between its current state and when it gets released.

That’s separate from the issue with the rotation of the accumulated displacement that I mentioned previously. That’s (mostly) fixed in the new granular pair style, but I’m not sure how much it affects your case, it may be something to check as well.

I did check that forces are equal and opposite throughout the contact, and torques and angular momenta are equal, both to very high precision, so it’s not some obvious error like that.

I’ll keep in touch if I make any progress on this, let me know if you find other odd behavior that would be a good test case for an updated granular pair style.