yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #12488
Re: [Question #290950]: Particles crossing the wall
Question #290950 on Yade changed:
https://answers.launchpad.net/yade/+question/290950
Status: Answered => Open
VG is still having a problem:
Below is one minimal working example which shows such problem. I am trying to compress an assembly of particles between the two plates. The top plate is subjected to a constant force and a velocity in lateral direction to induce shear. The top plate doesn't seem to be interacting with the system and it is just crossing all the particles and bottom plate. Can someone please suggest what am I doing wrong here or if there is a workaround ?
I am using Yade 1.07.0 on Ubuntu 14.04.
# Generate a periodic cell with few super-particles.
# Each superparticle consists of smaller sub-particles of 75 microns
# bonded with cohesive bonds.
from yade import pack,qt,plot,utils,export,ymport
from math import *
from pylab import rand
import datetime
import os,shutil
#############################################################################
# Set up run
#############################################################################
run_name="PeriodicCohesive"
data_root_dir="."
if not os.path.exists(data_root_dir):
print "The data root directory you specified:"
print data_root_dir
print "does not exist. Exiting..."
exit()
timestamp=datetime.datetime.now().strftime("%Y.%m.%d-%H%M%S")
run_dir_name=timestamp+'-'+run_name
data_dir_path=os.path.join(data_root_dir,run_dir_name)
if not os.path.exists(data_dir_path):
os.makedirs(data_dir_path)
else:
print("Something is really wrong if you get this message. Exiting...\n")
exit()
run_name_base_path=os.path.join(data_dir_path,run_name+'-')
# opts.script is defined in yade, which inserts the script file (e.g.
# this file) into itself.
this_script=os.path.abspath(opts.script)
shutil.copy(this_script,data_dir_path)
#############################################################################
# Materials
#############################################################################
plate_material=CohFrictMat(
young=200e9
,poisson=0.3
,density=8000
,frictionAngle=radians(30)
,normalCohesion=1e10
,shearCohesion=1e10
,momentRotationLaw=True
,label='plate_mat')
O.materials.append(plate_material)
sample_material=CohFrictMat(
young=4e9
,poisson=0.25
,density=1400
,frictionAngle=radians(30)
,normalCohesion=1e8*1.2
,shearCohesion=.4e8*1.2
,momentRotationLaw=True
,label='sample_mat')
O.materials.append(sample_material)
#############################################################################
# Component dimensions and operating condition
#############################################################################
# Granular material dimension
sample_diameter=2e-4
sample_radius=sample_diameter/2.0
# Sub-particle dimension
particle_diameter=74.e-6
particle_radius=particle_diameter/2.
#############################################################################
# grinding plate dimension
#############################################################################
rotvel=2./3.*pi*(1.5+0.5)*.254
#############################################################################
# Periodic Geometry
#############################################################################
# Set up periodic boundary conditions
O.periodic=True
xExt=4*sample_diameter
yExt=3.*sample_diameter*2 #to block the periodicity in y direction
zExt=xExt
xLim=xExt
yLim=yExt/4
zLim=zExt
O.cell.hSize=Matrix3(
xExt, 0, 0,
0, yExt, 0,
0, 0, zExt)
length=xExt
height=yExt
width=zExt
# Top and bottom plate thickness
thickness=0.1*height
#########
# Bottom
#########
bottom=box(
center=(length/2.0,yLim - thickness/2.0,width/2.0)
,extents=(4*length,thickness/2.0,width)
,wire=False
,material='plate_mat'
)
O.bodies.append(bottom)
O.bodies[0].state.blockedDOFs='xyzXYZ'
#############################################################################
# Particle Packing
#############################################################################
min_corner= (0,yLim,0)
max_corner= (xLim, yExt-yLim, zLim)
sp=pack.SpherePack()
sp.makeCloud( min_corner,max_corner, rMean=sample_radius, periodic=False)
print "Generated ",len(sp)," aggregates"
###########################################
# Sample
###########################################
for s in sp:
sphere=pack.inSphere((s[0][0],s[0][1],s[0][2]),s[1])
sp1=pack.randomDensePack(
sphere
,spheresInCell=2000
,radius=particle_radius
,memoizeDb='/tmp/triaxPackCache.sqlite'
,returnSpherePack=True
)
sp1.toSimulation(material='sample_mat',color=(0.9,0.8,0.6))
print 'Generated ',len(sp1),' particles'
Gl1_Sphere(stripes=True)
#########
# Top
#########
top=box(
center=(length/2.0,yExt - yLim + thickness/2.0,width/2.0)
,extents=(4*length,thickness/2.0,width)
,wire=False
,material='plate_mat'
)
top_id=O.bodies.append(top)
O.bodies[top_id].state.blockedDOFs='xzXYZ'
plate_downforce=-0.0036
O.forces.addF(top_id,(0,plate_downforce,0),permanent=True)
O.bodies[top_id].state.vel[0]= rotvel
#############################################################################
# Run the simulation
#############################################################################
O.dt=0.5*PWaveTimeStep()
O.engines=[
ForceResetter(),
InsertionSortCollider([
Bo1_Sphere_Aabb()
,Bo1_Box_Aabb()
], allowBiggerThanPeriod=True
),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D()
,Ig2_Box_Sphere_ScGeom6D()
],
[
Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,label="cohesiveIp")
],
[
Law2_ScGeom6D_CohFrictPhys_CohesionMoment()
]
), # End InteractionLoop
NewtonIntegrator(damping=0.8,gravity=(0.,0.,0.)),
]
O.saveTmp()
--
You received this question notification because your team yade-users is
an answer contact for Yade.