← Back to team overview

yade-users team mailing list archive

Re: [Question #677977]: facet-polyhedra collision din not work

 

Question #677977 on Yade changed:
https://answers.launchpad.net/yade/+question/677977

    Status: Answered => Open

lip is still having a problem:
thank you for your advice, it do solve my problem. but i still have a
problem. When translate the facetBox to wall, the polyhedra contact the
wall and then stoped, my code is as below:

from yade import polyhedra_utils,pack,plot
import random

m = PolyhedraMat()
m.density = 2600  # kg/m^3
m.young = 1E6  # Pa
m.poisson = 20000 / 1E6
m.frictionAngle = 0.6  # rad

O.bodies.append(utils.wall(-1, axis=2, sense=0, material=m))
# generate randomly spheres with uniform radius distribution
polyhedra_utils.fillBox((0,0,0),(10,10,10),m,seed=1)

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Polyhedra_Aabb(),Bo1_Wall_Aabb(),Bo1_Facet_Aabb()]),
   InteractionLoop(
      # handle sphere+sphere and facet+sphere collisions
      [Ig2_Wall_Polyhedra_PolyhedraGeom(),Ig2_Polyhedra_Polyhedra_PolyhedraGeom(),Ig2_Facet_Polyhedra_PolyhedraGeom()],
      [Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys()],
      [Law2_PolyhedraGeom_PolyhedraPhys_Volumetric()]
   ),
   NewtonIntegrator(gravity=(0,0,-2.81),damping=0.4),
   # call the checkUnbalanced function (defined below) every 2 seconds
   PyRunner(command='checkUnbalanced()',realPeriod=2),
   # call the addPlotData function every 200 steps
   PyRunner(command='addPlotData()',iterPeriod=100)
]
O.dt=1e-3

# 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()
      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()
##end
i would appreciate it if you can help me.

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