← Back to team overview

yade-dev team mailing list archive

Re: [Branch ~yade-dev/yade/trunk] Rev 1932: - merge stiffness/inertia control in PeriTriaxEngine and remove periEngine

 

Wow! Man, it will be hard for me to improve the existing code if you revert my changes (I need to recompute Hsize in many places atm because you didn't want it in Cell...). Did the change affect your simulations, they should not? I should go back to the copy/paste method to be able to keep code in order for at least a few days? ;)

Wading through the code a few things I need explanation as I am
otherwise thinking of reverting them:

1. Why use logarithmic strain? I have code for plotting strain-stress
curves, for instance, which uses PeriTriaxController; those are plotted
(at least for concrete) with linear (small) strain. Is there some
advantage besides that it is customarily used in geomechanics?

If it causes trouble, just tell me and I'll see how to fix it. It was not supposed to change anything for you (especially if you work in small strains, you should not see any difference). So why do you need to revert this?

This is not geomechanics, just "correct" mechanics. It makes things consistent. - Take real a steel bar and make a tensile test on it. Plot force vs. dL/L, it is not linear (even if it looks linear for small strains). Plot force vs. log((L+dL)/L) , it is always linear (provided you didn't enter plasticity ofc). The same happen in DEM simulations. - volume change : with your definition ev!=(e11+e22+e33), with Log, they are always equal. - apply a strain rate of -10e-2/sec for 50 seconds. Result with your strain 0.393 (not equal to strainRate*time!), result with log : -0.5. - with log, there is no upper limit to strain (except the grain size/period size condition), you can compress 100, 200, 300%. With your definition, e=100% has no meaning. - most users won't notice any difference if they are in small strain, you don't need to adapt anything or "think" about it. When "your" strain is 0.01, log(1.01)/1 gives 0.0995 (log is just slightly more accurate). And if you don't remove the exponential, target will be reached exactly.

2. Why are you removing refSize everywhere? The initial cell is always a
box (perpendicular), and refSize has clear meaning. Current size also
has meaning, and is needed by the collider.
I'm not removing refSize at all, and I agree on the clear meaning of it (size is different, see #1).
Did it change something for you?

The current (reverted) code is doing approximately this :

maxGrow = dt*maxRate*refSize;(in meters)
Grow = targetStrain*refSize;(in meters)
compare(Grow,maxGrow);
velGrad = Grow/refSize;

Does it make sense to multiply THEN divide by refSize?!
I suggested this, simpler and generalised more easily :

maxGrow = dt*maxRate;(in [-])
Grow = targetStrain*refSize;( in [-])
compare(Grow,maxGrow);
velGrad = Grow/dt;

would have been even better :

Grow = targetStrain*refSize;( in [-])
velGrad = Grow/dt;
compare(velGrad,maxRate);




#1. I'm currently working with the polar decomposition of F to define proper stretches and rotations. It is the only way to define a "size" without rotational artifacts for e.g. simple-shear (note that simple shear is the most interesting non-axis-aligned loading, pure shear makes no sense since it is just a classical triaxial test performed on rotated box).

It almost work, and it allows shearing the cell forever without reaching the "2*halfsize>size" limit. It simplifies many parts in the code (collider using period of lengths refSize instead of getSize...). Should I commit this to trunk without copy/paste? You will not revert it the day after? :)

(And really please don't put so many spaces to code (and not to code you
copy&paste), I admit this is not rational, but I have hard time reading
spacey code and screen cannot take as much code as it could.)
What you see in my code is not specially "french" (or I missed something), it is the default c++ indentation of kdevelop (yes, I auto indent...). Sorry for that. I'm, looking forward for Anton's guidelines in order to set kdevelop indent mode. There should be a way to commit this setting in trunk/yade.kdevelop.

Bruno

--

_______________
Chareyre Bruno
Maître de Conférences

Grenoble INP
Laboratoire 3SR - bureau E145
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