Shear box simulation

Asked by Mario Reyes

Hello all,

I am trying to calculate the parameters of resistance of a soil using a simulation of a shear box. I am using this example as a starting point [1]. I understand that I can control the normal stress through the parameter "limitMeanStress" and run several simulations with different values in order to get the angle of friction and cohesion. I have been checking the code and I am not sure how to get the shear stress and shear strain to obtain the peak shear stress value for every simulation. I have checked all the similar topics in the mailing list and I think is related to the stress tensor, but I am not sure how to do it. If anybody can point me in the right direction it will be of great help. Thanks in advance.

Cheers,

Mario

[1] https://github.com/yade/trunk/blob/283afb47ed4fdb86047618f0cb3ac892c040ef88/doc/sphinx/tutorial/04-periodic-simple-shear.py

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Chareyre
Solved:
Last query:
Last reply:
Revision history for this message
Chareyre (bruno-chareyre-9) said :
#1

This script is too simple wrt. what you want to achieve I think. You'll
need to use PeriTriaxController to impose stresses or strains efficiently.
I would recommend the example script
examples/tests/periodic-simple-shear.py (let us know if you don't know
where to find this file).

Bruno

Revision history for this message
Mario Reyes (ernestoreyes561) said :
#2

Thanks Dr Chareyre,

I think the script you are referring me to is this https://github.com/yade/trunk/blob/master/examples/test/periodic-simple-shear.py. I understand that I can can set my required stress or strain through the parameter "goal", in every direction. If stress or strain is specified depends of "stressMask", but I have been checking the mailing list and the PeriTriaxController class reference and I don't understand how to set stress or strain through "stressMask".

I got more confused with the following lines in the documentation:

"The following creates periodic cloud of spheres and compresses to achieve \sigma_x=-10 kPa, \sigma_y=-10kPa and \eps_z=-0.1. Since stress is specified for y and z, stressMask is 0b011 (x→1, y→2, z→4, in decimal 1+2=3)"

I also have problems to understand the meaning of the parameter "relStressTol". Finally, in the same example script this line is present:

O.cell.velGrad=Matrix3(0,6,0, 0,0,0, 0,0,0)

Just before the conditions for the shearing. I think it is related to the periodic boundary conditions, but I am not sure. If you can give any insight in these topics would be of great help. Thanks again for your answer.

Cheers,

Mario

Revision history for this message
Mario Reyes (ernestoreyes561) said :
#3

I forgot to mention that I got this error when I ran the periodic-simple-shear-code:

FATAL /tmp/buildd/yadedaily-1.12.0-12-3c5f330~trusty/pkg/common/InsertionSortCollider.cpp:527 spatialOverlapPeri: Body #3 spans over half of the cell size 0.0719623 (axis=0, min=0.0415516, max=0.00569781, span=0.107816, see flag allowBiggerThanPeriod)
FATAL /tmp/buildd/yadedaily-1.12.0-12-3c5f330~trusty/core/ThreadRunner.cpp:30 run: Exception occured:
/tmp/buildd/yadedaily-1.12.0-12-3c5f330~trusty/pkg/common/InsertionSortCollider.cpp: Body larger than half of the cell size encountered.

I am using Ubuntu 14.04.

Revision history for this message
Best Chareyre (bruno-chareyre-9) said :
#4

On 31/10/14 10:46, Mario Reyes wrote:
> I think the script you are referring me to is this
> https://github.com/yade/trunk/blob/master/examples/test/periodic-simple-
> shear.py.
Yes and no. Better don't download scripts from internet, they may be no
compatible with the version of yade you are using.
When you install yade (and depending on how you do it) the example
scripts are installed somewhere on your hardrive (you can use the
"locate" command).

> I understand that I can can set my required stress or strain
> through the parameter "goal", in every direction. If stress or strain is
> specified depends of "stressMask", but I have been checking the mailing
> list and the PeriTriaxController class reference and I don't understand
> how to set stress or strain through "stressMask".

Please read the explanations in examples/triax-tutorial/script-session1.py

> I got more confused with the following lines in the documentation:
>
> "The following creates periodic cloud of spheres and compresses to
> achieve \sigma_x=-10 kPa, \sigma_y=-10kPa and \eps_z=-0.1. Since stress
> is specified for y and z, stressMask is 0b011 (x→1, y→2, z→4, in decimal
> 1+2=3)"

I don't understand it very clearly either... please see script-session1.py

> I also have problems to understand the meaning of the parameter
> "relStressTol".
It defines how much stress can deviate from the target value for
considering that target is reached.

> Finally, in the same example script this line is
> present:
>
> O.cell.velGrad=Matrix3(0,6,0, 0,0,0, 0,0,0)
>
> Just before the conditions for the shearing. I think it is related to
> the periodic boundary conditions, but I am not sure. If you can give any
> insight in these topics would be of great help. Thanks again for your
> answer.
Since periodic boundaries are actually not boundaries, we need to define
deformation as a mean-field quantity.
The component "xy" of the velocity gradient (the one with the value 6)
is the constant shear rate.
BTW, this is the classical velocity gradient called "simple shear" that
you see here.
Yet the component "zz" will not be constantly zero. It will be adjusted
dynamicaly as soon as you impose a stress in "zz".

Bruno

Revision history for this message
Mario Reyes (ernestoreyes561) said :
#5

Thanks Chareyre, that solved my question.