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 SF, class CF = typename ComputeField< SF, 512 >::Type >
19 struct OrthonormalBasisFactory
21 static const unsigned int dimension = dim;
22 typedef SF StorageField;
23 typedef CF ComputeField;
25 template <
unsigned int dd,
class FF>
26 struct EvaluationBasisFactory
28 typedef MonomialBasisProvider<dd,FF> Type;
31 typedef typename EvaluationBasisFactory< dimension, StorageField >::Type MonomialBasisProviderType;
32 typedef typename MonomialBasisProviderType::Object MonomialBasisType;
34 typedef SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix;
35 typedef StandardEvaluator< MonomialBasisType > Evaluator;
36 typedef PolynomialBasis< Evaluator, CoefficientMatrix > Basis;
38 typedef unsigned int Key;
39 typedef const Basis Object;
43 template< GeometryType::Id geometryId >
44 static Object *create (
const unsigned int order )
46 const MonomialBasisType &monomialBasis = *MonomialBasisProviderType::template create< SimplexGeometry >( order );
48 static CoefficientMatrix _coeffs;
49 if( _coeffs.size() <= monomialBasis.size() )
51 ONBCompute::ONBMatrix< geometryId, ComputeField > matrix( order );
52 _coeffs.fill( matrix );
55 return new Basis( monomialBasis, _coeffs, monomialBasis.size() );
57 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:464
Dune namespace.
Definition: alignedallocator.hh:13