random dense packing with bidisperse particles in Yade

Asked by Lei Zhang

Dear all,

I want to generate a random dense packing containing particles with two different radii, can I do it in Yade? We did a lot of search, and found some articles saying that they used Yade to generate bidisperse dense packing, for example,
http://nile.physics.ncsu.edu/pub/Publications/papers/Puckett-2011-LOV.pdf
https://arxiv.org/pdf/1006.3790.pdf

But we cannot figure out how to use randomDensePack() and randomPeriPack(), it seems we can only set one radius there. We would be most grateful if anyone can tell us how to setup a random dense packing for bidisperse particles.

Many thanks,
Lei

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 Lei,

a workaround is to use the core of the function [1,2] (copy paste
approach), but change the sp.makeCloud command to create desired packing,
something like:
###########################
from yade import pack
sp = SpherePack()
r1,r2 = 1.0, 0.4
num1,num2 = 20,100
sp.makeCloud((0,0,0),(10,10,10),r1,num=num1)
sp.makeCloud((0,0,0),(10,10,10),r2,num=num2)
sp.toSimulation()
###########################

cheers
Jan

[1] https://github.com/yade/trunk/blob/master/py/pack/pack.py#L454
[2] https://github.com/yade/trunk/blob/master/py/pack/pack.py#L554

Revision history for this message
Jérôme Duriez (jduriez) said :
#2

As a comment, what randomDensePack is limited to do, is to consider uniform particle size distribution around a mean radius value "rMean" (see "rRelFuzz" attribute of randomDensePack).
So, it's indeed not possible to use it for bidisperse packing, but it is not limited to monodisperse packings either.

As another comment, regarding Jan's suggestion #1, you may also use "psdCumm" and "psdSizes" attributes of makeCloud function to define a bidisperse packing calling only once makeCloud, instead of twice in #1
(do not know if one method is simpler than the other, though)

Jerome

Revision history for this message
Lei Zhang (acmuser) said :
#3

Dear Jan and Jerome,

Thanks a lot for your suggestion. It seems if my goal is only to generate a loose bidisperse packing, then either way is fine. For example, something like

psdSizes, psdCumm = [0.05, 0.05, 0.07, 0.07], [0.0, 0.5, 0.5, 1.0]
sp=pack.SpherePack();
sp.makeCloud((0,0,0), (1,1,1), psdSizes=psdSizes, psdCumm=psdCumm, distributeMass=False)

can generate a loose packing for me. It is also possible to use Jan's suggestion to generate a loose packing. Then I may need to apply isotropic compression and rescaling to get a dense packing. Is it the right way to go?

Many thanks again,
Lei

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

Hi Lei,

> Is it the right way to go?

in my opinion it is :-)
cheers
Jan

Can you help with this problem?

Provide an answer of your own, or ask Lei Zhang for more information if necessary.

To post a message you must log in.