← Back to team overview

yade-users team mailing list archive

Re: [Question #693275]: get uniform-distributed strength of bonds

 

Question #693275 on Yade changed:
https://answers.launchpad.net/yade/+question/693275

    Status: Open => Answered

Robert Caulk proposed the following answer:
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

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.