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
with
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
and the algorithmic tangent is
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 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).