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.
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 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:
-
IsotropicPlasticityPlaneStress(IsotropicPlasticityPlaneStress) –A new material instance with vectorized properties.
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 stress is 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:
-
tuple(tuple[Tensor, Tensor, Tensor]) –- 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).
- stress_new (Tensor): Updated Cauchy stress tensor after plastic
update. Shape: