dune-localfunctions
2.2.0
|
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