fix wall/gran contact force handling

richti83's picture
Submitted by richti83 on Tue, 02/03/2015 - 15:44

A special question to the developer:
let's assume a single ball lies on a plane surface exactly at the corner of 6 triangles.
The expected force contribution for a single triangle would be 1/6*f_pw (m*g=sum(f_triangle)).
Now for comprehensible reasions Liggghts only handles the first contact and than checks for all other triangles if there was an allready handled contact with a coplanar neighbour-triangle. This leads to correct wall-ball behaviour and is OK.

But unfortunately for fix mesh/surface/stress the function "add particle contribution" is only called once.
Now I need a position dependant stress output, but it is accidentally which triangle get the full force.

I attached two screenshots, the 2nd one is the result I expect, but in my innocent try I disabled the continue statement in fix_wall_gran and so my particle gets six-times the wall force which leads to a wrong overlap.

The question is how to fix this ? I thought about a map to store all parti/wall contacts with it's wallforces and devide it for every pair by the number of equal particle ids. But I guess this will be memory and cpu intensive.

Anyone a better idea ?

Thanks,
Christian.

AttachmentSize
Image icon nok.png45.63 KB
Image icon expected.png42.94 KB
Plain text icon in.txt2.22 KB
ckloss's picture

ckloss | Mon, 02/09/2015 - 12:57

Hi Christian,

the behavior you describe is applied for efficiency reasons. Distributing the p-w contribution across possible triangles would be possible, but if you want to do it accurately, it is extremely costly

>>The question is how to fix this ?
To change this behaviour would be quite hard. Lots of the internal workings of LIGGGHTS is built upon that assumption

Best wishes
Christoph

richti83's picture

richti83 | Tue, 02/10/2015 - 15:51

Hi Christoph,
I know this is a very special case, but I think I've found a solution. I do not want to change the contact behavior, only the way how forces are stored in fix/mesh/surface/stress.
Because it is not possible to embed images here in the forum I've written up my thoughts and some code snippets in my blog:
http://techblog.richtisoft.de/?p=52

What do you think about the pressure formulation ? Because now it depends on how much triangles are involved in the contact. In force formulation I would say 0=m*g*SUM(F_tri) which is true.
But now for surface contacts the triangle-pressure is much higher than for edge and corner contacts because the interating area is increased ...

Best,
Christian.

I'm not an associate of DCS GmbH and not a core developer of LIGGGHTS®
ResearchGate | Contact

ckloss's picture

ckloss | Tue, 03/10/2015 - 11:43

Hi Christian,

thanks for posting this!
I did not look at each line in detail but as far as I can judge the idea is perfectly valid.
For edge contacts there would also be the possibility to directly distribute it to the face neighbors (not node neighbors) directly

Cheers
Christoph