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