19 params.addClassDescription(
"Multi-phase poly-crystalline Allen-Cahn Kernel");
20 params.addRequiredParam<std::vector<MaterialPropertyName>>(
22 "List of gamma material property names for each other order parameter. Place "
23 "in same order as order parameters (v)!");
29 _gamma_names(getParam<std::vector<MaterialPropertyName>>(
"gamma_names")),
30 _num_j(_gamma_names.size()),
32 _uname(getParam<NonlinearVariableName>(
"variable")),
33 _dmudu(getMaterialPropertyDerivative<Real>(
"mu", _uname)),
34 _vname(getParam<std::vector<VariableName>>(
"v")),
38 if (
_num_j != coupledComponents(
"v"))
39 paramError(
"gamma_names",
40 "Need to pass in as many gamma_names as coupled variables in v in ACGrGrMulti");
42 for (
unsigned int n = 0; n <
_num_j; ++n)
53 Real SumGammaEtaj = 0.0;
54 for (
unsigned int i = 0; i <
_op_num; ++i)
67 Real d2f0du2 = 3.0 * _u[_qp] * _u[_qp] - 1.0 + 2.0 * SumGammaEtaj;
72 mooseError(
"Invalid type passed in");
79 for (
unsigned int i = 0; i <
_op_num; ++i)
84 const Real dDFDOP =
_mu[_qp] * 2.0 * _u[_qp] * dSumGammaEtaj;
86 return _L[_qp] * _test[_i][_qp] * _phi[_j][_qp] *
96 Real SumGammaEtaj = 0.0;
97 for (
unsigned int i = 0; i <
_op_num; ++i)
100 return _u[_qp] * _u[_qp] * _u[_qp] - _u[_qp] + 2.0 * _u[_qp] * SumGammaEtaj;