3 #ifndef DUNE_GEOGRID_DATAHANDLE_HH
4 #define DUNE_GEOGRID_DATAHANDLE_HH
6 #include <dune/common/typetraits.hh>
19 template<
int codim,
class Gr
id >
22 typedef typename remove_const< Grid >::type::Traits Traits;
24 typedef typename Traits::template Codim< codim >::Entity Entity;
31 static void apply (
EntityImpl &entityImpl,
const HostEntity &hostEntity )
33 entityImpl.initialize( hostEntity );
40 static void apply (
EntityImpl &entityImpl,
const HostEntity &hostEntity )
42 DUNE_THROW( NotImplemented,
"Host grid has no entities for codimension " << codim <<
"." );
47 typedef typename conditional< hasHostEntity, InitReal< true >, InitFake< false > >::type Init;
53 Init::apply( Grid::getRealImplementation( entity_ ), hostEntity );
70 template<
class Gr
id,
class WrappedHandle >
72 :
public CommDataHandleIF< CommDataHandle< Grid, WrappedHandle >, typename WrappedHandle::DataType >
74 typedef typename remove_const< Grid >::type::Traits Traits;
79 wrappedHandle_( handle )
84 const bool contains = wrappedHandle_.contains( dim, codim );
86 assertHostEntity( dim, codim );
92 return wrappedHandle_.fixedsize( dim, codim );
95 template<
class HostEntity >
96 size_t size (
const HostEntity &hostEntity )
const
99 return wrappedHandle_.size( *proxy );
102 template<
class MessageBuffer,
class HostEntity >
103 void gather ( MessageBuffer &buffer,
const HostEntity &hostEntity )
const
106 wrappedHandle_.gather( buffer, *proxy );
109 template<
class MessageBuffer,
class HostEntity >
110 void scatter ( MessageBuffer &buffer,
const HostEntity &hostEntity,
size_t size )
113 wrappedHandle_.scatter( buffer, *proxy, size );
117 static void assertHostEntity (
int dim,
int codim )
123 static void noEntity (
int codim )
125 DUNE_THROW( NotImplemented,
"Host grid has no entities for codimension " << codim <<
"." );
129 WrappedHandle &wrappedHandle_;
136 #endif // #ifndef DUNE_GEOGRID_DATAHANDLE_HH
Definition: geometrygrid/datahandle.hh:20
void gather(MessageBuffer &buffer, const HostEntity &hostEntity) const
Definition: geometrygrid/datahandle.hh:103
DUNE-conform implementation of the entityThis class merely changes the template parameters of the ent...
Definition: geometrygrid/entity.hh:49
EntityProxy(const Grid &grid, const HostEntity &hostEntity)
Definition: geometrygrid/datahandle.hh:50
const Entity & operator*() const
Definition: geometrygrid/datahandle.hh:56
void scatter(MessageBuffer &buffer, const HostEntity &hostEntity, size_t size)
Definition: geometrygrid/datahandle.hh:110
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:74
bool fixedsize(int dim, int codim) const
Definition: geometrygrid/datahandle.hh:90
bool contains(int dim, int codim) const
Definition: geometrygrid/datahandle.hh:82
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
CommDataHandle(const Grid &grid, WrappedHandle &handle)
Definition: geometrygrid/datahandle.hh:77
Definition: geometrygrid/capabilities.hh:91
Different resources needed by all grid implementations.
size_t size(const HostEntity &hostEntity) const
Definition: geometrygrid/datahandle.hh:96
Definition: geometrygrid/datahandle.hh:71
Base::HostEntity HostEntity
Definition: geometrygrid/entity.hh:618
Definition: geometrygrid/capabilities.hh:111
Describes the parallel communication interface class for MessageBuffers and DataHandles.