5#ifndef DUNE_DEFAULTBASISFACTORY_HH 
    6#define DUNE_DEFAULTBASISFACTORY_HH 
   11#include <dune/localfunctions/utility/basismatrix.hh> 
   18    static T apply( 
const T &t )
 
   32  template< 
class PreBFactory,
 
   33      class InterpolFactory,
 
   34      unsigned int dim, 
unsigned int dimR,
 
   37      class PreBasisKeyExtractor = Identity >
 
   38  struct DefaultBasisFactory
 
   40    static const unsigned int dimension = dim;
 
   41    static const unsigned int dimRange  = dimR;
 
   44    typedef SF StorageField;
 
   45    typedef CF ComputeField;
 
   46    typedef PreBFactory PreBasisFactory;
 
   47    typedef typename PreBasisFactory::Object PreBasis;
 
   48    typedef InterpolFactory InterpolationFactory;
 
   49    typedef typename InterpolationFactory::Object Interpolation;
 
   50    typedef typename PreBasisFactory::template EvaluationBasisFactory<dim,SF>::Type MonomialBasisFactory;
 
   51    typedef typename MonomialBasisFactory::Object MonomialBasis;
 
   52    typedef StandardEvaluator< MonomialBasis > Evaluator;
 
   53    typedef PolynomialBasisWithMatrix< Evaluator, SparseCoeffMatrix< SF, dimRange >, D, R > Basis;
 
   55    typedef const Basis Object;
 
   56    typedef typename InterpolationFactory::Key Key;
 
   57    template <
unsigned int dd, 
class FF>
 
   58    struct EvaluationBasisFactory
 
   60      typedef typename PreBasisFactory::template EvaluationBasisFactory<dd,FF>::Type
 
   64    template< GeometryType::Id geometryId >
 
   65    static Object *create ( 
const Key &key )
 
   67      const typename PreBasisFactory::Key preBasisKey = PreBasisKeyExtractor::apply(key);
 
   68      const PreBasis *preBasis = PreBasisFactory::template create<geometryId>( preBasisKey );
 
   69      const Interpolation *interpol = InterpolationFactory::template create<geometryId>( key );
 
   70      BasisMatrix< PreBasis, Interpolation, ComputeField > matrix( *preBasis, *interpol );
 
   72      const MonomialBasis *monomialBasis = MonomialBasisFactory::template create< geometryId >( preBasis->order() );
 
   74      Basis *basis = 
new Basis( *monomialBasis );
 
   76      basis->fill( matrix );
 
   78      InterpolationFactory::release(interpol);
 
   79      PreBasisFactory::release(preBasis);
 
   84    static void release( Object *
object)
 
   86      const MonomialBasis *monomialBasis = &(
object->basis());
 
   88      MonomialBasisFactory::release( monomialBasis );
 
A few common exception classes.
 
Dune namespace.
Definition: alignedallocator.hh:13