← Back to team overview

yade-dev team mailing list archive

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