9#include <kernel/space/node_functional_base.hpp> 
   39        static constexpr int max_assigned_dofs = 1;
 
   41        template<
typename Function_>
 
   48        typedef typename Space_::TrafoType TrafoType;
 
   50        typedef typename TrafoEvalType::EvalTraits TrafoEvalTraits;
 
   51        typedef typename TrafoEvalTraits::DataType 
DataType;
 
   52        typedef typename TrafoEvalTraits::DomainPointType DomainPointType;
 
   55        typedef typename TrafoEvalType::template ConfigTraits<TrafoTags::img_point>::EvalDataType TrafoEvalData;
 
   57        TrafoEvalType _trafo_eval;
 
   62          _trafo_eval(space.get_trafo())
 
   69          _trafo_eval.prepare(cell_index);
 
   80          return max_assigned_dofs;
 
   83        template<
typename NodeData_, 
typename Function_>
 
   84        void operator()(NodeData_& node_data, 
const Function_& function)
 const 
   86          static_assert(std::is_base_of<Analytic::Function, Function_>::value, 
"invalid function object");
 
   87          static_assert(Function_::can_value, 
"function cannot compute values");
 
   90          typedef Analytic::EvalTraits<DataType_, Function_> FuncEvalTraits;
 
   93          typename Function_::template Evaluator<FuncEvalTraits> func_eval(function);
 
   97          TrafoEvalData trafo_data;
 
  101          node_data[0] = func_eval.value(trafo_data.img_point);
 
  114        static constexpr int max_assigned_dofs = (1 << shape_dim_);
 
  116        template<
typename Function_>
 
  123        typedef typename Space_::TrafoType TrafoType;
 
  125        typedef typename TrafoEvalType::EvalTraits TrafoEvalTraits;
 
  126        typedef typename TrafoEvalTraits::DataType 
DataType;
 
  127        typedef typename TrafoEvalTraits::DomainPointType DomainPointType;
 
  130        typedef typename TrafoEvalType::template ConfigTraits<TrafoTags::img_point>::EvalDataType TrafoEvalData;
 
  132        TrafoEvalType _trafo_eval;
 
  137          _trafo_eval(space.get_trafo())
 
  144          _trafo_eval.prepare(cell_index);
 
  149          _trafo_eval.finish();
 
  155          return max_assigned_dofs;
 
  158        template<
typename NodeData_, 
typename Function_>
 
  159        void operator()(NodeData_& node_data, 
const Function_& function)
 const 
  161          static_assert(std::is_base_of<Analytic::Function, Function_>::value, 
"invalid function object");
 
  162          static_assert(Function_::can_value, 
"function cannot compute values");
 
  165          typedef Analytic::EvalTraits<DataType_, Function_> FuncEvalTraits;
 
  168          typename Function_::template Evaluator<FuncEvalTraits> func_eval(function);
 
  172          TrafoEvalData trafo_data;
 
  175          for(
int i(0); i < max_assigned_dofs; ++i)
 
  178            for(
int k(0); k < shape_dim_; ++k)
 
  179              dom_point[k] = DataType_(2*((i >> k) & 1) - 1) / DataType_(3); 
 
  185            node_data[i] = func_eval.value(trafo_data.img_point);
 
  198        static constexpr int max_assigned_dofs = 2;
 
  200        template<
typename Function_>
 
  207        typedef typename Space_::TrafoType TrafoType;
 
  209        typedef typename TrafoEvalType::EvalTraits TrafoEvalTraits;
 
  210        typedef typename TrafoEvalTraits::DataType 
DataType;
 
  211        typedef typename TrafoEvalTraits::DomainPointType DomainPointType;
 
  214        typedef typename TrafoEvalType::template ConfigTraits<TrafoTags::img_point>::EvalDataType TrafoEvalData;
 
  216        TrafoEvalType _trafo_eval;
 
  221          _trafo_eval(space.get_trafo())
 
  228          _trafo_eval.prepare(cell_index);
 
  233          _trafo_eval.finish();
 
  239          return max_assigned_dofs;
 
  242        template<
typename NodeData_, 
typename Function_>
 
  243        void operator()(NodeData_& node_data, 
const Function_& function)
 const 
  245          static_assert(std::is_base_of<Analytic::Function, Function_>::value, 
"invalid function object");
 
  246          static_assert(Function_::can_value, 
"function cannot compute values");
 
  249          typedef Analytic::EvalTraits<DataType_, Function_> FuncEvalTraits;
 
  252          typename Function_::template Evaluator<FuncEvalTraits> func_eval(function);
 
  256          TrafoEvalData trafo_data;
 
  261          node_data[0] = func_eval.value(trafo_data.img_point);
 
  266          node_data[1] = func_eval.value(trafo_data.img_point);
 
  278        static constexpr int max_assigned_dofs = 1;
 
  280        template<
typename Function_>
 
  287        typedef typename Space_::TrafoType TrafoType;
 
  289        typedef typename TrafoEvalType::EvalTraits TrafoEvalTraits;
 
  290        typedef typename TrafoEvalTraits::DataType 
DataType;
 
  291        typedef typename TrafoEvalTraits::DomainPointType DomainPointType;
 
  294        typedef typename TrafoEvalType::template ConfigTraits<TrafoTags::img_point>::EvalDataType TrafoEvalData;
 
  296        TrafoEvalType _trafo_eval;
 
  301          _trafo_eval(space.get_trafo())
 
  308          _trafo_eval.prepare(cell_index);
 
  313          _trafo_eval.finish();
 
  319          return max_assigned_dofs;
 
  322        template<
typename NodeData_, 
typename Function_>
 
  323        void operator()(NodeData_& node_data, 
const Function_& function)
 const 
  325          static_assert(std::is_base_of<Analytic::Function, Function_>::value, 
"invalid function object");
 
  326          static_assert(Function_::can_value, 
"function cannot compute values");
 
  329          typedef Analytic::EvalTraits<DataType_, Function_> FuncEvalTraits;
 
  332          typename Function_::template Evaluator<FuncEvalTraits> func_eval(function);
 
  336          TrafoEvalData trafo_data;
 
  338          node_data[0] = func_eval.value(trafo_data.img_point);
 
Lagrange-3 Element Evaluator class template declaration.
Node-functional base class template.
void finish()
Releases the node-functional from the current cell.
DataType_ DataType
data type
void prepare(Index cell_index)
Prepares the node-functional for a given cell.
Null-Node-Functional class template.
int get_num_assigned_dofs() const
Returns the number of assigned dofs on the current cell.
NodeFunctionalBase< Space_, DataType_ > BaseClass
base-class typedef
void operator()(NodeData_ &node_data, const Function_ &function) const
Evaluation operator.
std::uint64_t Index
Index data type.
@ dom_point
specifies whether the trafo should supply domain point coordinates