18 InputParameters params = validParams<Material>();
19 params.addClassDescription(
20 "Phase field parameters for polynomial free energy for single component systems");
21 params.addCoupledVar(
"T",
"Temperature variable in Kelvin");
22 params.addRequiredCoupledVar(
"c",
"Concentration");
23 params.addRequiredParam<Real>(
24 "int_width",
"The interfacial width of void surface in the length scale of the problem");
25 params.addParam<Real>(
26 "length_scale", 1.0e-9,
"defines the base length scale of the problem in m");
27 params.addParam<Real>(
"time_scale", 1.0e-9,
"defines the base time scale of the problem");
28 MooseEnum poly_order(
"4 6 8");
29 params.addRequiredParam<MooseEnum>(
30 "polynomial_order", poly_order,
"Order of polynomial free energy");
31 params.addRequiredParam<Real>(
"D0",
"Diffusivity prefactor for vacancies in m^2/s");
32 params.addRequiredParam<Real>(
"Em",
"Migration energy in eV");
33 params.addRequiredParam<Real>(
"Ef",
"Formation energy in eV");
34 params.addRequiredParam<Real>(
"surface_energy",
"Surface energy in J/m2");
39 : Material(parameters),
40 _c(coupledValue(
"c")),
41 _T(coupledValue(
"T")),
42 _M(declareProperty<Real>(
"M")),
44 _kappa(declareProperty<Real>(
"kappa")),
45 _c_eq(declareProperty<Real>(
"c_eq")),
46 _W(declareProperty<Real>(
"barr_height")),
47 _Qstar(declareProperty<Real>(
"Qstar")),
48 _D(declareProperty<Real>(
"D")),
49 _int_width(getParam<Real>(
"int_width")),
50 _length_scale(getParam<Real>(
"length_scale")),
51 _time_scale(getParam<Real>(
"time_scale")),
52 _order(getParam<MooseEnum>(
"polynomial_order")),
53 _D0(getParam<Real>(
"D0")),
54 _Em(getParam<Real>(
"Em")),
55 _Ef(getParam<Real>(
"Ef")),
56 _surface_energy(getParam<Real>(
"surface_energy")),
57 _JtoeV(6.24150974e18),
68 Real kbT =
_kb *
_T[_qp];
72 _D[_qp] = D0_c * std::exp(-
_Em / kbT);
83 KN = 3.0 / 16.0 * std::sqrt(3.0) + 9.0 / 64.0 * std::sqrt(2.0) *
84 (std::log(-std::sqrt(2.0) + std::sqrt(3.0)) +
85 std::log(std::sqrt(2.0) + std::sqrt(3.0)));
91 paramError(
"polynomial_order",
"Incorrect polynomial order");
107 Co =
std::pow(2.0, 5.0) * (1.0 + 2.0 * a - 2.0 * a * a);
110 Co =
std::pow(2.0, 7.0) * (9.0 / 2.0 * a - 9.0 / 2.0 * a * a + 3.0 / 4.0);
113 Co =
std::pow(2.0, 9.0) * (15.0 / 4.0 * a - 15.0 / 4.0 * a * a + 3.0 / 8.0);
116 mooseError(
"Error in PFParamsPolyFreeEnergy: incorrect polynomial order");