← Back to team overview

yade-users team mailing list archive

[Question #652282]: Why do the particles go up when all the forces(including gravity) are applied in the downward direction?

 

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

I have constructed a rectangular box of particles with walls surrounding it and opened at the top. I applied some downward force on a facetCylinder with wallMask=2(i.e a circular plate) kept on the top of the box. When the facetCylinder reaches the bottom of the box, all the particles in the box move up and come out of the box. Here's my code:

from yade import pack
from yade import ymport

def createSandBox(length, height, width, radSpheres, variance, color):
	boxpred = pack.inAlignedBox((0,0.5,-0.5),(length,height,width))	
	packing = pack.randomDensePack(boxpred, spheresInCell = 250, radius=radSpheres, rRelFuzz=variance, color=color, returnSpherePack = False)
	return O.bodies.append(packing)

idBox = createSandBox(2,1.5,0.5,1e-1,0,(1,0.917,0.659))
mWalls = O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0))

idBoxWalls = O.bodies.append(geom.facetBox(center,extents,orientation=Quaternion((0,0,0),0),wallMask=wMask, color=co, material=mWalls, wire=True))
idCylWalls = O.bodies.append(geom.facetCylinder((1,1,-0.25),0.3,0.5,wallMask=2,material=mWalls,segmentsNumber=20,color=co))

o.engines = [
  ForceResetter(),
  InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()],verletDist=1.0,label='collider'),
  InteractionLoop(
    [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
    [Ip2_FrictMat_FrictMat_FrictPhys()],
    [Law2_ScGeom_FrictPhys_CundallStrack()],
  ),
  NewtonIntegrator(damping=0,gravity=[0,0,9.81],label='newtonInt'),
  TranslationEngine(translationAxis=[0,0,1],velocity=3.0,ids=idCylWalls, label='translat'),
  CombinedKinematicEngine(ids=idCylWalls,label='combEngine',dead=True) + 
    ServoPIDController(axis=[0,0,1],maxVelocity=5.0,iterPeriod=1000,ids=idCylWalls,target=1.0e7,kP=1.0,kI=1.0,kD=1.0) + 
    RotationEngine(rotationAxis=(0,0,1), angularVelocity=10.0, rotateAroundZero=True, zeroPoint=(0,0,0)),
  #PyRunner(command='addPlotData()',iterPeriod=100, label='graph'),
  PyRunner(command='switchTranslationEngine()',iterPeriod=45000, nDo = 2, label='switchEng'),
]
O.step()
qt.View()

def switchTranslationEngine():
  print "\nSwitch from TranslationEngine engine to ServoPIDController"
  translat.dead = True
  combEngine.dead = False

I want the particles to only redistribute. And the ones at the top to move up by some distance. 


-- 
You received this question notification because your team yade-users is
an answer contact for Yade.