KASKADE 7 development version
polynomialcollection.hh
Go to the documentation of this file.
1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2/* */
3/* This file is part of the library KASKADE 7 */
4/* https://www.zib.de/research/projects/kaskade7-finite-element-toolbox */
5/* */
6/* Copyright (C) 2002-2012 Zuse Institute Berlin */
7/* */
8/* KASKADE 7 is distributed under the terms of the ZIB Academic License. */
9/* see $KASKADE/academic.txt */
10/* */
11/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
12
13#ifndef INTERPOLATION_POLYNOMIAL_COLLECTION_HH
14#define INTERPOLATION_POLYNOMIAL_COLLECTION_HH
15
16#include <vector>
17
19
20namespace Kaskade
21{
27 template<class InterpolationPolynomial, template <typename> class PolynomialPolicy = Policy::ShapeFunctionSetPolicy>
29 : private PolynomialPolicy<InterpolationPolynomial>
30 {
31 typedef typename InterpolationPolynomial::GridView GridView;
32 typedef typename GridView::template Codim<0>::Entity Entity;
33 typedef typename GridView::template Codim<0>::Iterator CellIterator;
34 typedef PolynomialPolicy<InterpolationPolynomial> Policy;
35 public:
36 typedef typename InterpolationPolynomial::range_type ValueType;
37
38 // no copying
41
43
56 template <typename... Parameters>
57 InterpolationPolynomialCollection(GridView const& gridView_, Parameters const&... params) :
58 gridView(gridView_),
59 interpolationPolynomials(gridView.size(0))
60 {
61 CellIterator end = gridView.template end<0>();
62 for(CellIterator ci = gridView.template begin<0>(); ci!=end; ++ci) interpolationPolynomials[gridView.indexSet().index(*ci)] = Policy::init(*ci, gridView, params...);
63 }
64
66
73 template <class Cell>
75 {
76 return Policy::evaluate( interpolationPolynomials[ gridView.indexSet().index(cell) ], localCoordinate );
77 }
78
79 private:
80 GridView const& gridView;
81 std::vector<InterpolationPolynomial> interpolationPolynomials;
82 using PolynomialPolicy<InterpolationPolynomial>::init;
83 };
84} /* end of namespace Kaskade */
85#endif
InterpolationPolynomialCollection(InterpolationPolynomialCollection const &)=delete
InterpolationPolynomial::range_type ValueType
ValueType value(Cell const &cell, Dune::FieldVector< typename Cell::Geometry::ctype, Cell::dimension > const &localCoordinate) const
Evaluation.
InterpolationPolynomialCollection(GridView const &gridView_, Parameters const &... params)
Constructor.
InterpolationPolynomialCollection & operator=(InterpolationPolynomialCollection const &)=delete
...for parameter dependent functionals, implements AbstractParameters
typename GridView::template Codim< 0 >::Entity Cell
The type of cells (entities of codimension 0) in the grid view.
Definition: gridBasics.hh:35