dune-localfunctions  2.2.0
meta/power/coefficients.hh
Go to the documentation of this file.
00001 // -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
00002 // vi: set et ts=8 sw=2 sts=2:
00003 
00004 #ifndef DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
00005 #define DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH
00006 
00007 #include <cstddef>
00008 #include <vector>
00009 
00010 #include <dune/localfunctions/common/localkey.hh>
00011 
00012 namespace Dune {
00013 
00016 
00020   class PowerCoefficients {
00021     std::vector<LocalKey> keys;
00022 
00023   public:
00025 
00033     template<class Backend>
00034     PowerCoefficients(const Backend &backend, std::size_t power) :
00035       keys(backend.size()*power)
00036     {
00037       for(std::size_t i = 0; i < backend.size(); ++i) {
00038         const LocalKey &k = backend.localKey(i);
00039         for(std::size_t d = 0; d < power; ++d)
00040           keys[i+d*backend.size()] =
00041             LocalKey(k.subEntity(), k.codim(), power*k.index() + d);
00042       }
00043     }
00045     inline std::size_t size() const { return keys.size(); }
00046 
00048     inline const LocalKey& localKey(std::size_t i) const { return keys[i]; }
00049   };
00050 
00051 } // namespace Dune
00052 
00053 #endif // DUNE_LOCALFUNCTIONS_META_POWER_COEFFICIENTS_HH