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 <[email protected]> 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 : [email protected] >> 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 : [email protected] > 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 : [email protected] Unsubscribe : https://launchpad.net/~yade-dev More help : https://help.launchpad.net/ListHelp

