dune-grid  2.2.1
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Dune::PersistentContainer< Grid, Data, Allocator > Class Template Reference

A class for storing data during an adaptation cycle. More...

#include <dune/grid/utility/persistentcontainer.hh>

Inheritance diagram for Dune::PersistentContainer< Grid, Data, Allocator >:
Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet, std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >

Public Types

typedef Grid GridType
 
typedef GridType::template
Codim< 0 >::Entity 
ElementType
 
typedef MyIterator< iteratorIterator
 
typedef MyIterator
< const_iterator
ConstIterator
 

Public Member Functions

 PersistentContainer (const GridType &grid, const int codim, const Allocator &allocator=Allocator())
 
Dataoperator[] (const Entity &entity)
 random access entity with correct codimension More...
 
const Dataoperator[] (const Entity &entity) const
 random access entity with correct codimension More...
 
Dataoperator() (const ElementType &element, const int subEntity)
 access for sub entity data More...
 
const Dataoperator() (const ElementType &element, const int subEntity) const
 access for sub entity data More...
 
Iterator begin ()
 iterator begin for iterating over data actually stored in container More...
 
ConstIterator begin () const
 const iterator begin More...
 
Iterator end ()
 iterator end More...
 
ConstIterator end () const
 const iterator end More...
 
size_t size () const
 return size of allocated data More...
 
void reserve ()
 enlarge container, compress is not necessary but could be done More...
 
void clear ()
 adjust container to correct size and set all values to default More...
 
void update ()
 adjust container to correct size including compress More...
 

Protected Types

typedef Grid::Traits::LocalIdSet IdSet
 
typedef IdSet::IdType IdType
 
typedef Allocator::template
rebind< IdType >::other 
IdAllocator
 
typedef std::map< const IdType,
Data, std::less< const IdType >
, IdAllocator
Map
 
typedef PersistentContainerMap
< Grid, IdSet, Map
BaseType
 
typedef std::map< const
Grid::Traits::LocalIdSet::IdType,
Data, std::less< const
Grid::Traits::LocalIdSet::IdType >
, Allocator::template rebind
< Grid::Traits::LocalIdSet::IdType >
::other >::mapped_type 
Data
 
typedef std::map< const
Grid::Traits::LocalIdSet::IdType,
Data, std::less< const
Grid::Traits::LocalIdSet::IdType >
, Allocator::template rebind
< Grid::Traits::LocalIdSet::IdType >
::other >::iterator 
iterator
 
typedef std::map< const
Grid::Traits::LocalIdSet::IdType,
Data, std::less< const
Grid::Traits::LocalIdSet::IdType >
, Allocator::template rebind
< Grid::Traits::LocalIdSet::IdType >
::other >::const_iterator 
const_iterator
 

Protected Member Functions

void update (const Data &value)
 adjust container to correct size including compress More...
 
void adaptCodim (const Data &value)
 

Protected Attributes

const GridTypegrid_
 
const int codim_
 
const Grid::Traits::LocalIdSet & id_
 
std::map< const
Grid::Traits::LocalIdSet::IdType,
Data, std::less< const
Grid::Traits::LocalIdSet::IdType >
, Allocator::template rebind
< Grid::Traits::LocalIdSet::IdType >
::other > 
data_
 

Detailed Description

template<class Grid, class Data, class Allocator = std::allocator<Data>>
class Dune::PersistentContainer< Grid, Data, Allocator >

A class for storing data during an adaptation cycle.

This container allows to store data which is to remain persistent even during adaptation cycles. There is a default implementation based on std::map but any grid implementation can provide a specialized implementation.

The container expects that the class Data has a default constructor. This default value is returned if data for an entity is requested which has not yet been added to the container. Therefore no find as for std::map is required and provided. The class furthermore provides a size method and iterators. The guarantee being that the iteration is at least over all entries in the container which are not set to default but the iteration could also include entries with the default value. The size method returns the number of elements visited by an iteration so that size() is larger or equal to the entries which are not set to the default value. The method clear can be used to set all entries in the container to the default value.

After the grid has changed update() or reserve() should to be called. In contrast to the method reserve, the method update can compress the data to reduce memory consumption, whereas reserve() can be implemented not to reduce any memory even if the size of the grid has changed.

Specialized implementations of this class are provided for some grid implementations. Especially grids with an id type with a hash function could use the std::unordered_map to store the data (the implementation Dune::PersistentContainerMap can be used). For grids providing an id set suitable for storage in vector like structures (id type is int and size method provided) Dune::PersistentContainerVector can be used.

Member Typedef Documentation

template<class Grid, class Data, class Allocator = std::allocator<Data>>
typedef PersistentContainerMap< Grid, IdSet, Map > Dune::PersistentContainer< Grid, Data, Allocator >::BaseType
protected
typedef std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > :: const_iterator Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::const_iterator
protectedinherited
typedef MyIterator< const_iterator > Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::ConstIterator
inherited
typedef std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > :: mapped_type Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::Data
protectedinherited
typedef GridType :: template Codim< 0 >:: Entity Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::ElementType
inherited
template<class Grid, class Data, class Allocator = std::allocator<Data>>
typedef Grid Dune::PersistentContainer< Grid, Data, Allocator >::GridType
template<class Grid, class Data, class Allocator = std::allocator<Data>>
typedef Allocator::template rebind<IdType>::other Dune::PersistentContainer< Grid, Data, Allocator >::IdAllocator
protected
template<class Grid, class Data, class Allocator = std::allocator<Data>>
typedef Grid::Traits::LocalIdSet Dune::PersistentContainer< Grid, Data, Allocator >::IdSet
protected
template<class Grid, class Data, class Allocator = std::allocator<Data>>
typedef IdSet::IdType Dune::PersistentContainer< Grid, Data, Allocator >::IdType
protected
typedef std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > :: iterator Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::iterator
protectedinherited
typedef MyIterator< iterator > Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::Iterator
inherited
template<class Grid, class Data, class Allocator = std::allocator<Data>>
typedef std::map<const IdType, Data, std::less<const IdType>, IdAllocator> Dune::PersistentContainer< Grid, Data, Allocator >::Map
protected

Constructor & Destructor Documentation

template<class Grid, class Data, class Allocator = std::allocator<Data>>
Dune::PersistentContainer< Grid, Data, Allocator >::PersistentContainer ( const GridType grid,
const int  codim,
const Allocator &  allocator = Allocator() 
)
inline

Constructor filling the container with values using the default constructor Depending on the implementation this could be achieved without allocating memory

Member Function Documentation

void Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::adaptCodim ( const Data value)
inlineprotectedinherited
Iterator Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::begin ( )
inlineinherited

iterator begin for iterating over data actually stored in container

ConstIterator Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::begin ( ) const
inlineinherited

const iterator begin

void Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::clear ( )
inlineinherited

adjust container to correct size and set all values to default

Iterator Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::end ( )
inlineinherited

iterator end

ConstIterator Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::end ( ) const
inlineinherited

const iterator end

Data& Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::operator() ( const ElementType element,
const int  subEntity 
)
inlineinherited

access for sub entity data

const Data& Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::operator() ( const ElementType element,
const int  subEntity 
) const
inlineinherited

access for sub entity data

Data& Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::operator[] ( const Entity entity)
inlineinherited

random access entity with correct codimension

const Data& Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::operator[] ( const Entity entity) const
inlineinherited

random access entity with correct codimension

void Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::reserve ( )
inlineinherited

enlarge container, compress is not necessary but could be done

size_t Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::size ( ) const
inlineinherited

return size of allocated data

void Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::update ( )
inlineinherited

adjust container to correct size including compress

void Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::update ( const Data value)
inlineprotectedinherited

adjust container to correct size including compress

Member Data Documentation

const int Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::codim_
protectedinherited
std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::data_
mutableprotectedinherited
const GridType& Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::grid_
protectedinherited
const Grid::Traits::LocalIdSet & Dune::PersistentContainerMap< Grid, Grid::Traits::LocalIdSet , std::map< const Grid::Traits::LocalIdSet::IdType, Data, std::less< const Grid::Traits::LocalIdSet::IdType >, Allocator::template rebind< Grid::Traits::LocalIdSet::IdType >::other > >::id_
protectedinherited

The documentation for this class was generated from the following file: