Isotropic Damage Plane Stress¶
Bases: IsotropicDamage3D, IsotropicElasticityPlaneStress
Isotropic damage material model for plane stress problems.
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. -
d(Callable) –Damage evolution function \(D(\kappa, l_c)\).
-
d_prime(Callable) –Derivative of the damage evolution \(D'(\kappa, l_c)\).
-
eq_strain(Literal['rankine', 'mises']) –Type of equivalent strain measure used for damage driving.
-
rho(Tensor | float, default:1.0) –Mass density. Default is
1.0.
Notes
- Small-strain assumption with plane stress condition.
- Two internal state variables (
n_state = 2): \(\kappa\) (damage driving variable) and \(D\) (damage variable). - Supports batched/vectorized material parameters.
- The external strain
de0is not condensed, so the equivalent strain follows the total in-plane strain, as it does inIsotropicDamage3D.
Plane stress damage
A scalar damage leaves the plane stress condition untouched, since \(\sigma_{33} = (1 - D) (\mathbb{C} : \pmb{\varepsilon})_{33} = 0\) holds for \(D < 1\) exactly when the undamaged condition does, so the out-of-plane strain is the elastic one,
It enters the equivalent strain, where it may exceed the in-plane principal strains in magnitude, and varies with the in-plane strain, so
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.
rotate(R)
¶
Returns the material with its properties rotated by R.
Parameters:
-
R(Tensor) –Rotation tensor. Shape:
(..., d, d).
Returns:
-
Material(Material) –A material with rotated properties, or itself if isotropic.
step(H_inc, F, stress, state, de0, cl, iter)
¶
Performs a strain increment with the plane stress damage model.
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 \(\kappa\) and \(D\). Shape:
(..., 2). -
de0(Tensor) –External small strain increment (e.g., thermal). Shape:
(..., 2, 2). -
cl(Tensor) –Characteristic lengths. Shape:
(..., 1). -
iter(int) –Newton iteration.
Returns:
-
stress_new(Tensor) –Updated Cauchy stress tensor. Shape:
(..., 2, 2). -
state_new(Tensor) –Updated internal state. Shape: same as
state. -
ddsdde(Tensor) –Algorithmic tangent stiffness tensor. Shape:
(..., 2, 2, 2, 2).