3 #ifndef DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH
4 #define DUNE_HIERARCHICAL_SIMPLEX_P2_LOCALBASIS_HH
10 #include <dune/common/fvector.hh>
11 #include <dune/common/fmatrix.hh>
17 template<
class D,
class R,
int dim>
23 DUNE_THROW(Dune::NotImplemented,
"HierarchicalSimplexP2LocalBasis not implemented for dim > 3.");
41 template<
class D,
class R>
57 std::vector<typename Traits::RangeType>& out)
const
62 out[1] = 1-4*(in[0]-0.5)*(in[0]-0.5);
69 std::vector<typename Traits::JacobianType>& out)
const
74 out[1][0][0] = 4-8*in[0];
106 template<
class D,
class R>
122 std::vector<typename Traits::RangeType>& out)
const
126 out[0] = 1 - in[0] - in[1];
127 out[1] = 4*in[0]*(1-in[0]-in[1]);
129 out[3] = 4*in[1]*(1-in[0]-in[1]);
130 out[4] = 4*in[0]*in[1];
138 std::vector<typename Traits::JacobianType>& out)
const
142 out[0][0][0] = -1; out[0][0][1] = -1;
143 out[1][0][0] = 4-8*in[0]-4*in[1]; out[1][0][1] = -4*in[0];
144 out[2][0][0] = 1; out[2][0][1] = 0;
145 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1];
146 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0];
147 out[5][0][0] = 0; out[5][0][1] = 1;
182 template<
class D,
class R>
198 std::vector<typename Traits::RangeType>& out)
const
202 out[0] = 1 - in[0] - in[1] - in[2];
203 out[1] = 4 * in[0] * (1 - in[0] - in[1] - in[2]);
205 out[3] = 4 * in[1] * (1 - in[0] - in[1] - in[2]);
206 out[4] = 4 * in[0] * in[1];
208 out[6] = 4 * in[2] * (1 - in[0] - in[1] - in[2]);
209 out[7] = 4 * in[0] * in[2];
210 out[8] = 4 * in[1] * in[2];
216 std::vector<typename Traits::JacobianType>& out)
const
220 out[0][0][0] = -1; out[0][0][1] = -1; out[0][0][2] = -1;
221 out[1][0][0] = 4-8*in[0]-4*in[1]-4*in[2]; out[1][0][1] = -4*in[0]; out[1][0][2] = -4*in[0];
222 out[2][0][0] = 1; out[2][0][1] = 0; out[2][0][2] = 0;
223 out[3][0][0] = -4*in[1]; out[3][0][1] = 4-4*in[0]-8*in[1]-4*in[2]; out[3][0][2] = -4*in[1];
224 out[4][0][0] = 4*in[1]; out[4][0][1] = 4*in[0]; out[4][0][2] = 0;
225 out[5][0][0] = 0; out[5][0][1] = 1; out[5][0][2] = 0;
226 out[6][0][0] = -4*in[2]; out[6][0][1] = -4*in[2]; out[6][0][2] = 4-4*in[0]-4*in[1]-8*in[2];
227 out[7][0][0] = 4*in[2]; out[7][0][1] = 0; out[7][0][2] = 4*in[0];
228 out[8][0][0] = 0; out[8][0][1] = 4*in[2]; out[8][0][2] = 4*in[1];
229 out[9][0][0] = 0; out[9][0][1] = 0; out[9][0][2] = 1;
LocalBasisTraits< D, 1, Dune::FieldVector< D, 1 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 1 > > Traits
export type traits for function signature
Definition: hierarchicalsimplexp2localbasis.hh:47
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition: hierarchicalsimplexp2localbasis.hh:215
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition: hierarchicalsimplexp2localbasis.hh:137
unsigned int size() const
number of shape functions
Definition: hierarchicalsimplexp2localbasis.hh:115
LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
export type traits for function signature
Definition: hierarchicalsimplexp2localbasis.hh:188
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition: hierarchicalsimplexp2localbasis.hh:56
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition: hierarchicalsimplexp2localbasis.hh:197
unsigned int size() const
number of shape functions
Definition: hierarchicalsimplexp2localbasis.hh:50
Definition: hierarchicalsimplexp2localbasis.hh:18
void evaluateJacobian(const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
Evaluate Jacobian of all shape functions.
Definition: hierarchicalsimplexp2localbasis.hh:68
Type traits for LocalBasisVirtualInterface.
Definition: localbasis.hh:37
unsigned int order() const
Polynomial order of the shape functions (2 in this case)
Definition: hierarchicalsimplexp2localbasis.hh:235
LocalBasisTraits< D, 2, Dune::FieldVector< D, 2 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 2 > > Traits
export type traits for function signature
Definition: hierarchicalsimplexp2localbasis.hh:112
unsigned int order() const
Polynomial order of the shape functions (2, in this case)
Definition: hierarchicalsimplexp2localbasis.hh:80
HierarchicalSimplexP2LocalBasis()
Definition: hierarchicalsimplexp2localbasis.hh:21
unsigned int size() const
number of shape functions
Definition: hierarchicalsimplexp2localbasis.hh:191
unsigned int order() const
Polynomial order of the shape functions (2 in this case)
Definition: hierarchicalsimplexp2localbasis.hh:152
D DomainType
domain type
Definition: localbasis.hh:49
void evaluateFunction(const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
Evaluate all shape functions.
Definition: hierarchicalsimplexp2localbasis.hh:121