https://mooseframework.inl.gov
ScalarMaterialDamage.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #include "ScalarMaterialDamage.h"
11 
12 registerMooseObject("SolidMechanicsApp", ScalarMaterialDamage);
13 registerMooseObject("SolidMechanicsApp", ADScalarMaterialDamage);
14 
15 template <bool is_ad>
18 {
20  params.addClassDescription(
21  "Scalar damage model for which the damage is prescribed by another material");
22  params.addRequiredParam<MaterialPropertyName>("damage_index",
23  "Name of the material property containing the "
24  "damage index, which goes from 0 (undamaged) to 1 "
25  "(fully damaged)");
26  return params;
27 }
28 
29 template <bool is_ad>
31  : ScalarDamageBaseTempl<is_ad>(parameters),
32  _damage_property(this->template getGenericMaterialProperty<Real, is_ad>("damage_index"))
33 {
34 }
35 
36 template <bool is_ad>
37 void
39 {
40  _damage_index[_qp] = _damage_property[_qp];
41 
42  if (MooseUtils::absoluteFuzzyLessThan(_damage_index[_qp], 0.0) ||
43  MooseUtils::absoluteFuzzyGreaterThan(_damage_index[_qp], 1.0))
44  mooseError(_base_name + "damage_index ",
45  "must be between 0 and 1. Current value is: ",
46  _damage_index[_qp]);
47 }
48 
50 template class ScalarMaterialDamageTempl<true>;
void mooseError(Args &&... args)
static InputParameters validParams()
static InputParameters validParams()
Scalar damage model for which the damage is prescribed by another material.
void addRequiredParam(const std::string &name, const std::string &doc_string)
virtual void updateQpDamageIndex() override
Update the damage index at the current qpoint.
bool absoluteFuzzyLessThan(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
registerMooseObject("SolidMechanicsApp", ScalarMaterialDamage)
ScalarMaterialDamageTempl(const InputParameters &parameters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
bool absoluteFuzzyGreaterThan(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Base class for scalar damage models.