2 #ifndef DUNE_MONOMLOCALINTERPOLATION_HH
3 #define DUNE_MONOMLOCALINTERPOLATION_HH
7 #include <dune/common/deprecated.hh>
8 #include <dune/common/fvector.hh>
9 #include <dune/common/fmatrix.hh>
11 #include <dune/geometry/type.hh>
12 #include <dune/geometry/quadraturerules.hh>
17 template<
class LB,
unsigned int size>
20 typedef typename LB::Traits::DomainType D;
21 typedef typename LB::Traits::DomainFieldType DF;
22 static const int dimD=LB::Traits::dimDomain;
23 typedef typename LB::Traits::RangeType R;
24 typedef typename LB::Traits::RangeFieldType RF;
26 typedef QuadratureRule<DF,dimD> QR;
27 typedef typename QR::iterator QRiterator;
31 DUNE_THROW(Exception,
"size template parameter does not match size of "
34 const QRiterator qrend = qr.end();
35 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
37 lb.evaluateFunction(qrit->position(),base);
39 for(
unsigned int i = 0; i < size; ++i)
40 for(
unsigned int j = 0; j < size; ++j)
41 Minv[i][j] += qrit->weight() * base[i] * base[j];
48 const LB &lb_) DUNE_DEPRECATED
49 : gt(bt_, dimD), lb(lb_), Minv(0)
50 , qr(QuadratureRules<DF,dimD>::rule(gt, 2*lb.order()))
55 : gt(gt_), lb(lb_), Minv(0)
56 , qr(QuadratureRules<DF,dimD>::rule(gt, 2*lb.order()))
60 template<
typename F,
typename C>
66 const QRiterator qrend = qr.end();
67 for(QRiterator qrit = qr.begin(); qrit != qrend; ++qrit) {
70 f.evaluate(qrit->position(),y);
73 lb.evaluateFunction(qrit->position(),base);
75 for(
unsigned int i = 0; i < size; ++i)
76 for(
unsigned int j = 0; j < size; ++j)
77 out[i] += Minv[i][j] * qrit->weight() * y * base[j];
84 FieldMatrix<RF, size, size> Minv;
90 #endif //DUNE_MONOMLOCALINTERPOLATION_HH