New question #701266 on Yade:
https://answers.launchpad.net/yade/+question/701266

Hi everyone,
I am modelling a sand_pipe interaction problem, and I put my sample in a rigid 
container with periodic boundaries on the front and the back side. The problem 
is that some particles will cross rigid boundaries (not real rigid, fixed boxes 
are used), while the interaction between spheres and pipe (cylinderConnection) 
is fine. Same issue I find from the Bruno's example 'PeriodicSandPile.py' 
(https://gitlab.com/yade-dev/trunk/blob/master/examples/PeriodicBoundaries/periodicSandPile.py).
 Besides, I have not observed particles crossing the rigid boundary when the 
width of box is smaller than width of the periodic cell and no such issue 
occurs if the scene is not periodic. In my example, allowBiggerThanPeriod=True; 
 boxes , cylinder and periodic cell have the same dimensions in the cylinder 
diameter direction. Can anyone give me some ideas about how to fix this issue? 

related old questions: https://answers.launchpad.net/yade/+question/246392
related bugs: https://bugs.launchpad.net/yade/+bug/1112763
yade version: yade 20220218-6333~d331682~focal1
system: Ubuntu 20.04.3 LTS

 My simplified example as below:
# encoding: utf-8

from yade import pack, qt
from yade import polyhedra_utils
from yade.gridpfacet import *

E=1e8
v=0.3
angle=30
beta=0.5
eta=0.5
rho=2650

O.engines=[
   ForceResetter(),
   
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_GridConnection_Aabb()],allowBiggerThanPeriod=True),
   InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D(),
         Ig2_GridNode_GridNode_GridNodeGeom6D(),
         Ig2_Sphere_GridConnection_ScGridCoGeom(),
         Ig2_GridConnection_GridConnection_GridCoGridCoGeom()
        ],
                [Ip2_FrictMat_FrictMat_FrictPhys(),
         Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True, 
setCohesionOnNewContacts=False)], 
                [Law2_ScGridCoGeom_CohFrictPhys_CundallStrack(), 
         Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), 
         #Law2_ScGeom_FrictPhys_CundallStrack(),
         Law2_ScGeom6D_CohFrictPhys_CohesionMoment(
                   always_use_moment_law=True,
                   useIncrementalForm=True
                )], 
   ),
   GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.2),
   NewtonIntegrator(gravity=(0,0,-9.81),damping=0.2),
] 

spMat = 
O.materials.append(CohFrictMat(young=E,poisson=v,frictionAngle=radians(angle),density=rho,isCohesive=False,alphaKr=beta,alphaKtw=beta,momentRotationLaw=True,etaRoll=eta,etaTwist=eta))
wallMat = 
O.materials.append(CohFrictMat(young=E,poisson=v,frictionAngle=radians(0),density=rho,isCohesive=False,alphaKr=0,alphaKtw=0,momentRotationLaw=False,etaRoll=0,etaTwist=0))
 
extcylMat = 
O.materials.append(CohFrictMat(young=E,poisson=v,frictionAngle=radians(0),density=rho,isCohesive=False,alphaKr=beta,alphaKtw=beta,momentRotationLaw=True,etaRoll=eta,etaTwist=eta))
 
intcylMat = 
O.materials.append(CohFrictMat(young=E,poisson=v,frictionAngle=radians(0),density=rho,normalCohesion=-1,shearCohesion=-1,momentRotationLaw=True))
 

O.periodic = True
x=0.01
y=0.02
z=0.02
O.cell.setBox(x,y*3,z*3)

sp=pack.SpherePack()
mn,mx=Vector3(0,y,z+0.006),Vector3(x,y*2,z*2)                                   
                                                  
sp.makeCloud(mn,mx,rMean=.001,rRelFuzz=0,seed=1)
sphereIds=sp.toSimulation(material=spMat)
print(len(sp))

left_wall=O.bodies.append(utils.box((x/2,y,z*1.5),(x/2,0,z/2),wire=True,fixed=True,color=[1,0,0],material=wallMat))
right_wall=O.bodies.append(utils.box((x/2,y*2,z*1.5),(x/2,0,z/2),wire=True,fixed=True,color=[1,0,0],material=wallMat))
bottom_wall=O.bodies.append(utils.box((x/2,y*1.5,z),(x/2,y/2,0),wire=True,fixed=True,color=[1,0,0],material=wallMat))
#front_wall=O.bodies.append(utils.box((x,y*1.5,z*1.5),(0,y/2,z/2),wire=True,fixed=True,color=[1,0,0],material=wallMat))
#behind_wall=O.bodies.append(utils.box((0,y*1.5,z*1.5),(0,y/2,z/2),wire=True,fixed=True,color=[1,0,0],material=wallMat))

D=0.005
nodesIds=[]
cylIds=[]
vertices=[]
vertices.append([0,y*1.5,z+0.6*D])
vertices.append([x/5,y*1.5,z+0.6*D])
vertices.append([x*2/5,y*1.5,z+0.6*D])
vertices.append([x*3/5,y*1.5,z+0.6*D])
vertices.append([x*4/5,y*1.5,z+0.6*D])
vertices.append([x,y*1.5,z+0.6*D])
cylinderConnection(vertices,radius=0.5*D,fixed = True,nodesIds=nodesIds, 
cylIds=cylIds, intMaterial=intcylMat, extMaterial=extcylMat)   

qt.View()

O.saveTmp()




-- 
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

Reply via email to