dune-localfunctions  2.9.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 // SPDX-FileCopyrightInfo: Copyright (C) DUNE Project contributors, see file LICENSE.md in module root
4 // SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
5 #ifndef DUNE_ORTHONORMALBASIS_HH
6 #define DUNE_ORTHONORMALBASIS_HH
7 
8 #include <sstream>
9 
12 
13 namespace Dune
14 {
15 
16  // OrthonormalBasisFactory
17  // -----------------------
18  template< int dim, class SF, class CF = typename ComputeField< SF, 512 >::Type >
20  {
21  static const unsigned int dimension = dim;
22  typedef SF StorageField;
23  typedef CF ComputeField;
24 
25  template <unsigned int dd, class FF>
27  {
29  };
30 
32  typedef typename MonomialBasisProviderType::Object MonomialBasisType;
33 
37 
38  typedef unsigned int Key;
39  typedef const Basis Object;
40 
41  static constexpr GeometryType SimplexGeometry = GeometryTypes::simplex(dim);
42 
43  template< GeometryType::Id geometryId >
44  static Object *create ( const unsigned int order )
45  {
46  const MonomialBasisType &monomialBasis = *MonomialBasisProviderType::template create< SimplexGeometry >( order );
47 
48  static CoefficientMatrix _coeffs;
49  if( _coeffs.size() <= monomialBasis.size() )
50  {
52  _coeffs.fill( matrix );
53  }
54 
55  return new Basis( monomialBasis, _coeffs, monomialBasis.size() );
56  }
57  static void release( Object *object ) { delete object; }
58  };
59 
60 }
61 
62 #endif // #ifndef DUNE_ORTHONORMALBASIS_HH
Definition: bdfmcube.hh:18
Definition: orthonormalbasis.hh:20
SparseCoeffMatrix< StorageField, 1 > CoefficientMatrix
Definition: orthonormalbasis.hh:34
StandardEvaluator< MonomialBasisType > Evaluator
Definition: orthonormalbasis.hh:35
SF StorageField
Definition: orthonormalbasis.hh:22
static constexpr GeometryType SimplexGeometry
Definition: orthonormalbasis.hh:41
PolynomialBasis< Evaluator, CoefficientMatrix > Basis
Definition: orthonormalbasis.hh:36
EvaluationBasisFactory< dimension, StorageField >::Type MonomialBasisProviderType
Definition: orthonormalbasis.hh:31
CF ComputeField
Definition: orthonormalbasis.hh:23
static Object * create(const unsigned int order)
Definition: orthonormalbasis.hh:44
const Basis Object
Definition: orthonormalbasis.hh:39
unsigned int Key
Definition: orthonormalbasis.hh:38
static void release(Object *object)
Definition: orthonormalbasis.hh:57
static const unsigned int dimension
Definition: orthonormalbasis.hh:21
MonomialBasisProviderType::Object MonomialBasisType
Definition: orthonormalbasis.hh:32
MonomialBasisProvider< dd, FF > Type
Definition: orthonormalbasis.hh:28
Definition: orthonormalcompute.hh:95
Definition: basisevaluator.hh:131
Definition: coeffmatrix.hh:48
unsigned int size() const
Definition: coeffmatrix.hh:69
void fill(const RowMatrix &mat, bool verbose=false)
Definition: coeffmatrix.hh:160
Definition: monomialbasis.hh:780
Definition: polynomialbasis.hh:65