5#ifndef DUNE_ORTHONORMALBASIS_HH
6#define DUNE_ORTHONORMALBASIS_HH
10#include <dune/localfunctions/utility/polynomialbasis.hh>
11#include <dune/localfunctions/orthonormal/orthonormalcompute.hh>
18 template< int dim, class D, class R, class SF, class CF = typename ComputeField< SF, 512 >::Type >
19 struct OrthonormalBasisFactory
21 static const unsigned int dimension = dim;
24 typedef SF StorageField;
25 typedef CF ComputeField;
27 template <
unsigned int dd,
class FF>
28 struct EvaluationBasisFactory
30 typedef MonomialBasisProvider<dd,FF> Type;
33 typedef typename EvaluationBasisFactory< dimension, StorageField >::Type MonomialBasisProviderType;
34 typedef typename MonomialBasisProviderType::Object MonomialBasisType;
36 typedef SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix;
37 typedef StandardEvaluator< MonomialBasisType > Evaluator;
38 typedef PolynomialBasis< Evaluator, CoefficientMatrix, Domain, Range > Basis;
40 typedef unsigned int Key;
41 typedef const Basis Object;
45 template< GeometryType::Id geometryId >
46 static Object *create (
const unsigned int order )
48 const MonomialBasisType &monomialBasis = *MonomialBasisProviderType::template create< SimplexGeometry >( order );
50 static CoefficientMatrix _coeffs;
51 if( _coeffs.size() <= monomialBasis.size() )
53 ONBCompute::ONBMatrix< geometryId, ComputeField > matrix( order );
54 _coeffs.fill( matrix );
57 return new Basis( monomialBasis, _coeffs, monomialBasis.size() );
59 static void release( Object *
object ) {
delete object; }
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:132
constexpr GeometryType simplex(unsigned int dim)
Returns a GeometryType representing a simplex of dimension dim.
Definition: type.hh:453
Dune namespace.
Definition: alignedallocator.hh:13