Relationship between JCF contact law parametres and particle size

Asked by Ali Rafiee on 2020-03-25

Hi everybody,

I have a question about parameter calibration, indeed I have a model in rock mass media generated by random size spheres.
just in the first step, in which I try to have a stable assembly of spheres, I put the values for tensile strength and cohesion of materials in the way that sphere particles remain just without movement under imposed cohesion between particles.

but I see when the particle size changes (new range of sphere sizes), I lose this preliminary stable condition and for each particle size range I should find new values for the parameters.

I would like to know how one can find the approximate values for these parameters to have just a stable condition in the model (not with very high magnitude), or how these values can be related to the size of particles?

Thanks a lot
Take care of yourself

Question information

English Edit question
Yade Edit question
No assignee Edit question
Solved by:
Luc Scholtès
Last query:
Last reply:
Luc Scholtès (luc) said : #1

Hi Ali,

I am not sure to understand your problem here.

JCFPM works so that the samples are stress-free at the first iteration (the interparticle equilibrium distances are computed at the first iteration of the simulation). It means that, if you import a sample/packing in a simulation and that you do not apply any loading to it, it will be in a stable state (no forces between particles because the equilibrium distance is zero).

I do not understand what this has to do with the mechanical parameters...

Would you mind giving a Minimal Working Example to illustrate your problem so that we can help you?


Ali Rafiee (ali-rafiee) said : #2

Hi Luc,

The sample is under gravity force and this happens after first iteration.

Under gravity force, the force applied on each particle is proportional to its size, so if the particle is bigger to make remain in place on stable condition (without movement) it needs more cohesion force, I think.

This example can be a simple rock slope with different particle size.


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

Maybe it would help the discussion and yourself if you do not think in terms of "cohesion force". In JCFpm (usual case in YADE), there is only one interaction force, which depends on relative displacements (you can say "position" for the normal part) between particles. Cohesion just corresponds to the possibility for e.g. tensile = attractive normal forces, up to some breakable threshold.

If your question is about the exact expression for these force thresholds (they do depend on particle size), doc [*] and links therein should help


Luc Scholtès (luc) said : #4

The forces applied on the particles are proportional to their size but the interparticle stength is also proportional to their size.

For instance, the maximum admissible force in the tangential direction is equal to FsMax = cohesion * crossSection, with crossSection=pi*min(R1,R2)^2

If the slope you are simulating always has the same overall volume, the stresses induced by gravitational loading are always the same, whatever the size of the particles making up the assemblies you are using (under the condition that all these assemblies have similar porosities and particles interconnectivity).

If you always use the same interparticle properties, the overall strength of the material will always be the same, whatever the size of the particles making up the assemblies you are using (under the condition that all these assemblies have similar porosities and particles interconnectivity).

The result of that is (under the condition that all assemblies have similar porosities and particles interconnectivity): if your slope bounces elastically under gravitational loading for a given discretization (e.g. 10000 particles), it should bounce elastically for every discretizations (20000, 50000, 100000).

If not, there is something wrong somewhere in your simulation and only a MWE will help us find out what it is.


Ali Rafiee (ali-rafiee) said : #5

Thanks Luc,

You are right, but as you said, if the particle sizes in a sample change, consequently the porosity and also interconnectivity between particles will be changed, what will change this balanced state in the sample.

how we can find limit values for cohesion and tensile strength in an independent way from particle sizes in the model? For example by adding a phase inside the code, to check this condition and adjust the parameters regarding the particle sizes in the model.

Is it possible to do in interaction level for each particle to adjust these parameters just in order to have a stable condition?

Thanks again

Best Luc Scholtès (luc) said : #6

A good and pretty easy way: make sure that the average number of bonds per particle (coordination number) is the same for all samples.

For that, you can adjust the interaction range:

intR=X # (value to define, >=1)

You can then compute the coordination number with something like:

for i in O.interactions:
  if isinstance(O.bodies[i.id1].shape,Sphere) and isinstance(O.bodies[i.id2].shape,Sphere):
      if i.phys.isCohesive:
print "nbCohIntrs=",nbCohIntrs

then, at the first iteration, you can reset it (if you want):


This will ensure that all samples have similar mechanical properties (if the samples are all constructed using the same procedure).

Ali Rafiee (ali-rafiee) said : #7

Thanks Luc Scholtès, that solved my question.