Skip to content

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:

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 as H_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).