# general (asymmetric) real rank-2 tensor visualization in 3d

I have general rank-2 real tensor in 3d space represented as a 3x3 real matrix $M$ (it is gradient of a vector field). I am writing some code to visualize it in several isolated points, this is what I do:

1. Compute symmetric/skew part $M_s=\frac{1}{2}(M+M^T)$, $M_a=\frac{1}{2}(M-M^T)$.
2. Do eigenvalue decomposition of $M_s$, which gives me orthonormal set of local (principal) axes as eigenvectors, i.e. a rotation matrix $T$, and principal components, along each of those axes.
3. I visualize principal components with arrow couples, either pointing towards each other if the corresponding principal value is negative, and away from each other if positive.

The question is how to visualize the asymmetric part? I was thinking about computing asymmetric part in principal coordinates, i.e. $\frac{1}{2}\left(TMT^T-(TMT^T)^T\right)$ adding circular arrow couples (since asymmetry refers to field rotation; like at the picture). Is it correct?

(the red, green and blue lines looking like artifacts are local ($\neq$ principal) coordinate system)

EDIT: now I understood what I was looking for. Supposing a tensor $M$, I want to visualize it as its principal components (which makes sense only for the symmetric part $M_s$) plus the skew-symmetric part. Finding principal axes of $M_s$ as $T$, can I transform $M_s$ to principal coordinates meaningfully as well? The answer is $$TMT^T=T(M_s+M_a)T^T=TM_sT^T+TM_aT^T,$$ therefore I can visualize tensor $TM_sT^T$ as arrows (it is diagonal), and then rotation vector $\epsilon(TM_aT^T)$ as circular arrows, where $\epsilon$ is the Levi-Civita tensor (thanks to Alice for the reference).

-
In fluid dynamics the tensor you are talking about is decomposed into three pieces: 1) the trace, aka the compressive term, 2) the rotation or asymmetric part, 3) the traceless symmetric, or sheer component. The rotation is a curl denoting rotation. It's just another vector in other words, not sure if this helps visualize. – Alice Aug 5 '11 at 13:52
Do you mean diagonal+(symmetric-diagonal)+asymmetric? It is clear, though in this case showing principal components makes more sense. The rotation vector is extracted from the skew-symmetric part as its components (1,2),(0,2),(0,1) (0-based indexing, sorry ;-) ). – eudoxos Aug 5 '11 at 16:44

This question reminds me of the tensor commonly used in fluid dynamics $\nabla v$ or the tensor $T_{ij} = {\partial v_i \over \partial x_j}$ where $\vec v$ is the velocity. This tensor is the sum of three components. The first one is the trace $$\theta = {\partial v_i \over \partial x_i} = \nabla \cdot v,$$ where I have used summation notation (when two indices are repeated you sum over $i=x,y,z$). The second component is the traceless symmetric component $$\sigma_{ij} = \frac1{2}\left({\partial v_i \over \partial x_j} + {\partial v_j \over \partial x_i}\right) - \frac1{3} \theta \delta_{ij}$$ where $\delta_{ij}$ is zero if the indices differ otherwise 1. The last component of $T$ is the traceless antisymmetric component $$a_{ij} = \frac1{2}\left({\partial v_i \over \partial x_j} - {\partial v_j \over \partial x_i}\right) .$$ You can show that $$T_{ij} = \frac1{3} \theta \delta_{ij} + \sigma_{ij} +a_{ij}.$$ The traceless antisymmetric component has three independent components and so can be turned into a vector $$\omega_k = \epsilon_{ijk} a_{ij}$$ where I have used the antisymmetric Levi-Civita tensor. Note that you can show that $\omega = \nabla \times v$ is the curl of the velocity field. This vector is also known as the vorticity. In fluid dynamics, you get a force or stress from $\sigma$ times the viscosity. $\theta$ is only important if the fluid is compressible. The vorticity describes rotation in the fluid which I think is what you want. The vorticity is generated in boundary layers and is also very important in magnetohydrodynamcs. To get more intuition I would watch some of those excellent videos at NCFMF. In particularly there are the films Vorticity parts 1,2. The videos are beautiful and worth watching anyhow (a really treat actually).
Thanks for writing it symbolically down. The Levi-Civita tensor is what I've written as extracting (1,2),(0,2),(0,1) components from the skew-symmetric part $a_{ij}$ (oh, I actually see now that $\epsilon_{ijk}$ gives twice that), those are rotation components along $x$, $y$, $z$ axes and give rotation vector. Now I actually also understood what I wanted, and it is pretty simple :-) I write it down in a separate answer. BTW the field is really $\nabla v$, though in solid mechanics. – eudoxos Aug 8 '11 at 9:01