strange facet-sphere behaviour

Bug #850864 reported by Bruno Chareyre
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Yade
Won't Fix
Medium
Unassigned

Bug Description

See https://answers.launchpad.net/yade/+question/171223

Spheres that are exactly on an edge between facets behave strangely. Maybe related to other (closed, but never solved) bugs in sphere-facet.

Revision history for this message
vadim (loginov-vadim-1987ad) wrote :

Not those spheres on the edge but all spheres when in contact with facet. I added some new info to the question

Revision history for this message
Bruno Chareyre (bruno-chareyre) wrote : Re: [Yade-dev] [Bug 850864] Re: strange facet-sphere behaviour

The bug holds for the spheres on the edge. For the other ones (or for
all when there is only one facet), there is no bug. See my reply in the
answer.

Revision history for this message
vadim (loginov-vadim-1987ad) wrote :

Not a bug

Revision history for this message
Anton Gladky (gladky-anton) wrote :

I think it is a bug. The script in the first message of this question [1]
shows, that spheres, which falling directly on the edges of 2 facets are having
higher velocities, than others.

One can guess, that in this very special case the edge-spheres, are interacting with both facets.
It should be fixed, because it is not quite correct.

[1] https://answers.launchpad.net/yade/+question/171223

Changed in yade:
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
Bruno Chareyre (bruno-chareyre) wrote :

I agree Anton. The question is how to fix that?
It needs knowledge of facets connectivity I think, the same kind of problems I got to tackle for chained cylinder. It is not quite well supported by design.

In the cylinder-sphere case, interactions have additional data (e.g. an additional id3) and the connectivity of cylinders is stored in static members of the class ChainedCylinder. (https://blueprints.launchpad.net/yade/+spec/chained-bodies)

Another way would be to define a collection of facet as a unique body to make sure there is only one contact (the problem is there can be multiple contacts on concave shapes...). It would need to assign multiple bboxes to a single body, too.

Can you imagine simpler fix?

Any thought on this question can be usefull since we (in Grenoble) want to implement deformable membranes on this basis one day.

Revision history for this message
Klaus Thoeni (klaus.thoeni) wrote :

Hi guys,

have a look at the attached script. There is for sure a problem when spheres collide with facets. However, the behaviour is very strange and the problem does not appear always. If you have a look at the plot of the script you will see that the problem appears at the fourth collision. Actually I tried to play as well with the damping coefficient and the time step and for some configurations there is no problem (e.g. use dc=0.1).

In addition you can change the parameters in the script and you can see that the behaviour is very strange if the sphere collides with corners as well (e.g. use b=0, change z...).

Well, this is very strange, any comments? And regarding this bug, I think we should change the priority and fix it is asap.

Cheers

Klaus

Revision history for this message
Bruno Chareyre (bruno-chareyre) wrote :

Thanks Klaus,
I think the reason for this behaviour is relatively clear: if the contact is exactly on an edge, numerical noise will decide if there is a contact with one or two facets, and it can change randomly during the impact, hence giving unexpectedly high bouncing.

The problem is it is not an easy thing to fix in the current facet implementation. The only way I can see is to implement chained facets like there are chained cylinders, defining the connectivity of facets with the possibility to track interactions moving from one facet to the other. We can change the priority of the bug but more important is the manpower for such implementation. Any volunteer?

Revision history for this message
Klaus Thoeni (klaus.thoeni) wrote :

Hi Bruno, I might have found a student which can work on it. What do you think? Is it tricky? I didn't have a look at it since last time we talked about it and it seams the bug is still existing. Let me know.

Revision history for this message
Anton Gladky (gladky-anton) wrote :

Dear developers,

I was trying to fix the bug, but I have got a problem, which I cannot solve for the moment.
As you know, problem appears, when the sphere touches (penetrates) on the edge of 2 or
more facets and gets from all of them the forces. Which is not quite correct.

I was trying to implement the following fix. Facets are united in "chains". The chain consists of
the facets, which are in the common case building a "surface". So the sphere can interact at the same
time only with 1 facet of the chain. All other interactions of the sphere with other elements of the
same chain are switching off.

The fix is working relatively good for quasi-static tasks. But when a sphere rolls over
the surface, it "falls" down after the first facet. Because on the edge it should take an additional
force from the "next" facet, which is not happens. That is what we tried to avoid.

I hope you understood, what I mean. If not, let me know, I will try to explain by other words.
It would be interesting to check other DEM-codes, how this problem is solved there (if it is solved).
Also comments and suggestions are welcome.

Thank you.

Anton

Revision history for this message
Bruno Chareyre (bruno-chareyre) wrote :

The only solution I can imagine is to define an additional entity: the edge.
Then, the object can touch facet 1, facet 2, or the edge between them.
In the situation you describe, the orientation of the contact normal would thus change progressively from n1 to n2 (n1/n2 the normals of facet1/facet2) while the sphere roll on the edge. The current normal being defined by the line joining the sphere's center and the edge.

Revision history for this message
Klaus Thoeni (klaus.thoeni) wrote : Re: [Bug 850864] Re: strange facet-sphere behaviour

Hi Anton,

some time ago I had a quick look into that problem as well. Actually I
mentioned the problem to Dion from ESyS-Particle and he told me that they are
solving this problem by distinguishing contacts with vertices, edges and
facets. I think the sequence of checking is important too.

You are familiar with ESys, aren't you? You could ask Dion where exactly the
code for this problem is.

HTH and thanks for looking at this problem!

Klaus

On Tue, 18 Sep 2012 03:41:08 AM you wrote:
> Dear developers,
>
> I was trying to fix the bug, but I have got a problem, which I cannot solve
> for the moment. As you know, problem appears, when the sphere touches
> (penetrates) on the edge of 2 or more facets and gets from all of them the
> forces. Which is not quite correct.
>
> I was trying to implement the following fix. Facets are united in "chains".
> The chain consists of the facets, which are in the common case building a
> "surface". So the sphere can interact at the same time only with 1 facet
> of the chain. All other interactions of the sphere with other elements of
> the same chain are switching off.
>
> The fix is working relatively good for quasi-static tasks. But when a
> sphere rolls over the surface, it "falls" down after the first facet.
> Because on the edge it should take an additional force from the "next"
> facet, which is not happens. That is what we tried to avoid.
>
> I hope you understood, what I mean. If not, let me know, I will try to
> explain by other words. It would be interesting to check other DEM-codes,
> how this problem is solved there (if it is solved). Also comments and
> suggestions are welcome.
>
> Thank you.
>
> Anton

Revision history for this message
Bruno Chareyre (bruno-chareyre) wrote :

That's right. You need not only edges but also vertices.
For the contact formulation, I think there is no big problems. I'm sure PFC manual or other papers are giving the equations.
The implementation in Yade is the more tricky part.

FYI, François Kneib should work on a problem very similar in the coming months. The difference is that the geometry of the surface will modelized by thick facets, cylinders for the edges and spheres for the vertices (minkowsky-type geometry). It only changes the contact formulation. The connectivity and other things are strictly the same.

Revision history for this message
Anton Gladky (gladky-anton) wrote :

Thanks all for opinions!

I do not have enough time/resources to work on the problem
in the nearest time. So I removed my test-code for a while.

The diff can be seen here in commit 193b93 [1].

Thanks,

Anton

[1] https://github.com/yade/trunk/commit/193b93447cd7c957a0cc34c15983f88bf5c19c89

Revision history for this message
Bruno Chareyre (bruno-chareyre) wrote :

Closing, since it will eventually be solved in a brand new set of classes. The existing facets will keep this "feature" as it is inherent to the logic of independant facets.

Changed in yade:
status: Confirmed → Won't Fix
Revision history for this message
Alexander Eulitz [Eugen] (kubeu) wrote :

is there any plan when this new net of classes will be implemented?

Revision history for this message
Jan Stránský (honzik) wrote : Re: [Yade-dev] [Bug 850864] Re: strange facet-sphere behaviour

Hello Eugen,

I have a plan to implement it in a few months time (summer or autumn, most
likely not spring). Would it be ok for you, or do you need something
earlier?
If my plan changed, I will inform you :-)
cheers
Jan

2013/3/27 Eugen Kubowsky <email address hidden>

> is there any plan when this new net of classes will be implemented?
>
> --
> You received this bug notification because you are a member of Yade
> developers, which is subscribed to Yade.
> https://bugs.launchpad.net/bugs/850864
>
> Title:
> strange facet-sphere behaviour
>
> Status in Yet Another Dynamic Engine:
> Won't Fix
>
> Bug description:
> See https://answers.launchpad.net/yade/+question/171223
>
> Spheres that are exactly on an edge between facets behave strangely.
> Maybe related to other (closed, but never solved) bugs in sphere-
> facet.
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/yade/+bug/850864/+subscriptions
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-dev
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-dev
> More help : https://help.launchpad.net/ListHelp
>

Revision history for this message
Klaus Thoeni (klaus.thoeni) wrote :

Hi guys,

I just found this paper:

http://onlinelibrary.wiley.com/doi/10.1002/nme.4487/abstract

Maybe it could be one way to implement the contact detection between spheres and facets in yade.

What do you think?

Klaus

Revision history for this message
Bruno Chareyre (bruno-chareyre) wrote :

Hi Klaus,
Thanks for the pointer.
After a quick look, it has strong similarities with what we are already planing (and what colleagues have implemented here in SDEC), the key feature being mutual exclusion of contacts on node/edge/facet based on a connectivity table.
The main difficulties are in the practical implementation more than in the conceptual algorithm.
For instance, the article present a global loop on interactions in order to eliminate mutually exclusive contacts. Fine, but there is currently no place for such loop in Yade. Instead, we have to split this loop into many local checks at each contact, so that the same series of checks is done at the end of the day.

One very important thing not adressed in the paper (or my look was too quick) is the fact that the same contact can persist while changing status during a tangent motion: sphere-edge1 -> sphere-facet -> sphere-edge2 - etc. This is really the tricky part.

Revision history for this message
Bruno Chareyre (bruno-chareyre) wrote :

Another note: the local checks for exclusion are a lot easier now, since interactions are stored in bodies. François Kneib used this property for the grid model.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.