# I can not get the desired porosity with my PSD

Hello All,

I am trying to generate sphere packing according to a given PSD.

I want to get a porosity=0.375 or e=(triax.

I use num_spheres=1000 and my answer for porosity is 0.4969

I use num_spheres=5000 and my answer for porosity is 0.435

I use num_spheres=15000 and my answer for porosity is 0.411

I use num_spheres=20000 and my answer for porosity is 0.4139

I use num_spheres=30000 and my answer for porosity is 0.4059

I use num_spheres=40000 and my answer for porosity is 0.39

I use num_spheres=50000 and my answer for porosity is 0.39

I use num_spheres=60000 and my answer for porosity is 0.39

How to use this psd to get the desired porosity=0.375 or e=(triax.

=======

import matplotlib; matplotlib.

from yade import pack

import pylab

from numpy import *

import matplotlib.pyplot as plt

import math

utils.readParam

from yade.params import table

seed=table.seed

num_spheres=

compFricDegree = table.compFricD

confiningS=-2820

## creat a packing with a specific particle side distribution (PSD)

psdSizes,

sp=pack.

mn,mx=Vector3(

sp.makeCloud(

sp.psd(

sp.toSimulation

## create material #0, which will be used as default

O.materials.

O.materials.

## create walls around the packing

walls=aabbWalls

wallIds=

O.bodies.

print 2*O.bodies[

print 2*O.bodies[

triax=TriaxialS

internalCompac

goal1=confiningS,

goal2=confiningS,

goal3=confiningS,

max_vel=10,

label="triax"

)

newton=

O.engines=[

ForceResetter(),

InsertionSortC

InteractionLoop(

[Ig2_

[Ip2_

[Law2_

),

GlobalStiffnes

triax,

newton

]

O.dt=.1*

O.dynDt=False

while 1:

O.run(1000, True)

unb=unbalance

print 'unb: ',unb,' t.p: ',triax.porosity,' n: ',porosity(),' e: ',(triax.

if unb<0.001 and abs(confiningS-

break

print 'porosity: ',porosity()

print 'triax.

print 'e: ',(triax.

=======

## Question information

- Language:
- English Edit question

- Status:
- Answered

- For:
- Yade Edit question

- Assignee:
- No assignee Edit question

- Last query:
- 2019-06-06

- Last reply:
- 2019-06-06

Robert Caulk (rcaulk) said : | #1 |

Have you tried changing the PSD to increase the fraction of smaller particles? Have you tried not passing numSpheres to makeCloud? [1]

[1]https:/

Saeed (saeed0668191) said : | #2 |

hi Robert

I increase the number of compFricDegree, but porosity (n) and Void Ratio: e=n/(1-n) increased and did not help.

Without using the num_spheres in sp.makeCloud , it simulates the small interval of the psd, and the entire interval of the seeds does not coat, and a very large amount of grain is modeled, which is very long runtime.

And the psd does not fully model the numbers given in psdSizes and psdCumm.

Please provide a solution

thanks

Robert Caulk (rcaulk) said : | #3 |

Have you tried changing the PSD to increase the fraction of smaller particles?

Have you tried following the triax-example porosity method [1]?

[1]https:/

distributeMass=True would probably help

## Can you help with this problem?

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