← Back to team overview

yade-users team mailing list archive

[Question #253399]: bug when a sphere cross 10 times the periodic cell

 

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

Hi all, 

I am simulating flows of particles due to an external fluid force. Then, the phenomenon is dynamic, I use periodic boundary condition in the streamwise direction and I have particles with velocity as high as 0.5m/s.

I noticed a problem of stability when considering small periodic cell. After some times to isolate the problem, I found out that the problem arises when a particle travel for more than 10 times the size of the periodic cell. This does not seem to depend on the contact law, neither on the time step or the velocity of the particle, but only on the number of time the particle is crossing the periodic cell. I am not sure but I think this problem was not present some times ago. 

Have you already heard about such a bug ? What can I do to fix that ? 
It is a real problem for me as I would be interested to study the effect of the reduction of the size of the periodic cell and reduce it if possible. 

Raphaël 

I am using Ubuntu 12.04 and yade daily 1.10.0-72-d9ab58c~precise 
Here is a simple  script to reproduce the bug :

O.dt = 1e-7
lengthCell = 10	#Streamwise length of the periodic cell in diameter
slope = 0.5	#Angle of the slope in radian

#Particles parameters
diameterPart = 6e-3	#Diameter of the particles, in meter, 6mm here.
densPart = 2500	#density of the particles, in kg/m3
#Contact law
cnPart = 0.0	#Normal viscous damping coefficient.
knPart = 1e4 	#Normal stiffness of the particle
partFrictAngle = 0.0 #28 *pi/180 #friction angle of the particles, in radian
csPart = 0   #tangential viscous damping coefficient (=0)
ksPart = 0.5*knPart #tangential stiffness of the contact

##Definition of the materials
O.materials.append(ViscElMat(cn=cnPart, cs=csPart, kn=knPart, ks=ksPart, density=densPart, frictionAngle=partFrictAngle, label='sphereMat'))

#
#Geometrical configuration
#
length = lengthCell*diameterPart
width = length/2.0
height = length/3.0
g = Vector3(9.81*sin(slope),0,-9.81*cos(slope))
groundPosition = height/3.0
#Definition of the semi-periodic cell
O.periodic = True 
O.cell.setBox(length,width,height)
# build the ground
lowPlane = box(center= (length/2.0,width/2.0,groundPosition),extents=(length*10,width*10,0),fixed=True,wire=False,color = (0.8,0.8,0.8),material = 'sphereMat')  

#Send the ground box and the particle to simulation
O.bodies.append(lowPlane)
O.bodies.append(sphere((length/2.0,width/2.0,groundPosition+diameterPart),radius = diameterPart*0.5, material = 'sphereMat'))

#########################
#### SIMULATION LOOP#####
#########################

O.engines = [
	# Reset the forces
	ForceResetter(),
	# Detect the potential contacts
	InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Wall_Aabb(),Bo1_Facet_Aabb(),Bo1_Box_Aabb()],label='contactDetection',allowBiggerThanPeriod = True),
	# Calculate the different interactions
	InteractionLoop(
   	[Ig2_Sphere_Sphere_ScGeom(), Ig2_Box_Sphere_ScGeom()],
   	[Ip2_ViscElMat_ViscElMat_ViscElPhys()],
   	[Law2_ScGeom_ViscElPhys_Basic()]
	),	
	# Integrate the equation and calculate the new position/velocities...
	NewtonIntegrator(damping=0.0, gravity=g, label='newton')
	]

O.saveTmp()



-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.