Triaxial test using polyhedra

Asked by Nima Goudarzi

Hi YADE community,

I’m wondering if modeling triaxial test using polyhedra is possible using YADE using built-in TriaxialStressController.
Sharing any experiences is highly appreciated.

Cheers,

Question information

Language:
English Edit question
Status:
Expired
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Jérôme Duriez (jduriez) said :
#1

Hi,

Yes, we can.
As a engine controlling boundaries, TriaxialStressController is fortunately insensitive to the packing's particle Shape.

Except for the measure of TriaxialStressController.porosity [*] which will be biaised because particlesVolume assumes Sphere shape (that's the only place where Sphere assumption appears, search for "Sphere" in [**])
If porosity is of interest to you, it will be easier to recompute it yourself, from your own solid volume (your Polyhedra) and using TriaxialStressController.boxVolume if you wish.

[*] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.TriaxialStressController.porosity
[**] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/TriaxialStressController.cpp

Revision history for this message
Nima Goudarzi (nimagoudarzi58) said :
#2

Thanks so much Jerome,

Porosity is for sure of interest but as you mentioned, I have the tools for its calculations. My issues are at larger extent:

1- aabbwalls does not work with polyhedra therefore I am forced to use walls instead
2- wall does not work properly as well especially in the confining phase. I have never been able to reach to the predefined triaxial goals. Most of the time the collision between walls and polyhedra does not occur and when I reduce the time step, the analysis becomes hatefully slow.
3- I use PSD for polyhedra in my simulations by first generating a sphere pack following a certain PSD and then converting them to polyhedra. Also I run triaxial tests in two phases with two different scripts: in the first one I generate the sample with my desired porosity using multi-layer compaction and export the particles (sphere, clumps, or polyhedra). I, then, import the particles in a separate script, and apply the confining presses and deviatoric loading.

In close, I have issues in box-polyhedra interaction . BTW do you by chance have a sample of triaxial tests with polyhedra?

Revision history for this message
Vasileios Angelidakis (vsangelidakis) said :
#3

Hi all,

Some thoughts I find relevant to this thread:

I can confirm that aabbWalls does not work for non-spherical particles, since it uses aabbExtrema(). If we teak aabbExtrema() to extract the extrema from the Aabbs of the particles rather than the radius, it has the capacity to work for any particle shape. In such a case, we should pay attention to whether we want to consider the enlarged Aabbs when a non-zero verletDist is used.

Also, if we calculated "particlesVolume" as mass/density inside the TriaxialStressController, we could get a calculation of porosity for any particle shape. The only sensitive point would be to use the correct mass when density scaling is applied. A more costly, but safer approach would be to check the type of each particle's shape and assign the appropriate value of volume (e.g. "getSpheresVolume()" for spheres, "GetVolume()" for each of the polyhedra, "volume" for each PB, etc.).

Last, the normal stiffness coefficient "kn" in "PolyhedraPhys" can have a variety of different units, e.g. N/m^3 if Law2_PolyhedraGeom_PolyhedraPhys_Volumetric.volumePower==1, which I am not sure if it's appropriate to use inside the TriaxialStressController. Jérôme, could you please advise on this?

Hope these help,
Vasileios

Revision history for this message
Jérôme Duriez (jduriez) said :
#4

> the normal stiffness coefficient "kn" in "PolyhedraPhys" can have a variety of different units

Indeed, I missed this point.. This would greatly affect (and not positively) the measure of packing-wall stiffness and stress servo control by the engine.. TriaxialStressController needs true spring force/displacement stiffness to work.. [*]

Maybe a simple solution could be to use bodies of Polyhedra shape, but stick with a classical FrictMat material (I do not know how much built-in functions for bodies creation, like utils.polyhedron or polyhedra_utils.polyhedra accommodate this behavior, but you can always create yourself the correct Body) and FrictPhys interactions physics
Using classical ScGeom through Ig2_Polyhedra_Polyhedra_ScGeom might be necessary as well in the end (for picking an existing Law2)

As for the boundary bodies, I did not get whether you intend to use Box-shaped or Wall-shaped ones (both are possible with TriaxialStressController, just assign yourself TriaxialStressController.thickness = 0 if you want Wall s). But note that Wall-Polyhedra interaction has recently been updated / corrected [**]

(from a personal point of view, I can share I'm sometimes trying to play with Polyhedra shapes at the moment, but never ran a triaxial test myself. And I'm looking forward to feedback from other Polyhedra users..)

[*] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/TriaxialStressController.cpp#L73 and https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/TriaxialStressController.cpp#L99
[**] see the history at https://gitlab.com/yade-dev/trunk/-/merge_requests/502

Revision history for this message
Nima Goudarzi (nimagoudarzi58) said :
#5

Thank you both Jerome and Vasileios,

Vasileios: "If we teak aabbExtrema() to extract the extrema from the Aabbs of the particles rather than the radius, it has the capacity to work for any particle shape"

How? I have no idea regarding this. Is there any example available?

The porosity calculation is my least concern. I do it outside YADE using 3d cad modeling and weight/volume relationships. my approach has been successful for clumps. The same applies for polyhedra.

Regarding Vasileios's comment and Jerome's reply, it turns out that built-in YADE triaxialStressController do not still suffice my purpose

Jerome: "As for the boundary bodies, I did not get whether you intend to use Box-shaped or Wall-shaped ones (both are possible with TriaxialStressController, just assign yourself TriaxialStressController.thickness = 0 if you want Wall s). But note that Wall-Polyhedra interaction has recently been updated / corrected [**]"

I'm running triaxial and need something functioning as triaxial chamber boundaries for polyhedra. Whatever works in the context of triaxialStressController is welcome.

Thanks,

Revision history for this message
Launchpad Janitor (janitor) said :
#6

This question was expired because it remained in the 'Open' state without activity for the last 15 days.