12 #include "RankTwoTensor.h"
18 template <ComputeStage compute_stage>
23 params.addClassDescription(
24 "Compute state (stress and internal parameters such as plastic "
25 "strains and internal parameters) using an iterative process. A porosity material property "
26 "is defined and is calculated from the trace of inelastic strain increment.");
28 params.addParam<MaterialPropertyName>(
29 "porosity_name",
"porosity",
"Name of porosity material property");
30 params.addRequiredRangeCheckedParam<Real>(
31 "initial_porosity",
"initial_porosity>0.0 & initial_porosity<1.0",
"Initial porosity");
35 template <ComputeStage compute_stage>
37 const InputParameters & parameters)
39 _porosity(declareADProperty<Real>(getParam<MaterialPropertyName>(
"porosity_name"))),
40 _porosity_old(getMaterialPropertyOld<Real>(getParam<MaterialPropertyName>(
"porosity_name"))),
41 _initial_porosity(getParam<Real>(
"initial_porosity"))
45 template <ComputeStage compute_stage>
51 _porosity[_qp] = _initial_porosity;
54 template <ComputeStage compute_stage>
61 (1.0 - _porosity_old[_qp]) * (_inelastic_strain[_qp] - _inelastic_strain_old[_qp]).trace() +