1 #ifndef DUNE_GEOGRID_DATAHANDLE_HH
2 #define DUNE_GEOGRID_DATAHANDLE_HH
4 #include <dune/common/typetraits.hh>
17 template<
int codim,
class Gr
id >
20 typedef typename remove_const< Grid >::type::Traits Traits;
22 typedef typename Traits::template Codim< codim >::Entity Entity;
29 static void apply (
EntityImpl &entityImpl,
const HostEntity &hostEntity )
31 entityImpl.initialize( hostEntity );
38 static void apply (
EntityImpl &entityImpl,
const HostEntity &hostEntity )
40 DUNE_THROW( NotImplemented,
"Host grid has no entities for codimension " << codim <<
"." );
45 typedef typename SelectType< hasHostEntity, InitReal< true >, InitFake< false > >::Type Init;
51 Init::apply( Grid::getRealImplementation( entity_ ), hostEntity );
68 template<
class Gr
id,
class WrappedHandle >
70 :
public CommDataHandleIF< CommDataHandle< Grid, WrappedHandle >, typename WrappedHandle::DataType >
72 typedef typename remove_const< Grid >::type::Traits Traits;
77 wrappedHandle_( handle )
82 const bool contains = wrappedHandle_.contains( dim, codim );
84 assertHostEntity( dim, codim );
90 return wrappedHandle_.fixedsize( dim, codim );
93 template<
class HostEntity >
94 size_t size (
const HostEntity &hostEntity )
const
97 return wrappedHandle_.size( *proxy );
100 template<
class MessageBuffer,
class HostEntity >
101 void gather ( MessageBuffer &buffer,
const HostEntity &hostEntity )
const
104 wrappedHandle_.gather( buffer, *proxy );
107 template<
class MessageBuffer,
class HostEntity >
108 void scatter ( MessageBuffer &buffer,
const HostEntity &hostEntity,
size_t size )
111 wrappedHandle_.scatter( buffer, *proxy, size );
115 static void assertHostEntity (
int dim,
int codim )
121 static void noEntity (
int codim )
123 DUNE_THROW( NotImplemented,
"Host grid has no entities for codimension " << codim <<
"." );
127 WrappedHandle &wrappedHandle_;
134 #endif // #ifndef DUNE_GEOGRID_DATAHANDLE_HH