6 #ifndef DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH 7 #define DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH 25 template<
class Backend,
class BasisTraits>
27 static_assert(Backend::Traits::dimRange == 1,
28 "PowerInterpolation works only with scalar backends");
30 const Backend *backend;
47 class ComponentEvaluator
53 ComponentEvaluator(
const F &f_, std::size_t comp_) :
57 typename Backend::Traits::Range operator()(
const typename Backend::Traits::DomainLocal &x)
const 59 typename Traits::Range fy = f(x);
60 typename Backend::Traits::Range y;
77 template<
typename F,
typename C>
81 for(std::size_t d = 0; d < Traits::dimRange; ++d) {
86 backend->interpolate(ComponentEvaluator<std::decay_t<decltype(f)>>(f, d), cout);
88 out.resize(cout.size()*Traits::dimRange);
90 assert(out.size() == cout.size()*Traits::dimRange);
91 std::copy(cout.begin(), cout.end(), out.begin() + d*cout.size());
98 #endif // DUNE_LOCALFUNCTIONS_META_POWER_INTERPOLATION_HH Definition: bdfmcube.hh:17
Meta-interpolation turning a scalar interpolation into vector-valued interpolation.
Definition: meta/power/interpolation.hh:26
BasisTraits Traits
Export basis traits.
Definition: meta/power/interpolation.hh:34
void interpolate(const F &f, std::vector< C > &out) const
Determine coefficients interpolating a given function.
Definition: meta/power/interpolation.hh:78
PowerInterpolation(const Backend &backend_)
Construct a PowerInterpolation.
Definition: meta/power/interpolation.hh:43