← Back to team overview

yade-users team mailing list archive

[Question #452513]: overlapping particle/particle and particle/wall

 

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

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



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