How to have viscous damping for chainedCylinder

Asked by Rohit John on 2020-10-13


I want to simulate the interaction between a brush and a cube in microgravity. I have made the brush using an array of chainedCylinders and the box using pfacets. The main deformation is the bending of chainedCylinders. I have noticed that during the simulation, some chainedCylinders tend to vibrate violently and sometimes they break apart. I believe I can solve this by having some sort of damping in the chainedCylinders. I do not want to use the damping newtonIntegrator engine as it is non physical and , I believe, it does not conserve the momentum of the system.

Is there a way to introduce damping into this system? I read the thread [1] 'Do we have viscous damping in CohFrictMat now?' and I tried using shear_creep. However, the chainedCylinders was deformed permanently (I think this phenomena is plastic deformation). I would like method so that damping occurs in the elastic regime.

Kind regards,
Rohit John


Question information

English Edit question
Yade Edit question
No assignee Edit question
Solved by:
Last query:
Last reply:


I have noticed those violent vibrations sometimes and I'm still not sure if it is a bug somewhere or just expected instability due to timestep issues.
Anyway, chainedCylinders are deprecated and will probably not interact properly with PFacets. You should use PFacets for both the object and the brush (PFacets include cylinders as a special case).

On viscosity: whether it is a bug or a legit numerical instability viscosity will probably not help in solving it. It can make it only worse. If you still want viscosity (because the real brush has some) you'll have to dive and implement it. As you found out creep is really creep: an irreversible Maxwell-kindof viscoplastic process.

I hope it helps.

Rohit John (rohitkjohn) said : #2

Thanks for you answer Bruno.

I have read that most of the constitutive laws do no have a velocity base damping [1]. Is there a reason why velocity base damping was not implemented?

I apologise, I did use gridConnectio/gridNodes to make the brush. I used CylinderConnections to do it. I always get it confused with chainedCylinders.

 Could you please check if my proposal to implement damping is correct.
  - Define a material class which includes a damping parameter. Since I am using CylinderConnections I can inherit the class CohFrictMat and name it, say, ViscCohFrictMat
  - Define a Iphys defining the interaction between two instances of this material class. I can inherit Ip2_CohFrictMat_CohFrictMat_CohFrictPhys() and lets call it Ip2_ViscCohFrictMat_ViscCohFrictMat_ViscCohFrictPhys()
  - Define a law to define the forces based on the ScGeom6D Igeom and ViscCohFrictPhys() Iphys, and inherit the Law2_ScGeom6D_CohFrictPhys_CohesionMoment()


Best Chareyre (bruno-chareyre-9) said : #3

I think your proposal could work but I have a much simpler suggestion.
Basically you can just add the term viscosity*relativeVelocity in the force calculation of the _existing_
If viscosity is zero (default) it will change nothing, else it will do what you want, and this way we don't have unnecessary inflation of the
functors list.
That would give the 6D version of ViscoelasticPM. We can include that in trunk after validation.

In fact you may find inspiration and even maybe re-use some functions of ViscoelasticPM, which is well implemented and tested version of the


Rohit John (rohitkjohn) said : #4

Thanks Chareyre, that solved my question.

Rohit John (rohitkjohn) said : #5

Dear Bruno,

I shall update you when I have made a working code.

I have a doubt. I did not find ViscoelasticPM in the documentation. Are you talking about Law2_ScGeom_ViscElPhys_Basic()?

Kind regards,
Rohit K. John