Uniform Traction Boundary

Asked by Gary Pekmezi

Hello all,

I am using Yade for my research on the statistics of soil behavior at various scales. One thing that I have been wracking my brain on, is how to impose a uniform traction boundary on a confined polydisperse model. TriaxialStressController works wonderfully for a uniform-displacement boundary, but I don't see a way to use for uniform-traction.

Perhaps someone has already worked on this or at least given it some thought? Maybe this ability is already built in and I am just not seeing it? The only reference I can find in the literature is this paper https://arxiv.org/pdf/1612.07006.pdf.

One idea I had on how to do this with Yade is to turn off TriaxialStressController after confinement, then get a list of the boundary particles using O.interactions.withBody(w) where 'w' is a body representing a wall. Once I have a list of the boundary particles, I can use O.ForceContainer.setPermF() to apply to each particle a force proportional to its cross-sectional area. That should work in principle, although I suppose I would have to introduce some dynamic relaxation to the boundary particles.

Thank you for any thoughts/suggestions.

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
Last query:
Last reply:
Revision history for this message
Jérôme Duriez (jduriez) said :
#1

Hi,

I guess we will need more background information here, especially with regards to your contact model. Since you speak about traction, I guess you deal with cohesive interactions. Also, what kind of traction are you referring to ? Uniaxial tension test ? or something else ? (see below..)

With cohesive interactions, uniaxial tension test could be imposed easily on e.g. a classical parallelepipedic sample by directly moving a selection of "non-dynamic" particles at the sample ends: if you want impose a uniaxial tension test along y axis, take the particles close to yMin and yMax for instance (and you may also choose to let these particles be "dynamic" along x and z directions).

If you wish, you may also strengthen manually the cohesive properties of the interactions between these particles and the rest of the sample, to be sure that fracture initiates within the sample, and not just close to the controlled boundaries.

That's the method we used in Duriez2016a [*] (where you won't find more details about the numerical procedure, though..)

Now I wrote all this I'm just realizing you may also refer just to traction vector i.e. stress components.... In this case TriaxialStressController actually is also perfect to apply uniform (there is only one value....) stress components, see goal1,2,3 and stressMask attributes, the example scripts, and all triaxial test simulations done with Yade....

Jerome

[*] from https://www.yade-dem.org/doc/publications.html

Revision history for this message
Best Jan Stránský (honzik) said :
#2

Hello,

I supposing uniform-traction = applied constant stress. In this case, as usually in **discrete** elements, it is a bit tricky to deal with continuous stress :-)

You have several options
1) the one proposed by you
2) the same approach, but instead of applying force on just particles touching the walls (I would say it would be too loose), you define a layer and choose more particles
3) instead of one wall, you can "mesh" it, i.e. using several facets/boxes instead of one large one and applying corresponding force on them

The right choice depends on many factors, but in principle it is possible.

cheers
Jan

Revision history for this message
Gary Pekmezi (gpekmezi) said :
#3

Thank you both for your suggestions.

I apologize for the ambiguity, I am in fact referring to the traction vector and trying to approximate a *continuous* stress boundary using *discrete* elements. It looks like my method for doing so was a bit *coarse*, and I appreciate the more *granular* suggestion offered in (2). I will try it on a representative volume and report back on the results.

Revision history for this message
Gary Pekmezi (gpekmezi) said :
#4

Thanks Jan Stránský, that solved my question.

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#5

Hi,
1) and 2) can work if you have only very small deformations. If the deformations are larger, the "boundary" particles you find in the initial state may not be at the boundary all along the simulation, they will be replaced by others which will soon be ejected from the problem if they don't get the "boundary force" they should.
A clean solution is to have an updated mesh of the contour (a concave hull) and to update the forces on the boundary particles continuously. It is not implemented as is but algorithmic blocks which can be used to get concave hull are present in the code.
Bruno

Revision history for this message
Gary Pekmezi (gpekmezi) said :
#6

Thank you for your suggestion Bruno.

I currently need to run small deformation simulations, however I may need to simulate larger deformations in later and either way the "concave hull" approach seems like it would be more robust. So I'd like to inquire about the "algorithmic blocks" you reference.

My initial idea for the hull is as follows. Perhaps I periodically call TesselationWrapper to mesh the domain then traverse the exterior of it to find the boundary. Then I suppose I can apply a force directly on the particle. By the way, I am not familiar with ServoPIDController, might it be a better way to apply force on the boundary particles than setPermF?

Thanks,
Gary