19 #include "libmesh/function_base.h" 
   20 #include "libmesh/auto_ptr.h"  
   23 #include "curl_curl_exact_solution.h" 
   27 #ifndef SOLUTION_FUNCTION_H 
   28 #define SOLUTION_FUNCTION_H 
   41   { libmesh_not_implemented(); }
 
   43   virtual void operator() (
const Point & p,
 
   48     const Real x=p(0), y=p(1);
 
   51     output(_u_var)   = soln(x, y)(0);
 
   52     output(_u_var+1) = soln(x, y)(1);
 
   59     const Real x=p(0), y=p(1);
 
   60     return soln(x, y)(component_in);
 
   63   virtual std::unique_ptr<FunctionBase<Number>> 
clone()
 const 
   64   { 
return libmesh_make_unique<SolutionFunction>(_u_var); }
 
   68   const unsigned int _u_var;
 
   82   { libmesh_not_implemented(); }
 
   84   virtual void operator() (
const Point & p,
 
   89     const Real x=p(0), y=p(1);
 
   90     output(_u_var)   = soln.grad(x, y).row(0);
 
   91     output(_u_var+1) = soln.grad(x, y).row(1);
 
   97     const Real x=p(0), y=p(1);
 
   98     return soln.grad(x, y).row(component_in);
 
  101   virtual std::unique_ptr<FunctionBase<Gradient>> 
clone()
 const 
  102   { 
return libmesh_make_unique<SolutionGradient>(_u_var); }
 
  106   const unsigned int _u_var;
 
  110 #endif // SOLUTION_FUNCTION_H