New question #231814 on Yade: https://answers.launchpad.net/yade/+question/231814
Hello again, I am having some trouble achieving a stable packing using small particle sizes (isotropic compression, strain controlled). Using the script below I can get stable packings when the particle sizes are big enough (e.g. set SC=1). But when I decrease the size of the particles (e.g. set SC=1e-6) the simulation starts off fine but then the particles begin flying around and the simulation never reaches a stable packing. Now I have tried playing around with several parameters to get it to work: time step, material density, particle elasticitiy, verletDist, damping, maxUnbalanced, globUpdate, maxStrainRate. Decreasing the timestep seems to have a small effect on stability, but it yeilds unbearable simulation times. Note that the number of particles in my simulation is relatively small (I will control it later) and I don't want to decrease it anymore. What do I need to do to make stable packings for small particle sizes? As a side note, when I decrease the particle sizes I will get an error telling me that some particles are bigger than half the cell period, even though its perfectly clear from the OpenGL viewer that this is not the case (is this a bug?). For now I have set the allowBiggerThanPeriod flag to true. I have also looked at this post: https://answers.launchpad.net/yade/+question/228886 but I don't really understand how the kinetic energy problem was solved. Thanks, Nolan CODE: from yade import pack,plot,export r=2.12e-1 p=0.70 R=2.63155 t=0.065 print 'r = ',r print 'R = ',R SC=1e-6 print 'SC = ',SC O.dt=5e-7 print 'O.dt = ', O.dt O.materials.append(FrictMat(young=1e9,poisson=.35,frictionAngle=radians(0),density=1e9,label='spheres')) sp=pack.SpherePack() sp.makeCloud((0,0,0),(R*SC,R*SC,R*SC),rMean=r*SC,rRelFuzz=0,periodic=True) sphVol=sp.relDensity()*(R*SC)**3 tStrain=-1 StrainR=0.1 sp.toSimulation() O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb()],verletDist=0,allowBiggerThanPeriod=True), InteractionLoop([Ig2_Sphere_Sphere_ScGeom()],[Ip2_FrictMat_FrictMat_FrictPhys()],[Law2_ScGeom_FrictPhys_CundallStrack()]), NewtonIntegrator(damping=0.95), PeriTriaxController(goal=(tStrain,tStrain,tStrain),stressMask=0b000,maxUnbalanced=1e-10,globUpdate=5, doneHook='reachedTargetStrain()',label='triax',maxStrainRate=(StrainR,StrainR,StrainR),dynCell=True), PyRunner(command='checkPorosity(REVl,sphVol)',iterPeriod=50) ] O.run() def reachedTargetStrain(): print 'Reached Target Strain' O.pause() def checkPorosity(REVl,sphVol): REVl = O.cell.size[0] REVvol = REVl**3 por = sphVol/REVvol #print 'porosity = ',por if(por > p): print 'Target porosity reached' print 'Finished Simulation' print 'porosity = ',por print 'REVl = ', REVl O.pause() -- You received this question notification because you are a member of yade-users, which 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

