9#include <kernel/space/node_functional_base.hpp>
41 static constexpr int max_assigned_dofs = 1;
43 template<
typename Function_>
50 typedef typename Space_::TrafoType TrafoType;
52 typedef typename TrafoEvalType::EvalTraits TrafoEvalTraits;
53 typedef typename TrafoEvalTraits::DataType
DataType;
54 typedef typename TrafoEvalTraits::DomainPointType DomainPointType;
57 typedef typename TrafoEvalType::template ConfigTraits<TrafoTags::img_point>::EvalDataType TrafoEvalData;
59 TrafoEvalType _trafo_eval;
64 _trafo_eval(space.get_trafo())
71 _trafo_eval.prepare(cell_index);
82 return max_assigned_dofs;
85 template<
typename NodeData_,
typename Function_>
86 void operator()(NodeData_& node_data,
const Function_& function)
const
88 static_assert(std::is_base_of<Analytic::Function, Function_>::value,
"invalid function object");
89 static_assert(Function_::can_value,
"function cannot compute values");
92 typedef Analytic::EvalTraits<DataType_, Function_> FuncEvalTraits;
95 typename Function_::template Evaluator<FuncEvalTraits> func_eval(function);
99 TrafoEvalData trafo_data;
103 node_data[0] = func_eval.value(trafo_data.img_point);
116 static constexpr int max_assigned_dofs = 1;
118 template<
typename Function_>
125 typedef typename Space_::TrafoType TrafoType;
127 typedef typename TrafoEvalType::EvalTraits TrafoEvalTraits;
128 typedef typename TrafoEvalTraits::DataType
DataType;
129 typedef typename TrafoEvalTraits::DomainPointType DomainPointType;
132 typedef typename TrafoEvalType::template ConfigTraits<TrafoTags::img_point>::EvalDataType TrafoEvalData;
134 TrafoEvalType _trafo_eval;
139 _trafo_eval(space.get_trafo())
146 _trafo_eval.prepare(cell_index);
151 _trafo_eval.finish();
157 return max_assigned_dofs;
160 template<
typename NodeData_,
typename Function_>
161 void operator()(NodeData_& node_data,
const Function_& function)
const
163 static_assert(std::is_base_of<Analytic::Function, Function_>::value,
"invalid function object");
164 static_assert(Function_::can_value,
"function cannot compute values");
167 typedef Analytic::EvalTraits<DataType_, Function_> FuncEvalTraits;
170 typename Function_::template Evaluator<FuncEvalTraits> func_eval(function);
173 DomainPointType
dom_point(DataType_(0.5));
174 TrafoEvalData trafo_data;
178 node_data[0] = func_eval.value(trafo_data.img_point);
192 static constexpr int max_assigned_dofs = 1;
194 template<
typename Function_>
201 typedef typename Space_::TrafoType TrafoType;
203 typedef typename TrafoEvalType::EvalTraits TrafoEvalTraits;
204 typedef typename TrafoEvalTraits::DataType
DataType;
205 typedef typename TrafoEvalTraits::DomainPointType DomainPointType;
208 typedef typename TrafoEvalType::template ConfigTraits<TrafoTags::img_point>::EvalDataType TrafoEvalData;
210 TrafoEvalType _trafo_eval;
215 _trafo_eval(space.get_trafo())
222 _trafo_eval.prepare(cell_index);
227 _trafo_eval.finish();
233 return max_assigned_dofs;
236 template<
typename NodeData_,
typename Function_>
237 void operator()(NodeData_& node_data,
const Function_& function)
const
239 static_assert(std::is_base_of<Analytic::Function, Function_>::value,
"invalid function object");
240 static_assert(Function_::can_value,
"function cannot compute values");
243 typedef Analytic::EvalTraits<DataType_, Function_> FuncEvalTraits;
246 typename Function_::template Evaluator<FuncEvalTraits> func_eval(function);
250 for(
int i(0); i < dim_; ++i)
251 dom_point[i] = Shape::ReferenceCell<Shape::Simplex<dim_>>::template centre<DataType_>(i);
252 TrafoEvalData trafo_data;
256 node_data[0] = func_eval.value(trafo_data.img_point);
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.
P2-Bubble Element Evaluator class template declaration.
std::uint64_t Index
Index data type.
@ dom_point
specifies whether the trafo should supply domain point coordinates
Simplex shape tag struct template.