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 using std::max, std::min;
68 switch (_combination_type)
70 case CombinationType::Maximum:
71 _damage_index[_qp] = _damage_index_old[_qp];
72 for (
unsigned int i = 0; i < _damage_models.size(); ++i)
73 _damage_index[_qp] =
max(_damage_index[_qp], _damage_models[i]->getQpDamageIndex(_qp));
75 case CombinationType::Product:
76 _damage_index[_qp] = 1.0;
77 for (
unsigned int i = 0; i < _damage_models.size(); ++i)
78 _damage_index[_qp] *= 1.0 - _damage_models[i]->getQpDamageIndex(_qp);
79 _damage_index[_qp] = 1.0 - _damage_index[_qp];
83 _damage_index[_qp] =
max(_damage_index_old[_qp],
max(0.0,
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)
auto max(const L &left, const R &right)
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-")
auto min(const L &left, const R &right)
virtual void updateQpDamageIndex() override
Update the damage index at the current qpoint.
Base class for scalar damage models.