New question #706684 on Yade: https://answers.launchpad.net/yade/+question/706684
Hello everyone, Hope you are doing well. I want to simulate spherical packing in a cylindrical container. I followed the Gravity deposition example on the Yade website. It works well for the bigger particles. But for the small particles, most of the particles jumping up and going above, instead of deposition. Some of the particles go out of the box. I need the porosity and particle configuration of packing at the end (balanced state). I want to simulate my experiments, in which the particles are mono-sized spheres with 0.5 mm and 0.1 mm in diameter. And, the diameter of my cylinder is 5.2 cm. As it is not possible to use the real geometry of the cylinder because of the huge number of particles, that is why I used smaller ones. Here is my code: ########### # gravity deposition in box, showing how to plot and save history of data, # and how to control the simulation while it is running by calling # python functions from within the simulation loop # import yade modules that we will use below from yade import pack, geom, plot from yade import export pred = pack.inCylinder((0,0,0),(0,0,0.01),0.005) sp = pack.randomDensePack(pred,radius=0.00025,spheresInCell=300) O.bodies.append(sp) facets = geom.facetCylinder((0,0,0.02),0.005,0.05,wallMask=2|4) O.bodies.append(facets) # add the sphere pack to the simulation # sp.toSimulation() 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.4), # call the checkUnbalanced function (defined below) every 2 seconds PyRunner(command='checkUnbalanced()', realPeriod=2), ] O.dt = .5 * PWaveTimeStep() # enable energy tracking; any simulation parts supporting it # can create and update arbitrary energy types, which can be # accessed as O.energy['energyName'] subsequently O.trackEnergy = True # if the unbalanced forces goes below .05, the packing # is considered stabilized, therefore we stop collected # data history and stop def checkUnbalanced(): if unbalancedForce() < .05: O.pause() O.saveTmp() # export spheres function every 1000 iterations O.engines += [PyRunner(command="exportSpheres()", iterPeriod=1000, initRun=True)] def exportSpheres(): i = O.iter fName = f"yade-spheres-{i:06d}.txt" export.text(fName) # porosity O.engines += [PyRunner(iterPeriod=1000,command="plotAddData()",initRun=True)] # runs every 1000 iterations def plotAddData(): porosity = utils.porosity() plot.addData(iter=O.iter, time=O.time, porosity=porosity) plot.saveDataTxt("result.txt") ############ Any help will be greatly appreciated. Thanks and regards, Soheil -- 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 : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp