18 params.
addClassDescription(
"Kernel that implements the first derivative of a function material "
19 "property with respect to a coupled variable.");
21 params.
addParam<MaterialPropertyName>(
"f_name",
23 "Function material to take the derivative of (should "
24 "provide derivative properties - such as a "
25 "DerivativeParsedMaterial)");
31 _v_name(coupledName(
"v", 0)),
33 _dFdv(getMaterialPropertyDerivative<Real>(
"f_name", _v_name)),
34 _d2Fdvdu(getMaterialPropertyDerivative<Real>(
"f_name", _v_name, _var.
name())),
38 for (
unsigned int i = 0; i < _n_args; ++i)
45 validateNonlinearCoupling<Real>(
"f_name");
51 return _dFdv[_qp] * _test[_i][_qp];
57 return _d2Fdvdu[_qp] * _test[_i][_qp] * _phi[_j][_qp];
63 const unsigned int cvar = mapJvarToCvar(jvar);
64 return (*
_d2Fdvdarg[cvar])[_qp] * _test[_i][_qp] * _phi[_j][_qp];
registerMooseObject("PhaseFieldApp", CoupledMaterialDerivative)
This kernel adds the term (dFdv, test), where v is a coupled variable.
const MaterialProperty< Real > & _dFdv
Material property derivative w.r.t. v.
std::string _v_name
name of the coupled variable the derivative is taken with respect to
const MaterialProperty< Real > & _d2Fdvdu
2nd order material property derivative w.r.t. v then u
static InputParameters validParams()
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
std::vector< const MaterialProperty< Real > * > _d2Fdvdarg
2nd order material property derivatives w.r.t. v and then all other coupled variables
virtual Real computeQpResidual() override
CoupledMaterialDerivative(const InputParameters ¶meters)
virtual Real computeQpJacobian() override
virtual void initialSetup() override
static InputParameters validParams()