Implementation of a four particles sliding interaction

Asked by Loic Dugelas on 2020-07-07

Hi community ! I need your opinion concerning the way of introducing a new law. Let me introduce you for the problem.

I mainly use Yade to model rockfall flexible barrier, what led me to develop a law in order to simulate the sliding between to cables. At the moment, this contact law is working, but it is written in Python and running in my models using a PyRunner at each step. As you can imagine, this kind in implementation is not optimal and extremely time consuming. Now, I want to integrate this law in the C++ code.

In this law, a cable is modeled with 4 particles. The two particles at the extremities are "fixed", and the two particles betweens are the "sliding particles", they can move along the cable between the two fixed particles. In this law, no friction in considered for the sliding particles, giving a constant force in the cable. This force in calculated with a linear elastic model, from the position of the four particles of the cable. Thus, the position of four particles is needed to compute the interaction force.

In order to get more information about this model, it is detailed in my thesis (in French) [1], chapter 4 , pages 85 and 86 of the manuscript, in it named the "Modele SF".

So here is my question, how can I implement in the Yade code, this law that compute the force for 3 interactions between 4 particles ?

I'm quite familiar with Yade, but I'm still a beginner in introducing new law in the C++ code.

At a first look, I was thinking of introducing a new Shape with the particles representating a cable and a new corresponding Geom. But I' not sure if starting from this it is possible to compute the force inside the cable a each calculation step.

Well, in your opinion, what is the best way to introduce this kind of law ?

Thank you for reading and for your future answers.



Question information

English Edit question
Yade Edit question
No assignee Edit question
Last query:
Last reply:
Jérôme Duriez (jduriez) said : #1


(I did not understand how a cable / row of 4 particles with the 2 extremities fixed could elongate, if that is your goal :-) )

It looks to me starting from a new Shape, then a new IGeom may make sense. If that s the case, next step is to define a new Law2 [*] that applies to these new interaction geometry and will compute interaction forces. That s exactly the job of Law2* guys.

[*] yet another child of

Loic Dugelas (ldugelas) said : #2

Hi Jérôme,

I think I didn't explain well my problem. In the cable made of 4 particles, only the two central ones can slide, while the two extremities cannot, that why I call them "fixed". But these two particles are not blocked in the full model.
The cable length variation (sum of the length of the three interactions) is used the compute the force inside the cable.

Thank you for your advice, my main interogation was about the possibility of integrating the calculation using the position of 4 particles, instead of 2 as usual.

I'll try following your solution, I may have more questions in the future, it's the first law I introduce in Yade !

Jérôme Duriez (jduriez) said : #3


It's maybe a little clearer to me..

Note that interactions (in DEM in general, and in YADE for sure) are binary: interaction forces are applied by the InteractionLoop engine between "1" and "2" bodies according to the state of 1 and 2 only (as blended in the IGeom and IPhys of a 1-2 interaction).

Your case may not be binary in this sense, and, with respect to my 1st comment, it may require greater changes in YADE (and easier/deeper discussion to be sure..)

PS : I'm guessing you're aware of flexible YADE things such as

Launchpad Janitor (janitor) said : #4

This question was expired because it remained in the 'Open' state without activity for the last 15 days.