# How to generate tiny particles in pore space

Hi,
I'd like to generate some tiny particles in pore space of a pack of soil, in order to model the fines in soil.
Can it be achieved in Yade? What kinds of methods or algorithm could be used for this case?
I would appreciate any examples, thoughts, recommendations or links to relevant publications.
Many thanks,
Best regards,
Leonard

## Question information

Language:
English Edit question
Status:
Solved
For:
Assignee:
No assignee Edit question
Solved by:
Leonard
Solved:
2020-01-31
Last query:
2020-01-31
2020-01-28
 Robert Caulk (rcaulk) said on 2020-01-27: #1

Using a PSD is probably the easiest way [1].

 Leonard (z2521899293) said on 2020-01-28: #2

Many thanks Robert,

I am not sure if I got what you mean for using a PSD, could you please give more clues?

Following your suggestion, I make an example using makeCloud:

###
## soil particles
sp1=pack.SpherePack()
sp1.makeCloud((0,0,0),(1,1,1),num=900,rMean=0.04,rRelFuzz=0)
sp1.toSimulation(color=[1,1,1])
## fine particles
sp2=pack.SpherePack()
sp2.makeCloud((0,0,0),(1,1,1),num=3000,rMean=.005,rRelFuzz=.00033)
sp2.toSimulation(color=[0,0.8,0])

Gl1_Sphere.quality=3
#####

This example is a kind of progress. However, I still have some questions regarding the example above.
1. Some of the tiny particles are inside the body of soil particles.
2. This is for a cloud pack at the beginning, is there any way to generate tiny particles in pore space after the soil particles are compacted. For example, after soil particles are compacted at 100 KPa confining pressure?

Thanks,

Leonard

 Jan Stránský (honzik) said on 2020-01-28: #3

if you want non-overlapping particles, use one SpherePack instance, something like (not tested)
###
sp=pack.SpherePack() # just one SpherePack
sp.makeCloud((0,0,0),(1,1,1),num=900,rMean=0.04,rRelFuzz=0)
sp.toSimulation(color=[1,1,1])
doCompaction() # replace by your code
sp.fromSimulation() # now sp is according to compacted particles
n = len(sp)
sp.makeCloud(minCorner,maxCorner,num=3000,rMean=.005,rRelFuzz=.00033) # new particles, guaranteed to be "outside the body of soil particles" = outside already existing particles in sp
for i,(c,r) in enumerate(sp):
if i < n: # skip already existing particles
continue
O.bodies.append(sphere(c,r))
###

> rRelFuzz=.00033

rRelFuzz is a relative value, the radii are in the range ((1-rRelFuzz)*rMean, (1+rRelFuzz)*rMean), isn't 0.00033 absolute value?

cheers
Jan

 Leonard (z2521899293) said on 2020-01-31: #4

Hi Jan,

> I tested the approach you suggested, it works very well, thanks.

> rRelFuzz is a relative value.