Dissipated work damage

Overview

This object implements a damage model based on a critical value of dissipated work:

\dot{D}=nD^{\frac{n-1}{n}}\frac{\dot{W}}{W_{crit}\left(\dot{W}\right)}

\dot{W} = \bm{\sigma}:\dot{\boldsymbol{\varepsilon}}_{inelastic}.

The model has two parameters: W_{crit} the critical work to failure, as a function of the work rate, and n, a parameter controlling the onset of the appearance of damage in the material flow stress. In this implementation the critical work is provided as a NEML interpolate function, meaning it can have a wide variety of functional forms. In principle, the critical work might also depend on temperatures. However, at least for one material (Alloy 617) the temperature dependence is relatively negligible.

If requested the model will first take the log of the work rate before passing it to the W_{crit} function and uses 10^f of the returned value. This means the user is providing the function on a log-log scale.

Parameters

Parameter

Object type

Description

Default

elastic

neml::LinearElasticModel

Elasticity model

No

Wcrit

neml::Interpolate

Critical work

No

n

double

Damage exponent

No

eps

double

Numerical offset

1.0e-30

log

bool

Log transform the work to failure relation

false

Class description

class WorkDamage : public neml::ScalarDamage

The isothermal form of my pet work-based damage model.

Public Functions

WorkDamage(ParameterSet &params)

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

inline virtual double d_guess() const

Initial value of damage, overridable for models with singularities.

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 rate = n * d**((n-1)/n) * W_dot / W_crit

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.

inline virtual double d_init() const

Initial value of the damage, overrideable for models with singularities.

Public Static Functions

static std::string type()

String type for the object system.

static ParameterSet parameters()

Return the default parameters.

static std::unique_ptr<NEMLObject> initialize(ParameterSet &params)

Initialize from a parameter set.