yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #04914
Re: Contact damping
Hi Bruno,
I will do it tomorrow, thank for suggestions! I will tell you more before
committing the changes if I face problems.
cheers! Chiara
On 20 June 2010 20:30, Bruno Chareyre <bruno.chareyre@xxxxxxxxxxx> wrote:
> Hi Chiara,
>
> I have a better suggestion that would not need a new class. You could add a
> variant of ScGeom::rotateAndGetShear() that would return incident velocity
> instead of shear increment. It will not be a big deal to compute normal and
> shear increments in your constitutive law if you have incident velocity, so
> you don't have to use getShear.
> Currently, ScGeom::rotateAndGetShear() has two parts : one is rotating a
> vector, the other is returning shear increment.
> The best would be to split all that in three functions : rotate, getShear,
> and getIncidentVel, so I think everything could be computed only once even
> in your case.
> You could for now try and implement rotate/getIncidentVel, and let
> rotateAndGetShear be as it is now since removing it will need to commit
> changes in many classes. Later it will have to be splitted as well, which
> will need to commit (minimal) changes in all functors using it.
>
> Cheers.
>
> Bruno
>
>
> The best would be to split that into two functions :
>
>
>> All I would need is the relativeVelocity to compute incidentVn and
>>> incidentVs, having the normal. If I inherit from ScGeom, relativeVelocity is
>>> not a member of it. So how would you access it?
>>>
>>> class ScGeomWithVel: public ScGeom: {
>> ...
>> YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(ScGeomWithVel,ScGeom,....
>> ((Vector3r,incidentV,"incident velocity. |ycomp|"))
>> }
>>
>> Vector3r ScGeomWithVel:::rotateAndGetShear(){//I'd have to make it virtual
>> in ScGeom too, not a problem
>> ...
>> Vector3r relativeVelocity = (rbp2->vel+rbp2->angVel.cross(c2x)) -
>> (rbp1->vel+rbp1->angVel.cross(c1x));
>> relativeVelocity+=shiftVel;
>> incidentV = relativeVelocity;
>> <------------------------------------------ updating your variable here
>> //keep the shear part only
>> relativeVelocity = relativeVelocity-normal.dot(relativeVelocity)*normal;
>> ...
>> }
>>
>> Later in the constitutive law, you just access ig->incidentV.
>> Other suggestions?
>>
>> Bruno
>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev>
>> Post to : yade-dev@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev>
>> More help : https://help.launchpad.net/ListHelp
>>
>>
>
> --
> _______________
> Bruno Chareyre
> Associate Professor
> 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
> ________________
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev>
> Post to : yade-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev>
> More help : https://help.launchpad.net/ListHelp
>
Follow ups
References