dune-localfunctions  2.5.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 
8 #include <dune/geometry/topologyfactory.hh>
9 
12 
13 namespace Dune
14 {
15 
16  // OrthonormalBasisFactory
17  // -----------------------
18  template< int dim, class SF, class CF = typename ComputeField< SF, 512 >::Type >
20  template< int dim, class SF, class CF >
22  {
24  typedef typename MonomialBasisProviderType::Object MonomialBasisType;
28 
29  static const unsigned int dimension = dim;
30  typedef unsigned int Key;
31  typedef const Basis Object;
33  };
34 
35  template< int dim, class SF, class CF >
37  public TopologyFactory< OrthonormalBasisFactoryTraits<dim,SF,CF> >
38  {
39  static const unsigned int dimension = dim;
40  typedef SF StorageField;
41  typedef CF ComputeField;
43 
44  typedef typename Traits::Key Key;
45  typedef typename Traits::Object Object;
46 
47  template <unsigned int dd, class FF>
49  {
51  };
52 
53  typedef typename EvaluationBasisFactory< dimension, StorageField >::Type MonomialBasisProviderType;
54  typedef typename MonomialBasisProviderType::Object MonomialBasisType;
55 
59 
60  typedef typename Impl::SimplexTopology< dim >::type SimplexTopology;
61 
62  template< class Topology >
63  static Object *createObject ( const unsigned int order )
64  {
65  const typename Traits::MonomialBasisType &monomialBasis = *Traits::MonomialBasisProviderType::template create< SimplexTopology >( order );
66 
67  static typename Traits::CoefficientMatrix _coeffs;
68  if( _coeffs.size() <= monomialBasis.size() )
69  {
71  _coeffs.fill( matrix );
72  }
73 
74  return new Basis( monomialBasis, _coeffs, monomialBasis.size() );
75  }
76  };
77 
78 }
79 
80 #endif // #ifndef DUNE_ORTHONORMALBASIS_HH
PolynomialBasis< Evaluator, CoefficientMatrix > Basis
Definition: orthonormalbasis.hh:27
Definition: polynomialbasis.hh:62
StandardEvaluator< MonomialBasisType > Evaluator
Definition: orthonormalbasis.hh:57
SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix
Definition: orthonormalbasis.hh:56
Definition: orthonormalbasis.hh:21
MonomialBasisProviderType::Object MonomialBasisType
Definition: orthonormalbasis.hh:54
static const unsigned int dimension
Definition: orthonormalbasis.hh:29
unsigned int size() const
Definition: coeffmatrix.hh:67
Definition: brezzidouglasmarini1cube2dlocalbasis.hh:15
PolynomialBasis< Evaluator, CoefficientMatrix > Basis
Definition: orthonormalbasis.hh:58
StandardEvaluator< MonomialBasisType > Evaluator
Definition: orthonormalbasis.hh:26
Impl::SimplexTopology< dim >::type SimplexTopology
Definition: orthonormalbasis.hh:60
SF StorageField
Definition: orthonormalbasis.hh:40
const Basis Object
Definition: orthonormalbasis.hh:31
OrthonormalBasisFactoryTraits< dim, SF, CF > Traits
Definition: orthonormalbasis.hh:42
void fill(const RowMatrix &mat, bool verbose=false)
Definition: coeffmatrix.hh:158
OrthonormalBasisFactory< dim, SF, CF > Factory
Definition: orthonormalbasis.hh:32
Dune::MonomialBasisProvider< dim, SF > MonomialBasisProviderType
Definition: orthonormalbasis.hh:23
MonomialBasisProvider< dd, FF > Type
Definition: orthonormalbasis.hh:50
Definition: coeffmatrix.hh:45
Definition: orthonormalcompute.hh:92
MonomialBasisProviderType::Object MonomialBasisType
Definition: orthonormalbasis.hh:24
unsigned int Key
Definition: orthonormalbasis.hh:30
static Object * createObject(const unsigned int order)
Definition: orthonormalbasis.hh:63
Traits::Object Object
Definition: orthonormalbasis.hh:45
SparseCoeffMatrix< SF, 1 > CoefficientMatrix
Definition: orthonormalbasis.hh:25
CF ComputeField
Definition: orthonormalbasis.hh:41
Definition: monomialbasis.hh:987
Definition: orthonormalbasis.hh:19
Traits::Key Key
Definition: orthonormalbasis.hh:44
EvaluationBasisFactory< dimension, StorageField >::Type MonomialBasisProviderType
Definition: orthonormalbasis.hh:53
Definition: basisevaluator.hh:127