18 InputParameters params = validParams<Kernel>();
19 params.addClassDescription(
"Lagrange multiplier kernel to constrain the sum of all switching "
20 "functions in a multiphase system. This kernel acts on a "
21 "non-conserved order parameter eta_i.");
22 params.addParam<MaterialPropertyName>(
"h_name",
23 "Switching Function Materials that provides h(eta_i)");
24 params.addRequiredCoupledVar(
"lambda",
"Lagrange multiplier");
25 params.addCoupledVar(
"args",
"Further arguments to the switching function");
30 : DerivativeMaterialInterface<JvarMapKernelInterface<Kernel>>(parameters),
31 _eta_name(_var.
name()),
32 _dh(getMaterialPropertyDerivative<Real>(
"h_name", _eta_name)),
33 _d2h(getMaterialPropertyDerivative<Real>(
"h_name", _eta_name, _eta_name)),
34 _d2ha(coupledComponents(
"args")),
35 _d2ha_map(getParameterJvarMap(
"args")),
36 _lambda(coupledValue(
"lambda")),
37 _lambda_var(coupled(
"lambda"))
39 for (std::size_t i = 0; i <
_d2ha.size(); ++i)
40 _d2ha[i] = &getMaterialPropertyDerivative<Real>(
"h_name",
_eta_name, getVar(
"args", i)->name());
46 return _lambda[_qp] *
_dh[_qp] * _test[_i][_qp];
52 return _lambda[_qp] *
_d2h[_qp] * _phi[_j][_qp] * _test[_i][_qp];
59 return _phi[_j][_qp] *
_dh[_qp] * _test[_i][_qp];
63 return _lambda[_qp] * (*
_d2ha[k])[_qp] * _phi[_j][_qp] * _test[_i][_qp];