11 #include "Conversion.h"
12 #include "IndirectSort.h"
13 #include "libmesh/utility.h"
21 InputParameters params = validParams<Material>();
22 params.addClassDescription(
"Calculate Grand Potential interface parameters for a specified "
23 "interfacial free energy and width");
24 params.addRequiredParam<std::vector<Real>>(
"sigma",
"Interfacial free energies");
25 params.addRequiredRangeCheckedParam<Real>(
26 "width",
"width > 0",
"Interfacial width (for the interface with gamma = 1.5)");
27 params.addParam<std::vector<MaterialPropertyName>>(
29 "Interfacial / grain boundary gamma parameter names (leave empty for gamma0... gammaN)");
30 params.addParam<MaterialPropertyName>(
"kappa_name",
"kappa",
"Gradient interface parameter name");
31 params.addParam<MaterialPropertyName>(
"mu_name",
"mu",
"Grain growth bulk energy parameter name");
32 params.addParam<
unsigned int>(
34 "Sigma index to choose gamma = 1.5 for. Omit this to automatically chose the median sigma.");
35 params.addParamNamesToGroup(
"mu_name sigma_index",
"Advanced");
40 : Material(parameters),
41 _sigma(getParam<std::vector<Real>>(
"sigma")),
42 _width(getParam<Real>(
"width")),
43 _n_pair(_sigma.size()),
45 _gamma_name(getParam<std::vector<MaterialPropertyName>>(
"gamma_names")),
47 _kappa_prop(declareProperty<Real>(getParam<MaterialPropertyName>(
"kappa_name"))),
48 _mu_prop(declareProperty<Real>(getParam<MaterialPropertyName>(
"mu_name")))
52 paramError(
"sigma",
"Specify at least one interfacial energy");
55 paramError(
"gamma_names",
56 "Specify either as many entries are sigma values or none at all for auto-naming the "
57 "gamma material properties.");
61 for (
unsigned int i = 0; i <
_n_pair; i++)
65 for (
unsigned int i = 0; i <
_n_pair; i++)
70 if (isParamValid(
"sigma_index"))
71 median = getParam<unsigned int>(
"sigma_index");
74 std::vector<size_t> indices;
75 Moose::indirectSort(
_sigma.begin(),
_sigma.end(), indices);
76 median = indices[(indices.size() - 1) / 2];
85 for (
unsigned int i = 0; i <
_n_pair; ++i)
94 Real gamma = 1.0 / (-5.288 * Utility::pow<8>(g) - 0.09364 * Utility::pow<6>(g) +
95 9.965 * Utility::pow<4>(g) - 8.183 * Utility::pow<2>(g) + 2.007);
106 for (
unsigned int i = 0; i <
_n_pair; ++i)