17 params.addClassDescription(
"Material that implements the math free energy and its derivatives: "
18 "\nF = 1/4(1 + c)^2*(1 - c)^2");
19 params.addParam<MaterialPropertyName>(
"f_name",
"F",
"function property name");
20 params.addRequiredCoupledVar(
"c",
"Concentration variable"););
22 template <ComputeStage compute_stage>
24 : ADMaterial<compute_stage>(parameters),
25 _c(adCoupledValue(
"c")),
26 _f_name(getParam<MaterialPropertyName>(
"f_name")),
27 _prop_F(declareADProperty<Real>(_f_name)),
29 declareADProperty<Real>(derivativePropertyNameFirst(_f_name, this->getVar(
"c", 0)->
name())))
33 template <ComputeStage compute_stage>
37 _prop_F[_qp] = 1.0 / 4.0 * (1.0 + _c[_qp]) * (1.0 + _c[_qp]) * (1.0 - _c[_qp]) * (1.0 - _c[_qp]);
38 _prop_dFdc[_qp] = _c[_qp] * (_c[_qp] * _c[_qp] - 1.0);