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.
_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp