yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #06511
Re: twist plastic moment
Hi Chiara,
It is in trunk, starting at CFLaw.cpp:90 :
Real angle_twist_creeped = currentContactGeometry->getTwist() * (1 -
dt/viscosity_twist);
Quaternionr
q_twist(AngleAxisr(currentContactGeometry->getTwist(),currentContactGeometry->normal));
Quaternionr
q_twist_creeped(AngleAxisr(angle_twist_creeped,currentContactGeometry->normal));
Quaternionr q_twist_delta(q_twist_creeped * q_twist.conjugate());
currentContactGeometry->twistCreep =
currentContactGeometry->twistCreep * q_twist_delta;
Replacing angle_twist_creeped by plastic_rotation, you will get the
picture I think. It will translate into something like this :
plasticRollingIncrement = ...;//Defined for current step if M>Mmax
Quaternionr qPlastRollingIncrement (RollingIncrement,bendingAxis);
//represent it as quaternion
Quaternionr qRolling (rolling, rollingAxis); //represent also total
rolling as quaternion
// then define the plastic increment relative to initial (unrolled)
orientation
Quaternionr qPlastDelta(qPlastRollingIncrement * qRolling.conjugate());
// and add the increment to cumulated plastic rolling in interaction
currentContactGeometry->plastRoll =
currentContactGeometry->plastRoll * qPlastDelta;
currentContactGeometry->plastRoll will be substracted from total
relative rotation in precomputeRotations, like currently at ScGeom.cpp:97
if (creep) delta = delta * twistCreep;
Wich will translate :
if (irreversiblePlasticity) delta = delta * plastRoll;
If you are really not familiar with quaternions, I'll do my best to try
and assist.
I just had a look at CohesionlessMomentRotation from Boon. It is also
unloading plasticaly, as CFLaw now with your code, if I'm not wrong.
Cheers.
Bruno
On 10/12/10 15:36, Chiara Modenese wrote:
>
>
> On 10 December 2010 14:06, Chiara Modenese <c.modenese@xxxxxxxxx
> <mailto:c.modenese@xxxxxxxxx>> wrote:
>
> Hi Bruno!
>
>
> On a different aspect, there is maybe one thing you are not
> aware of.
> In unloading, you will unload plasticaly (maybe that is what you
> want? - honestly I don't
> think it makes less sense in the case of rolling friction).
> If you want to unload elasticaly, you need to record the plastic
> rotation.
> You can see a similar operation looking at the creep code, where
> crepped twist is stored
> and substracted from total twist.
>
> I think that this should be extended to CohesionlessMomentRotation.cpp
> and *.hpp as well. Any thoughts/suggestions from people using this law
> (Law2_SCG_MomentPhys_CohesionlessMomentRotation)?
> Cheers. Chiara
>
>
>
> Thanks for letting me know. Could you please tell me where is that
> this subtraction happens? This operation is not in the current trunk
> (if am not wrong). Also, could not you spend some few more words on
> how to achieve this?
>
> Thanks! Chiara
>
>
> Bruno
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-dev
> <https://launchpad.net/%7Eyade-dev>
> Post to : yade-dev@xxxxxxxxxxxxxxxxxxx
> <mailto:yade-dev@xxxxxxxxxxxxxxxxxxx>
> Unsubscribe : https://launchpad.net/~yade-dev
> <https://launchpad.net/%7Eyade-dev>
> More help : https://help.launchpad.net/ListHelp
>
>
>
>
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-dev
> Post to : yade-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-dev
> More help : https://help.launchpad.net/ListHelp
--
_______________
Bruno Chareyre
Associate Professor
ENSE³ - Grenoble INP
Lab. 3SR
BP 53 - 38041, Grenoble cedex 9 - France
Tél : +33 4 56 52 86 21
Fax : +33 4 76 82 70 43
________________
Follow ups
References