14 template <
typename R2>
19 params.
addParam<std::string>(
"base_name",
20 "Optional parameter that allows the user to define " 21 "multiple mechanics material systems on the same " 22 "block, i.e. for multiple phases");
24 params.
addParam<std::vector<MaterialPropertyName>>(
26 std::vector<MaterialPropertyName>(),
27 "Material property names of rank two tensors to be added to the stress.");
31 template <
typename R2>
34 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
35 _mechanical_strain(getADMaterialProperty<R2>(_base_name +
"mechanical_strain")),
36 _stress(declareADProperty<R2>(_base_name +
"stress")),
37 _elastic_strain(declareADProperty<R2>(_base_name +
"elastic_strain")),
38 _extra_stresses(getParam<
std::vector<MaterialPropertyName>>(
"extra_stress_names").size())
40 if (getParam<bool>(
"use_displaced_mesh"))
41 mooseError(
"The stress calculator needs to run on the undisplaced mesh.");
43 const std::vector<MaterialPropertyName> extra_stress_names =
44 getParam<std::vector<MaterialPropertyName>>(
"extra_stress_names");
49 template <
typename R2>
53 _elastic_strain[_qp].zero();
57 template <
typename R2>
64 for (MooseIndex(_extra_stresses) i = 0; i < _extra_stresses.size(); ++i)
65 _stress[_qp] += (*_extra_stresses[i])[_qp];
virtual void initQpStatefulProperties() override
virtual void computeQpProperties() override
static InputParameters validParams()
static InputParameters validParams()
void mooseError(Args &&... args) const
ADComputeStressBaseTempl is the base class for stress tensors.
ADComputeStressBaseTempl(const InputParameters ¶meters)
std::vector< const MaterialProperty< R2 > * > _extra_stresses
Extra stress tensors.