Minor-symmetric order-4 tensors and symmetric order-2 tensors form spaces of dimension 21 and 6 in 3-D. The Kelvin–Mandel representation makes that explicit by mapping them onto matrices and -vectors isometrically, which turns tensor algebra into matrix algebra. It goes back to Thomson [1] and Mandel [2]; its spectral consequences are developed in [3].
The factors are chosen so that the map is an isometry for the Frobenius scalar product of Tensor algebra. Every line below is an identity, verified in test/:
Tensor statement
Matrix statement
Double contraction is an ordinary matrix product and inversion an ordinary matrix inverse. This is why every projection algorithm in this library is written in the picture.
Let and let be the order-4 tensor rotating minor-symmetric tensors (Rotations). Its Kelvin–Mandel matrix
so a change of frame is an orthogonal congruence
TensND builds it either from Euler angles (_KM_rotation(θ, ϕ, ψ)) or directly from a frame (_km_congruence, in src/tens_anisotropic.jl); the latter is what relates the two views of an orthotropic tensor,
with the block-diagonal matrix in the material frame (Orthotropy).
Why orthogonality is the whole point
Because is orthogonal, the congruence is a rotation of the 21-dimensional Euclidean space of elasticity tensors: it preserves , hence preserves distances to a symmetry class. Every projection in Projection onto a symmetry class may therefore be computed in whichever frame is convenient and rotated back, and the optimization over orientation is an optimization over a compact group acting by isometries. In Voigt notation none of this holds.
This identity is easy to get wrong and easy to appear right: in the canonical frame and every convention error hides. It is therefore pinned by a test on a rotated frame (Testing and conventions).