# Questions concerning triaxial test

Hi,all

I am a freshman on yade.

Now I am trying to simulate the triaxial test mentioned in Jean-Patrick Plassiard's article "Rockfall impact parameters on embankments: a discrete element method analysis", with the help of tutorial for triaxial tests found in scripts/

My questions are:

1. How to generate a certain kind of particle distribution in yade, for example weibull distributon ?? It seems using "psdSizes and psdCumm" is the only way to generate a non-uniform distribution and the only way to obtain a lower porosity(for example 0.3) after confinement in yade, am I right?

2.After the generation of particles, we can obtain coordinates and radius of each particle. My question is how to draw the distribution curve(column chart type) like the one mentioned in Jean-Patrick Plassiard's article: the x axis represents the particle sizes, the y axis represents the number of corresponding particles.

3. Although the mechanical parameters as well as the confining pressure were set the same values as the ones mentioned in Jean-Patrick Plassiard's article, even the porosity after confinement is obtained as low as 0.3, the differential stress q and the volumetric strain ev are about 10-15 percent lower than Jean-Patrick Plassiard's results. Does anyone know the reasons? The difference between SDEC and yade is not the main reason, I guess.

ThanK you in advance!

Good day!

Lingran

## Question information

- Language:
- English Edit question

- Status:
- Solved

- For:
- Yade Edit question

- Assignee:
- No assignee Edit question

- Solved by:
- lingran

- Solved:
- 2012-09-10

- Last query:
- 2012-09-10

- Last reply:
- 2012-09-07

## This question was reopened

- 2012-09-10 by lingran

Hi Lingran,

1. There is such a huge number of possible distributions, so it is impossible to have all of them implemented. However you can always generate your own distribution in a python script and turn it into a PSD to satisfy yade's form of input (else, you could also add Weibull option in the c++ code of the makeCloud function). For porosity, I don't understand your idea: porosity is a result of compaction without any explicit link to the size distribution. Of course PSD has an effect on compacted porosity , but there is no programatical link between them, uniform or non-uniform are compacted the same way.

2. Plassiard did not work with yade. Drawings can be done in various ways (gnuplot,

3. I have no idea, I don't know SDEC. Are sure that the contact laws are really the same?

lingran (zhanglingran130) said : | #2 |

Hi, Bruno,

Thank you very much for the reply, I learn a lot from that.

It's my great honour to discuss with famous persons like you!

1. what I mean is PSD has an great effect on the compacted porosity. in my situation, at the same confining press of 100kpa, the lowest compacted porosity obtained in uniform distribution is 0.4, however, the lowest compacted porosity obtained using "psdSizes and psdCumm" can be as low as 0.3.

2. same one told me there is an easy way to draw that curve in matlab, I will figure it out later.

3. I think we use the same contact law: the same mechanical parameters(include the cohesion), the same way to calculate normal and tangential force, normal and tangential contact stiffness, the same Mohr-Coulomb rupture criterion...., actually, the maximum differential stress obtained by Plassiard is 400kpa, while in my situation, it is only 300kpa.

cheers

Lingran

Anton Gladky (gladky-anton) said : | #3 |

Hi,

> 2. same one told me there is an easy way to draw that curve in matlab, I

> will figure it out later.

python+matplotlib should do the job.

> 3. I think we use the same contact law: the same mechanical

> parameters(include the cohesion), the same way to calculate normal and

> tangential force, normal and tangential contact stiffness, the same

> Mohr-Coulomb rupture criterion...., actually, the maximum differential

> stress obtained by Plassiard is 400kpa, while in my situation, it is

> only 300kpa.

Take just 2-3 spheres and try to simulate necessary behavior. In this

case you should definitely understand, how works the contact law.

Good luck,

Anton

Ok, uniform distribution don't compact very well by default since they have a small quantity of small particles.

You can however generate a uniform mass distribution which will reach higher solid fraction (see psd.py example script)

> 3. I think we use the same contact law: the same mechanical

> parameters(include the cohesion), the same way to calculate normal and

> tangential force, normal and tangential contact stiffness, the same

> Mohr-Coulomb rupture criterion...., actually, the maximum differential

> stress obtained by Plassiard is 400kpa, while in my situation, it is

> only 300kpa.

Didn't you include contact moments? If not, it would clearly explain the difference.

If you included them, then note that the implementation of "rolling" are not exactly the same in Plassiard and in Yade.

In Yade, it's only based on the relative rotation (in fact bending angle), while in Plassiard it is more complicated.

It should be possible to find similar results with both implementations but maybe with different parameters.

lingran (zhanglingran130) said : | #5 |

Hi,

Actually, the contact law I used is "Law2_ScGeom6D_

What article are you referring to?

lingran (zhanglingran130) said : | #7 |

1 "Discrete model of impacts on embankments: refinement of the interaction law and calibration method"

2 " A spherical discrete element model: calibration procedure and incremental response"

I knew the papers but I never realized they reported such high peak stress without LTM.

This is very unusual with spheres, and I'm not surprised you get a lower peak. They say somewhere that the very high peak may be explained by the high coordination number (>7). Do you have so many contacts?

lingran (zhanglingran130) said : | #9 |

Hi Bruno,

sorry to reply to you so late.

Here is the way I used to calculate the coordination number:

###----

f=open(

counter=0

for i in O.interactions:

f.write(

f.write(

counter +=1

f.close()

###----

After reaching the confining pressure of 100kpa, the porosity of the sample is as low as 0.297. At the same time, there are 17394 real interactions were detected, including 1604 interactions between spheres and walls .

since there are 6 walls and 10000 spheres, so the coordination number = (17394-

Thank you in advance!

Lingran

Christian Jakob (jakob-ifgt) said : | #10 |

> Did I calculate the coordination number in the right way?

No. Try this (works well, when you have no clumps):

for b in O.bodies:

c_coord_tmp = 0

for i in b.intrs():

if (i.geom.

c_coord_tmp += 1

c_coord_sum += c_coord_tmp

c_balls += 1

coord_num = c_coord_sum/c_balls

1.579 * 2 = 3.16 contacts per grain, this is classical. It probably explains the lower peak.

For coordination number you can use this:

https:/

Christian Jakob (jakob-ifgt) said : | #12 |

Sorry, the code will not work, because you only want sphere-sphere contacts for coordination number.

So you can use this one here:

for b in O.bodies:

c_coord_tmp = 0

if isinstance(

for i in b.intrs():

if (i.geom.

c_coord_tmp += 1

c_coord_sum += c_coord_tmp

c_balls += 1

coord_num = c_coord_sum/c_balls

lingran (zhanglingran130) said : | #13 |

Hi Bruno and Christian,

Thank you very much for pointing out my mistakes and showing me your methods.

To better understand your different ways of calculating coordination number, the number of spheres were set to be 5.

Here is the list of interactions recorded by Christian's method(notice that the interactions between two spheres are counted twice).

###------------###

interactions:id.1, id.2

6 8

3 6

1 6------sphere(id=6) has 5 interactions-

6 7

4 6

----------

8 7

7 10

1 7------sphere(id=7) has 5 interactions-

4 7

6 7

----------

6 8

8 7------sphere(id=8) has 4 interactions-

0 8

5 8

----------

9 10

5 9

1 9------sphere(id=9) has 4 interactions-

2 9

----------

9 10

7 10-----

0 10

4 10

c_wallsphere:

c_spheresphere:

n_wall=6:the number of walls

n_sphere:the number of spheres

Z:coordination number

According to Bruno's method:

Z=2*(c_

=2*(12+5)/11=3.0909

According to Christian's method:

Z=[(1+2+

=60/(12+2*5)=2.7272

Two different results,I am a little confused, which one I should take?

Sorry for my silly question.

Lingran

Christian Jakob (jakob-ifgt) said : | #14 |

I am not a professional on yade. I think O.interactions gives not only "real" contacts, but also "possible" contacts.

As far as I know coordination number is the average number of contact per particle. So from my point of view for coord. num. I would just count particle-particle contacts, where penetrationDepth > 0 (positive if overlapping, see [1]).

Something like yade.utils.

(c_wallsphere+

To get this with avgNumInteracti

lingran (zhanglingran130) said : | #16 |

Thanks Chareyre, that solved my question.

lingran (zhanglingran130) said : | #17 |

Thanks Bruno-chareyre, Anton Gladky and Anton Gladky , my problems are solved.

lingran (zhanglingran130) said : | #18 |

Thanks Bruno-chareyre, Anton Gladky and Anton Gladky , my problems are solved.

I have learned a lot, thank you!