3 #ifndef DUNE_REFINED_P0_LOCALINTERPOLATION_HH
4 #define DUNE_REFINED_P0_LOCALINTERPOLATION_HH
14 template<
class D,
class R>
18 typedef typename LB::Traits::DomainType DT;
22 interpolationPoints_(4)
25 interpolationPoints_[0][0] = 1.0/6;
26 interpolationPoints_[0][1] = 1.0/6;
28 interpolationPoints_[1][0] = 4.0/6;
29 interpolationPoints_[1][1] = 1.0/6;
31 interpolationPoints_[2][0] = 1.0/6;
32 interpolationPoints_[2][1] = 4.0/6;
34 interpolationPoints_[3][0] = 2.0/6;
35 interpolationPoints_[3][1] = 2.0/6;
39 template<
typename F,
typename C>
40 void interpolate (
const F& f, std::vector<C>& out)
const
42 typename LB::Traits::RangeType y;
43 out.resize(interpolationPoints_.size());
44 for (
size_t i = 0; i < out.size(); ++i)
46 f.evaluate(interpolationPoints_[i], y);
52 std::vector<DT> interpolationPoints_;
55 template<
class D,
class R>
59 typedef typename LB::Traits::DomainType DT;
63 interpolationPoints_(8)
66 interpolationPoints_[0][0] = 1.0/8;
67 interpolationPoints_[0][1] = 1.0/8;
68 interpolationPoints_[0][2] = 1.0/8;
70 interpolationPoints_[1][0] = 5.0/8;
71 interpolationPoints_[1][1] = 1.0/8;
72 interpolationPoints_[1][2] = 1.0/8;
74 interpolationPoints_[2][0] = 1.0/8;
75 interpolationPoints_[2][1] = 5.0/8;
76 interpolationPoints_[2][2] = 1.0/8;
78 interpolationPoints_[3][0] = 1.0/8;
79 interpolationPoints_[3][1] = 1.0/8;
80 interpolationPoints_[3][2] = 5.0/8;
82 interpolationPoints_[4][0] = 1.0/4;
83 interpolationPoints_[4][1] = 1.0/8;
84 interpolationPoints_[4][2] = 1.0/4;
86 interpolationPoints_[5][0] = 3.0/8;
87 interpolationPoints_[5][1] = 1.0/4;
88 interpolationPoints_[5][2] = 1.0/8;
90 interpolationPoints_[6][0] = 1.0/8;
91 interpolationPoints_[6][1] = 1.0/4;
92 interpolationPoints_[6][2] = 3.0/8;
94 interpolationPoints_[7][0] = 1.0/4;
95 interpolationPoints_[7][1] = 3.0/8;
96 interpolationPoints_[7][2] = 1.0/4;
100 template<
typename F,
typename C>
101 void interpolate (
const F& f, std::vector<C>& out)
const
103 typename LB::Traits::RangeType y;
104 out.resize(interpolationPoints_.size());
105 for (
size_t i = 0; i < out.size(); ++i)
107 f.evaluate(interpolationPoints_[i], y);
113 std::vector<DT> interpolationPoints_;