← Back to team overview

yade-dev team mailing list archive

Re: Intergator and clumps

 

> 1/ Forces are damped based on the motion of each body. As a consequence, 
> different contact forces on the same clump will be damped independently. 
> Its a bit like damping separately each individual force applied on a 
> standalone body. The very bad effect of this is that a body at static 
> equilibrium can be moved out of equilibrium by damping effect (i.e. the 
> exact opposite of what damping is supposed to do...).
> The correct way to damp is to damp the resultant force/moment on a clump 
> based on the motion of the clump.
>   
I wasn't sure what the correct way was, but please fell free to adjust
that. If you do, however, make sure that the same is done in the
original engines (CundallNonViscous etc) so that the behavior is consistent.
> 2/ From what I see in the code, if a clump has bodies "i" and "j", I 
> fear the integration loop could make something like (depending on the 
> ordering of bodies):
>  
> on body i : clump->acceleration += i->force/clump->mass
> on clump : clump->velocity += clump->acceleration*dt
> on body j : clump->acceleration += j->force/clump->mass
>
> so that forces on clump member j are ignored in the motion of the clump...
>
> Is there something to prevent that? Are clumps always at the end of the 
> loop?
>   
Currently, the ordering of IDs of clump and its members is undefined.
There are 2 ways out of this, it seems to me:

1. Add an extra loop that would apply forces on clump members to clump
itself, before calculating clump acceleration. Perhaps a flag on
NewtonsDampedLaw so that the loop would be run only if clumps were
actually in use. That could be either set by the user (like you have to
set distant flag for the collider to make it work) or by the engine
itself: at each iteration, it would remember whether some bodies were
actually clumps - if so, the flag would be turned on and you would get
the extra loop run at next iteration; you would miss just the first
iteration, which is negligible. If the clump loop would run , at some
point, without doing any work, it would switch that flag off automatically.

2. Prescribe such ordering of clumps and its members so that the problem
is prevented. It is not very user-friendly, but could be enforced by
assertions/exceptions when the clump is created. But having bodies
behave depending on their ID seems weird (non-intuitive).

PS. I wonder if there is anyone using clumps actually (I don't need them
now); there can be problem with shear forces, since clump members have
zero velocities, even if they move (they are moved by a special engine);
since shear displacement is frequently calculated from angularVelocity,
it will give zero. It could be fixed (angularVelocity of each member
would be calculated from clump's angular velocity) but it has not been
done yet.

Vaclav

_______________________________________________
yade-dev mailing list
yade-dev@xxxxxxxxxxxxxxxx
https://lists.berlios.de/mailman/listinfo/yade-dev



Follow ups

References