18 InputParameters params = validParams<DerivativeFunctionMaterialBase>();
19 params.addClassDescription(
20 "Two phase material that combines two single phase materials using a switching function.");
23 params.addRequiredParam<MaterialPropertyName>(
"fa_name",
"Phase A material (at eta=0)");
24 params.addRequiredParam<MaterialPropertyName>(
"fb_name",
"Phase A material (at eta=1)");
25 params.addParam<MaterialPropertyName>(
26 "h",
"h",
"Switching Function Material that provides h(eta)");
27 params.addParam<MaterialPropertyName>(
"g",
"g",
"Barrier Function Material that provides g(eta)");
30 params.addCoupledVar(
"args",
"Arguments of fa and fb - use vector coupling");
31 params.addCoupledVar(
"displacement_gradients",
32 "Vector of displacement gradient variables (see "
33 "Modules/PhaseField/DisplacementGradients "
37 params.addRequiredCoupledVar(
"eta",
"Order parameter");
40 params.addParam<Real>(
"W", 0.0,
"Energy barrier for the phase transformation from A to B");
46 : DerivativeFunctionMaterialBase(parameters),
47 _eta(coupledValue(
"eta")),
48 _eta_name(getVar(
"eta", 0)->
name()),
49 _eta_var(coupled(
"eta")),
50 _h(getMaterialProperty<Real>(
"h")),
51 _dh(getMaterialPropertyDerivative<Real>(
"h", _eta_name)),
52 _d2h(getMaterialPropertyDerivative<Real>(
"h", _eta_name, _eta_name)),
53 _d3h(getMaterialPropertyDerivative<Real>(
"h", _eta_name, _eta_name, _eta_name)),
54 _g(getMaterialProperty<Real>(
"g")),
55 _dg(getMaterialPropertyDerivative<Real>(
"g", _eta_name)),
56 _d2g(getMaterialPropertyDerivative<Real>(
"g", _eta_name, _eta_name)),
57 _d3g(getMaterialPropertyDerivative<Real>(
"g", _eta_name, _eta_name, _eta_name)),
58 _W(getParam<Real>(
"W")),
59 _prop_Fa(getMaterialProperty<Real>(
"fa_name")),
60 _prop_Fb(getMaterialProperty<Real>(
"fb_name"))
69 for (
unsigned int i = 0; i < _nargs; ++i)
71 _prop_dFa[i] = &getMaterialPropertyDerivative<Real>(
"fa_name", _arg_names[i]);
72 _prop_dFb[i] = &getMaterialPropertyDerivative<Real>(
"fb_name", _arg_names[i]);
78 if (_third_derivatives)
84 for (
unsigned int j = 0; j < _nargs; ++j)
87 &getMaterialPropertyDerivative<Real>(
"fa_name", _arg_names[i], _arg_names[j]);
89 &getMaterialPropertyDerivative<Real>(
"fb_name", _arg_names[i], _arg_names[j]);
91 if (_third_derivatives)
96 for (
unsigned int k = 0; k < _nargs; ++k)
98 _prop_d3Fa[i][j][k] = &getMaterialPropertyDerivative<Real>(
99 "fa_name", _arg_names[i], _arg_names[j], _arg_names[k]);
100 _prop_d3Fb[i][j][k] = &getMaterialPropertyDerivative<Real>(
101 "fb_name", _arg_names[i], _arg_names[j], _arg_names[k]);
111 validateCoupling<Real>(
"fa_name");
112 validateCoupling<Real>(
"fb_name");
128 unsigned int i = argIndex(i_var);
139 unsigned int i = argIndex(i_var);
140 unsigned int j = argIndex(j_var);
156 unsigned int i = argIndex(i_var);
157 unsigned int j = argIndex(j_var);
158 unsigned int k = argIndex(k_var);