material damping

Asked by Seungcheol Yeom

Hello all,

I am trying to investigate the damping effect using restitution coefficients among the different materials.
When I examined the resitution coefficient between the wall and the sphere, it behaved as I expected.
However, when I created five spheres in a column on the bottom of wall and generate the kinetic enegy using a free fall sphere, the force on each sphere is a little bit strange for me.
I thought the force on each sphere should be decreased from the top to bottom by the damping parameter but one of the spheres was out of trend.
Also, I expected the force on each sphere should be dissipated 1/2 from the previous force because I set up the resttitution coefficient between soil and soil equal to 0.5. In case of kinetic energy, it should be decreased 1/4.
However, it does not follow that way.

Can somone please let me know what it is going on?
Thank you for your help.

here is the scirpt that I am using:

from yade import pack, plot, geom, export, ymport,qt
import math, numpy

r = 0.001 #particle radius, meter

#define material properties#
rainId=O.materials.append(FrictMat(young=1e6,poisson=0.4,frictionAngle=radians(30),density=2650.0,label='water'))
soilId=O.materials.append(FrictMat(young=1e6,poisson=0.4,frictionAngle=radians(30),density=2650.0,label='soil'))

#create spheres#
O.bodies.append([
   utils.sphere(center=(0,0,r),radius=r,fixed=False,material='soil'),
   utils.sphere(center=(0,0,3*r),radius=r,fixed=False,material='soil'),
   utils.sphere(center=(0,0,5*r),radius=r,fixed=False,material='soil'),
   utils.sphere(center=(0,0,7*r),radius=r,fixed=False,material='soil'),
   utils.sphere(center=(0,0,9*r),radius=r,fixed=False,material='soil'),
])

bid=O.bodies.append(utils.sphere(center=(0,0,13*r),radius=r,fixed=False,material='water')) #set the raindrop properties
O.bodies[bid].state.vel=(0,0,-4.5) #terminal velocity
O.bodies[bid].shape.color=(0,0,1)
w

wallId=O.materials.append(FrictMat(young=1e6,poisson=0.4,frictionAngle=radians(30),density=2650.0,label='wall')) #set the wall properties

mn,mx = utils.aabbExtrema()
Xmin = mn[0]
Ymin = mn[1]
Zmin = mn[2]
Xmax = mx[0]
Ymax = mx[1]
Zmax = mx[2]

O.bodies.append(utils.wall((0,0,0),axis=2,sense=1,material='wall')) #create the bottom of wall

newton=NewtonIntegrator(damping=0.0,gravity=(0,0,-9.81)) #set zero damping to investigate the effect of en and es

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_MindlinPhys(
   en=MatchMaker(matches=((rainId,rainId,0.01),(rainId,soilId,0.3),(rainId,wallId,0.01),(soilId,soilId,0.5),(soilId,wallId,0.01),(wallId,wallId,0.01))),
   es=MatchMaker(matches=((rainId,rainId,0.01),(rainId,soilId,0.3),(rainId,wallId,0.01),(soilId,soilId,0.5),(soilId,wallId,0.01),(wallId,wallId,0.01))))],
  [Law2_ScGeom_MindlinPhys_Mindlin()]
 ),
 PyRunner(iterPeriod=100,command='addPlotData()'),
        PyRunner(command='checkKEnergy()',iterPeriod=100),
 newton
]

O.dt=5.e-5*utils.PWaveTimeStep()
O.trackEnergy = True

def checkKEnergy():
 global f0,f1,f2,f3,f4,f5
 ke = kineticEnergy()
 f0 = O.forces.f(0)
 f1 = O.forces.f(1)
 f2 = O.forces.f(2)
 f3 = O.forces.f(3)
 f4 = O.forces.f(4)
 f5 = O.forces.f(5)

def addPlotData():
 f0 = O.forces.f(0)
 f1 = O.forces.f(1)
 f2 = O.forces.f(2)
 f3 = O.forces.f(3)
 f4 = O.forces.f(4)
 f5 = O.forces.f(5)
 plot.addData(i=O.iter,f0forces=f0[2],f1forces=f1[2],f2forces=f2[2],f3forces=f3[2],f4forces=f4[2],f5forces=f5[2])
 plot.saveDataTxt(O.tags['id']+'.txt')

#display the force on the sphere
plot.plots={'i':('f0forces','f1forces','f2forces','f3forces','f4forces','f5forces',)}
plot.plot()
plot.live=True
plot.autozoom=True
qt.View()
O.run()

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jérôme Duriez
Solved:
Last query:
Last reply:
Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#1

 >I expected the force on each sphere should be dissipated 1/2 from the previous force because I set up the resttitution coefficient between soil and soil equal to 0.5

Only energy can be dissipated, not forces. Restitution coefficient is also usually defined as a ratio of energy after/before collision, not as a ratio of forces.
Why do you think the forces per body should follow a logical rule during a complex event like this?

Revision history for this message
Seungcheol Yeom (scyeom79) said :
#2

Thanks for the response
I knew the energy is dissipated rest.coeff^2 based on the reference and observed the force is also dissipated as a function of restitution coeff when I simulated a single sphere drop on the wall.
The reason i am doing this is to investigate how the kinetic energy from the raindrop is transferred to the soil.
Also, I cannot find out the way to track the kinetic energy on each sphere. So, I tracked the force instead.
Is there way to track it?
Thank you for your help.

Seungcheol

Revision history for this message
Best Jérôme Duriez (jduriez) said :
#3

Hello,

It is quite easy to monitor the kinetic energy of one sphere "b" through python. Using variables like b.state.mass, b.state.vel...
Furthermore, Yade offers direct facilities to monitor (global values ? I'm not used to it) energy. Give a look to [1], [2], and e.g. examples/simple-scene/simple-scene-energy-tracking.py as a script example.

[1] : https://www.yade-dem.org/doc/tutorial-data-mining.html#energies
[2] : https://www.yade-dem.org/doc/tutorial-data-mining.html#energy-plots

Revision history for this message
Seungcheol Yeom (scyeom79) said :
#4

Thank you for the response Jerome,

I didn't use the utilities for the energy tracking because it is overall kinetic energy (including two terms) of the simulation as described in the link below:
https://yade-dem.org/doc/yade.utils.html?highlight=kinetic#yade._utils.kineticEnergy

However, I took a look into the example script as you suggested and it helped me to track the kinetic energy of each particle.
Thank you very much.

Seungcheol

Revision history for this message
Seungcheol Yeom (scyeom79) said :
#5

Thanks Jérôme Duriez, that solved my question.