1 #ifndef DUNE_FEM_GRIDPART_GEOGRIDPART_DATAHANDLE_HH 2 #define DUNE_FEM_GRIDPART_GEOGRIDPART_DATAHANDLE_HH 6 #include <dune/grid/common/datahandleif.hh> 19 template<
class Gr
idFamily,
class WrappedHandle >
21 :
public CommDataHandleIF< GeoDataHandle< GridFamily, WrappedHandle >, typename WrappedHandle::DataType >
23 typedef typename std::remove_const< GridFamily >::type::Traits Traits;
25 template<
class HostEntity >
31 GeoDataHandle (
const CoordFunctionType &coordFunction, WrappedHandle &handle )
32 : coordFunction_( coordFunction ),
33 wrappedHandle_( handle )
38 return wrappedHandle_.contains( dim, codim );
43 return wrappedHandle_.fixedsize( dim, codim );
46 template<
class HostEntity >
47 size_t size (
const HostEntity &hostEntity )
const 49 EntityProxy< HostEntity > proxy( coordFunction_, hostEntity );
50 return wrappedHandle_.size( *proxy );
53 template<
class MessageBuffer,
class HostEntity >
54 void gather ( MessageBuffer &buffer,
const HostEntity &hostEntity )
const 56 EntityProxy< HostEntity > proxy( coordFunction_, hostEntity );
57 wrappedHandle_.gather( buffer, *proxy );
60 template<
class MessageBuffer,
class HostEntity >
61 void scatter ( MessageBuffer &buffer,
const HostEntity &hostEntity,
size_t size )
63 EntityProxy< HostEntity > proxy( coordFunction_, hostEntity );
64 wrappedHandle_.scatter( buffer, *proxy, size );
68 const CoordFunctionType &coordFunction_;
69 WrappedHandle &wrappedHandle_;
77 template<
class Gr
idFamily,
class WrappedHandle >
78 template<
class HostEntity >
79 struct GeoDataHandle< GridFamily, WrappedHandle >::EntityProxy
81 static const int dimension = HostEntity::dimension;
82 static const int codimension = HostEntity::codimension;
84 typedef Dune::Entity< codimension, dimension, const GridFamily, GeoEntity > Entity;
90 EntityProxy (
const CoordFunctionType &coordFunction,
const HostEntity &hostEntity )
91 : entity_( EntityImpl( coordFunction, hostEntity ) )
107 #endif // #ifndef DUNE_FEM_GRIDPART_GEOGRIDPART_DATAHANDLE_HH
bool fixedsize(int dim, int codim) const
Definition: geogridpart/datahandle.hh:41
size_t size(const HostEntity &hostEntity) const
Definition: geogridpart/datahandle.hh:47
Traits::CoordFunctionType CoordFunctionType
Definition: geogridpart/datahandle.hh:26
GeoDataHandle(const CoordFunctionType &coordFunction, WrappedHandle &handle)
Definition: geogridpart/datahandle.hh:31
void gather(MessageBuffer &buffer, const HostEntity &hostEntity) const
Definition: geogridpart/datahandle.hh:54
bool contains(int dim, int codim) const
Definition: geogridpart/datahandle.hh:36
Definition: coordinate.hh:4
Double operator*(const Double &a, const Double &b)
Definition: double.hh:495
Definition: geogridpart/datahandle.hh:20
Definition: geogridpart/entity.hh:24
void scatter(MessageBuffer &buffer, const HostEntity &hostEntity, size_t size)
Definition: geogridpart/datahandle.hh:61