23 params.
addParam<MaterialPropertyName>(
24 "porosity_name",
"porosity",
"Name of porosity material property");
26 "initial_porosity",
"initial_porosity>=0.0 & initial_porosity<1.0",
"Initial porosity");
28 "Name of the combined inelastic strain");
29 MooseEnum negative_behavior(
"ZERO INITIAL_CONDITION EXCEPTION",
"INITIAL_CONDITION");
31 "negative_behavior", negative_behavior,
"Enum how to handle negative porosities");
39 _porosity(declareGenericProperty<
Real, is_ad>(getParam<MaterialPropertyName>(
"porosity_name"))),
40 _porosity_old(getMaterialPropertyOld<
Real>(
"porosity_name")),
41 _initial_porosity(getParam<
Real>(
"initial_porosity")),
42 _inelastic_strain(getGenericMaterialProperty<
RankTwoTensor, is_ad>(
"inelastic_strain")),
43 _inelastic_strain_old(getMaterialPropertyOld<
RankTwoTensor>(
"inelastic_strain")),
44 _negative_behavior(this->template getParam<
MooseEnum>(
"negative_behavior")
53 _porosity[_qp] = _initial_porosity;
61 (1.0 - _porosity_old[_qp]) * (_inelastic_strain[_qp] - _inelastic_strain_old[_qp]).trace() +
64 if (_porosity[_qp] < 0.0)
66 if (_negative_behavior == NegativeBehavior::ZERO)
68 if (_negative_behavior == NegativeBehavior::INITIAL_CONDITION)
69 _porosity[_qp] = _initial_porosity;
70 if (_negative_behavior == NegativeBehavior::EXCEPTION)
71 mooseException(
"In ", _name,
": porosity is negative.");
74 if (std::isnan(_porosity[_qp]))
75 mooseException(
"In ", _name,
": porosity is nan. Cutting timestep.");
Porosity calculation from the inelastic strain.
static InputParameters validParams()
static InputParameters validParams()
virtual void computeQpProperties() override
virtual void initQpStatefulProperties() override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("SolidMechanicsApp", PorosityFromStrain)
PorosityFromStrainTempl(const InputParameters ¶meters)