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.
Attachment | Size |
---|---|
![]() | 45.63 KB |
![]() | 42.94 KB |
![]() | 2.22 KB |
ckloss | Mon, 02/09/2015 - 12:57
Hi Christian,
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 | Tue, 02/10/2015 - 15:51
First attempt
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.
ckloss | Tue, 03/10/2015 - 11:43
Hi Christian,
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