← Back to team overview

yade-users team mailing list archive

[Question #688281]: Finding a way to pack two concentric cylinders of differing radii with spheres of differing radii

 

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

I am fairly new to Yade in general so any help at all would be most appreciated!
I need to construct two concentric cylinders of differing radii with each having their own collision detection and having spheres of randomized radii (with a certain relFuzz) fill in the OUTER cylinder while the inner cylinder remains unoccupied. I also want to specify number of spheres (I think I can use the pack.Spherepack?) so I can partially fill the outer cylinder volume. How do I only fill the outer cylinder using the code below whilst randomly varying the spheres' radii? How do I update InteractionLoop to help with facet-sphere collision with two cylinders? 

Here is a snapshot of code:


from yade import pack, qt, export

cylinder_outer=O.bodies.append(geom.facetCylinder(center=(0,0,125),radius=70,height=200,segmentsNumber=20,wallMask=7,closeGap=True))

cylinder_inner=O.bodies.append(geom.facetCylinder(center=(0,0,125),radius=30,height=200,segmentsNumber=20,wallMask=7,closeGap=True))

sp=pack.SpherePack()

#These are taken from another code so I commented them out for now...

#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,155),(10,10,195),rMean=2.5,rRelFuzz=2,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_inner),
 NewtonIntegrator(gravity=(0,0,-9.81),damping=0.5),
 PyRunner(command='iterations()',realPeriod=2)
]
O.dt=.5*PWaveTimeStep()

#I commented out the Harmonic Motion Engine at the moment

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

1. How do I enable spherical packing for the outer cylinder and still have two facet-sphere collisions on the interface between both the outer cylinder walls and the outside wall of the inner cylinder?
2. How do I randomly generate sp.MakeCloud to give me a randomized spherical radius with a specified number of spheres (say 200)?

Thank you so much for any input!

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