get uniform-distributed strength of bonds

Asked by Zhoufeng Shi on 2020-10-05

Dear all
I am looking for a way to form a uniform distributed bond strength for JCFpmMat interactions (cohesion and tensileStrength) to make the simulation closer to the reality . for example, cohesion=2.4e7±1e7, just like what the 'rRelfuzz' function do for the radius. So I wonder if there is such a function for this purpose.
Thanks in advance!

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Robert Caulk
Solved:
2020-10-06
Last query:
2020-10-06
Last reply:
2020-10-05
Best Robert Caulk (rcaulk) said : #1

Hello,

>make the simulation closer to the reality

What does that mean? Why is the default method not closer to reality?

>.So I wonder if there is such a function for this purpose.

There is no function for automatically defining a uniform distribution of strengths. There is a function for defining a pseudo weibull distribution of strengths [1]. But keep in mind that with or without this function, the distribution of the spheres plays an important role in the distribution of the strengths. In JCFpm the tensile strengh is

f_max = t A,

where A = pi * min(r1,r2)^2. and r1 and r2 are the interacting particle radii. The weibull distribution actually factors the area so it would be A = pi * alpha * min(r1,r2)^2, where alpha is a random deviate generated from a weibull distribution with a shape factor controlled by the user with [1]. The idea is that this is "closer to reality" if you have an idea of micromechanical structure (heterogeneity) that you want to model. We found that sandstone imagery demonstrates that interacting grain areas follow a weibull distribution. You can see the hypothesis and what the distributions of strengths actually look like in an open geomechanics paper [3].

If you prefer to follow your own instinces and override everything to control the strengths as you like, you can do that on your own with a simple for-loop in python which iterates on the physics of each interaction:

for i in O.interactions:
  i.FnMax = np.random.uniform(low,hi)
  i.FsMax = np.random.uniform(low,hi)

I would be careful doing something like this, since it is probably not "closer to reality" to potentially have a small tensile strength and a high shear strength on the same bond. So maybe it would be better to factor the existing strength given by JCFpm in a similar manner to how the weibull distribution works:

for i in O.interactions:
  alpha = np.random.uniform(0,1)
  i.FnMax = i.FnMax*alpha
  i.FsMax = i.FsMax*alpha

But it will not be exactly uniform, since you are factoring a uniform distribution of particle sizes squared (and especially not uniform since you are taking the minimum of interacting bonds). Either way, I still don't necesarily see why this would be "closer to reality" than the default method.

Cheers,

Robert

[1]https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Ip2_JCFpmMat_JCFpmMat_JCFpmPhys.xSectionWeibullShapeParameter
[2]https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.JCFpmPhys.FnMax
[3]https://opengeomechanics.centre-mersenne.org/article/OGEO_2020__2__A2_0.pdf

Robert Caulk (rcaulk) said : #2

line edits:

I think I should have written:

i.phys.Fn/sMax

in place of

i.Fn/sMax

Zhoufeng Shi (zhoufeng-s) said : #3

Thanks Robert for explaining your answer in very detail.
Originally, I was thinking that by making bond strength distributed over a certain range, I could make some 'weaker' and 'stronger' bonds. therefore, during the simulation, some of this weaker bonds are tend to break more easily so that the crack development process may look more naturally. but yes you are definitely right, the distribution of sphere plays an extremely important role in the bond strength and change the bond strength could render a weak bond even stronger which ends up meaningless. I will do more investigation about their relationship.
just another quick question to make it clear: if I wanna make the strength have a deviation like1±21%, then by changing the sphere radius distributed in 1±10% or to change the alpha to(0.79,1.21), will I get the same distribution range for the strength regardless of the distribution types?

Zhoufeng Shi (zhoufeng-s) said : #4

Thanks Robert Caulk, that solved my question.

Robert Caulk (rcaulk) said : #5

>if I wanna make the strength have a deviation like1±21%, then by changing the sphere radius distributed in 1±10% or to change the alpha to(0.79,1.21), will I get the same distribution range for the strength regardless of the distribution types?

Nope, you'll need to do some analytical statistics to get the exact form of the PDF. In the default case, strength is proportional to the square of the minimum interacting radius. In the case where you try to impose some uniform factor, alpha, you are multiplying a uniform distribution by a squared uniform distribution which still depends on the minimum radius. Hence why I said:

"But it will not be exactly uniform, since you are factoring a uniform distribution of particle sizes squared (and especially not uniform since you are taking the minimum of interacting bonds)"

IF you want an exact uniform distribution of strength, you follow this part of what I said:

"If you prefer to follow your own instincts and override everything to control the strengths as you like, you can do that on your own with a simple for-loop in python which iterates on the physics of each interaction:"

Zhoufeng Shi (zhoufeng-s) said : #6

Thanks Robert. I am now clear with the concept. I had thought making the radius of spheres all the same so that I dont have to worry about the influence of minimum interacting radius and control it only by alpha, but I suppose that would be harmful to its heterogeneity upon packing.