12 #include "MooseMesh.h"
13 #include "libmesh/quadrature.h"
23 params.addClassDescription(
"accepts eigenstrains and computes a reduced order eigenstrain for "
24 "consistency in the order of strain and eigenstrains.");
25 params.addRequiredParam<std::vector<MaterialPropertyName>>(
26 "input_eigenstrain_names",
"List of eigenstrains to be applied in this strain calculation");
32 _input_eigenstrain_names(
33 getParam<std::vector<MaterialPropertyName>>(
"input_eigenstrain_names")),
34 _eigenstrains(_input_eigenstrain_names.size()),
35 _subproblem(*parameters.get<SubProblem *>(
"_subproblem")),
36 _ncols(1 + _subproblem.mesh().dimension()),
37 _second_order(_subproblem.mesh().hasSecondOrderElements()),
43 _x(6, DenseVector<Real>(_ncols)),
45 _adjusted_eigenstrain()
67 Material::computeProperties();
75 for (
unsigned i = 0; i < 6; ++i)
78 for (
unsigned j = 1; j <
_ncols; ++j)
79 _vals[i] +=
_x[i](j) * _q_point[_qp](j - 1);
89 _eigsum.resize(_qrule->n_points());
90 for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
108 for (
unsigned qp = 0; qp < _qrule->n_points(); ++qp)
111 vol += _JxW[qp] * _coord[qp];
120 _A.resize(_qrule->n_points(),
_ncols);
122 b.resize(_qrule->n_points());
124 for (
unsigned qp = 0; qp < _qrule->n_points(); ++qp)
127 for (
unsigned j = 1; j <
_ncols; ++j)
128 _A(qp, j) = _q_point[qp](j - 1);
138 _A.get_transpose(
_AT);
139 _A.left_multiply(
_AT);
140 for (
unsigned i = 0; i < 6; ++i)