12 #include "libmesh/quadrature.h"
22 params.addClassDescription(
23 "Global Strain UserObject to provide Residual and diagonal Jacobian entry");
24 params.addParam<std::vector<Real>>(
"applied_stress_tensor",
25 "Vector of values defining the constant applied stress "
26 "to add, in order 11, 22, 33, 23, 13, 12");
27 params.addParam<std::string>(
"base_name",
"Material properties base name");
28 params.addCoupledVar(
"displacements",
"The name of the displacement variables");
29 params.set<ExecFlagEnum>(
"execute_on") = EXEC_LINEAR;
35 : ElementUserObject(parameters),
37 _base_name(isParamValid(
"base_name") ? getParam<std::string>(
"base_name") +
"_" :
""),
38 _dstress_dstrain(getMaterialProperty<
RankFourTensor>(_base_name +
"Jacobian_mult")),
39 _stress(getMaterialProperty<
RankTwoTensor>(_base_name +
"stress")),
40 _dim(_mesh.dimension()),
41 _ndisp(coupledComponents(
"displacements")),
45 for (
unsigned int i = 0; i <
_ndisp; ++i)
46 _disp_var[i] = coupled(
"displacements", i);
48 for (
unsigned int dir = 0; dir <
_dim; ++dir)
52 for (
unsigned int i = 1; i <
_ndisp; ++i)
54 mooseError(
"All the displacement components in a particular direction should have same "
58 if (isParamValid(
"applied_stress_tensor"))
60 getParam<std::vector<Real>>(
"applied_stress_tensor"));
77 for (
unsigned int _qp = 0; _qp < _qrule->n_points(); _qp++)
98 std::vector<Real> residual(9);
99 std::vector<Real> jacobian(81);
107 std::copy(residual.begin(), residual.end(), &
_residual(0, 0));
108 std::copy(jacobian.begin(), jacobian.end(), &
_jacobian(0, 0, 0, 0));
123 const VectorValue<bool> &