Yet Another Dynamic Engine

Spheres go outside box

Asked by Nait on 2012-10-27

Hi,

I have encountered something strange when conducting gravity deposition: some particles will go outside the box.
Can you give some suggestions for solving this problem?

Thanks.

Nait

My script is as following:

####SCRIPT####

from yade import pack

rm = 0.8
rr = 0.6
compFricDegree = 30
finalFricDegree = 30

stabilityThreshold=0.01

young=5e6
mn,mx=Vector3(0,0,0),Vector3(20,80,200)
mxp = Vector3(20,80,150)
mnp = Vector3(20,80,90)

thick = 0.01
targetporosity = 0.5

O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))

walls=utils.aabbWalls([mn,mx],thickness=thick,material='walls')
wallIds=O.bodies.append(walls)

sp=pack.SpherePack()
sp.makeCloud(mn,mxp,rMean=rm,rRelFuzz=rr,porosity=targetporosity)

O.bodies.append([utils.sphere(center,rad,material='spheres') for center,rad in sp])

O.dt=.5*utils.PWaveTimeStep() # initial timestep, to not explode right away
O.usesTimeStepper=True

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
   InteractionLoop(
      # handle sphere+sphere and facet+sphere collisions
      [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_ScGeom_FrictPhys_CundallStrack()]
   ),
   GravityEngine(gravity=(0,0,-9.81)),
   NewtonIntegrator(damping=0.6),
]

O.run(2000, True)

while 1:
  O.run(500, True)
  unb=unbalancedForce()
  print 'unbalanced force:',unb
  if unb<0.01:
    break

yade.qt.Controller(), yade.qt.View()

####END OF SCRIPT####

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
2012-10-27
Last query:
2012-10-27
Last reply:
2012-10-27
Best Jan Stránský (honzik) said : #1

Hi Nait,

One solution could be to decrease time step. Your material has very low
stiffness, so the time step computed from stiffness is too high to
represent correctly the "collision" time step between spheres and box. Or
increase your stiffness (maybe this is even better).

Let us know if this was the issue :-)

Good luck
Jan
Dne 27.10.2012 12:16 "Nait" <email address hidden>
napsal(a):

> New question #212480 on Yade:
> https://answers.launchpad.net/yade/+question/212480
>
> Hi,
>
> I have encountered something strange when conducting gravity deposition:
> some particles will go outside the box.
> Can you give some suggestions for solving this problem?
>
> Thanks.
>
> Nait
>
>
> My script is as following:
>
> ####SCRIPT####
>
> from yade import pack
>
>
> rm = 0.8
> rr = 0.6
> compFricDegree = 30
> finalFricDegree = 30
>
> stabilityThreshold=0.01
>
> young=5e6
> mn,mx=Vector3(0,0,0),Vector3(20,80,200)
> mxp = Vector3(20,80,150)
> mnp = Vector3(20,80,90)
>
> thick = 0.01
> targetporosity = 0.5
>
>
> O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
>
> O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))
>
>
> walls=utils.aabbWalls([mn,mx],thickness=thick,material='walls')
> wallIds=O.bodies.append(walls)
>
>
> sp=pack.SpherePack()
> sp.makeCloud(mn,mxp,rMean=rm,rRelFuzz=rr,porosity=targetporosity)
>
>
> O.bodies.append([utils.sphere(center,rad,material='spheres') for
> center,rad in sp])
>
>
> O.dt=.5*utils.PWaveTimeStep() # initial timestep, to not explode right away
> O.usesTimeStepper=True
>
>
> O.engines=[
> ForceResetter(),
> InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
> InteractionLoop(
> # handle sphere+sphere and facet+sphere collisions
> [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
> [Ip2_FrictMat_FrictMat_FrictPhys()],
> [Law2_ScGeom_FrictPhys_CundallStrack()]
> ),
> GravityEngine(gravity=(0,0,-9.81)),
> NewtonIntegrator(damping=0.6),
> ]
>
> O.run(2000, True)
>
> while 1:
> O.run(500, True)
> unb=unbalancedForce()
> print 'unbalanced force:',unb
> if unb<0.01:
> break
>
> yade.qt.Controller(), yade.qt.View()
>
> ####END OF SCRIPT####
>
>
>
> --
> 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
>

Nait (xuhero1989) said : #2

Thanks Jan Stránský, that solved my question.

Nait (xuhero1989) said : #3

To Jan,

This is really the issue. The problem is solved when I change the Young's modulus to 20e9. Thank you again for solving my problem.

Nait