22 "Scalar damage model which is computed as a function of multiple scalar damage models");
25 "Name of the damage models used to compute " 28 MooseEnum combination_type(
"Maximum Product",
"Maximum");
30 "combination_type", combination_type,
"How the damage models are combined");
40 _damage_models_names(this->template getParam<
std::vector<MaterialName>>(
"damage_models"))
48 for (
unsigned int i = 0; i < _damage_models_names.size(); ++i)
51 &this->getMaterialByName(_damage_models_names[i]));
54 _damage_models.push_back(
model);
56 this->paramError(
"damage_model",
57 "Damage Model " + _damage_models_names[i] +
58 " is not compatible with CombinedScalarDamage");
66 switch (_combination_type)
68 case CombinationType::Maximum:
69 _damage_index[_qp] = _damage_index_old[_qp];
70 for (
unsigned int i = 0; i < _damage_models.size(); ++i)
71 _damage_index[_qp] = std::max(_damage_index[_qp], _damage_models[i]->getQpDamageIndex(_qp));
73 case CombinationType::Product:
74 _damage_index[_qp] = 1.0;
75 for (
unsigned int i = 0; i < _damage_models.size(); ++i)
76 _damage_index[_qp] *= 1.0 - _damage_models[i]->getQpDamageIndex(_qp);
77 _damage_index[_qp] = 1.0 - _damage_index[_qp];
82 std::max(_damage_index_old[_qp], std::max(0.0, std::min(1.0, _damage_index[_qp])));
Scalar damage model computed as the combination of multiple damage models.
CombinedScalarDamageTempl(const InputParameters ¶meters)
static InputParameters validParams()
registerMooseObject("SolidMechanicsApp", CombinedScalarDamage)
static InputParameters validParams()
void initialSetup() override
const PertinentGeochemicalSystem model(database, {"H2O", "H+", "HCO3-", "O2(aq)", "Ca++", ">(s)FeOH", "radius_neg1", "radius_neg1.5"}, {"Calcite"}, {}, {"Calcite_asdf"}, {"CH4(aq)"}, {">(s)FeOCa+"}, "O2(aq)", "e-")
virtual void updateQpDamageIndex() override
Update the damage index at the current qpoint.
Base class for scalar damage models.