17 params.addClassDescription(
"Multi-order parameter KKS model kernel for the Bulk Allen-Cahn. This "
18 "operates on one of the order parameters 'eta_i' as the non-linear "
20 params.addRequiredParam<std::vector<MaterialPropertyName>>(
21 "Fj_names",
"List of free energies for each phase. Place in same order as hj_names!");
22 params.addRequiredParam<std::vector<MaterialPropertyName>>(
23 "hj_names",
"Switching Function Materials that provide h. Place in same order as Fj_names!");
24 params.addRequiredCoupledVar(
"eta_i",
25 "Order parameter that derivatives are taken with respect to");
30 :
ACBulk<Real>(parameters),
31 _nvar(_coupled_moose_vars.size()),
32 _etai_name(getVar(
"eta_i", 0)->
name()),
33 _etai_var(coupled(
"eta_i", 0)),
34 _Fj_names(getParam<std::vector<MaterialPropertyName>>(
"Fj_names")),
35 _num_j(_Fj_names.size()),
37 _prop_dFjdarg(_num_j),
38 _hj_names(getParam<std::vector<MaterialPropertyName>>(
"hj_names")),
40 _prop_dhjdetai(_num_j),
41 _prop_d2hjdetai2(_num_j),
42 _prop_d2hjdetaidarg(_num_j)
46 paramError(
"hj_names",
"Need to pass in as many hj_names as Fj_names");
49 for (
unsigned int n = 0; n <
_num_j; ++n)
62 for (
unsigned int i = 0; i <
_nvar; ++i)
64 MooseVariableFEBase * cvar = _coupled_moose_vars[i];
80 for (
unsigned int n = 0; n <
_num_j; ++n)
82 validateNonlinearCoupling<Real>(
_Fj_names[n]);
83 validateNonlinearCoupling<Real>(
_hj_names[n]);