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
40 { libmesh_not_implemented(); }
42 virtual void operator() (
const Point & p,
47 const Real x=p(0), y=p(1), z=p(2);
50 output(_u_var) = soln(x, y, z)(0);
51 output(_u_var+1) = soln(x, y, z)(1);
52 output(_u_var+2) = soln(x, y, z)(2);
59 const Real x=p(0), y=p(1), z=p(2);
60 return soln(x, y, z)(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), z=p(2);
90 output(_u_var) = soln.grad(x, y, z).row(0);
91 output(_u_var+1) = soln.grad(x, y, z).row(1);
92 output(_u_var+2) = soln.grad(x, y, z).row(2);
99 const Real x=p(0), y=p(1), z=p(2);
100 return soln.grad(x, y, z).row(component_in);
103 virtual std::unique_ptr<FunctionBase<Gradient>>
clone()
const
104 {
return libmesh_make_unique<SolutionGradient>(_u_var); }
108 const unsigned int _u_var;
112 #endif // SOLUTION_FUNCTION_H