Hyperelastic Plane Strain¶
Bases: Hyperelastic3D
Hyperelastic plane strain material.
This class extends Hyperelastic3D for plane strain problems by enforcing
\(F_{33} = 1\) (no out-of-plane deformation). The 3D energy function is
evaluated with an extended deformation gradient.
Parameters:
-
psi(Callable) –Strain energy density function \(\psi(\mathbf{F}, \texttt{params})\). This must be a 3D energy; the plane strain constraint is enforced internally.
-
params(list | Tensor) –Material parameters passed to
psi. Shape:(p,)for a scalar or(N, p)for a batch of materials. -
rho(Tensor | float, default:1.0) –Mass density. Default is
1.0.
Notes
- Finite-strain (large deformation) framework.
- No internal state variables (
n_state = 0). - The 3D deformation gradient is reconstructed as \(\mathbf{F} = \text{diag}(\mathbf{F}^\text{2D},\, 1)\).
Plane strain constraint
The plane strain condition fixes the out-of-plane component to \(F_{33} = 1\) and \(H_{33} = 0\). The 3D deformation gradient is extended as $$ \mathbf{F} = \begin{bmatrix} F_{11} & F_{12} & 0 \cr F_{21} & F_{22} & 0 \cr 0 & 0 & 1 \end{bmatrix} $$ and the in-plane stress and tangent are extracted from the 3D response.
vectorize(n_elem)
¶
Returns a vectorized copy of the material for n_elem elements.
This function creates a batched version of the material properties. If the
material is already vectorized (self.is_vectorized == True), the function
simply returns self without modification.
Parameters:
-
n_elem(int) –Number of elements to vectorize the material for.
Returns:
-
HyperelasticPlaneStrain(HyperelasticPlaneStrain) –A new material instance with vectorized properties.
step(H_inc, F, stress, state, de0, cl, iter)
¶
Performs an incremental step for a hyperelastic material.
Parameters:
-
H_inc(Tensor) –Incremental displacement gradient. - Shape:
(..., 2, 2), where...represents batch dimensions. -
F(Tensor) –Current deformation gradient. - Shape:
(..., 2, 2), same asH_inc. -
stress(Tensor) –Current 1st PK stress tensor. - Shape:
(..., 2, 2). -
state(Tensor) –Internal state variables (unused in hyperelasticity). - Shape: Arbitrary, remains unchanged.
-
de0(Tensor) –External deformation gradient increment (e.g., thermal). - Shape:
(..., 2, 2). -
cl(Tensor) –Characteristic lengths. - Shape:
(..., 1). -
iter(int) –Current iteration number.
Returns:
-
tuple(tuple[Tensor, Tensor, Tensor]) –- stress_new (Tensor): Updated 1st PK stress tensor.
Shape:
(..., 2, 2). - state_new (Tensor): Updated internal state (unchanged).
Shape: same as
state. - ddsdde (Tensor): Algorithmic tangent stiffness tensor.
Shape:
(..., 2, 2, 2, 2).
- stress_new (Tensor): Updated 1st PK stress tensor.
Shape: