3 #ifndef DUNE_ALUGRID_LBDATAHANDLE_HH
4 #define DUNE_ALUGRID_LBDATAHANDLE_HH
13 template<
class Gr
id,
class DataHandleImpl,
class Data >
16 typedef typename Grid :: Traits :: HierarchicIterator HierarchicIterator;
42 dataHandle_( dataHandle )
47 inlineElementData( stream, element );
49 const int maxLevel = grid_.
maxLevel();
50 const HierarchicIterator end = element.hend( maxLevel );
51 for( HierarchicIterator it = element.hbegin( maxLevel ); it != end; ++it )
52 inlineElementData( stream, *it );
57 xtractElementData( stream, element );
59 const int maxLevel = grid_.
maxLevel();
60 const HierarchicIterator end = element.hend( maxLevel );
61 for( HierarchicIterator it = element.hbegin( maxLevel ); it != end; ++it )
62 xtractElementData( stream, *it );
74 inlineEntityData<0>( stream, element );
78 inlineCodimData< 1 >( stream, element );
79 inlineCodimData< 2 >( stream, element );
80 inlineCodimData< 3 >( stream, element );
88 xtractEntityData<0>( stream, element );
92 xtractCodimData< 1 >( stream, element );
93 xtractCodimData< 2 >( stream, element );
94 xtractCodimData< 3 >( stream, element );
100 typedef typename Codim< codim > :: EntityPointer EntityPointer;
104 const int numSubEntities = element.template count< codim >();
105 for(
int i = 0; i < numSubEntities; ++i )
107 const EntityPointer pEntity = element.template subEntity< codim >( i );
108 inlineEntityData< codim >( stream, *pEntity );
113 template<
int codim >
116 typedef typename Codim< codim > :: EntityPointer EntityPointer;
120 const int numSubEntities = element.template count< codim >();
121 for(
int i = 0; i < numSubEntities; ++i )
123 const EntityPointer pEntity = element.template subEntity< codim >( i );
124 xtractEntityData< codim >( stream, *pEntity );
129 template<
int codim >
131 const typename Codim< codim > :: Entity &entity )
const
133 const size_t size = dataHandle_.
size( entity );
134 stream.write( size );
135 dataHandle_.
gather( stream, entity );
138 template<
int codim >
140 const typename Codim< codim > :: Entity &entity )
144 dataHandle_.
scatter( stream, entity, size );
static const int dimension
Definition: lbdatahandle.hh:23
Grid::Traits::template Codim< codim >::Entity Entity
Definition: lbdatahandle.hh:28
Wrapper class for entities.
Definition: common/entity.hh:56
int maxLevel() const
Return maximum level defined in this grid. Levels are numbered 0 ... maxLevel with 0 the coarsest lev...
Definition: common/grid.hh:559
ALUGridLoadBalanceDataHandle(const Grid &grid, DataHandle &dataHandle)
Definition: lbdatahandle.hh:40
void gather(MessageBufferImp &buff, const EntityType &e) const
pack data from user to message buffer
Definition: datahandleif.hh:123
Definition: lbdatahandle.hh:26
Grid::ObjectStreamType ObjectStream
Definition: lbdatahandle.hh:19
void compress()
Definition: lbdatahandle.hh:65
bool contains(int dim, int codim) const
returns true if data for given valid codim should be communicated
Definition: datahandleif.hh:90
void xtractData(ObjectStream &stream, const Element &element, size_t newElements)
Definition: lbdatahandle.hh:55
The dimension of the grid.
Definition: common/grid.hh:400
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:74
void inlineData(ObjectStream &stream, const Element &element) const
Definition: lbdatahandle.hh:45
Grid abstract base classThis class is the base class for all grid implementations. Although no virtual functions are used we call it abstract since its methods do not contain an implementation but forward to the methods of the derived class via the Barton-Nackman trick.
Definition: common/grid.hh:386
Definition: lbdatahandle.hh:14
Grid::Traits::template Codim< codim >::EntityPointer EntityPointer
Definition: lbdatahandle.hh:30
size_t size(const EntityType &e) const
how many objects of type DataType have to be sent for a given entity
Definition: datahandleif.hh:112
Codim< 0 >::Entity Element
Definition: lbdatahandle.hh:33
void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)
unpack data from message buffer to user.
Definition: datahandleif.hh:135
CommDataHandleIF< DataHandleImpl, Data > DataHandle
Definition: lbdatahandle.hh:21
Describes the parallel communication interface class for MessageBuffers and DataHandles.