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 );
ALUGridLoadBalanceDataHandle(const Grid &grid, DataHandle &dataHandle)
Definition: lbdatahandle.hh:40
void scatter(MessageBufferImp &buff, const EntityType &e, size_t n)
unpack data from message buffer to user.
Definition: datahandleif.hh:133
void gather(MessageBufferImp &buff, const EntityType &e) const
pack data from user to message buffer
Definition: datahandleif.hh:121
void inlineData(ObjectStream &stream, const Element &element) const
Definition: lbdatahandle.hh:45
Grid::ObjectStreamType ObjectStream
Definition: lbdatahandle.hh:19
Grid::Traits::template Codim< codim >::Entity Entity
Definition: lbdatahandle.hh:28
Wrapper class for entities.
Definition: common/entity.hh:61
int maxLevel() const
Return maximum level defined in this grid. Levels are numbered 0 ... maxLevel with 0 the coarsest lev...
Definition: common/grid.hh:561
Describes the parallel communication interface class for MessageBuffers and DataHandles.
Grid::Traits::template Codim< codim >::EntityPointer EntityPointer
Definition: lbdatahandle.hh:30
bool contains(int dim, int codim) const
returns true if data for given valid codim should be communicated
Definition: datahandleif.hh:88
static const int dimension
Definition: lbdatahandle.hh:23
void compress()
Definition: lbdatahandle.hh:65
size_t size(const EntityType &e) const
how many objects of type DataType have to be sent for a given entity
Definition: datahandleif.hh:110
void xtractData(ObjectStream &stream, const Element &element, size_t newElements)
Definition: lbdatahandle.hh:55
CommDataHandleIF< DataHandleImpl, Data > DataHandle
Definition: lbdatahandle.hh:21
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:388
Definition: lbdatahandle.hh:14
Definition: lbdatahandle.hh:26
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:72
The dimension of the grid.
Definition: common/grid.hh:402
Codim< 0 >::Entity Element
Definition: lbdatahandle.hh:33