Uniaxial strainer source

Asked by loiseaurare

Hi everybody,

I am trying to understand how exactly are calculated averageStress and strain in the uniaxialStrainer class.
I am not sure understand what means "negativeIds" or "positiveIds", or why those have been defined in that way, and I am not familiar with cpp, so I thought I'd ask fo a bit of help on that issue.

If anybody can help, I'd be glad !

Cheers all,
Manon

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
Jan Stránský (honzik) said :
#1

Hi Manon,
see [1,2]
positiveids and negativeids are ids of bodies of one or the other side, whose displacement/velocity along straining axis is controlled.
For beginning, I suggest to start with an existing script and experiment from a working state.
cheers
Jan

[1] https://github.com/yade/trunk/blob/master/pkg/dem/UniaxialStrainer.hpp
[2] https://github.com/yade/trunk/blob/master/pkg/dem/UniaxialStrainer.cpp

Revision history for this message
loiseaurare (loiseaurare) said :
#2

Hi Jan, thanks for your answer. Let me precise my question : when you say they are the ids of bodies of one or the other side, what are we talking about ?

Are they the one and other side of a middle plan defined along the straining axis or perpendicular to this one ?

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

Hi,

Let say you want to strain your sample along "x" axis, and that the sample spans along this axis from xMin to xMax

UniaxialStrainer does this by directly imposing some opposite x velocities to these two set of bodies (negIds and posIds) that locate at or around xMin, and xMax (at, or around, since you would usually take some thickness for this layer of controlled bodies)

- negIds being the bodies located at x = xMin
- while posIds are at xMax

With respect to your question, all these bodies should belong to plans that are perpendicular to the x axis.

Hoping the situation is now clearer to you, would you have a specific suggestion to rephrase the doc at [1,2,3], in case this doc was unclear ?

[1] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.UniaxialStrainer
[2] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.UniaxialStrainer.negIds
[3] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.UniaxialStrainer.posIds

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

Hi Manon,
have a look at [1], figure 3.8 (page 49). Red particles are posids and green particles are negids (or vice versa, you can easily test it). Their velocity/displacement is prescribed and force is measured.
cheers
Jan

[1] http://beta.arcig.cz/lide/eudoxos/smilauer2010-phd-thesis.pdf

Revision history for this message
loiseaurare (loiseaurare) said :
#5

Hi Jerome and Jan,
Thanks for your explanation, after re-reading it the documentation seems now clearer to me, I guess my hesitation about the Negative and Positive Ids came from the fact that I did not have a visual support, maybe it could be worthwhile to add the image from [1] in the documentation, if so can be done....

[1] http://beta.arcig.cz/lide/eudoxos/smilauer2010-phd-thesis.pdf

I have another question related to the calculation of average stress : is it possible to obtain the cross section used by uniaxial strainer for the calculation ? I mean it's location.

From what I read it seems like if one would like to adapt uniaxialStrainer to implement a Brazilian test, the crossSection area would have to be specified in order to get the correct tensileSigma right ? Otherwise, it seems to me like the convex hull would define the cross section area a bit fantastically.

Or maybe it would'nt be right to use avgSigma at all, and it should be calculated using the force recording ?

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

Hi Manon,

> I have another question related to the calculation of average stress : is it possible to obtain the cross section used by uniaxial strainer for the calculation ? I mean it's location.

Cross section area is a parameter for UniaxialStrainer at initialization:
O.engines = [ ..., UniaxialStrainer(...,crossSectionArea=whatewer, label="uniax"), ...]

you can get / set the value any time
cs = uniax.crossSectionArea
uniax.crossSectionArea = pi*pow(r,2)

but is is computed outside UniaxialStrainer and UniaxialStrainer knows nothing but its value (no position, method of computation...)
have a look at UniaxialStrainer source codes and search for crossSectionArea

cheers
Jan

Revision history for this message
loiseaurare (loiseaurare) said :
#7

All right, thanks a lot guys for all your answers. I got a little bit confused and thought I could plot stress and sigma for a Brazilian test using the features of the uniaxial strainer, which are obviously not adapted. I mean, I guess you could set the cross section area so that you would actually have the rigth tensile stress, but the strain would have to be change I think.

I' m just going to plot force-displacement for now !

cheers, and thanks a lot for your attention and time,

Manon

Revision history for this message
loiseaurare (loiseaurare) said :
#8

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