← Back to team overview

yade-dev team mailing list archive

Re: [Yade-users] [Question #199704]: getStress for ScGeom

 

(moving to yade-dev)

The current getStress gives exactly the same stress as
PeriTriaxController (verified).

hSize*cellDist gives a translation that must be applied on b2 to move it
in the same period as b1.
In PeriTriaxController we have:
Vector3r branch=Body::byId(I->getId2(),scene)->state->pos +
scene->cell->hSize*I->cellDist.cast<Real>()
-Body::byId(I->getId1(),scene)->state->pos;

In getStress, the branch is defined with the opposite sign, so we have
-hSize*cellDist instead of +hSize*cellDist. Everything looks correct if
I don't miss something.

For revertSign, I support the following interpretation:
- _positive tensile stress has always been the rule in Yade_.
- the sign of normal force is not to be discussed. The question is on
which body the force vector (fn*normal + fs) is applied (note that there
is the shear force here, whose sign is not affected by the
compression/traction issue). In ScGeom laws, the force vector is applied
on b2, in Dem3Dof laws it is applied on b1.
- since different laws define the force differently, the reverseSign
flag had been introduced in PeritriaxController to make it work whatever
the law. It is currently replaced by "useDem3Dof" flag, which plays
exactly the same role but points more explicitely the real purpose of
the flag.
- when PeriTriaxController will use getStress instead of its own
function, it will read like:
stress = useDem3Dof ? -getStress() : getStress();
So, clearly, there no use of a "sign" parameter in getStress() itself.

Again: the revert flag never allowed anybody to get negative tensile
stress. Isotropic compression, for instance, is always defined by
negative stress values in "goal". If someone tries to revert this
convention by playing with revertSign (or now useDem3Dof), it fails. And
if one don't set useDem3Dof correctly with respect to the law used, it
breaks: PeriTriax explodes or shrink to 0-size.

Bruno

On 24/06/12 20:11, Jan Stránský wrote:
> Question #199704 on Yade changed:
> https://answers.launchpad.net/yade/+question/199704
>
> Jan Stránský proposed the following answer:
> I am doing some tests now, and the first result is that with minus
>
> if (isPeriodic) branch -= scene->cell->hSize*I->cellDist.cast<Real>();
>
> the results are not ok, while with
>
>
> if (isPeriodic) branch += scene->cell->hSize*I->cellDist.cast<Real>();
>
> the results are ok.. In the tests, I am using convention that positive 
> normal stress is tensile.. I will look on I->cellDist (I have never used 
> it) and let you know if I discover something :-)
>
>
> My idea when thinking of not using reverseSign flag was that if you use 
> positive forces for tension, you would obtain positive stress for 
> tension and vice versa, but maybe this assumption is not correct..
>
> Jan
>
> On 24.6.2012 13:25, Chiara Modenese wrote:
>> Question #199704 on Yade changed:
>> https://answers.launchpad.net/yade/+question/199704
>>
>> Chiara Modenese proposed the following answer:
>>
>> On 24 Jun 2012, at 11:15, Chareyre wrote:
>>
>>> Question #199704 on Yade changed:
>>> https://answers.launchpad.net/yade/+question/199704
>>>
>>> Chareyre proposed the following answer:
>>> Sure there is not another difference elsewhere giving the same result in
>>> the end (e.g. sign of force)?
>> Yes, in fact there is no reversed sign inside the function getStress but instead there is in PeriIso*.cpp. The result should be the same in the end (Jan, have you done any test in these regards?). I gather it was decided not to keep reversing the sign of contact forces depending on the convention but I am not sure it is the best solution (I think it was a good reminder to not overlook that feature).
>>
>> Chiara
>>
>>
>>> -- 
>>> You received this question notification because you are a member of
>>> yade-users, which is an answer contact for Yade.
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~yade-users
>>> Post to     : yade-users@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~yade-users
>>> More help   : https://help.launchpad.net/ListHelp


-- 
_______________
Bruno Chareyre
Associate Professor
ENSE³ - Grenoble INP
Lab. 3SR
BP 53
38041 Grenoble cedex 9
Tél : +33 4 56 52 86 21
Fax : +33 4 76 82 70 43
________________