← Back to team overview

yade-users team mailing list archive

[Question #703735]: Bonded (CohFrictMat) particles freeze during collision

 

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

Hi,

Recently I encountered I strange behavior of bonded particles (CohFrictMat). I wanted to simulate gravity deposition, and I noticed that if two agglomerates touch, their velocity drops to zero. This problem occurs if damping > 0 is applied.

Please find MVE below. There are two grains one above another. One of them has prescribed velocity, so it "chases" another one. As soon as they touch, their speed suddenly drops to zero (even though they move in the same direction). 
I am using Ubuntu 20.04 and yadedaily 20221027-6847~7952bc1~focal1.

Cheers,
Karol

########### MVE
from yade import plot
####################### params
# default parameters or from table
readParamsFromTable(noTableOk=True, 
	youngGrain = 7e9,
	poisson = .3,
	frictionAngle = atan(0.8),
	grainDensity = 2504,
	dtSafetyCohFrictMat = 0.9,
	sphereRadius = 0.15e-2,
	normalCohesion = 1e99,
	shearCohesion = 1e99,

)
from yade.params.table import *

def addPlotData():
	v1 = O.bodies[grain1[0]].state.vel[2]
	v2 = O.bodies[grain2[0]].state.vel[2]
	plot.addData(t = O.time, i = O.iter, v1=v1,v2=v2)


##### material
cfmId = O.materials.append(CohFrictMat(
	young = youngGrain,
	poisson = poisson,
	frictionAngle = frictionAngle,
	density = grainDensity,
	normalCohesion = normalCohesion,
	shearCohesion = shearCohesion, 
))

###### spheres

# grain 1 
grain1=O.bodies.append([sphere(center=(0,0,1.5*i*sphereRadius),radius=sphereRadius,material = O.materials[cfmId],color=(0,1,0)) for i in [0,1]])

# grain 2 
grain2=O.bodies.append([sphere(center=(0,0,0.1+1.5*i*sphereRadius),radius=sphereRadius,material = O.materials[cfmId],color=(0,0,1)) for i in [0,1]])

# prescribe vel of grain 2
for sp in grain2:
	O.bodies[sp].state.vel = (0,0,-0.2)

# engines
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom()],
		[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label = 'phys')],
		[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(label = 'law')],
	),
	NewtonIntegrator(damping=0.01, gravity = (0,0,-9.81)),
	PyRunner(command = 'addPlotData()', virtPeriod=0.01),
]

phys.setCohesionNow = True # to create cohesive contacts in the next step
## grow particles to create overlap
O.dt = 0
O.step() # do one step in zero timestep just to create interaction

# cancel out the force between the bonded particles
for i in O.interactions:
    i.phys.unp = i.geom.penetrationDepth

# time step
O.dt = dtSafetyCohFrictMat*PWaveTimeStep()

############ prepare plots
plot.plots={'t':('v1','v2')}
plot.plot()

###############################
O.run(int(2e6))



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