← Back to team overview

yade-users team mailing list archive

Re: Periodic triaxial

 

On 28 May 2010 18:47, Bruno Chareyre <bruno.chareyre@xxxxxxxxxxx> 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

Follow ups

References