3 #ifndef DUNE_GEOGRID_DATAHANDLE_HH
4 #define DUNE_GEOGRID_DATAHANDLE_HH
6 #include <dune/common/typetraits.hh>
22 template<
class Gr
id,
class WrappedHandle >
24 :
public CommDataHandleIF< CommDataHandle< Grid, WrappedHandle >, typename WrappedHandle::DataType >
26 typedef typename remove_const< Grid >::type::Traits Traits;
31 wrappedHandle_( handle )
36 const bool contains = wrappedHandle_.contains( dim, codim );
38 assertHostEntity( dim, codim );
44 return wrappedHandle_.fixedsize( dim, codim );
47 template<
class HostEntity >
48 size_t size (
const HostEntity &hostEntity )
const
50 typedef typename Grid::Traits::template Codim< HostEntity::codimension >::Entity
Entity;
51 typedef typename Grid::Traits::template Codim< HostEntity::codimension >::EntityImpl EntityImpl;
52 Entity entity( EntityImpl( grid_, hostEntity ) );
53 return wrappedHandle_.size( entity );
56 template<
class MessageBuffer,
class HostEntity >
57 void gather ( MessageBuffer &buffer,
const HostEntity &hostEntity )
const
59 typedef typename Grid::Traits::template Codim< HostEntity::codimension >::Entity
Entity;
60 typedef typename Grid::Traits::template Codim< HostEntity::codimension >::EntityImpl EntityImpl;
61 Entity entity( EntityImpl( grid_, hostEntity ) );
62 wrappedHandle_.gather( buffer, entity );
65 template<
class MessageBuffer,
class HostEntity >
66 void scatter ( MessageBuffer &buffer,
const HostEntity &hostEntity,
size_t size )
68 typedef typename Grid::Traits::template Codim< HostEntity::codimension >::Entity
Entity;
69 typedef typename Grid::Traits::template Codim< HostEntity::codimension >::EntityImpl EntityImpl;
70 Entity entity( EntityImpl( grid_, hostEntity ) );
71 wrappedHandle_.scatter( buffer, entity, size );
75 static void assertHostEntity (
int dim,
int codim )
81 static void noEntity (
int codim )
83 DUNE_THROW( NotImplemented,
"Host grid has no entities for codimension " << codim <<
"." );
87 WrappedHandle &wrappedHandle_;
94 #endif // #ifndef DUNE_GEOGRID_DATAHANDLE_HH
void gather(MessageBuffer &buffer, const HostEntity &hostEntity) const
Definition: geometrygrid/datahandle.hh:57
Include standard header files.
Definition: agrid.hh:59
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
void scatter(MessageBuffer &buffer, const HostEntity &hostEntity, size_t size)
Definition: geometrygrid/datahandle.hh:66
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:72
Different resources needed by all grid implementations.
bool fixedsize(int dim, int codim) const
Definition: geometrygrid/datahandle.hh:42
bool contains(int dim, int codim) const
Definition: geometrygrid/datahandle.hh:34
Describes the parallel communication interface class for MessageBuffers and DataHandles.
DUNE-conform implementation of the entityThis class merely changes the template parameters of the ent...
Definition: geometrygrid/entity.hh:49
CommDataHandle(const Grid &grid, WrappedHandle &handle)
Definition: geometrygrid/datahandle.hh:29
size_t size(const HostEntity &hostEntity) const
Definition: geometrygrid/datahandle.hh:48
Definition: geometrygrid/datahandle.hh:23
Definition: geometrygrid/capabilities.hh:112