# polyhedra particles deposit without angle of repose

Asked by lip on 2019-03-17

hello
i have create many paticles and they deposit in a box by gravity, and one side of box is consist of wall, after the deposit finished, i delete the wall and run the script again to let the particle flow. i have define the fricAngle=0.6rad, but the particles finially lay out in a layer, but not deposit with a angle as i expected.Here is my code:

from yade import polyhedra_utils,pack,plot,utils
import random

m = PolyhedraMat()
m.density = 2600 # kg/m^3
m.young = 1E7 # Pa
m.poisson = 20000 / 1E6
m.frictionAngle = 0.6 # rad\

v1=((0,0,0),(0,0,10),(100,0,10))
v2=((0,0,0),(100,0,0),(100,0,10))
v5=((100,10,0),(0,10,10),(100,10,10))
v6=((100,10,0),(0,10,10),(0,10,0))
v7=((0,0,0),(0,10,10),(0,0,10))
v8=((0,0,0),(0,10,10),(0,10,0))
v9=((0,0,0),(100,10,0),(0,10,0))
v10=((0,0,0),(100,10,0),(100,0,0))

O.bodies.append(utils.facet(v1,material=m))
O.bodies.append(utils.facet(v2,material=m))
O.bodies.append(utils.facet(v5,material=m))
O.bodies.append(utils.facet(v6,material=m))
O.bodies.append(utils.facet(v7,material=m))
O.bodies.append(utils.facet(v8,material=m))
O.bodies.append(utils.facet(v9,material=m))
O.bodies.append(utils.facet(v10,material=m))

O.bodies.append(utils.wall(10, axis=0, sense=-1, material=m))

#polyhedra_utils.fillBox((0,0,0),(10,10,20),m,seed=1)

sp=pack.SpherePack()
sp.makeCloud((0,0,0),(10,10, 0),psdSizes=[2,2,2],psdCumm=(0.5,0.8,1),seed=1)

for center,radius in sp:
# note: new polyhedron for each cycle
t.state.pos = center # sets polyhedron position according to sphere position
O.bodies.append(t)

O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Polyhedra_Aabb(), Bo1_Wall_Aabb(), Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Wall_Polyhedra_PolyhedraGeom(), Ig2_Polyhedra_Polyhedra_PolyhedraGeom(),
Ig2_Facet_Polyhedra_PolyhedraGeom()],
[Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys()], # collision "physics"
[Law2_PolyhedraGeom_PolyhedraPhys_Volumetric()] # contact law -- apply forces
),
# GravityEngine(gravity=(0,0,-9.81)),
NewtonIntegrator(damping=0.5, gravity=(0, 0, -9.81)),
PyRunner(command='checkUnbalanced()', realPeriod=3, label='checker')
]
O.dt=1e-2

# enable energy tracking; any simulation parts supporting it
# can create and update arbitrary energy types, which can be
# accessed as O.energy['energyName'] subsequently
O.trackEnergy=True
# if the unbalanced forces goes below .05, the packing
# is considered stabilized, therefore we stop collected
# data history and stop
def checkUnbalanced():
if unbalancedForce()<.05:
O.pause()
#plot.saveDataTxt('bbb.txt.bz2')
# plot.saveGnuplot('bbb') is also possible

# collect history of data which will be plotted
# each item is given a names, by which it can be the unsed in plot.plots
# the **O.energy converts dictionary-like O.energy to plot.addData arguments

# define how to plot data: 'i' (step number) on the x-axis, unbalanced force
# on the left y-axis, all energies on the right y-axis
# (O.energy.keys is function which will be called to get all defined energies)
# None separates left and right y-axis
plot.plots={'i':('unbalanced',None,O.energy.keys)}

# show the plot on the screen, and update while the simulation runs
plot.plot()

O.saveTmp()

i would appreciate if you can help me

## Question information

Language:
English Edit question
Status:
For:
Assignee:
No assignee Edit question
Last query:
2019-03-17
2019-03-17
 lip (mr.xie) said on 2019-03-17: #1

hello
there is something wrong in my code,the original code is
makeCloud((0,0,0),(10,10, 100),psdSizes=[2,2,2],psdCumm=(0.5,0.8,1),seed=1)

 Jan Stránský (honzik) said on 2019-03-17: #2

> m.poisson = 20000 / 1E6

any meaning of this? Try a (much) higher value

cheers
Jan