← Back to team overview

yade-users team mailing list archive

Re: [Question #698058]: confused by UniaxialStrainer's parameters and uniaxial compression test


Question #698058 on Yade changed:

    Status: Open => Answered

Jan Stránský proposed the following answer:

As a beginner of Yade

welcome :-)

TL;TR: use "for i in O.interactions: i.phys.unp =
i.geom.penetrationDepth" [1] trick (see below)

> no matter how to modify the parameters of UniaxialStrainer()

Have a look at stressUpdateInterval parameter [2] (although it is not so important).
Set stressUpdateInterval=1 to get smooth curve.
Set a larger value for larger simulations (stress evaluation needs some time, usually it not necessary to do the evaluation every iteration, but rather e.g. only before plot.addData)

>  for b in O.bodies:
>   if isinstance(b.shape,Sphere):
>    if(b.state.pos[axis] < (dim[0][axis]+layerSize*height)) or (b.state.pos[axis] > (dim[1][axis]-layerSize*height)):
>     b.shape.color=(1,1,1)

Do not use this, use posIds and negIds directly if you have them already:
for i in posIds + negIds:
    O.bodies[i].shape.color = (1,1,1)

> I can't get the ideal stress-strain curve.

How do you define "ideal stress-strain curve"?

> 1.When the following code is run, the strain increases and the stress
remains constant after an instantaneous increase.

The problem is that even with zero strain rate, your packing is not balanced, with high initial stress.
The next straining is too weak compared to this initial stress.
Repair it with [1]:
# somewhere after O.step(), before running
for i in O.interactions:
    i.phys.unp = i.geom.penetrationDepth
The "unp trick" was discussed several times in another questions.
Doing this, the packing is in a stress-free state.

> 2.When I changed the parameter asymmetry of uniaxialstrain() to 1, the
cylinder was scattered from below, which puzzled me.

By default, asymmetry is 0, i.e. the sample is loaded by symetric displacement of both ends.
For asymmetry=1, one end is fixed and the other one end is displaced.

> 3.In the above process, I am also puzzled by the positive and negative
values of stress and strain.In my understanding, when strainrate is set
to a negative value, the stress and strain are both compressive, then
both are negative. But the actual situation doesn't seem to be like

"doesn't seem to be like this" - please try to make "evidence" instead of "seem".
E.g., printing strainer.strain and strainer.avgStress, both values are negative.
Maybe the plot, made by the command plot.addData(...,eps=-strainer.strain), confuses you (note the minus sign)?

Note about stopIfDamaged function, try to print the values used, the condition IMO does something else than is should.


[1] https://answers.launchpad.net/yade/+question/295035 (and used links for previous references and discussions)
[2] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.UniaxialStrainer.stressUpdateInterval

You received this question notification because your team yade-users is
an answer contact for Yade.