Isotropic Plasticity 1D¶
Bases: IsotropicElasticity1D
Isotropic elastoplastic material in 1D.
This class extends IsotropicElasticity1D with isotropic hardening
plasticity using a return-mapping algorithm.
Parameters:
-
E(Tensor | float) –Young's modulus. 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
- One internal state variable (
n_state = 1): equivalent plastic strain \(q\).
vectorize(n_elem)
¶
Returns a vectorized copy of the material for n_elem elements.
Parameters:
-
n_elem(int) –Number of elements to vectorize the material for.
Returns:
-
IsotropicPlasticity1D(IsotropicPlasticity1D) –A new material instance with vectorized properties.
step(H_inc, F, stress, state, de0, cl, iter)
¶
Performs a strain increment with the 1D return-mapping algorithm.
A trial stress is computed as \(\sigma_{\text{trial}} = \sigma_n + E \, \Delta\varepsilon\). The yield condition is \(|\sigma_{\text{trial}}| \le \sigma_f(q)\).
If yielding occurs, the plastic multiplier \(\Delta\gamma\) is found by Newton's method on $$ |\sigma_{\text{trial}}| - E \, \Delta\gamma - \sigma_f(q) = 0 $$ and the stress is updated as $$ \sigma_{n+1} = \left(1 - \frac{E \, \Delta\gamma} {|\sigma_{\text{trial}}|}\right) \sigma_{\text{trial}}, \quad q_{n+1} = q_n + \Delta\gamma. $$ The algorithmic tangent in the plastic regime is \(\frac{E \, \sigma_f'}{E + \sigma_f'}\).
Parameters:
-
H_inc(Tensor) –Incremental displacement gradient. Shape:
(..., 1, 1). -
F(Tensor) –Current deformation gradient. Shape:
(..., 1, 1). -
stress(Tensor) –Current stress tensor. Shape:
(..., 1, 1). -
state(Tensor) –Internal state variables (equivalent plastic strain \(q\)). Shape:
(..., 1). -
de0(Tensor) –External strain increment (e.g., thermal). Shape:
(..., 1, 1). -
cl(Tensor) –Characteristic lengths. Shape:
(..., 1). -
iter(int) –Current iteration number.
Returns:
-
stress_new(Tensor) –Updated stress tensor. Shape:
(..., 1, 1). -
state_new(Tensor) –Updated internal state with updated plastic strain. Shape:
(..., 1). -
ddsdde(Tensor) –Algorithmic tangent stiffness tensor. Shape:
(..., 1, 1, 1, 1).