yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #28751
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.