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: DamageModel

Debugging 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: Module

Superclass for damage models that modify the viscoplastic flow rate

class pyoptmat.damage.HayhurstLeckie(A, xi, phi)

Bases: DamageModel

A 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: DamageModel

Larson-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: DamageModel

The 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