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.

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 bounded by tolerance and max_iter, in which 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).