3 #ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH
4 #define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALINTERPOLATION_HH
18 template<
typename F,
typename C>
21 typename LB::Traits::DomainType x;
22 typename LB::Traits::RangeType y;
24 dune_static_assert(LB::Traits::dimDomain <=3,
"LocalInterpolation for HierarchicalSimplexP2 finite elements"
25 " is only implemented for dimDomain <=3!");
27 switch (
int(LB::Traits::dimDomain)) {
34 x[0] = 0.0; f.evaluate(x, y); out[0] = y;
35 x[0] = 1.0; f.evaluate(x, y); out[2] = y;
38 x[0] = 0.5; f.evaluate(x, y);
39 out[1] = y - 0.5*(out[0] + out[2]);
49 x[0] = 0.0; x[1] = 0.0; f.evaluate(x, y); out[0] = y;
50 x[0] = 1.0; x[1] = 0.0; f.evaluate(x, y); out[2] = y;
51 x[0] = 0.0; x[1] = 1.0; f.evaluate(x, y); out[5] = y;
54 x[0] = 0.5; x[1] = 0.0; f.evaluate(x, y);
55 out[1] = y - 0.5*(out[0] + out[2]);
57 x[0] = 0.0; x[1] = 0.5; f.evaluate(x, y);
58 out[3] = y - 0.5*(out[0] + out[5]);
60 x[0] = 0.5; x[1] = 0.5; f.evaluate(x, y);
61 out[4] = y - 0.5*(out[2] + out[5]);
70 x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; f.evaluate(x, y); out[0] = y;
71 x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; f.evaluate(x, y); out[2] = y;
72 x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; f.evaluate(x, y); out[5] = y;
73 x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; f.evaluate(x, y); out[9] = y;
76 x[0] = 0.5; x[1] = 0.0; x[2] = 0.0; f.evaluate(x, y);
77 out[1] = y - 0.5*(out[0] + out[2]);
79 x[0] = 0.0; x[1] = 0.5; x[2] = 0.0; f.evaluate(x, y);
80 out[3] = y - 0.5*(out[0] + out[5]);
82 x[0] = 0.5; x[1] = 0.5; x[2] = 0.0; f.evaluate(x, y);
83 out[4] = y - 0.5*(out[2] + out[5]);
85 x[0] = 0.0; x[1] = 0.0; x[2] = 0.5; f.evaluate(x, y);
86 out[6] = y - 0.5*(out[0] + out[9]);
88 x[0] = 0.5; x[1] = 0.0; x[2] = 0.5; f.evaluate(x, y);
89 out[7] = y - 0.5*(out[2] + out[9]);
91 x[0] = 0.0; x[1] = 0.5; x[2] = 0.5; f.evaluate(x, y);
92 out[8] = y - 0.5*(out[5] + out[9]);