On 28 May 2010 18:47, Bruno Chareyre <[email protected]> wrote:
> Chiara, > > If you have your noze in papers now, I'll let you think about the code > below (uncommited). The first line is what is in the code already. > Checking with paper and pen, I found that current equation is equivalent > to Cundall/Thornton expression only in the limit case of slow deformations. > Out of this limit, they can differ a little. I wouldn't bet on which one is > better, for now I can only tell they are slightly different. What do you > think (if you read on molecular dynamics, you probably know more than me > already)? > > The interesting thing is we can still write something _exactly_ equivalent > to Cundall equation by updating velocity, this is what is done below. I'll > give again the choice between two types of scaling probably. > > Cheers. > > Bruno > > > > /Vector3r > dVel((scene->cell->velGrad-prevVelGrad)*/*scene->cell->wrapShearedPt(*/state->pos/*)*/); > state->vel+=dVel; > //This is the convective term, appearing in the time derivation of > Cundall/Thornton expression (dx/dt=velGrad*pos -> > //d²x/dt²=dvelGrad/dt+velGrad*vel), negligible in many cases but not for > high speed large deformations (gaz, turbulent flow,...). Emulating Cundall > //in an option, I don't especially recommend it. I know homothetic 1 and 2 > expressions tend to identical values in the limit of dense quasi-static > //situations. They can give slitghly different results in other cases, and > I'm still not sure which one should be considered better, if any. > if (homotheticCellResize>1) state->vel+=scene->cell->velGrad*state->vel*dt; > / > Bruno, les't make a summary. ________________________ Cundall way (as you rightly pointed out) is the following: *** update of velocities (he does not, but as you already said this would be the solution): vel+=velGrad*vel*dt *** update of positions: pos+=(velGrad*vel*dt)*dt ________________________ Currently in Yade (NewtonIntegrator): *** update of velocities: vel+=(velGrad-prevVelGrad)*pos *** update of positions: pos+=(velGrad-prevVelGrad)*pos*dt ________________________ There is a term of difference between these two formulations. Basically, it is like writing: pos_Yade = pos_Cundall - prevVelGrad*pos*dt right? You said d²x/dt²=dvelGrad/dt+velGrad*vel. Cundall is using velGrad*vel, Yade is using dvelGrad/dt. Which one is better? I have not got it yet, it needs more investigation and if I find something I let you know. Note_1: Cundall is not updating velocities at all, which is probably not the best direction especially if we want to use the velocities say to apply damping or whatever. So I am glad we update velocities and then positions. Note_2: I am still not sure about the way we update relative velocities (I mean, why). Could you explain it, please? Thanks. cheers, Chiara
_______________________________________________ Mailing list: https://launchpad.net/~yade-users Post to : [email protected] Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp

