Sphere + facet collision problem

Asked by Martin Nie

Hi,
if I run the simulation, the spheres seem to cross the cauldron and disappear or they're jumping very fast away. I if I change the material to ViscElMat and change the appropriate Law, the spheres don't cross the cauldron's surface (https://github.com/yade/trunk/blob/master/examples/baraban/baraban.py). I would like to know, how to stop this behaviour regarding the material "FrictMat". Am I using wrong laws or is the matter with importing .stl- files?

Here's my Code:

from yade import pack, plot, qt
from yade import ymport

facetMat=O.materials.append(FrictMat(density=7850,young=210e9,poisson=.25))
sphereMat=O.materials.append(FrictMat(density=7850,young=210e9,poisson=.25))
fctIds=O.bodies.append(ymport.stl('cauldron',color=(1,1,1),wire=True,fixed=True))

sphereRadius = .02
nbSpheres = (2,2,2)
for i in xrange(nbSpheres[0]):
    for j in xrange(nbSpheres[1]):
        for k in xrange(nbSpheres[2]):
            x = (i*2 - nbSpheres[0])*sphereRadius*1.15
            y = (j*2 - nbSpheres[1])*sphereRadius*1.15
            z = (k*2 - nbSpheres[2])*sphereRadius*1.15
            s=sphere([x,y,z+.2],sphereRadius,color=[1,1,6])
            O.bodies.append(s)

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
   InteractionLoop(
      # handle sphere+sphere and facet+sphere collisions
      [Ig2_Sphere_Sphere_L3Geom(),Ig2_Facet_Sphere_L3Geom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_L3Geom_FrictPhys_ElPerfPl()]

   ),
   GravityEngine(gravity=(0,0,-9.81)),
   NewtonIntegrator(damping=0.5),

   qt.SnapshotEngine(fileBase='3d-',iterPeriod=5,label='snapshot'),
   PyRunner(command='finish()',iterPeriod=20000)

]
O.dt=.9*utils.PWaveTimeStep()

qt.View()

def finish():
 utils.makeVideo(snapshot.snapshots, 'simple_steel_collision.mpeg', fps=25, bps=10000)
 O.pause()

rr=yade.qr.Renderer()
rr.shape=False
rr.IntrPhys=True

Best regards!
Thanks

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Jan Stránský (honzik) said :
#1

Hi Martin,
try to decrease the time step and let us know if it helped or not. If not,
we will find better solution :-)
cheers
Jan

2013/11/27 Martin Nie <email address hidden>

> New question #239901 on Yade:
> https://answers.launchpad.net/yade/+question/239901
>
> Hi,
> if I run the simulation, the spheres seem to cross the cauldron or they're
> jumping very fast away. I if I change the material to ViscElMat and change
> the appropriate Law, the spheres don't cross the cauldron's surface. I
> would like to know, how to stop this behaviour regarding the material
> "FrictMat". Am I using the wrong laws or is the matter with importing a
> .stl- file?
> Here's my Code:
>
> from yade import pack, plot, qt
> from yade import ymport
>
> facetMat=O.materials.append(FrictMat(density=7850,young=210e9,poisson=.25))
>
> sphereMat=O.materials.append(FrictMat(density=7850,young=210e9,poisson=.25))
>
> fctIds=O.bodies.append(ymport.stl('cauldron',color=(1,1,1),wire=True,fixed=True))
>
> sphereRadius = .02
> nbSpheres = (2,2,2)
> for i in xrange(nbSpheres[0]):
> for j in xrange(nbSpheres[1]):
> for k in xrange(nbSpheres[2]):
> x = (i*2 - nbSpheres[0])*sphereRadius*1.15
> y = (j*2 - nbSpheres[1])*sphereRadius*1.15
> z = (k*2 - nbSpheres[2])*sphereRadius*1.15
> s=sphere([x,y,z+.2],sphereRadius,color=[1,1,6])
> O.bodies.append(s)
>
>
> O.engines=[
> ForceResetter(),
> InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
> InteractionLoop(
> # handle sphere+sphere and facet+sphere collisions
> [Ig2_Sphere_Sphere_L3Geom(),Ig2_Facet_Sphere_L3Geom()],
> [Ip2_FrictMat_FrictMat_FrictPhys()],
> [Law2_L3Geom_FrictPhys_ElPerfPl()]
>
>
> ),
> GravityEngine(gravity=(0,0,-9.81)),
> NewtonIntegrator(damping=0.5),
>
> qt.SnapshotEngine(fileBase='3d-',iterPeriod=5,label='snapshot'),
> PyRunner(command='finish()',iterPeriod=20000)
>
> ]
> O.dt=.9*utils.PWaveTimeStep()
>
> qt.View()
>
> def finish():
> utils.makeVideo(snapshot.snapshots, 'simple_steel_collision.mpeg',
> fps=25, bps=10000)
> O.pause()
>
>
> rr=yade.qr.Renderer()
> rr.shape=False
> rr.IntrPhys=True
>
> Best regards!
> Thanks
>
>
> --
> 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 address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

Can you help with this problem?

Provide an answer of your own, or ask Martin Nie for more information if necessary.

To post a message you must log in.