12 #include "KernelValue.h"
13 #include "JvarMapInterface.h"
14 #include "DerivativeMaterialInterface.h"
24 class ACBulk :
public DerivativeMaterialInterface<JvarMapKernelInterface<KernelValue>>
27 ACBulk(
const InputParameters & parameters);
46 const MaterialProperty<T> &
_L;
52 std::vector<const MaterialProperty<T> *>
_dLdarg;
57 : DerivativeMaterialInterface<JvarMapKernelInterface<KernelValue>>(parameters),
58 _L(getMaterialProperty<T>(
"mob_name")),
59 _dLdop(getMaterialPropertyDerivative<T>(
"mob_name", _var.
name()))
62 unsigned int nvar = _coupled_moose_vars.size();
68 for (
unsigned int i = 0; i < nvar; ++i)
69 _dLdarg[i] = &getMaterialPropertyDerivative<T>(
"mob_name", _coupled_moose_vars[i]->
name());
76 InputParameters params = ::validParams<KernelValue>();
77 params.addClassDescription(
"Allen-Cahn base Kernel");
78 params.addParam<MaterialPropertyName>(
"mob_name",
"L",
"The mobility used with the kernel");
79 params.addCoupledVar(
"args",
"Vector of arguments of the mobility");
87 validateNonlinearCoupling<Real>(
"mob_name");
95 Real dFdop = computeDFDOP(Residual);
98 return _L[_qp] * dFdop;
101 template <
typename T>
106 Real dFdop = computeDFDOP(Residual);
108 Real JdFdop = computeDFDOP(Jacobian);
111 return _L[_qp] * JdFdop + _dLdop[_qp] * _phi[_j][_qp] * dFdop;
114 template <
typename T>
119 const unsigned int cvar = mapJvarToCvar(jvar);
122 return (*_dLdarg[cvar])[_qp] * _phi[_j][_qp] * computeDFDOP(Residual) * _test[_i][_qp];