Go to the documentation of this file.
11 #include "MooseUtils.h"
19 params.addClassDescription(
"Base class for damage model based on a scalar damage parameter");
20 params.addParam<
bool>(
23 "Whether to use the damage index from the previous step in the stress computation");
24 params.addRangeCheckedParam<Real>(
25 "residual_stiffness_fraction",
27 "residual_stiffness_fraction>=0 & residual_stiffness_fraction<1",
28 "Minimum fraction of original material stiffness retained for fully "
29 "damaged material (when damage_index=1)");
30 params.addRangeCheckedParam<Real>(
31 "maximum_damage_increment",
33 "maximum_damage_increment>0 & maximum_damage_increment<1",
34 "maximum damage increment allowed for simulations with adaptive time step");
35 params.addParam<std::string>(
"damage_index_name",
37 "name of the material property where the damage index is stored");
43 _damage_index_name(getParam<std::string>(
"damage_index_name")),
44 _damage_index(declareProperty<Real>(_base_name + _damage_index_name)),
45 _damage_index_old(getMaterialPropertyOld<Real>(_base_name + _damage_index_name)),
46 _damage_index_older(getMaterialPropertyOlder<Real>(_base_name + _damage_index_name)),
47 _use_old_damage(getParam<bool>(
"use_old_damage")),
48 _residual_stiffness_fraction(getParam<Real>(
"residual_stiffness_fraction")),
49 _maximum_damage_increment(getParam<Real>(
"maximum_damage_increment"))
85 Real damage_index_old =
88 if (damage_index_old > 0.0)
89 stress_old /= damage_index_old;
103 if (MooseUtils::absoluteFuzzyEqual(current_damage_increment, 0.0))
104 return std::numeric_limits<Real>::max();
virtual void updateJacobianMultForDamage(RankFourTensor &jacobian_mult) override
Update the material constitutive matrix.
virtual void updateDamage() override
Update the internal variable(s) that evolve the damage.
const Real & _residual_stiffness_fraction
Residual fraction of stiffness used for material that is fully damaged.
virtual void initQpStatefulProperties() override
const MaterialProperty< Real > & _damage_index_old
static InputParameters validParams()
Base class for scalar damage models.
const bool _use_old_damage
If true, use the damage index from the old state (rather than the current state)
ScalarDamageBase(const InputParameters ¶meters)
static InputParameters validParams()
defineLegacyParams(ScalarDamageBase)
DamageBase is a base class for damage models, which modify the stress tensor computed by another mode...
const Real & _maximum_damage_increment
Maximum damage increment allowed for the time step.
const MaterialProperty< Real > & _damage_index_older
virtual void updateStressForDamage(RankTwoTensor &stress_new) override
Update the current stress tensor for effects of damage.
const Real & getQpDamageIndex(unsigned int qp)
MaterialProperty< Real > & _damage_index
Material property that provides the damage index.
virtual Real computeTimeStepLimit() override
Compute the limiting value of the time step for this material.
virtual void computeUndamagedOldStress(RankTwoTensor &stress_old) override
virtual void updateQpDamageIndex()=0
Update the damage index at the current qpoint.
void setQp(unsigned int qp)
Sets the value of the member variable _qp for use in inheriting classes.