yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #24837
Re: [Question #695126]: Cylinder powder compaction
Question #695126 on Yade changed:
https://answers.launchpad.net/yade/+question/695126
Karol Brzezinski proposed the following answer:
Hi,
the first thing is, you need to add "Bo1_Wall_Aabb()" and
"Bo1_Facet_Aabb()" in the collider, so the balls could interact with
walls and facets. The same story with "Ig2_Wall_Sphere_ScGeom(),
Ig2_Facet_Sphere_ScGeom()" in the interaction loop.
I erased the box from your example, and added one wall at the top of
your cloud. It moves down and pushes the balls. The rest is up to you.
Please find working code below.
Cheers,
Karol
##############################
from __future__ import print_function
sigmaIso=-1e5
#import matplotlib
#matplotlib.use('Agg')
# generate loose packing
from yade import pack, qt, plot
from yade import utils
sample_material=CohFrictMat(
young=4e9
,poisson=1
,density=1400
,frictionAngle=radians(30)
,isCohesive=True
,normalCohesion=1e8*1.2
,shearCohesion=.4e8*1.2
,momentRotationLaw=True
,label='sample_mat')
O.materials.append(sample_material)
#DATOS PROBETA
radius_tablet = 0.015 #1.5 cm
height_tablet = 0.02 #2 cm
radius_particle = 0.001 #1 mm
radius_std = 0.0005 #0.5 mm
# randomDensePack packing
#pred = pack.inCylinder((0,0,0),(0,0,height_tablet),radius=radius_tablet)
#assembly = pack.randomDensePack(pred,radius=radius_particle,rRelFuzz=0,returnSpherePack=True)
#assembly.toSimulation(material='sample_mat')
sp = pack.SpherePack()
sp.makeCloud((0,0,0),(2.1,2.1,2.1),rMean=.1,num=500)
#cyl = pack.inCylinder((1,1,0),(1,1,2),1)
#sp = pack.filterSpherePack(cyl,sp,True,material=sample_material)
sp.toSimulation(material=sample_material)
id_wall = O.materials.append(FrictMat(density=10000,young=1e11,poisson=.5,frictionAngle=atan(0.5),label="wallmat"))
O.materials[id_wall]
### WALLS
O.bodies.append(yade.geom.facetCylinder((1,1,1),radius=1.6,height=3,segmentsNumber=20,wallMask=6,material=id_wall))
#find max Z coordinate of your cloud
max_z = aabbExtrema()[1][2]
# add top wall
pushWallId = O.bodies.append(wall((0,0,max_z ), 2, material = O.materials[id_wall])) #
#set vertical downward speed to the wall
O.bodies[pushWallId].state.vel = (0,0,-1)
################### ENGINES
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Wall_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(damping=.2),
]
O.dt=.5*PWaveTimeStep()
--
You received this question notification because your team yade-users is
an answer contact for Yade.