dune-localfunctions  2.8.0
orthonormalbasis.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_ORTHONORMALBASIS_HH
4 #define DUNE_ORTHONORMALBASIS_HH
5 
6 #include <sstream>
7 
10 
11 namespace Dune
12 {
13 
14  // OrthonormalBasisFactory
15  // -----------------------
16  template< int dim, class SF, class CF = typename ComputeField< SF, 512 >::Type >
18  {
19  static const unsigned int dimension = dim;
20  typedef SF StorageField;
21  typedef CF ComputeField;
22 
23  template <unsigned int dd, class FF>
25  {
27  };
28 
30  typedef typename MonomialBasisProviderType::Object MonomialBasisType;
31 
35 
36  typedef unsigned int Key;
37  typedef const Basis Object;
38 
39  static constexpr GeometryType SimplexGeometry = GeometryTypes::simplex(dim);
40 
41  template< GeometryType::Id geometryId >
42  static Object *create ( const unsigned int order )
43  {
44  const MonomialBasisType &monomialBasis = *MonomialBasisProviderType::template create< SimplexGeometry >( order );
45 
46  static CoefficientMatrix _coeffs;
47  if( _coeffs.size() <= monomialBasis.size() )
48  {
50  _coeffs.fill( matrix );
51  }
52 
53  return new Basis( monomialBasis, _coeffs, monomialBasis.size() );
54  }
55  static void release( Object *object ) { delete object; }
56  };
57 
58 }
59 
60 #endif // #ifndef DUNE_ORTHONORMALBASIS_HH
Definition: bdfmcube.hh:16
Definition: orthonormalbasis.hh:18
SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix
Definition: orthonormalbasis.hh:32
StandardEvaluator< MonomialBasisType > Evaluator
Definition: orthonormalbasis.hh:33
SF StorageField
Definition: orthonormalbasis.hh:20
static constexpr GeometryType SimplexGeometry
Definition: orthonormalbasis.hh:39
PolynomialBasis< Evaluator, CoefficientMatrix > Basis
Definition: orthonormalbasis.hh:34
EvaluationBasisFactory< dimension, StorageField >::Type MonomialBasisProviderType
Definition: orthonormalbasis.hh:29
CF ComputeField
Definition: orthonormalbasis.hh:21
static Object * create(const unsigned int order)
Definition: orthonormalbasis.hh:42
const Basis Object
Definition: orthonormalbasis.hh:37
unsigned int Key
Definition: orthonormalbasis.hh:36
static void release(Object *object)
Definition: orthonormalbasis.hh:55
static const unsigned int dimension
Definition: orthonormalbasis.hh:19
MonomialBasisProviderType::Object MonomialBasisType
Definition: orthonormalbasis.hh:30
MonomialBasisProvider< dd, FF > Type
Definition: orthonormalbasis.hh:26
Definition: orthonormalcompute.hh:93
Definition: basisevaluator.hh:129
Definition: coeffmatrix.hh:46
unsigned int size() const
Definition: coeffmatrix.hh:67
void fill(const RowMatrix &mat, bool verbose=false)
Definition: coeffmatrix.hh:158
Definition: monomialbasis.hh:789
Definition: polynomialbasis.hh:63