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.

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to