19 "Free energy contribution symmetric across interfaces between arbitrary pairs of phases.");
28 for (
unsigned int i = 0; i <
_num_eta; ++i)
29 for (
unsigned int j = 0; j < i; ++j)
31 paramError(
"W_ij",
"Please supply a symmetric W_ij matrix");
41 for (
unsigned int i = 0; i <
_num_eta; ++i)
42 for (
unsigned int j = i + 1; j <
_num_eta; ++j)
44 const Real ni = (*
_eta[i])[_qp];
45 const Real nj = (*
_eta[j])[_qp];
51 _prop_g[_qp] += 16.0 * Wij * (ni * ni * nj * nj);
53 (*
_prop_dg[i])[_qp] += 16.0 * Wij * (2 * ni * nj * nj);
54 (*
_prop_dg[j])[_qp] += 16.0 * Wij * (2 * ni * ni * nj);
56 (*
_prop_d2g[i][i])[_qp] += 16.0 * Wij * (2 * nj * nj);
57 (*
_prop_d2g[j][j])[_qp] += 16.0 * Wij * (2 * ni * ni);
59 (*
_prop_d2g[i][j])[_qp] = 16.0 * Wij * (4 * ni * nj);
63 _prop_g[_qp] += 4.0 * Wij * (ni * nj);
65 (*
_prop_dg[i])[_qp] += 4.0 * Wij * nj;
66 (*
_prop_dg[j])[_qp] += 4.0 * Wij * ni;
registerMooseObject("PhaseFieldApp", CrossTermBarrierFunctionMaterial)
void mooseError(Args &&... args)
CrossTermBarrierFunctionBase is the base to a set of free energy penalties that set the phase interfa...
MaterialProperty< Real > & _prop_g
Barrier function and its derivatives.
unsigned int _num_eta
order parameters
std::vector< Real > _W_ij
barrier function height matrix
const std::vector< const VariableValue * > _eta
virtual void computeQpProperties()
std::vector< MaterialProperty< Real > * > _prop_dg
unsigned int _g_order
polynomial order of the switching function
std::vector< std::vector< MaterialProperty< Real > * > > _prop_d2g
static InputParameters validParams()
CrossTermBarrierFunctionMaterial adds free energy contribution on the interfaces between arbitrary pa...
static InputParameters validParams()
virtual void computeQpProperties()
CrossTermBarrierFunctionMaterial(const InputParameters ¶meters)