> 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 _______________________________________________ Mailing list: https://launchpad.net/~yade-dev Post to : yade-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-dev More help : https://help.launchpad.net/ListHelp