← Back to team overview

yade-users team mailing list archive

[Question #696786]: Strange behavior: sand pile settles in a squared shape ?

 

New question #696786 on Yade:
https://answers.launchpad.net/yade/+question/696786

Hi all,

When simulating the settlement of a relatively dense) packing on a plane surface, I obtain an equilibrium state which seems a bit awkward: from above, the particles tend to spread in a squared shape instead of a circular shape (as I would have expected). I tested different contact laws as well as different initial packing shapes and it seems to occur systematically (the squared shape is more or less evident depending on the case). The initial packing is built based on randomDensePack(): could this be the reason?

Please find below a MWE if you want to reproduce the "problem" (jut click and play for ~10 000 iterations when the GUI opens).

Any feedback would be appreciated.

Luc


---

# -*- coding: utf-8 -*-

from yade import pack

#### assembly
O.materials.append(FrictMat(density=2600,young=1e6,poisson=0.333,frictionAngle=radians(30),label='sphereMat'))

L=2.
D=L/2.
sphereRad=0.5*(min(L,D)/15.) # define sphere mean radius as a function of model dimensions / you can directly define a value
pred=pack.inCylinder((0,0,0),(0,0,L),D/2.)
#pred=pack.inSphere((0,0,0),D/2.)
O.bodies.append(pack.randomDensePack(pred,radius=sphereRad,rRelFuzz=0.333,spheresInCell=3000,memoizeDb='/tmp/gts-triax-packings.sqlite',returnSpherePack=False,material='sphereMat'))

dim=utils.aabbExtrema()
xinf=dim[0][0]
xsup=dim[1][0]
X=xsup-xinf
yinf=dim[0][1]
ysup=dim[1][1]
Y=ysup-yinf
zinf=dim[0][2]
zsup=dim[1][2]
Z=zsup-zinf

#### get spheres dimensions (pre-processing)
R=0
numSpheres=0.
for o in O.bodies:
 if isinstance(o.shape,Sphere):
   o.shape.color=(0.8,0.1,0.1)
   numSpheres+=1
   R+=o.shape.radius
Rmean=R/numSpheres

print('nb of spheres=',numSpheres,' | Rmean=',Rmean)

#### floor
O.materials.append(FrictMat(density=2600,young=1e6,poisson=0.333,frictionAngle=radians(30),label='floorMat'))
O.bodies.append(box(center=(0.,0.,zinf-Z/10.),extents=(X*100.0,Y*100.0,Z/10.),fixed=True,wire=False,color=(0,1,0),material='floorMat'))

##### engines
O.engines=[
    ForceResetter()
    ,InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()])
    
    ,InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
		[Ip2_FrictMat_FrictMat_FrictPhys()],
		[Law2_ScGeom_FrictPhys_CundallStrack()]
    )
    
    ,GlobalStiffnessTimeStepper(defaultDt=0.1*utils.PWaveTimeStep(),timestepSafetyCoefficient=0.5)
    ,NewtonIntegrator(damping=0.7,gravity=(0.,0.,-9.82),label='newton')
]

#### open yade GI
from yade import qt
v=qt.Controller()
v=qt.View()

#### Allows to reload the simulation
O.saveTmp()

print('press play now!)')





-- 
You received this question notification because your team yade-users is
an answer contact for Yade.