Unphysical behaviour, and Verlet collision detection

Asked by Giulia Macaro

Hi,

I am running a simulation in which a constant vertical velocity is applied to a non-dynamic cylindrical body laying on a packing of spheres with periodic boundaries.
The velocity is applied through TranslationEngine(velocity=-0.01,translationAxis=[0,0,1]).
I have coded myself the cylindrical body I am working with, in a way similar to the chained cylinder. It is still experimental, since I am still checking if it works correctly.

At some point the contact force on the cylinder becomes very high, and the spheres in contact with it start moving extremely fast (almost as if the packing is exploding). See the images:
http://www.2shared.com/photo/e7PFqYLJ/00790.html
http://www.2shared.com/photo/wY5rowcJ/00791.html
http://www.2shared.com/photo/0N4N71xE/00792.html

1.
I am wondering if anybody has faced the same issue with similar simulations.
I am not sure if this is a problem of the interaction sphere-cylinder, but it seems working fine for part of the test, and then the packing starts exploding. I have tried to reduce the loading velocity and the time step, but it still happens.
Could it be related to the verletDist and targetInterv, maybe because the particles are moving too fast and the interaction are not detected? I am using the default values for now.

2.
Assuming that the problem might be the optimization with the verlet distance, I have few question about it.
I see that targetInterv is =50 by default, so the distance is adjusted, isn't it?
It isn't that clear the difference between the sweepLength, the verletDist and the sweepDist. I understood what is the verletDist for, but then the other two variables seem very similar.
And also, in which range should I vary the verletDist and targetInterv? Are there any references about it?

Thanks for any suggestions
Giulia

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Jan Stránský (honzik) said :
#1

Hi Giulia,

as usual in such cases, we have to ask you to provide us with a script
reproducing this behavior. It will show us what material you use, how you
compute time step and so on..

in my opinion, this issue is not related to collider. If you did not
mention playing with time step, I would have bet on the time step (what is
closely related to the velocity of the clinder)..

Jan

2012/9/6 Giulia Macaro <email address hidden>

> New question #207881 on Yade:
> https://answers.launchpad.net/yade/+question/207881
>
> Hi,
>
> I am running a simulation in which a constant vertical velocity is applied
> to a non-dynamic cylindrical body laying on a packing of spheres with
> periodic boundaries.
> The velocity is applied through
> TranslationEngine(velocity=-0.01,translationAxis=[0,0,1]).
> I have coded myself the cylindrical body I am working with, in a way
> similar to the chained cylinder. It is still experimental, since I am
> still checking if it works correctly.
>
> At some point the contact force on the cylinder becomes very high, and the
> spheres in contact with it start moving extremely fast (almost as if the
> packing is exploding). See the images:
> http://www.2shared.com/photo/e7PFqYLJ/00790.html
> http://www.2shared.com/photo/wY5rowcJ/00791.html
> http://www.2shared.com/photo/0N4N71xE/00792.html
>
> 1.
> I am wondering if anybody has faced the same issue with similar
> simulations.
> I am not sure if this is a problem of the interaction sphere-cylinder, but
> it seems working fine for part of the test, and then the packing starts
> exploding. I have tried to reduce the loading velocity and the time step,
> but it still happens.
> Could it be related to the verletDist and targetInterv, maybe because the
> particles are moving too fast and the interaction are not detected? I am
> using the default values for now.
>
> 2.
> Assuming that the problem might be the optimization with the verlet
> distance, I have few question about it.
> I see that targetInterv is =50 by default, so the distance is adjusted,
> isn't it?
> It isn't that clear the difference between the sweepLength, the verletDist
> and the sweepDist. I understood what is the verletDist for, but then the
> other two variables seem very similar.
> And also, in which range should I vary the verletDist and targetInterv?
> Are there any references about it?
>
> Thanks for any suggestions
> Giulia
>
>
> --
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

Revision history for this message
Chiara Modenese (chiara-modenese) said :
#2

Hi Giulia,

I doubt this behaviour has anything to do with verletDist. Assuming your cylinder is working all right, the problem might be related to one or more of the following aspects:

- the input parameters of your particles/cylinder (friction, for instance)
- the scale of your domain which might be inadequate
- the rate of loading of your cylinder which might be too high (I do not know how much you reduce it)

I would try to plot the stresses to help diagnose the problem.

Chiara

On 6 Sep 2012, at 19:55, Giulia Macaro wrote:

> New question #207881 on Yade:
> https://answers.launchpad.net/yade/+question/207881
>
> Hi,
>
> I am running a simulation in which a constant vertical velocity is applied to a non-dynamic cylindrical body laying on a packing of spheres with periodic boundaries.
> The velocity is applied through TranslationEngine(velocity=-0.01,translationAxis=[0,0,1]).
> I have coded myself the cylindrical body I am working with, in a way similar to the chained cylinder. It is still experimental, since I am still checking if it works correctly.
>
> At some point the contact force on the cylinder becomes very high, and the spheres in contact with it start moving extremely fast (almost as if the packing is exploding). See the images:
> http://www.2shared.com/photo/e7PFqYLJ/00790.html
> http://www.2shared.com/photo/wY5rowcJ/00791.html
> http://www.2shared.com/photo/0N4N71xE/00792.html
>
> 1.
> I am wondering if anybody has faced the same issue with similar simulations.
> I am not sure if this is a problem of the interaction sphere-cylinder, but it seems working fine for part of the test, and then the packing starts exploding. I have tried to reduce the loading velocity and the time step, but it still happens.
> Could it be related to the verletDist and targetInterv, maybe because the particles are moving too fast and the interaction are not detected? I am using the default values for now.
>
> 2.
> Assuming that the problem might be the optimization with the verlet distance, I have few question about it.
> I see that targetInterv is =50 by default, so the distance is adjusted, isn't it?
> It isn't that clear the difference between the sweepLength, the verletDist and the sweepDist. I understood what is the verletDist for, but then the other two variables seem very similar.
> And also, in which range should I vary the verletDist and targetInterv? Are there any references about it?
>
> Thanks for any suggestions
> Giulia
>
>
> --
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp

Revision history for this message
Anton Gladky (gladky-anton) said :
#3

Hi Giulia,

just a small note. You do not need TranslationEngine for non-dynamic body.
You can set the velocity for your body(ies) before the simulation and
it will be constant:

b.state.vel = Vector3(0.0,0.0,-1.0)

Cheers,

Anton

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#4

Hi,

It will not be too difficult to check if verletDist is the problem. Set verletDist=0 and the collider will run at each iteration.

>so the distance is adjusted, isn't it?

Yes.

>It isn't that clear the difference between the sweepLength, the verletDist and the sweepDist.

Collider::sweepLength is a deprecated name (an alias) of verletDist. This kind of double naming is only to insure backward compatibility vs. older scripts when we rename something.

BoundDispatcher::sweepDist is only a copy of verletDist in most cases, except that if stride can't be activated (because for instance no NewtonEngine is found), it will be 0. It is set automaticaly by the collider.so you don't have to worry about that.

Bound::sweepLength is the distance that is effectively used for one specific aabb.
"The length used to increase the bounding boxe size, can be adjusted on the basis of previous displacement if :yref:`BoundDispatcher::targetInterv`>0. |yupdate|"

As Jan said, we can't help much without running your scripts on our side. So, I suggest that you commit your code to yade's trunk and provide example script. Since it is in new classes - I guess - it can't break anything (provided it compiles); so you can commit even if it doesn't work yet, don't be afraid of that.
That way, we will collaborate more efficiently and you can contribute to yade with a new shape. :)

You are aware that the inspector can help a lot for debugging, yes?

Bruno

Revision history for this message
Giulia Macaro (giulia-macaro) said :
#5

Thank you all for your replies.

I will try to play more with the time step and the loading velocity. And also I might try to reduce the scaling of the PSD to increase the number of contacts.
I will also try with verletDist=0 (which I guess will be extremely slow), to exclude that problem. Thanks Bruno for the explanations, it makes more sense now.

I haven't updated Yade for a while, so I first need to update it, clean my code, modify the new one, and then will try to commit it.
But then the problem with the script reproducing the behaviour is that it only happens in very long simulations (few days). Simple tests with less particles and lower stiffnesses work fine. That 's why maybe I should play more with the input parameters.

I will let you know when I'm ready to commit, or when I find out more.

Can you help with this problem?

Provide an answer of your own, or ask Giulia Macaro for more information if necessary.

To post a message you must log in.