Orthotropy
<!– crosslinks: written by .github/scripts/crosslinks.py from docs/crosslinks.toml; do not edit –>
See also
Theory: Cubic symmetry
Manual: Structured tensors · Projection and symmetry detection
Tutorials: Projection and symmetry detection
<!– /crosslinks –>
Orthotropy is invariance under the reflections through three mutually orthogonal planes. It is the least constrained class TensND gives a dedicated storage type (TensOrtho, src/tens_anisotropic.jl): nine constants plus a material frame, against 21 for a general minor- and major-symmetric tensor, or twelve constants for an orthotropic tensor without major symmetry.
The coefficients
Let
Block-diagonal in the material frame
The whole point of the class is that in its own frame the Kelvin–Mandel matrix splits:
Extension and shear decouple entirely. This is mandel_material; the matrix in the canonical frame is mandel, and the two are related by the orthogonal congruence of Kelvin–Mandel representation,
with _km_congruence), without going through Euler angles. Because the two blocks never mix, the closed-form inverse is one
Major symmetry and storage
with
| Storage | Coefficients | Case |
|---|---|---|
TensOrtho{4,T,9} | major-symmetric, | |
TensOrtho{4,T,12} | the nine, then | general |
The widening is not cosmetic: the product of two major-symmetric orthotropic tensors is generally not major-symmetric, because TensOrtho{4,T,9} ⊡ TensOrtho{4,T,9} returns an N=12 container, as TensTI{4,T,5} ⊡ TensTI{4,T,5} returns N=6 (The Walpole basis). The cause is the same in both classes: the major-symmetric tensors of a class do not form a subalgebra, only the class itself does. The twelve-constant tensors of a frame do: products and inverses act on the blocks,
and the transpose transposes
a skew part orthogonal to every major-symmetric tensor: the orthogonal projection onto the nine-constant class is the major-symmetric part (Tensors.majorsymmetric).
Cubic symmetry is the exception that shows what is really at stake. There each irreducible representation of the group appears with multiplicity one, so the commutant is spanned by three mutually orthogonal projectors, any two cubic tensors about the same cube commute, and the product stays in the class and stays major-symmetric. Orthotropy fails on both counts for the same reason: its
When the two operands are expressed in different material frames the product is generally fully anisotropic, and the implementation falls back to the generic route bit for bit. A transversely isotropic operand whose axis is one of the frame axes is orthotropic on that frame, and its product with an orthotropic tensor stays in the twelve-constant form.
No chiral shape
Transverse isotropy has two families of shapes: those invariant under the full group
Where the classes sit
Each arrow is an exact re-expression, not an approximation: an isotropic tensor really is transversely isotropic about every axis, and a transversely isotropic one really is orthotropic in any frame containing its axis. The converse direction — pushing an arbitrary tensor down the chain — is approximation, and is the subject of Projection onto a symmetry class.
The promotions are implemented in src/structured_tens_promotion.jl and are what allow mixed-class arithmetic (TensISO ⊡ TensOrtho, TensTI{2} ⊡ TensTI{4}) to stay in closed form.
Order-2 orthotropy
The same construction one order down: an orthotropic order-2 tensor is
three coefficients and a frame, stored as TensOrtho{2,T,3}. A second-order tensor invariant under the three mirror planes is necessarily diagonal in the frame, hence symmetric: there is no general order-2 shape, unlike the skew
the shear terms vanishing on a diagonal tensor, and the tensor product TensOrtho{2}, as Projection onto a symmetry class makes explicit.