pyoptmat.damage: damage models for structural materials
Various damage models, which can be tacked onto a InelasticModel to degrade the material response over time or accumulated strain.
These are standard continuum damage mechanics models in the line of [Cha88].
- class pyoptmat.damage.ConstantDamage(R)
Bases:
DamageModelDebugging damage model
\[\dot{d} = R(T)\]- Parameters:
R (torch.tensor) – Damage rate
- d_damage_rate_d_e(s, d, t, T, e)
Derivative of the damage rate with respect to the strain rate
Here again it’s zero
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – current value of damage
t (torch.tensor) – current time
T (torch.tensor) – current temperature
e (torch.tensor) – total strain rate
- d_damage_rate_d_s(s, d, t, T, e)
Derivative of the damage rate with respect to the stress
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – damage variable
t (torch.tensor) – time
T (torch.tensor) – temperature
- damage_rate(s, d, t, T, e)
Damage rate and the derivative of the rate with respect to the damage variable
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – damage variable
t (torch.tensor) – time
T (torch.tensor) – temperature
e (torch.tensor) – total strain rate
- class pyoptmat.damage.DamageModel(*args, **kwargs)
Bases:
ModuleSuperclass for damage models that modify the viscoplastic flow rate
- class pyoptmat.damage.HayhurstLeckie(A, xi, phi)
Bases:
DamageModelA Hayhurst-Leckie type damage model, as described in [LH77]
The model defines the damage rate as
\[\left(\frac{\left|\sigma\right|}{A}\right)^{\xi}\left(1-d\right)^{\xi-\phi}\]- Parameters:
A (torch.tensor) – Reference stress
xi (torch.tensor) – Stress sensitivity
phi (torch.tensor) – Damage sensitivity
- d_damage_rate_d_e(s, d, t, T, e)
Derivative of the damage rate with respect to the strain rate
Here again it’s zero
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – current value of damage
t (torch.tensor) – current time
T (torch.tensor) – current temperature
e (torch.tensor) – total strain rate
- d_damage_rate_d_s(s, d, t, T, e)
Derivative of the damage rate with respect to the stress
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – damage variable
t (torch.tensor) – time
T (torch.tensor) – temperature
- damage_rate(s, d, t, T, e)
Damage rate and the derivative of the rate with respect to the damage variable
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – damage variable
t (torch.tensor) – time
T (torch.tensor) – temperature
e (torch.tensor) – total strain rate
- class pyoptmat.damage.LarsonMillerDamage(C, A, B, eps=1e-12)
Bases:
DamageModelLarson-Miller damage model, which goes like
\[\dot{d} = 10^{C-B/T) \left((1-d)\sigma\right)^(-A/T)\]- Parameters:
C (torch.tensor) – Larson-Miller parameter
A (torch.tensor) – Larson-Miller slope
B (torch.tensor) – Larson-Miller intercept
- d_damage_rate_d_e(s, d, t, T, e)
Derivative of the damage rate with respect to the strain rate
Here again it’s zero
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – current value of damage
t (torch.tensor) – current time
T (torch.tensor) – current temperature
e (torch.tensor) – total strain rate
- d_damage_rate_d_s(s, d, t, T, e)
Derivative of the damage rate with respect to the stress
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – damage variable
t (torch.tensor) – time
T (torch.tensor) – temperature
- damage_rate(s, d, t, T, e)
Damage rate and the derivative of the rate with respect to the damage variable
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – damage variable
t (torch.tensor) – time
T (torch.tensor) – temperature
e (torch.tensor) – total strain rate
- class pyoptmat.damage.NoDamage
Bases:
DamageModelThe default damage model, it doesn’t actually alter the flow rate in any way.
- d_damage_rate_d_e(s, d, t, T, e)
Derivative of the damage rate with respect to the strain rate
Here again it’s zero
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – current value of damage
t (torch.tensor) – current time
T (torch.tensor) – current temperature
e (torch.tensor) – total strain rate
- d_damage_rate_d_s(s, d, t, T, e)
Derivative of the damage rate with respect to the stress.
Here again it’s zero
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – current value of damage
t (torch.tensor) – current time
T (torch.tensor) – current temperature
e (torch.tensor) – total strain rate
- damage_rate(s, d, t, T, e)
The damage rate and the derivative wrt to the damage variable. Here it’s just zero.
- Parameters:
s (torch.tensor) – stress
d (torch.tensor) – current value of damage
t (torch.tensor) – current time
T (torch.tensor) – current temperature
e (torch.tensor) – total strain rate