2 #ifndef DUNE_PYRAMID_P1_LOCALBASIS_HH
3 #define DUNE_PYRAMID_P1_LOCALBASIS_HH
5 #include <dune/common/fmatrix.hh>
22 template<
class D,
class R>
38 std::vector<typename Traits::RangeType>& out)
const
44 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[1]);
45 out[1] = in[0]*(1-in[1])-in[2]*in[1];
46 out[2] = (1-in[0])*in[1]-in[2]*in[1];
47 out[3] = in[0]*in[1]+in[2]*in[1];
51 out[0] = (1-in[0])*(1-in[1])-in[2]*(1-in[0]);
52 out[1] = in[0]*(1-in[1])-in[2]*in[0];
53 out[2] = (1-in[0])*in[1]-in[2]*in[0];
54 out[3] = in[0]*in[1]+in[2]*in[0];
66 std::vector<typename Traits::JacobianType>& out)
const
72 out[0][0][0] = -1 + in[1]; out[0][0][1] = -1 + in[0] + in[2]; out[0][0][2] = -1 + in[1];
73 out[1][0][0] = 1 - in[1]; out[1][0][1] = -in[0] - in[2]; out[1][0][2] = -in[1];
74 out[2][0][0] = -in[1]; out[2][0][1] = 1 - in[0] - in[2]; out[2][0][2] = -in[1];
75 out[3][0][0] = in[1]; out[3][0][1] = in[0]+in[2]; out[3][0][2] = in[1];
79 out[0][0][0] = -1 + in[1] + in[2]; out[0][0][1] = -1 + in[0]; out[0][0][2] = -1 + in[0];
80 out[1][0][0] = 1 - in[1] - in[2]; out[1][0][1] = -in[0]; out[1][0][2] = -in[0];
81 out[2][0][0] = -in[1] - in[2]; out[2][0][1] = 1 - in[0]; out[2][0][2] = -in[0];
82 out[3][0][0] = in[1] + in[2]; out[3][0][1] = in[0]; out[3][0][2] = in[0];
86 out[4][0][0] = 0; out[4][0][1] = 0; out[4][0][2] = 1;