The Damage Library

simcoon.simmit.damage_weibull(stress: Annotated[numpy.typing.ArrayLike, numpy.float64], damage: SupportsFloat, alpha: SupportsFloat, beta: SupportsFloat, DTime: SupportsFloat, criterion: str = 'vonmises') float

Provides the damage evolution ( delta D ) considering a Weibull damage law.

Parameters:
  • stress (pybind11::array_t<double>) – The stress vector ( sigma ).

  • damage (double) – The old damage ( D_{old} ).

  • alpha (double) – The shape parameter ( alpha ).

  • beta (double) – The scale parameter ( beta ).

  • DTime (double) – The time increment ( Delta T ).

  • criterion (str, optional) – The criterion (default is “vonmises”).

Returns:

The damage evolution ( delta D ).

Return type:

double

Notes

The damage evolution is given by:

\[\Delta D = (1-D_{old}) \cdot \Big(1-\exp\big(-1(\frac{crit}{\beta})^{\alpha}\big)\Big)\]

Examples

import numpy as np
import simcoon as sim

stress = np.random.rand(6)
damage = 0.1
alpha = 2.0
beta = 1.5
DTime = 0.01
criterion = "vonmises"
delta_D = sim.damage_weibull(stress, damage, alpha, beta, DTime, criterion)
print(delta_D)
simcoon.simmit.damage_kachanov(stress: Annotated[numpy.typing.ArrayLike, numpy.float64], strain: Annotated[numpy.typing.ArrayLike, numpy.float64], damage: SupportsFloat, A0: SupportsFloat, r: SupportsFloat, criterion: str) float

Provides the damage evolution ( delta D ) considering a Kachanov damage law.

Parameters:
  • stress (pybind11::array_t<double>) – The stress vector ( sigma ).

  • strain (pybind11::array_t<double>) – The strain vector ( epsilon ).

  • damage (double) – The old damage ( D_{old} ).

  • A0 (double) – The material properties characteristic of creep damage ( A_0 ).

  • r (double) – The parameter ( r ).

  • criterion (str) – The criterion.

Returns:

The damage evolution ( delta D ).

Return type:

double

Notes

The damage evolution is given by:

\[\delta D = \Big(\frac{crit}{A_0(1-D_{old})}\Big)^r\]

Examples

import numpy as np
import simcoon as sim

stress = np.random.rand(6)
strain = np.random.rand(6)
damage = 0.1
A0 = 1.0
r = 2.0
criterion = "vonmises"
delta_D = sim.damage_kachanov(stress, strain, damage, A0, r, criterion)
print(delta_D)
simcoon.simmit.damage_miner(S_max: SupportsFloat, S_mean: SupportsFloat, S_ult: SupportsFloat, b: SupportsFloat, B0: SupportsFloat, beta: SupportsFloat, Sl_0: SupportsFloat = 0.0) float

Provides the constant damage evolution ( Delta D ) considering a Woehler-Miner’s damage law.

Parameters:
  • S_max (double) – The maximum stress value ( sigma_{Max} ).

  • S_mean (double) – The mean stress value ( sigma_{Mean} ).

  • S_ult (double) – The “ultimate” stress value ( sigma_{ult} ).

  • b (double) – The parameter ( b ).

  • B0 (double) – The parameter ( B_0 ).

  • beta (double) – The parameter ( beta ).

  • Sl_0 (double, optional) – The parameter ( Sl_0 ). Default is 0.0.

Returns:

The damage evolution ( Delta D ).

Return type:

double

Notes

The damage evolution is given by:

\[\Delta D = \left(\frac{S_{Max}-S_{Mean}+Sl_0\cdot(1-b\cdot S_{Mean})}{S_{ult}-S_{Max}}\right)\cdot\left(\frac{S_{Max}-S_{Mean}}{B_0\cdot(1-b\cdot S_{Mean})}\right)^\beta\]

Examples

import simcoon as sim

S_max = 500.0
S_mean = 300.0
S_ult = 1000.0
b = 0.1
B0 = 200.0
beta = 2.0
Sl_0 = 0.0
delta_D = sim.damage_miner(S_max, S_mean, S_ult, b, B0, beta, Sl_0)
print(delta_D)
simcoon.simmit.damage_manson(S_amp: SupportsFloat, C2: SupportsFloat, gamma2: SupportsFloat) float

Provides the constant damage evolution ( Delta D ) considering a Coffin-Manson’s damage law.

Parameters:
  • S_amp (double) – The stress amplitude ( sigma_{Amp} ).

  • C2 (double) – The parameter ( C_2 ).

  • gamma2 (double) – The parameter ( gamma_2 ).

Returns:

The damage evolution ( Delta D ).

Return type:

double

Notes

The damage evolution is given by:

\[\Delta D = \left(\frac{\sigma_{Amp}}{C_{2}}\right)^{\gamma_2}\]

Examples

import simcoon as sim

S_amp = 150.0
C2 = 100.0
gamma2 = 1.5
delta_D = sim.damage_manson(S_amp, C2, gamma2)
print(delta_D)