← Back to team overview

yade-users team mailing list archive

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

 

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

Karol Brzezinski posted a new comment:
Thank you for your comment. Maybe it is a particular example where
damping oscillations 'inside agglomerate' can affect its movement as a
whole. This would have to be a strong numerical artifact since it occurs
even though the gravity acceleration is not damped.


I prepared another example. Only agglomerate of two grains is free falling, hence there is no impact. The oscillations are introduced after 1e6 of iterations. Adding very small damping causes freezing of the particle. So indeed the oscillations cause the problem. 

Cheers,
Karol

############ MWE
########### 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 = 1e10,
    shearCohesion = 1e10,

)
from yade.params.table import *
global introducedOscillations
introducedOscillations = False

def addPlotData():
    global introducedOscillations
    if not(introducedOscillations) and O.iter>1e6:
        O.bodies[grain1[0]].state.pos += Vector3(0,0,1e-5)
        introducedOscillations = True
    v1 = O.bodies[grain1[0]].state.vel[2]
    plot.addData(t = O.time, i = O.iter, v1=v1)

##### 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]])


# 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', creep_viscosity = 1000000.)],
    ),
    NewtonIntegrator(damping=0.0, gravity = (0,0,-9.81), dampGravity = False),
    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')}
plot.plot()

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

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