Calculate the particle size distribution after particle crushing

Asked by Tina Asia

Hello,

In my simulation, a cohfrictmat was used to define cohesive bonds between discrete elements which consist of a packing.
After this packing crushing under dynamic loads, whether the particle size distribution can be calculated??
 https://answers.launchpad.net/yade/+question/292911, gives a reference, but I tried add this function to my code, it only got set[n1,n2], not the particle size distribution.

Can you help me solve this problem?

Thanks!

Tina,
NTU

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

the approach you mentioned returns ids os particles of each grain. With this information, you can somehow (*) compute size of each grain and from the sizes compute PSD

* size of a set pf spheres is IMO not unique, could be something like minimal size of bounding sphere, minimal size of axis aligned bounding box, minimal size of oriented bounding box etc etc..

cheers
Jan

Revision history for this message
Tina Asia (tinaatyade) said :
#2

Hi Jan,

Sorry for my delay, I can not understand * in your former reply. I have modified your function, but still got the ids of those particles rather than their sizes because of their varied radius.

Your reply will be highly apperciated.
Many thanks,

Tina

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

Yes, you get IDs of spheres forming individual macro-grains.

I think your question should be split:
- how to get individual standalone grains? now it should be answered
- how to determine size of one macro-grain? who knows, it's up to you :-)

if you know the sizes, PDS is trivial

Macro-grain = set of spheres. The "size" of such set is not uniquely defined and there are maaaany ways how to define/evaluate it, the right choice depends on your needs.

The easiest is size of a set of spheres is its AABB. It is quick to code and compute, but you get different results for the same grains that are differently rotated.

code (not tested):
############################
def evalSize(idsOfOneGrain):
   aabbmin = Vector3(+1e20,+1e20,+1e20)
   aabbmax = Vector3(-1e20,-1e20,-1e20)
   for id in ids: # for each sphere
      b = O.bodies[id]
      for d in (0,1,2): # for x.y.z directions
         aabbmax[d] = max(aabbmax[d], b.state.pos+b.shape.radius)
         aabbmin[d] = min(aabbmin[d], b.state.pos+b.shape.radius)
   dims = sorted(aabbmax-aabbmin)
   return dims[2] # largest, size, see below
###########################

even with the most simple assumption that the grain is axis-aligned box, how to define "size"? maximum size? minimum size? some diagonal size? should it pass circular openings? square openings? ........ :-)
that was the point of my (*)

You can define the size as (just brainstorming):
- size of not axis aligned, but oriented box and trying to find such dimensions and rotation minimizing the sizes
- size of smallest possible sphere containing all particles
- size of smallest possible ellipsoid containing all particles
- size of convex hull of the spheres
- ...

cheers
Jan

Can you help with this problem?

Provide an answer of your own, or ask Tina Asia for more information if necessary.

To post a message you must log in.