1#ifndef DUNE_FEM_QUADRATURE_CACHING_REGISTRY_HH
2#define DUNE_FEM_QUADRATURE_CACHING_REGISTRY_HH
10#include <dune/geometry/type.hh>
32 virtual void cacheQuadrature ( std::size_t
id, std::size_t codim, std::size_t quadSize ) = 0;
33 virtual GeometryType
type ()
const = 0;
60 static inline void assertSingleThreadMode (
const bool );
72 assertSingleThreadMode(
false );
76 const GeometryType type = storage.
type();
80 if( type == it->type )
87 assertSingleThreadMode(
false );
89 const StorageListType::iterator pos
95 template<
class Quadrature >
101 template<
class Quadrature >
103 const GeometryType &type, std::size_t codim )
105 assertSingleThreadMode(
true );
107 QuadratureInfo quadInfo = { quadrature.
id(), codim, std::size_t( quadrature.
nop() ), type };
113 if( (*it)->type() == type )
114 (*it)->cacheQuadrature( quadInfo.
id, quadInfo.
codim, quadInfo.
size );
129 inline void QuadratureStorageRegistry::assertSingleThreadMode(
const bool quad)
135 const char* text = quad ?
"registerQuadrature" :
"registerStorage";
136 DUNE_THROW(SingleThreadModeError,
"QuadratureStorageRegistry" << text <<
": only call in single thread mode!");
Definition: bindguard.hh:11
static bool singleThreadMode()
returns true if program is operating on one thread currently
Definition: mpimanager.hh:436
Definition: registry.hh:25
static StorageListType & storageList()
Definition: registry.hh:49
static void initialize()
initialize static variables
Definition: registry.hh:64
static void unregisterStorage(StorageInterface &storage)
Definition: registry.hh:85
std::list< QuadratureInfo > QuadratureInfoListType
Definition: registry.hh:47
static void registerQuadrature(const Quadrature &quadrature, const GeometryType &type, std::size_t codim)
Definition: registry.hh:102
static void registerStorage(StorageInterface &storage)
Definition: registry.hh:70
static void registerQuadrature(const Quadrature &quadrature)
Definition: registry.hh:96
std::list< StorageInterface * > StorageListType
Definition: registry.hh:37
static QuadratureInfoListType & quadratureInfoList()
Definition: registry.hh:54
Definition: registry.hh:30
virtual ~StorageInterface()
Definition: registry.hh:31
virtual void cacheQuadrature(std::size_t id, std::size_t codim, std::size_t quadSize)=0
virtual GeometryType type() const =0
Definition: registry.hh:40
std::size_t codim
Definition: registry.hh:42
GeometryType type
Definition: registry.hh:44
std::size_t id
Definition: registry.hh:41
std::size_t size
Definition: registry.hh:43
int nop() const
obtain the number of integration points
Definition: quadrature.hh:295
GeometryType geometryType() const
obtain GeometryType for this integration point list
Definition: quadrature.hh:362
size_t id() const
obtain the identifier of the integration point list
Definition: quadrature.hh:327
actual interface class for quadratures
Definition: quadrature.hh:405
@ codimension
Definition: quadrature.hh:435
return singleton instance of given Object type.
Definition: singleton.hh:88