Set timestep in clump packing simulation

Asked by kelaogui

Usually we use PWaveTimeStep to set the time step in sphere packing. How about for the clump packing? If we still use PWaveTimeStep, is the time step still computed from the spheres that compose the clump?

Question information

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

Hello,

yes. PWaveTimeStep iterates over all bodies finding smallest critical time
step for spherical particles (no matter if they are clump members or not).
The forces acting on clump is computed from ordinary interactions between
individual clump members and other colliding particles (possibly also
members of another clump). So the computation is safe and in general
correct. However, if you use only clumps with "many" particles, the
critical time step could be higher than computed with PWaveTimeStep
function (because the "mass" in equation radius/sqrt(young/density is
higher because of other clump members).

You can play a bit yourself if you want, but using PWaveTimeStep is correct.
cheers
Jan

2013/1/2 kelaogui <email address hidden>

> New question #218111 on Yade:
> https://answers.launchpad.net/yade/+question/218111
>
> Usually we use PWaveTimeStep to set the time step in sphere packing. How
> about for the clump packing? If we still use PWaveTimeStep, is the time
> step still computed from the spheres that compose the clump?
>
> --
> 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
kelaogui (kelaogui91) said :
#2

Thank you Jan. Also, this script confuse me

from yade import *
O.materials.append(FrictMat(young=3e8,poisson=0.3,frictionAngle=radians(20),density=2600,label='spheres'))
c0=utils.sphere([0,0,0],.5,material='spheres')
O.bodies.append(c0)
O.bodies[0].material.density=260000
O.dt=utils.PWaveTimeStep()

The result show that O.dt comes from radius/sqrt(E/density) in which density is 2600 not 260000. It's weird.

Revision history for this message
Best Jan Stránský (honzik) said :
#3

Where does this script come from? Anyway let me explain how Yade works in
this script and why the results are correct:

O.materials.append(FrictMat(young=3e8,poisson=0.3,frictionAngle=radians(20),density=2600,label='spheres'))
>

material with density=2600 is created

> c0=utils.sphere([0,0,0],.5,material='spheres')
>

body with material 'spheres' is created. At this moment, mass of the
particle is computed from density (2600) and its volume

> O.bodies[0].material.density=260000
>

now you set density of the material to 260000, but actual particle's mass
remains unchanged. If you created new particle of the same size with
material 'spheres', it would have different mass than the original particle
c0

> O.dt=utils.PWaveTimeStep()
>

PWaveTimeStep computes time step from particles' mass, not their material
densities. That's why changing material.density has no effect.

If you do

c0.state.mass *= 100

than the time step computed with PWaveTimeStep would be different.

cheers
Jan

Revision history for this message
kelaogui (kelaogui91) said :
#4

I see.

Revision history for this message
kelaogui (kelaogui91) said :
#5

Thanks Jan Stránský, that solved my question.

Revision history for this message
Václav Šmilauer (eudoxos) said :
#6

P-wave timestep is actually not correct for clumps. A wave propagates elastically in sphere, but the connection of particles within one clump propagate the wave immediately (infinite stiffness).

E.g. clump like (r1=0.1m)--[center-center distance 0.2m]--(r2=0.1m) has 0.4m distance between contact endpoints, but only 0.2m are elastic material. The critical timestep should be multiplied with (elastic_length/geometric_length), in this case 0.5.

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

Side note: GlobalStiffnessTimestepper works correctly with clumps.

p.s. Hi Eudoxos! :)