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;
37 typedef std::list< StorageInterface * > StorageListType;
47 typedef std::list< QuadratureInfo > QuadratureInfoListType;
49 static StorageListType &storageList ()
51 static StorageListType storageList;
55 static QuadratureInfoListType &quadratureInfoList ()
57 static QuadratureInfoListType quadratureInfoList;
58 return quadratureInfoList;
72 storageList().push_back( &storage );
74 const GeometryType
type = storage.
type();
75 for( QuadratureInfoListType::iterator it = quadratureInfoList().begin(); it != quadratureInfoList().end(); ++it )
78 if( type == it->type )
86 const StorageListType::iterator pos
87 = std::find( storageList().begin(), storageList().end(), &storage );
88 if( pos != storageList().end() )
89 storageList().erase( pos );
92 template<
class Quadrature >
98 template<
class Quadrature >
100 const GeometryType &
type, std::size_t codim )
103 QuadratureInfo quadInfo = { quadrature.
id(), codim, std::size_t( quadrature.
nop() ), type };
104 quadratureInfoList().push_back( quadInfo );
106 for(
typename StorageListType::iterator it = storageList().begin(); it != storageList().end(); ++it )
109 if( (*it)->type() ==
type )
110 (*it)->cacheQuadrature( quadInfo.id, quadInfo.codim, quadInfo.size );
119 #endif // #ifndef DUNE_FEM_QUADRATURE_CACHING_REGISTRY_HH GeometryType geometryType() const
obtain GeometryType for this integration point list
Definition: quadrature.hh:293
Definition: registry.hh:29
Definition: quadrature.hh:347
int nop() const
obtain the number of integration points
Definition: quadrature.hh:226
static void initialize()
initialize static variables
Definition: registry.hh:63
static void registerStorage(StorageInterface &storage)
Definition: registry.hh:69
virtual void cacheQuadrature(std::size_t id, std::size_t codim, std::size_t quadSize)=0
Definition: coordinate.hh:4
Definition: registry.hh:24
size_t id() const
obtain the identifier of the integration point list
Definition: quadrature.hh:258
static void registerQuadrature(const Quadrature &quadrature)
Definition: registry.hh:93
virtual GeometryType type() const =0
static void unregisterStorage(StorageInterface &storage)
Definition: registry.hh:83
static bool singleThreadMode()
returns true if program is operating on one thread currently
Definition: threadmanager.hh:217
static void registerQuadrature(const Quadrature &quadrature, const GeometryType &type, std::size_t codim)
Definition: registry.hh:99
virtual ~StorageInterface()
Definition: registry.hh:31
actual interface class for quadratures
Definition: quadrature.hh:320