Go to the documentation of this file.
19 params.addClassDescription(
"Total free energy in multi-phase KKS system, including chemical, "
20 "barrier and gradient terms");
21 params.addRequiredParam<std::vector<MaterialPropertyName>>(
23 "List of free energies for each phase. Place in same order as hj_names and gj_names!");
24 params.addRequiredParam<std::vector<MaterialPropertyName>>(
26 "Switching Function Materials that provide h. Place in same order as Fj_names and gj_names!");
27 params.addRequiredParam<std::vector<MaterialPropertyName>>(
29 "Barrier Function Materials that provide g. Place in same order as Fj_names and hj_names!");
30 params.addRequiredParam<Real>(
"w",
"Double well height parameter");
31 params.addParam<std::vector<MaterialPropertyName>>(
"kappa_names",
32 std::vector<MaterialPropertyName>(),
33 "Vector of kappa names corresponding to "
34 "each variable name in interfacial_vars "
35 "in the same order.");
41 _Fj_names(getParam<std::vector<MaterialPropertyName>>(
"Fj_names")),
42 _num_j(_Fj_names.size()),
44 _hj_names(getParam<std::vector<MaterialPropertyName>>(
"hj_names")),
46 _gj_names(getParam<std::vector<MaterialPropertyName>>(
"gj_names")),
48 _w(getParam<Real>(
"w")),
53 mooseError(
"Size of hj_names is not equal to size of Fj_names in KKSMultiFreeEnergy AuxKernel ",
56 mooseError(
"Size of gj_names is not equal to size of Fj_names in KKSMultiFreeEnergy AuxKernel ",
60 for (
unsigned int i = 0; i <
_num_j; ++i)
69 mooseError(
"Size of interfacial_vars is not equal to the size of kappa_names in "
70 "KKSMultiFreeEnergy AuxKernel ",
74 for (
unsigned int i = 0; i <
_nkappas; ++i)
84 for (
unsigned int i = 0; i <
_num_j; ++i)
88 for (
unsigned int i = 0; i <
_nvars; ++i)
Total free energy (both the bulk and gradient parts), where the bulk free energy has been defined in ...
std::vector< MaterialPropertyName > _hj_names
Switching function names.
std::vector< MaterialPropertyName > _kappa_names
Gradient free energy prefactor kappa.
std::vector< const VariableGradient * > _grad_vars
std::vector< const MaterialProperty< Real > * > _prop_Fj
Values of the free energy functions for each phase .
Compute the free energy in the multi-phase KKS Model .
InputParameters validParams< KKSMultiFreeEnergy >()
virtual Real computeValue()
std::vector< MaterialPropertyName > _gj_names
Barrier function names.
const VariableValue & _additional_free_energy
Additional free energy contribution.
std::vector< const MaterialProperty< Real > * > _prop_hj
Values of the switching functions for each phase .
std::vector< const MaterialProperty< Real > * > _prop_gj
Values of the barrier functions for each phase .
KKSMultiFreeEnergy(const InputParameters ¶meters)
InputParameters validParams< TotalFreeEnergyBase >()
std::vector< const MaterialProperty< Real > * > _kappas
Gradient interface free energy coefficients.
std::vector< MaterialPropertyName > _Fj_names
Names of free energy functions for each phase .
registerMooseObject("PhaseFieldApp", KKSMultiFreeEnergy)
const Real _w
Barrier term height.
unsigned int _nvars
Coupled interface variables.
const std::string total_energy
const unsigned int _num_j