Skip to content

Isotropic Plasticity Plane Stress

Bases: IsotropicElasticityPlaneStress

Isotropic elastoplastic material for plane stress problems.

This class extends IsotropicElasticityPlaneStress to incorporate isotropic plasticity with a von Mises yield criterion under the plane stress constraint.

Parameters:

  • E (Tensor | float) –

    Young's modulus. Shape: () for a scalar or (N,) for a batch of materials.

  • nu (Tensor | float) –

    Poisson's ratio. Shape: () for a scalar or (N,) for a batch of materials.

  • sigma_f (Callable) –

    Yield stress function \(\sigma_f(q)\).

  • sigma_f_prime (Callable) –

    Derivative \(\sigma_f'(q)\).

  • tolerance (float, default: 1e-05 ) –

    Convergence tolerance. Default is 1e-5.

  • max_iter (int, default: 10 ) –

    Maximum Newton iterations. Default is 10.

  • rho (Tensor | float, default: 1.0 ) –

    Mass density. Default is 1.0.

Notes
  • Small-strain assumption with plane stress condition.
  • One internal state variable (n_state = 1): equivalent plastic strain \(q\).
  • Implementation follows de Souza Neto et al., Box 9.3-9.6.
Plane stress von Mises plasticity

The elastic domain is bounded by the von Mises yield surface written directly in the plane stress subspace $$ f(\pmb{\sigma}, q) = \tfrac{1}{2} \pmb{\sigma}^\top \mathbf{P} \, \pmb{\sigma} - \tfrac{1}{3} \sigma_f(q)^2 = 0 $$ with the Voigt stress \(\pmb{\sigma} = [\sigma_{11}, \sigma_{22}, \sigma_{12}]^\top\), the projection matrix $$ \mathbf{P} = \frac{1}{3} \begin{bmatrix} 2 & -1 & 0 \cr -1 & 2 & 0 \cr 0 & 0 & 6 \end{bmatrix} $$ and the yield stress \(\sigma_f(q)\), given as a function of the equivalent plastic strain \(q\). Enforcing \(\sigma_{33} = 0\) on the yield surface itself condenses the out-of-plane plastic strain out, so \(q\) remains the only state variable. A state with \(f > 0\) is returned to the surface by the projected return mapping step(...) carries out.

References

de Souza Neto, E. A., Perić, D., Owen, D. R. J. Computational Methods for Plasticity, Chapter 9, https://doi.org/10.1002/9780470694626.ch9, 2008.

vectorize(n_elem)

Returns the material batched over n_elem elements.

Parameters:

  • n_elem (int) –

    Number of elements to vectorize the material for.

Returns:

  • Material ( T ) –

    A material of the same type carrying one entry per element, or itself if it is vectorized already.

cauchy(P, F, state)

Cauchy stress from the first Piola stress P at the deformation gradient F, which a finite_strain material is reported in.

step(H_inc, F, stress, state, de0, cl, iter)

Performs a strain increment with the plane stress return-mapping algorithm.

A trial stress is computed as \(\pmb{\sigma}_{\text{trial}} = \pmb{\sigma}_n + \mathbb{C} : \Delta\pmb{\varepsilon}\) and the squared flow potential in Voigt notation is evaluated as

\[ \Psi = \tfrac{1}{2} \pmb{\sigma}_{\text{trial}}^\top \mathbf{P} \, \pmb{\sigma}_{\text{trial}} - \tfrac{1}{3} \sigma_f(q)^2 \]

with

\[ \mathbf{P} = \frac{1}{3} \begin{bmatrix} 2 & -1 & 0 \cr -1 & 2 & 0 \cr 0 & 0 & 6 \end{bmatrix}. \]

If \(\Psi > 0\), the plastic multiplier \(\Delta\gamma\) that restores \(\Psi = 0\) is found by a local Newton iteration on the equivalent residual \(\sqrt{\pmb{\sigma}^\top \mathbf{P} \pmb{\sigma}} - \sqrt{2/3} \, \sigma_f(q)\), in stress units like the three-dimensional return mapping, bounded by tolerance and max_iter. The trial stress components are scaled by \(1 + E \Delta\gamma / (3 (1 - \nu))\) and \(1 + 2 G \Delta\gamma\). The stress is then updated via

\[ \pmb{\sigma}_{n+1} = [\mathbb{S} + \Delta\gamma \, \mathbf{P}]^{-1} \, \mathbb{S} \, \pmb{\sigma}_{\text{trial}} \]

and the algorithmic tangent is

\[ \mathbb{C}^{\text{alg}} = [\mathbb{S} + \Delta\gamma \, \mathbf{P}]^{-1} - \alpha \, \mathbf{n} \otimes \mathbf{n}. \]

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 Cauchy stress tensor. Shape: (..., 2, 2).

  • state (Tensor) –

    Internal state variables, here: equivalent plastic strain. Shape: (..., 1).

  • de0 (Tensor) –

    External small strain increment (e.g., thermal). Shape: (..., 2, 2).

  • cl (Tensor) –

    Characteristic lengths. Shape: (..., 1).

  • iter (int) –

    Current iteration number.

Returns:

  • stress_new ( Tensor ) –

    Updated Cauchy stress tensor after plastic update. Shape: (..., 2, 2).

  • state_new ( Tensor ) –

    Updated internal state with updated plastic strain. Shape: same as state.

  • ddsdde ( Tensor ) –

    Algorithmic tangent stiffness tensor. Shape: (..., 2, 2, 2, 2).