overlapping particle/particle and particle/wall

Asked by Michael Kolbeck

Hello everyone,

I'm new with Yade and I would appreciate some help.
I need to create a random dense packing in a cylinder. The radii of the spheres should have a normal distribution around a given value. Furthermore the spheres should not overlap, and the particles close to the cylinder surface should touch the surface (but not intersect the cylinder wall). Then I export the coordinates for further analysis in Ansys Fluent.

I first create a particle cloud in my predicate and then apply gravity deposition while my predicate is shaking (to distribute the particles evenly over the whole cross section of the cylinder). After 8000 iterations I stop the simulation and export the coordinates:

from yade import pack, qt, export

cylinder=O.bodies.append(geom.facetCylinder(center=(0,0,125),radius=15,height=250,segmentsNumber=100,wallMask=7,closeGap=True))

sp=pack.SpherePack()

diameter=[3.600,3.640,3.680,3.720,3.760,3.800,3.840,3.880,3.920,3.960,4.000,4.040,4.080,4.120,4.160,4.200,4.240,4.280,4.320,
          4.360,4.400,4.440,4.480,4.520,4.560,4.600,4.640,4.680,4.720,4.760,4.800,4.840,4.880,4.920,4.960,5.000,5.040,5.080,
          5.120,5.160,5.200,5.240,5.280,5.320,5.360,5.400]

cum=[0.001,0.002,0.003,0.005,0.007,0.010,0.014,0.019,0.027,0.036,0.048,0.063,0.081,0.103,0.129,0.159,0.193,0.232,0.274,
         0.320,0.369,0.421,0.473,0.527,0.579,0.631,0.680,0.726,0.768,0.807,0.841,0.871,0.897,0.919,0.937,0.952,0.964,0.973,
         0.981,0.986,0.990,0.993,0.995,0.997,0.998,1.000]

sp.makeCloud((-10,-10,200),(10,10,245),psdSizes=diameter,psdCumm=cum,distributeMass=False)

sp.toSimulation()

yade.qt.Controller()
yade.qt.View()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
        HarmonicMotionEngine(A=[0,1.5,0],f=[0,0.3,0],ids=cylinder),
 NewtonIntegrator(gravity=(0,0,-9.81),damping=0.5),
 PyRunner(command='iterations()',realPeriod=2)
]
O.dt=.5*PWaveTimeStep()

def iterations():
   O.stopAtIter=8000
   export.text('pack.txt')

Then I start another simulation, create the same predicate, import the packing and then apply a simple gravity deposition and let it "rest" until the unbalanced force is below 0.001:

from yade import pack, qt, ymport, export

cylinder=O.bodies.append(geom.facetCylinder(center=(0,0,125),radius=15,height=250,segmentsNumber=100,wallMask=7,closeGap=True))

packing=ymport.text('pack.txt',scale=1.0)
O.bodies.append(packing)

yade.qt.Controller()
yade.qt.View()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
 InteractionLoop(
  # handle sphere+sphere and facet+sphere collisions
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 NewtonIntegrator(gravity=(0,0,-9.81),damping=0.5),
 PyRunner(command='checkUnbalanced()',realPeriod=2)
]
O.dt=.5*PWaveTimeStep()

def checkUnbalanced():
 if unbalancedForce()<.001:
                O.pause()
  export.text('pack1.txt')

But when I import my pack into Ansys Fuent (generating the spheres in CATIA V5 first), the particles overlap sligthly among each other and intersect with the drawn cylinder wall.

And now my question: Why is that so and is there a way to avoid this problem?

Many thanks,

Michael

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Michael Kolbeck
Solved:
Last query:
Last reply:
Revision history for this message
Jan Stránský (honzik) said :
#1

Hi Michael,

I'm new with Yade

Welcome :-)

the basic idea of DEM is that inter-particle forces depends on mutual
overlap (linearly in the most basic case). So if you apply gravity and the
sample is supposed to be in static equilibrium, overlaps are intrinsic part
of the situation.

One solution is to enlarge particles slightly before simulation and shrink
them back to original size afterwards. In this case there will be no
overlaps, but the particles would not be touching at the same time (both
mutually and also between particle-wall).

To make particles just touching the walls, you can shrink the particles
individually to fulfill exactly the condition of touching.

cheers
Jan

Revision history for this message
Michael Kolbeck (michael.kol) said :
#2

Hi Jan,

thank you for your answer.
I see that using DEM, there is no way to avoid overlap.
But is there a way to minimize the overlap? for example by modifying the material properties or the engine modification.

Cheers,

Michael

Revision history for this message
Jérôme Duriez (jduriez) said :
#3

In fact, there actually is some kind of DEM (Non Smooth Contact Dynamics) which sticks to the rigid bodies point of view, and do not use any overlap. YADE does not belong to this category, though..

In order to minimize interparticles overlap for a given stress state (which is indeed given in a gravity deposition simulation), just use higher particle stiffnesses i.e. FrictMat.young parameter (here it seems you're using the default 1e7 value since you do not explicitly define material parameters).

Nothing to do with engines list in such case.

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#4

>"is there a way to minimize the overlap?"

You can decrease confining pressure or increase material stiffness.
The result will be the same both ways: less overlap, more cpu time.

I am actually wondering if it is not helping to have overlaps for the fluent part of the problem. When the spheres are exactly tangent to the walls it is horribly demanding in terms of mesh refinement if you want to capture what happens near the tangent point (in fact a lubrication problem). Just curious.

Bruno

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#5

"decrease confining pressure" should be "decrease gravitational acceleration" in this particular case. I just realized.
B

Revision history for this message
Michael Kolbeck (michael.kol) said :
#6

thank all of you!

@Jerome: I'll try playing around with the particle stiffness

@Bruno: You are right. Defined contact points between particle/particle and particle/wall result in highly skewed cells or a highly increased number of cells (but the overlap makes the problem just a little bit less worse). I just wanted to have an initial state from which I can start (since I don't know how much the particles overlap).