InputParameters validParams<PolynomialFreeEnergy>()
{
  InputParameters params = validParams<DerivativeParsedMaterialHelper>();
  params.addClassDescription("Polynomial free energy for single component systems");
  MooseEnum poly_order("4 6 8");
  params.addRequiredParam<MooseEnum>("polynomial_order", poly_order, "Order of polynomial free energy");
  params.addParam<std::string>("c_eq_name", "c_eq", "Name of material property storing the equilibrium concentration");
  params.addParam<std::string>("W_name", "barr_height", "Name of the material property storing the barrier height");
  params.addRequiredCoupledVar("c", "Concentration");
  return params;
}
InputParameters validParams<TempPFParamsPolyFreeEnergy>()
{
  InputParameters params = validParams<Material>();
  params.addClassDescription("Phase field parameters for polynomial free energy for single component systems");
  params.addCoupledVar("T", "Temperature variable in Kelvin");
  params.addRequiredCoupledVar("c", "Concentration");
  params.addRequiredParam<Real>("int_width", "The interfacial width of void surface in the lengthscale of the problem");
  params.addParam<Real>("length_scale", 1.0e-9, "defines the base length scale of the problem in m");
  params.addParam<Real>("time_scale", 1.0e-9, "defines the base time scale of the problem");
  MooseEnum poly_order("4 6 8");
  params.addRequiredParam<MooseEnum>("polynomial_order", poly_order, "Order of polynomial free energy");
  params.addRequiredParam<Real>("D0", "Diffusivity prefactor for vacancies in m^2/s");
  params.addRequiredParam<Real>("Em", "Migration energy in eV");
  params.addRequiredParam<Real>("Ef", "Formation energy in eV");
  params.addRequiredParam<Real>("surface_energy", "Surface energy in J/m2");
  return params;
}