← Back to team overview

yade-users team mailing list archive

[Question #701266]: some interactions (sphere-box(width=Period width) are not detected

 

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.