InputParameters validParams<CrackFrontDefinition>()
{
  InputParameters params = validParams<GeneralUserObject>();
  params += validParams<BoundaryRestrictable>();
  addCrackFrontDefinitionParams(params);
  params.set<bool>("use_displaced_mesh") = false;
  return params;
}
InputParameters validParams<DomainIntegralAction>()
{
  InputParameters params = validParams<Action>();
  addCrackFrontDefinitionParams(params);
  MooseEnum integral("JIntegral InteractionIntegralKI InteractionIntegralKII InteractionIntegralKIII");
  std::vector<MooseEnum> integral_vec(1, integral);
  params.addRequiredParam<std::vector<MooseEnum> >("integrals", integral_vec, "Domain integrals to calculate.  Choices are: " + integral.getRawNames());
  params.addParam<std::vector<BoundaryName> >("boundary", "The list of boundary IDs from the mesh where this boundary condition applies");
  params.addParam<std::string>("order", "FIRST",  "Specifies the order of the FE shape function to use for q AuxVariables");
  params.addParam<std::string>("family", "LAGRANGE", "Specifies the family of FE shape functions to use for q AuxVariables");
  params.addRequiredParam<std::vector<Real> >("radius_inner", "Inner radius for volume integral domain");
  params.addRequiredParam<std::vector<Real> >("radius_outer", "Outer radius for volume integral domain");
  params.addParam<std::vector<VariableName> >("output_variable", "Variable values to be reported along the crack front");
  params.addParam<Real>("poissons_ratio","Poisson's ratio");
  params.addParam<Real>("youngs_modulus","Young's modulus");
  params.addParam<std::vector<SubdomainName> >("block","The block ids where InteractionIntegralAuxFields is defined");
  params.addParam<VariableName>("disp_x", "The x displacement");
  params.addParam<VariableName>("disp_y", "The y displacement");
  params.addParam<VariableName>("disp_z", "The z displacement");
  return params;
}