Orthotropic Elasticity 3D¶
Bases: Material
Orthotropic elastic material in 3D.
Parameters:
-
E_1(Tensor | float) –Young's modulus in direction 1.
-
E_2(Tensor | float) –Young's modulus in direction 2.
-
E_3(Tensor | float) –Young's modulus in direction 3.
-
nu_12(Tensor | float) –Poisson's ratio \(\nu_{12}\).
-
nu_13(Tensor | float) –Poisson's ratio \(\nu_{13}\).
-
nu_23(Tensor | float) –Poisson's ratio \(\nu_{23}\).
-
G_12(Tensor | float) –Shear modulus \(G_{12}\).
-
G_13(Tensor | float) –Shear modulus \(G_{13}\).
-
G_23(Tensor | float) –Shear modulus \(G_{23}\).
-
rho(Tensor | float, default:1.0) –Mass density. Default is
1.0.
Notes
- Small-strain assumption.
- No internal state variables (
n_state = 0). - Supports batched/vectorized material parameters.
- Supports rotation of the material coordinate system via
rotate().
Orthotropic stiffness tensor
The orthotropic stiffness tensor in Voigt notation has the structure $$ \mathbb{C} = \begin{bmatrix} C_{11} & C_{12} & C_{13} & 0 & 0 & 0 \cr C_{12} & C_{22} & C_{23} & 0 & 0 & 0 \cr C_{13} & C_{23} & C_{33} & 0 & 0 & 0 \cr 0 & 0 & 0 & G_{23} & 0 & 0 \cr 0 & 0 & 0 & 0 & G_{13} & 0 \cr 0 & 0 & 0 & 0 & 0 & G_{12} \end{bmatrix} $$ where the upper-left block contains the normal stiffness components and the lower-right block contains the shear moduli. The nine independent components are derived from nine independent engineering constants (\(E_1, E_2, E_3, \nu_{12}, \nu_{13}, \nu_{23}, G_{12}, G_{13}, G_{23}\)). The actual stiffness tensor \(C_{ijkl}\) is stored as full 4th-order tensor with major and minor symmetries.
vectorize(n_elem)
¶
Returns a vectorized copy of the material for n_elem elements.
Parameters:
-
n_elem(int) –Number of elements to vectorize the material for.
Returns:
-
OrthotropicElasticity3D(OrthotropicElasticity3D) –A new material instance with vectorized properties.
step(H_inc, F, stress, state, de0, cl, iter)
¶
Performs an incremental step in the orthotropic elasticity model.
The stress is updated as $$ \pmb{\sigma}_{n+1} = \pmb{\sigma}_n + \mathbb{C} : (\Delta \pmb{\varepsilon} - \Delta \pmb{\varepsilon}^0) $$
Parameters:
-
H_inc(Tensor) –Incremental displacement gradient. Shape:
(..., 3, 3). -
F(Tensor) –Current deformation gradient. Shape:
(..., 3, 3). -
stress(Tensor) –Current Cauchy stress tensor. Shape:
(..., 3, 3). -
state(Tensor) –Internal state variables (unused). Shape:
(..., 0). -
de0(Tensor) –External small strain increment (e.g., thermal). Shape:
(..., 3, 3). -
cl(Tensor) –Characteristic lengths. Shape:
(..., 1). -
iter(int) –Current iteration number.
Returns:
-
stress_new(Tensor) –Updated Cauchy stress tensor. Shape:
(..., 3, 3). -
state_new(Tensor) –Updated internal state (unchanged). Shape:
(..., 0). -
ddsdde(Tensor) –Algorithmic tangent stiffness tensor. Shape:
(..., 3, 3, 3, 3).
rotate(R)
¶
Rotates the material coordinate system with a rotation matrix \(\mathbf{R}\).
The rotated stiffness tensor is computed as \(C'_{mnop} = R_{mi} R_{nj} R_{ok} R_{pl} \, C_{ijkl}\) and the engineering constants are re-extracted from the compliance matrix.
Parameters:
-
R(Tensor) –Rotation matrix. Shape:
(..., 3, 3).
Returns:
-
OrthotropicElasticity3D(OrthotropicElasticity3D) –The material itself with rotated properties.