Problem with Damping, Facets and Contact Model

Asked by Alexander Smith

Hi all,

I tested the Hertz Mindlin contact model and noticed that shear and normal viscous damping is not accounted for in a sphere-facet contact. It behaves correctly with a sphere-sphere contact. I have attached a simple script below to illustrate my point. I just wanted to check before I report a bug.

Also, I noticed that a facet is made of two "triangles" and at the junction of the two it appears the sphere is in contact with both surfaces. This increases the normal force and effects shear force and contact moments (shown by setting a=0 in the script below). Is this correct?

I am developing a contact model and I need some guidance on how to fix it to ensure that the contact model behaves correctly on flat surfaces.

Thanks.

I am running YADE 1.10.

SCRIPT
=======================================================
from yade import utils, plot
import math as m

O.dt = 1.0e-6

r1,rho,v,E,muR,Bn,Bs,fric_ang=0.2,2000,0.35,0.1e9,0.2,0.8,0.8,0.2

a=5*r1

mat1=O.materials.append(FrictMat(poisson=v,density=rho,young=E,frictionAngle=fric_ang,label='fric_mat'))

id11 = O.bodies.append(sphere(center=[a,-a,r1*0.95],radius=r1,material=mat1,fixed=True))

O.bodies.append(utils.geom.facetBox((0.0,0.0,0.0),(2.0,2.0,0),wallMask=31,material=mat1))

O.engines = [
  ForceResetter(),
  InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
   InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_MindlinPhys(betan=Bn,betas=Bs,ktwist=0.0,eta=muR)],
  [Law2_ScGeom_MindlinPhys_Mindlin(includeMoment=False,includeAdhesion=False,neverErase=False)]
 ),
  NewtonIntegrator(damping=0,gravity=[0,0,-10],label="Newton"),
  PyRunner(command='addPlotData()',iterPeriod=50),
  PyRunner(command='sphereVel()',iterPeriod=1),
]

def sphereVel():
 O.bodies[id11].state.vel=[0,5*m.sin(O.time*200),0]

def addPlotData():
  f1 = [0,0,0]
  try:
    f1=O.forces.f(id11)
  except:
    f1 = [0,0,0]

  s1 = O.bodies[id11].state.pos[2]
  s2 = O.bodies[id11].state.pos[1]
  plot.addData(Normal=f1[2], Shear=f1[1], y=s2)

plot.plots={'y':('Normal','Shear')}; plot.plot()

from yade import qt
qt.View()

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Alexander Smith
Solved:
Last query:
Last reply:
Revision history for this message
Chareyre (bruno-chareyre-9) said :
#1

Hi,

On 28/10/14 08:16, Alexander Smith wrote:
> I tested the Hertz Mindlin contact model and noticed that shear and normal viscous damping is not accounted for in a sphere-facet contact. It behaves correctly with a sphere-sphere contact. I have attached a simple script below to illustrate my point. I just wanted to check before I report a bug.
To me it sounds like a bug, but maybe it is intentional. Devs of the
viscous model will tell.

> Also, I noticed that a facet is made of two "triangles" and at the junction of the two it appears the sphere is in contact with both surfaces. This increases the normal force and effects shear force and contact moments (shown by setting a=0 in the script below). Is this correct?
No, it is not correct. It is a known issue of facet-sphere contacts, and
it is more or less solutionless in the context of facets as they are now.
Thus, I would not recommend to try and fix this by yourself.
Some solutions are being implemented and should be released soon. They
replace facets by more advanced shapes.

> I am developing a contact model and I need some guidance on how to fix it to ensure that the contact model behaves correctly on flat surfaces.
If the surface is flat, then it can be a single facet, or a a box.
Problem solved (or?).

Bruno

Revision history for this message
Chiara Modenese (chiara-modenese) said :
#2

Just to say that the HM contact model has been widely tested for
sphere-sphere contacts but not with other elements. I am not familiar with
the formulation of facets but maybe somebody who is might be able to help
you?

Cheers,
Chiara

On 28 October 2014 16:46, Chareyre <email address hidden>
wrote:

> Question #256283 on Yade changed:
> https://answers.launchpad.net/yade/+question/256283
>
> Status: Open => Answered
>
> Chareyre proposed the following answer:
> Hi,
>
> On 28/10/14 08:16, Alexander Smith wrote:
> > I tested the Hertz Mindlin contact model and noticed that shear and
> normal viscous damping is not accounted for in a sphere-facet contact. It
> behaves correctly with a sphere-sphere contact. I have attached a simple
> script below to illustrate my point. I just wanted to check before I report
> a bug.
> To me it sounds like a bug, but maybe it is intentional. Devs of the
> viscous model will tell.
>
> > Also, I noticed that a facet is made of two "triangles" and at the
> junction of the two it appears the sphere is in contact with both surfaces.
> This increases the normal force and effects shear force and contact moments
> (shown by setting a=0 in the script below). Is this correct?
> No, it is not correct. It is a known issue of facet-sphere contacts, and
> it is more or less solutionless in the context of facets as they are now.
> Thus, I would not recommend to try and fix this by yourself.
> Some solutions are being implemented and should be released soon. They
> replace facets by more advanced shapes.
>
> > I am developing a contact model and I need some guidance on how to fix
> it to ensure that the contact model behaves correctly on flat surfaces.
> If the surface is flat, then it can be a single facet, or a a box.
> Problem solved (or?).
>
> Bruno
>
> --
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

Revision history for this message
Alexander Smith (alexander-l-smith) said :
#3

Hi Bruno and Chiara,

Thanks for the heads up about facets. It is easily avoided in most cases by using a corner. A quick fix for now.

I have found why damping was not present. Non-linear damping uses instantaneous critical damping where the "equivalent" mass is calculated as:

Real mbar = (!b1->isDynamic() && b2->isDynamic()) ? de2->mass : ((!b2->isDynamic() && b1->isDynamic()) ? de1->mass : (de1->mass*de2->mass / (de1->mass + de2->mass)));

In the case of two spheres it works fine if either (or both) are "fixed". However, if one body is a facet and the contacting sphere is "Fixed" as was the case in the script above, then the equivalent mass is zero. Hence the damping coefficients are zero.

I also checked the Hertz Mindlin rolling friction model and I can confidently say that it behaves on a facet exactly as expected for suitable model parameters (it matches the results produced by Wensrich and Katterfeld in "Rolling friction as a technique for modelling particle shape", 2011). Though I am not suggesting PFC3D is a good benchmark :-)

Thank you both for your help. It is much appreciated.

Alex

Revision history for this message
Chareyre (bruno-chareyre-9) said :
#4

Thank you for your feedback.
PFC is excellent for benchmarks.

Revision history for this message
Chiara Modenese (chiara-modenese) said :
#5

Great, thanks! Yes, you are right about the computation of the mass, it
shows how important it is to read & understand the code! It should be a
detail written in the documentation though - please feel free to add it
(thanks in advance!).

Glad to have confirmation that everything works fine,
Chiara

On 30 October 2014 15:06, Chareyre <email address hidden>
wrote:

> Question #256283 on Yade changed:
> https://answers.launchpad.net/yade/+question/256283
>
> Chareyre posted a new comment:
> Thank you for your feedback.
> PFC is excellent for benchmarks.
>
> --
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#6

> It is easily avoided in most cases by using a corner. A quick fix for now.

Do you mean that you implemented this fix? I'm curious to know how you did that.