dune-fem 2.8.0
Loading...
Searching...
No Matches
gridpart/idgridpart/datahandle.hh
Go to the documentation of this file.
1#ifndef DUNE_IDGRID_DATAHANDLE_HH
2#define DUNE_IDGRID_DATAHANDLE_HH
3
4//- C++ include
5#include <type_traits>
6
7//- dune-grid includes
8#include <dune/grid/common/datahandleif.hh>
9
10#if HAVE_DUNE_ALUGRID
11#include <dune/alugrid/common/ldbhandleif.hh>
12#endif
13
14namespace Dune
15{
16
17 // IdDataHandle
18 // ------------
19
20 template< class WrappedHandle, class GridFamily >
22 : public CommDataHandleIF< IdDataHandle< WrappedHandle, GridFamily >, typename WrappedHandle::DataType >
23 {
24 protected:
26
27 // type of traits
28 typedef typename std::remove_const< GridFamily >::type::Traits Traits;
29
30 typedef typename Traits :: ExtraData ExtraData ;
31
32 template< int codim >
33 struct Codim
34 {
35 // type of entity
36 typedef typename Traits::template Codim< codim >::Entity EntityType;
37 };
38
39 public:
40 // type of data to be communicated
41 typedef typename WrappedHandle::DataType DataType;
42
43 typedef CommDataHandleIF< ThisType, DataType > DataHandleIFType;
44
45 IdDataHandle ( const ThisType & ) = delete;
46
47 IdDataHandle ( ExtraData data, WrappedHandle &wrappedHandle )
48 : wrappedHandle_( wrappedHandle ),
49 data_( data )
50 {}
51
52 bool contains ( int dim, int codim ) const
53 {
54 return wrappedHandle_.contains( dim, codim );
55 }
56
57 bool fixedSize ( int dim, int codim ) const
58 {
59 return wrappedHandle_.fixedSize( dim, codim );
60 }
61
62 template< class HostEntity >
63 size_t size ( const HostEntity &hostEntity ) const
64 {
65 typedef typename Codim< HostEntity::codimension >::EntityType EntityType;
66 const EntityType entity( typename EntityType::Implementation( data(), hostEntity ) );
67 return wrappedHandle_.size( entity );
68 }
69
70 template< class MessageBuffer, class HostEntity >
71 void gather ( MessageBuffer &buffer, const HostEntity &hostEntity ) const
72 {
73 typedef typename Codim< HostEntity::codimension >::EntityType EntityType;
74 const EntityType entity( typename EntityType::Implementation( data(), hostEntity ) );
75 wrappedHandle_.gather( buffer, entity );
76 }
77
78 template< class MessageBuffer, class HostEntity >
79 void scatter ( MessageBuffer &buffer, const HostEntity &hostEntity, size_t size )
80 {
81 typedef typename Codim< HostEntity::codimension >::EntityType EntityType;
82 const EntityType entity( typename EntityType::Implementation( data(), hostEntity ) );
83 wrappedHandle_.scatter( buffer, entity, size );
84 }
85
86 ExtraData data() const { return data_; }
87
88 protected:
89 WrappedHandle &wrappedHandle_;
91 };
92
93} // namespace Dune
94
95#endif // #ifndef DUNE_IDGRID_DATAHANDLE_HH
Definition: bindguard.hh:11
Definition: gridpart/idgridpart/datahandle.hh:23
void gather(MessageBuffer &buffer, const HostEntity &hostEntity) const
Definition: gridpart/idgridpart/datahandle.hh:71
WrappedHandle::DataType DataType
Definition: gridpart/idgridpart/datahandle.hh:41
bool fixedSize(int dim, int codim) const
Definition: gridpart/idgridpart/datahandle.hh:57
IdDataHandle(ExtraData data, WrappedHandle &wrappedHandle)
Definition: gridpart/idgridpart/datahandle.hh:47
WrappedHandle & wrappedHandle_
Definition: gridpart/idgridpart/datahandle.hh:89
CommDataHandleIF< ThisType, DataType > DataHandleIFType
Definition: gridpart/idgridpart/datahandle.hh:43
ExtraData data() const
Definition: gridpart/idgridpart/datahandle.hh:86
IdDataHandle< WrappedHandle, GridFamily > ThisType
Definition: gridpart/idgridpart/datahandle.hh:25
void scatter(MessageBuffer &buffer, const HostEntity &hostEntity, size_t size)
Definition: gridpart/idgridpart/datahandle.hh:79
std::remove_const< GridFamily >::type::Traits Traits
Definition: gridpart/idgridpart/datahandle.hh:28
Traits::ExtraData ExtraData
Definition: gridpart/idgridpart/datahandle.hh:30
bool contains(int dim, int codim) const
Definition: gridpart/idgridpart/datahandle.hh:52
size_t size(const HostEntity &hostEntity) const
Definition: gridpart/idgridpart/datahandle.hh:63
IdDataHandle(const ThisType &)=delete
ExtraData data_
Definition: gridpart/idgridpart/datahandle.hh:90
Definition: gridpart/idgridpart/datahandle.hh:34
Traits::template Codim< codim >::Entity EntityType
Definition: gridpart/idgridpart/datahandle.hh:36