Model damaged by a scalar variable¶
Overview¶
This object implements a damage model that uses a single damage variable to degrade the stress of a base material model. It implements the stress update function

where
is the damage variable and
is the
base material stress update.
A neml::ScalarDamage model provides the definition of
as well
as the associated derivatives to form the Jacobian.
The damage model maintains the set of history variables from the base material plus one additional history variable for the damage.
This class has the option for element extinction, useful in FEA simulations of damage. If the ekill option is set to true once the material point reaches a damage threshold of dkill the constitutive response will be replaced by a linear elastic response with an elastic stiffness of
where the factor
is given by the parameter sfact.
Note
The scalar damage model passes in the modified stress
to the base stress update model in addition to modifying the stress update formula as shown in the above equation.
Warning
The model also passes the modified stress
to the damage update equation. That is, the stress passed into these functions is the modified effective stress, not the actual external stress. This means that the damage equations implemented in NEML vary slightly from the correpsonding literature equations working with the unmodified stress directly.
Parameters¶
Parameter |
Object type |
Description |
Default |
|---|---|---|---|
|
Elasticity model |
No |
|
|
Base material model |
No |
|
|
Damage model |
No |
|
|
Thermal expansion coefficient |
|
|
|
|
Solver tolerance |
|
|
|
Maximum solver iterations |
|
|
|
Verbosity flag |
|
|
|
Trigger element death |
|
|
|
Critical damage threshold |
|
|
|
Stiffness factor for dead element |
|
Scalar damage models¶
- Scalar damage models
- Overview
- Implementations
- Scalar damage, defined in rate form
- Overview
- Implementations
- Modular creep damage
- Classical creep damage
- Larson Miller Damage
- Class description
- Combined scalar damage models
- Standard damage
- Dissipated work damage
- Scalar damage, defined in rate form
- Class description
Class description¶
-
class NEMLScalarDamagedModel_sd : public neml::NEMLDamagedModel_sd, public neml::Solvable¶
Special case where the damage variable is a scalar.
Public Functions
-
NEMLScalarDamagedModel_sd(ParameterSet ¶ms)¶
Parameters are an elastic model, a base model, the CTE, a solver tolerance, the maximum number of solver iterations, and a verbosity flag
-
virtual void update_sd_actual(const double *const e_np1, const double *const e_n, double T_np1, double T_n, double t_np1, double t_n, double *const s_np1, const double *const s_n, double *const h_np1, const double *const h_n, double *const A_np1, double &u_np1, double u_n, double &p_np1, double p_n)¶
Stress update using the scalar damage model.
-
virtual size_t ndamage() const¶
Equal to 1.
-
virtual size_t nparams() const¶
Number of parameters for the solver.
-
virtual void init_x(double *const x, TrialState *ts)¶
Initialize the solver vector.
-
virtual void RJ(const double *const x, TrialState *ts, double *const R, double *const J)¶
The actual nonlinear residual and Jacobian to solve.
-
void make_trial_state(const double *const e_np1, const double *const e_n, double T_np1, double T_n, double t_np1, double t_n, const double *const s_n, const double *const h_n, double u_n, double p_n, SDTrialState &tss)¶
Setup a trial state from known information.
-
virtual double get_damage(const double *const h_np1)¶
Used to find the damage value from the history.
-
virtual bool should_del_element(const double *const h_np1)¶
Used to determine if element should be deleted.
-
virtual bool is_damage_model() const¶
Used to determine if this is a damage model.
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 ¶ms)¶
Initialize from a parameter set.
-
NEMLScalarDamagedModel_sd(ParameterSet ¶ms)¶