New question #678816 on Yade: https://answers.launchpad.net/yade/+question/678816
hello i have created a box by yade.utils.facet, but the particle always get through the boundary consist of facet and only a part of particle collision with the facet. i thought it maybe bacouse i set the value of timestep is too high, so i change it to a more low value, but it did not work. what confused me is that when i change the boundary to wall, everything is just fine. here is my code: from yade import polyhedra_utils,pack,plot,utils import random m = PolyhedraMat() m.density = 2600 # kg/m^3 m.young = 1E6 # Pa m.poisson = 20000 / 1E6 m.frictionAngle = 0.6 # rad\ v1=((0,0,0),(0,0,10),(20,0,10)) v2=((0,0,0),(20,0,0),(20,0,10)) v3=((20,0,0),(20,10,10),(20,10,0)) v4=((20,0,0),(20,10,10),(20,0,10)) v5=((20,10,0),(0,10,10),(20,10,10)) v6=((20,10,0),(0,10,10),(0,10,0)) v7=((0,0,0),(0,10,10),(0,0,10)) v8=((0,0,0),(0,10,10),(0,10,0)) v9=((0,0,0),(20,10,0),(0,10,0)) v10=((0,0,0),(20,10,0),(20,0,0)) O.bodies.append(utils.facet(v1,material=m)) O.bodies.append(utils.facet(v2,material=m)) O.bodies.append(utils.facet(v3,material=m)) O.bodies.append(utils.facet(v4,material=m)) O.bodies.append(utils.facet(v5,material=m)) O.bodies.append(utils.facet(v6,material=m)) O.bodies.append(utils.facet(v7,material=m)) O.bodies.append(utils.facet(v8,material=m)) O.bodies.append(utils.facet(v9,material=m)) O.bodies.append(utils.facet(v10,material=m)) O.bodies.append(utils.wall(10, axis=0, sense=1, material=m)) O.bodies.append(utils.wall(-2, axis=2, sense=1, material=m)) polyhedra_utils.fillBox((0,0,0),(10,10,40),m,seed=1) O.engines = [ ForceResetter(), InsertionSortCollider([Bo1_Polyhedra_Aabb(), Bo1_Wall_Aabb(), Bo1_Facet_Aabb()]), InteractionLoop( [Ig2_Wall_Polyhedra_PolyhedraGeom(), Ig2_Polyhedra_Polyhedra_PolyhedraGeom(), Ig2_Facet_Polyhedra_PolyhedraGeom()], [Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys()], # collision "physics" [Law2_PolyhedraGeom_PolyhedraPhys_Volumetric()] # contact law -- apply forces ), # GravityEngine(gravity=(0,0,-9.81)), NewtonIntegrator(damping=0.5, gravity=(0, 0, -9.81)), PyRunner(command='checkUnbalanced()', realPeriod=3, label='checker') ] O.dt=1e-2 # 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.bodies.erase(1) O.run() #plot.saveDataTxt('bbb.txt.bz2') # plot.saveGnuplot('bbb') is also possible # collect history of data which will be plotted def addPlotData(): # each item is given a names, by which it can be the unsed in plot.plots # the **O.energy converts dictionary-like O.energy to plot.addData arguments plot.addData(i=O.iter,unbalanced=unbalancedForce(),**O.energy) # define how to plot data: 'i' (step number) on the x-axis, unbalanced force # on the left y-axis, all energies on the right y-axis # (O.energy.keys is function which will be called to get all defined energies) # None separates left and right y-axis plot.plots={'i':('unbalanced',None,O.energy.keys)} # show the plot on the screen, and update while the simulation runs plot.plot() O.saveTmp() i would appreciate if you can help me -- 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