22 params.
addClassDescription(
"Computes the strain energy density rate using a combination of the " 23 "elastic and inelastic components of the strain increment, which is a " 24 "valid assumption for monotonic behavior.");
25 params.
addParam<std::string>(
"base_name",
26 "Optional parameter that allows the user to define " 27 "multiple mechanics material systems on the same " 28 "block, i.e. for multiple phases");
31 "inelastic_models_size=1",
32 "The material objects to use to calculate the strain energy rate density.");
40 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
41 _strain_energy_rate_density(declareProperty<
Real>(_base_name +
"strain_energy_rate_density")),
42 _stress(getGenericMaterialProperty<
RankTwoTensor, is_ad>(_base_name +
"stress")),
43 _strain_rate(getGenericMaterialProperty<
RankTwoTensor, is_ad>(_base_name +
"strain_rate")),
44 _num_models(getParam<
std::vector<MaterialName>>(
"inelastic_models").size())
52 std::vector<MaterialName> models = getParam<std::vector<MaterialName>>(
"inelastic_models");
55 for (
unsigned int i = 0; i < _num_models; ++i)
60 if (inelastic_model_stress_update)
61 _inelastic_models.push_back(inelastic_model_stress_update);
69 _strain_energy_rate_density[_qp] = 0.0;
76 for (
unsigned int i = 0; i < _inelastic_models.size(); ++i)
78 _inelastic_models[i]->setQp(_qp);
80 _inelastic_models[i]->computeStrainEnergyRateDensity(_stress, _strain_rate));
static InputParameters validParams()
virtual void initialSetup() override
StrainEnergyRateDensityTempl(const InputParameters ¶meters)
virtual void computeQpProperties() override
virtual void initQpStatefulProperties() override
static InputParameters validParams()
StrainEnergyRateDensity calculates the strain energy rate density.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
typename std::conditional< is_ad, ADStressUpdateBase, StressUpdateBase >::type GenericStressUpdateBase
registerMooseObject("SolidMechanicsApp", StrainEnergyRateDensity)