Interaction detection problem during periodic simulation

Asked by Ferenc Safranyik

Hi All,

I have a problem during discrete element modeling with YADE. I want to generate a pack of spherical particles in a box with frictional material model: It is working very well, no problem. With the same settings (material properties, time step ) I want to replace two parallel side of the box with periodic boundary. The definition of the periodic cell is ok, but in this case some of the spherical particles fall through the non-periodic facets of the box. I tried to change the time step, the parameters of the interaction detection, but the reason of this problem was not found.

Here is the code with periodic boundary conditions:

from yade import plot
from yade import pack, export
from yade import qt
from yade import ymport
qt.View()
import random
import time

densT = 964
ET = 6e8
nuT = .35
frictAngT = .5
eRoll = .01

EA = 2.1e8
nuA = .3
densA = 7800
frictAngA = .52

futoelem = O.materials.append(FrictMat(young=ET,poisson=nuT,density=densT,frictionAngle=frictAngT,label='futoelem'))
acel = O.materials.append(FrictMat(young=EA,poisson=nuA,density=densA,frictionAngle=frictAngA,label='acel'))
seged = O.materials.append(FrictMat(young=1000,poisson=.3,density=1000,frictionAngle=0.52,label='seged'))

O.periodic = True
O.cell.setBox((6,.1,4.5))

center = (.3,.05,1.5)

doboz = O.bodies.append(geom.utils.facetBox(center,(.1,.05,.5),wallMask=35,material='acel',wire=False,color=(.5,.5,.5)))
garat_bal01 = O.bodies.append(geom.utils.facet(((.2,0,1),(.2,.1,1),(.25,0,.5)),material='acel',wire=False,color=(.5,.5,.5)))
garat_bal02 = O.bodies.append(geom.utils.facet(((.2,.1,1),(.25,0,.5),(.25,.1,.5)),material='acel',wire=False,color=(.5,.5,.5)))

garat_jobb01 = O.bodies.append(geom.utils.facet(((.4,0,1),(.35,0,.5),(.35,.1,.5)),material='acel',wire=False,color=(.5,.5,.5)))
garat_bal02 = O.bodies.append(geom.utils.facet(((.4,0,1),(.4,.1,1),(.35,.1,.5)),material='acel',wire=False,color=(.5,.5,.5)))

sugar = .008
sugar2 = .015

felho = pack.SpherePack()
felho.makeCloud((.225,.025,1.525),(.375,.075,1.975),rMean=sugar)
particles = O.bodies.append([sphere(c,r,material='futoelem',color=(0,1,0)) for c,r in felho])

O.engines=[
        ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.3),Bo1_Facet_Aabb()],allowBiggerThanPeriod=True),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D(),Ig2_Facet_Sphere_ScGeom6D()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_ScGeom_FrictPhys_CundallStrack()]
        ),
        NewtonIntegrator(damping=.6,gravity=(0,0,-9.81),label='newton'),
]

O.dt=.15*utils.PWaveTimeStep()

Thanks for every help!

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
Bruno Chareyre (bruno-chareyre) said :
#1

Please see https://yade-dem.org/wiki/Howtoask, especially point 3.

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#2

Doesn't work for me. Which version are you using?

bchareyre@dt-rv020:~/yade/yade/bin$ yadedaily test.py
Welcome to Yade 1.14.0-54-f44c022~trusty
TCP python prompt on localhost:9000, auth cookie `ucdasy'
XMLRPC info provider on http://localhost:21000
Running script test.py
/usr/lib/x86_64-linux-gnu/yadedaily/py/yade/utils.py:423: UserWarning: Function utils.facetBox is deprecated, use geom.facetBox instead.
  _deprecatedUtilsFunction('facetBox','geom.facetBox')
Traceback (most recent call last):
  File "/usr/bin/yadedaily", line 182, in runScript
    execfile(script,globals())
  File "test.py", line 27, in <module>
    doboz = O.bodies.append(geom.utils.facetBox(center,(.1,.05,.5),wallMask=35,material='acel',wire=False,color=(.5,.5,.5)))
  File "/usr/lib/x86_64-linux-gnu/yadedaily/py/yade/utils.py", line 424, in facetBox
    return geom.facetBox(*args,**kw)
  File "/usr/lib/x86_64-linux-gnu/yadedaily/py/yade/geom.py", line 25, in facetBox
    return facetParallelepiped(center=center, extents=extents, height=extents[2], orientation=orientation, wallMask=wallMask, **kw)
  File "/usr/lib/x86_64-linux-gnu/yadedaily/py/yade/geom.py", line 73, in facetParallelepiped
    A=orientation*Vector3(mn[0],mn[1],mn[2])+center
TypeError: unsupported operand type(s) for +: 'Vector3' and 'builtin_function_or_method'

Revision history for this message
Ferenc Safranyik (safranyikf) said :
#3

Dear Bruno,

sorry I forget a constant to define facetbox...

Thanks for your help!

Can you help with this problem?

Provide an answer of your own, or ask Ferenc Safranyik for more information if necessary.

To post a message you must log in.