Go to the documentation of this file.
19 params.addClassDescription(
"Two phase material that combines n phase materials using a switching "
20 "function with and n non-conserved order parameters (to be used with "
21 "SwitchingFunctionConstraint*).");
22 params.addCoupledVar(
"etas",
"Order parameters for all phases.");
31 paramError(
"hi_names",
"The number of hi_names must be equal to the number of coupled etas");
33 for (
unsigned int i = 0; i <
_num_etas; ++i)
38 if (_third_derivatives)
39 _d3hi[i] = &getMaterialPropertyDerivative<Real>(
47 const unsigned int i = argIndex(i_var);
55 for (
unsigned n = 0; n <
_num_fi; ++n)
64 const unsigned int i = argIndex(i_var);
66 const unsigned int j = argIndex(j_var);
71 if (i_eta >= 0 && j_eta >= 0)
76 Real d2F = (i_eta == j_eta) ? (*
_d2hi[i_eta])[_qp] * (*
_prop_Fi[i_eta])[_qp] : 0.0;
78 return d2F +
_W * (*
_d2g[i_eta][j_eta])[_qp];
92 for (
unsigned n = 0; n <
_num_fi; ++n)
100 const unsigned int i = argIndex(i_var);
102 const unsigned int j = argIndex(j_var);
104 const unsigned int k = argIndex(k_var);
109 if (i_eta >= 0 && j_eta >= 0 && k_eta >= 0)
115 (i_eta == j_eta && j_eta == k_eta) ? (*
_d3hi[i_eta])[_qp] * (*
_prop_Fi[i_eta])[_qp] : 0.0;
117 return d3F +
_W * (*
_d3g[i_eta][j_eta][k_eta])[_qp];
122 if (i_eta >= 0 && j_eta >= 0)
123 return (i_eta == j_eta) ? (*
_d2hi[i_eta])[_qp] * (*
_prop_dFi[i_eta][k])[_qp] : 0.0;
125 if (j_eta >= 0 && k_eta >= 0)
126 return (j_eta == k_eta) ? (*
_d2hi[j_eta])[_qp] * (*
_prop_dFi[j_eta][i])[_qp] : 0.0;
128 if (k_eta >= 0 && i_eta >= 0)
129 return (k_eta == i_eta) ? (*
_d2hi[k_eta])[_qp] * (*
_prop_dFi[k_eta][j])[_qp] : 0.0;
145 for (
unsigned n = 0; n <
_num_fi; ++n)
std::vector< VariableName > _eta_names
virtual Real computeD3F(unsigned int i_var, unsigned int j_var, unsigned int k_var)
std::vector< const MaterialProperty< Real > * > _hi
Switching functions.
unsigned int _num_etas
name of the order parameter variable
std::vector< const MaterialProperty< Real > * > _dg
Barrier function derivatives.
InputParameters validParams< DerivativeMultiPhaseMaterial >()
std::vector< const MaterialProperty< Real > * > _dhi
Function value of the i phase.
DerivativeMultiPhaseMaterial(const InputParameters ¶meters)
InputParameters validParams< DerivativeMultiPhaseBase >()
virtual Real computeD2F(unsigned int i_var, unsigned int j_var)
virtual Real computeDF(unsigned int i_var)
std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > _d3g
DerivativeMaterial child class to evaluate a parsed function for the free energy and automatically pr...
Multi phase free energy material that combines an arbitrary number of phase free energies to a global...
std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > _prop_d2Fi
Second derivatives of Fi.
std::vector< std::vector< const MaterialProperty< Real > * > > _prop_dFi
Derivatives of Fi w.r.t. arg[i].
std::vector< std::vector< std::vector< std::vector< const MaterialProperty< Real > * > > > > _prop_d3Fi
Third derivatives of Fi.
Real _W
Phase transformation energy barrier.
std::vector< const MaterialProperty< Real > * > _d2hi
std::vector< MaterialPropertyName > _hi_names
phase switching function names
registerMooseObject("PhaseFieldApp", DerivativeMultiPhaseMaterial)
std::vector< const MaterialProperty< Real > * > _prop_Fi
Function value of the i phase.
std::vector< const MaterialProperty< Real > * > _d3hi
std::vector< int > _eta_index
If the variable a non-conserved OP this array holds the index into the etas parameter vector for a gi...
std::vector< std::vector< const MaterialProperty< Real > * > > _d2g