Standard damage

Overview

This object implements a “standard” damage model where the single damage variable varies only with the scalar effective inelastic strain rate. This simplifies the damage update to

\omega_{n+1} = \omega_n + w\left(\bm{\sigma}_{n+1}, \omega_{n+1}\right)
   \Delta \varepsilon_{eff}^{in}.

A separate interface defines the damage update function w.

Implementations

Class description

class StandardScalarDamage : public neml::ScalarDamage

A standard damage model where the damage rate goes as the plastic strain.

Subclassed by neml::ExponentialWorkDamage, neml::PowerLawDamage

Public Functions

StandardScalarDamage(ParameterSet &params)

Parameters: elastic model, base model, CTE, solver tolerance, solver maximum number of iterations, verbosity flag

virtual void damage(double d_np1, double d_n, const double *const e_np1, const double *const e_n, const double *const s_np1, const double *const s_n, double T_np1, double T_n, double t_np1, double t_n, double *const dd) const

Damage, now only proportional to the inelastic effective strain.

virtual void ddamage_dd(double d_np1, double d_n, const double *const e_np1, const double *const e_n, const double *const s_np1, const double *const s_n, double T_np1, double T_n, double t_np1, double t_n, double *const dd) const

Derivative of damage wrt damage.

virtual void ddamage_de(double d_np1, double d_n, const double *const e_np1, const double *const e_n, const double *const s_np1, const double *const s_n, double T_np1, double T_n, double t_np1, double t_n, double *const dd) const

Derivative of damage wrt strain.

virtual void ddamage_ds(double d_np1, double d_n, const double *const e_np1, const double *const e_n, const double *const s_np1, const double *const s_n, double T_np1, double T_n, double t_np1, double t_n, double *const dd) const

Derivative of damage wrt stress.

virtual void f(const double *const s_np1, double d_np1, double T_np1, double &f) const = 0

The part of the damage rate proportional to the inelastic strain rate.

virtual void df_ds(const double *const s_np1, double d_np1, double T_np1, double *const df) const = 0

Derivative with respect to stress.

virtual void df_dd(const double *const s_np1, double d_np1, double T_np1, double &df) const = 0

Derivative with respect to damage.