19 params.addClassDescription(
20 "KKS model kernel for the split Bulk Cahn-Hilliard term. This kernel operates on the "
21 "physical concentration 'c' as the non-linear variable");
22 params.addRequiredParam<MaterialPropertyName>(
24 "Base name of an arbitrary phase free energy function F (f_base in the corresponding "
26 params.addRequiredCoupledVar(
27 "ca",
"phase concentration corresponding to the non-linear variable of this kernel");
28 params.addCoupledVar(
"args_a",
"Vector of additional arguments to Fa");
29 params.addRequiredCoupledVar(
"w",
30 "Chemical potential non-linear helper variable for the split solve");
35 : DerivativeMaterialInterface<JvarMapKernelInterface<
SplitCHBase>>(parameters),
36 _nvar(_coupled_moose_vars.size()),
37 _ca_var(coupled(
"ca")),
38 _ca_name(getVar(
"ca", 0)->
name()),
39 _dFadca(getMaterialPropertyDerivative<Real>(
"fa_name", _ca_name)),
45 for (
unsigned int i = 0; i <
_nvar; ++i)
48 const auto & var_name = this->_coupled_moose_vars[i]->name();
56 validateNonlinearCoupling<Real>(
"fa_name");
57 validateDerivativeMaterialPropertyBase<Real>(
"fa_name");
64 residual += -
_w[_qp] * _test[_i][_qp];
88 mooseError(
"Invalid type passed in");
96 return -_phi[_j][_qp] * _test[_i][_qp];
99 const unsigned int cvar = mapJvarToCvar(jvar);
100 return _phi[_j][_qp] * _test[_i][_qp] * (*
_d2Fadcadarg[cvar])[_qp];