← Back to team overview

yade-dev team mailing list archive

Re: velgrad

 

> I'll try to review that and make suggestions in the comming days (and 
> again : no shearIncr is not strainIncr, it is really the displacement 
> increment gradient for step dt, best name perhaps : "trsfIncr").
> > I removed VELGRAD and unified both approaches. You can set
> > strain/refSize directly,
> What is strain? What is the difference between size and refSize?
> What is the meaning of this? :
> _shearTrsfMatrix[0][0]=_shearTrsfMatrix[1][1]=_shearTrsfMatrix[2][2]=1.;

A more complete description of the current way (with no claim it is
right; we can use the http://en.wikipedia.org/wiki/Finite_strain_theory
notation in the future to know what we talk about; after all, they quote
http://en.wikipedia.org/wiki/Finite_strain_theory#cite_note-0 written by
my boss, so that page is certainly right ;-) )

Current Matrix3r strain:

Δx/x₀ δx/y₀ δx/z₀
δy/x₀ Δy/y₀ δy/z₀
δz/x₀ δz/y₀ Δz/z₀

where Δx=x-x₀ and x is current cell size along (unsheared) x axis. δx/y₀
is shear of the cell top in the +x sense perpendicular to +y, i.e. tan
φyx. (I am not sure if I didn't transpose the matrix, sorry).

I think we can really decribe any transformation by a Matrix3, since we
always map box to a parallelepiped, i.e. 3 points to 3 points (9
coordinates, exactly number of elements of a 3x3 matrix): e.g.

  0,y₀,0 → 0+y₀*εyx,y₀+y₀*εyy,0+z₀*εyz

(similar for x₀,0,0 and 0,0,z₀). (This is not bound to small strains in
any way, as far as I see). It seems then that Hsize is the product of

  x₀,0,0   
  0,y₀,0 * strain
  0,0,z₀

right?

The strain matrix can be "decomposed" in its diagonal and non-diagonal.

The diagonal (Δx/x₀, Δy/y₀, Δz/z₀) is normal (extensional) strain.
Multiplying refSize by normal strain (by components) gives _size.

shear matrix (_shearTrsfMatrix) is strain matrix non-diagonal terms, but
with 1s on the diagonal:

1     δx/y₀ δx/z₀
δy/x₀ 1     δy/z₀
δz/x₀ δz/y₀ 1

This matrix is used frequently, since collisions etc are detected in
scaled but UNsheared coordinates (positions are in scaled and sheared
coordinates).

Relative volume difference is det(strain); if it is upper-triangular or
lower-triangular, this determinant is product of the diagonal terms;
therefore applying pure shear doesn't change volume (since it doesn't
change _size).


OK, this is how I meant it in the past. I will study that wiki page and
your code to see what should we do. I am totally free to change
anything, but I need (names might differ, I refer to the current ones):

1. Have a refSize vector, with the ability to change it directly.

2. Have a _size vector, giving current cell size along all 3 axes
(needed for wrapping points in the collider)

3. Have a matrix to shear/unshear a point (without scaling by normal
strain).

4. Way to compute cosines of inclination of cell walls (for Aabb
functors)

5. Way to directly prescribe cell normal&shear strain (like what the
strain matrix has now).


We want to keep:

6. velGrad matrix + incremental integration of transformations.

Ugh, I am writing in a little confusing way. Better to continue
tomorrow. Hope this doesn't make more mess than there was.

v




Follow ups

References