1#ifndef DUNE_ALU3DGRIDDATAHANDLE_HH
2#define DUNE_ALU3DGRIDDATAHANDLE_HH
13#include <dune/alugrid/3d/datacollectorcaps.hh>
14#include <dune/alugrid/common/ldbhandleif.hh>
17#include "alu3dinclude.hh"
24 template <
int dimension>
32 template <
class DataCollector>
33 static bool contains(
const DataCollector& dc,
const int dim,
const int cd)
39 return dc.contains(dim,cd);
42 else if(dimension == 2)
48 return dc.contains(dimension, 2);
50 return dc.contains(dimension, cd);
55 std::cerr <<
"DataHandle.contains called with non-matching dim and codim" << std::endl;
63 template<
class Gr
idType,
class DataCollectorType,
int codim >
65 :
public GatherScatter
68 enum { dimension = GridType::dimension };
69 const GridType & grid_;
70 typedef typename GridType::template Codim<codim>::Entity EntityType;
71 typedef typename GridType::template Codim<codim>::EntityImp RealEntityType;
73 typedef typename GridType::MPICommunicatorType Comm;
75 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
76 typedef typename ImplTraits::template Codim< dimension, codim >::ImplementationType ImplElementType;
80 RealEntityType & realEntity_;
82 DataCollectorType & dc_;
84 const bool variableSize_;
86 typedef typename GatherScatter :: ObjectStreamType ObjectStreamType;
88 typedef typename DataCollectorType:: DataType DataType;
90 using GatherScatter :: setData ;
93 using GatherScatter :: containsItem ;
98 RealEntityType & realEntity , DataCollectorType & dc)
99 : grid_(grid), entity_(en), realEntity_(realEntity) , dc_(dc)
100 , variableSize_( ! dc_.
fixedSize(EntityType::dimension,codim) )
105 bool contains(
int dim,
int cd)
const
107 return detail::Contains< dimension >::contains( dc_, dim, cd );
112 virtual bool containsItem (
const HElementType & elem)
const = 0;
115 virtual void setElement(
const HElementType & elem) = 0;
117 void setData ( ObjectStreamType & str , HElementType & elem )
120 alugrid_assert ( this->containsItem( elem ) || elem.isGhost() );
128 size_t size = getSize(str, entity_);
130 dc_.scatter(str,entity_, size );
134 void sendData ( ObjectStreamType & str , HElementType & elem )
143 size_t size = dc_.size( entity_ );
147 dc_.gather(str, entity_ );
151 void recvData ( ObjectStreamType & str , HElementType & elem )
153 alugrid_assert ( this->containsItem( elem ) );
156 size_t size = getSize(str, entity_);
157 dc_.scatter(str,entity_, size );
161 size_t getSize(ObjectStreamType & str, EntityType & en)
181 template <
class Gr
idType,
class DataCollectorType >
186 enum { dimension = GridType::dimension };
187 const GridType & grid_;
188 typedef typename GridType::template Codim<0>::Entity EntityType;
189 typedef typename GridType::template Codim<0>::EntityImp RealEntityType;
191 typedef typename GridType::MPICommunicatorType Comm;
193 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
194 typedef typename ImplTraits::template Codim< dimension, codim >::ImplementationType ImplElementType;
199 typedef typename ImplTraits::template Codim< dimension, codim >::GhostInterfaceType HGhostType;
200 typedef typename ImplTraits::template Codim< dimension, codim >::GhostImplementationType ImplGhostType;
202 typedef typename ImplTraits::PllElementType PllElementType;
205 RealEntityType & realEntity_;
208 DataCollectorType & dc_;
210 const bool variableSize_;
213 typedef typename GatherScatter :: ObjectStreamType ObjectStreamType;
216 using GatherScatter :: setData ;
222 using GatherScatter :: containsItem ;
226 RealEntityType & realEntity , DataCollectorType & dc)
227 : grid_(grid), entity_(en), realEntity_(realEntity)
228 , dc_(dc) , variableSize_ ( ! dc_.
fixedSize( EntityType :: dimension, codim ))
235 bool contains(
int dim,
int cd)
const
237 return detail::Contains< dimension >::contains( dc_, dim, cd );
241 virtual bool containsItem (
const HElementType & elem)
const
243 return elem.isLeafEntity();
247 virtual bool containsItem (
const HGhostType & ghost)
const = 0;
250 void sendData ( ObjectStreamType & str ,
const HElementType & elem )
252 alugrid_assert ( this->containsItem(elem) );
253 realEntity_.setElement(
const_cast<HElementType &
> (elem) );
256 writeSize( str, entity_);
258 dc_.gather(str, entity_);
262 void sendData ( ObjectStreamType & str ,
const HGhostType& ghost)
264 alugrid_assert ( this->containsItem( ghost ) );
267 realEntity_.setGhost(
const_cast <HGhostType &
> (ghost) );
270 writeSize( str, entity_);
272 dc_.gather(str, entity_);
276 void recvData ( ObjectStreamType & str , HElementType & elem )
279 realEntity_.setElement( elem );
281 size_t size = getSize(str, entity_);
282 dc_.scatter(str, entity_, size);
286 void recvData ( ObjectStreamType & str , HGhostType & ghost )
288 alugrid_assert ( this->containsItem( ghost ) );
291 realEntity_.setGhost( ghost );
293 size_t size = getSize(str , entity_ );
294 dc_.scatter(str, entity_, size );
298 size_t getSize(ObjectStreamType & str, EntityType & en)
311 void writeSize(ObjectStreamType & str, EntityType & en)
315 size_t size = dc_.size( en );
322 template<
class Gr
idType,
class DataCollectorType,
int codim >
326 enum { dim = GridType :: dimension };
329 typedef typename GridType::template Codim<codim>::Entity EntityType;
330 typedef typename GridType::template Codim<codim>::EntityImp RealEntityType;
332 typedef typename GridType::MPICommunicatorType Comm;
334 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
335 typedef typename ImplTraits::template Codim< dim, codim >::ImplementationType IMPLElementType;
340 typedef typename ImplTraits::template Codim< dim, 0 >::GhostInterfaceType HGhostType;
341 typedef typename ImplTraits::template Codim< dim, 0 >::GhostImplementationType ImplGhostType;
343 typedef typename ImplTraits::PllElementType PllElementType;
352 RealEntityType & realEntity , DataCollectorType & dc)
359 if( (codim == dim) && dc.contains(dim,codim) )
363 grid.getLeafVertexList();
368 bool containsItem (
const HElementType & elem)
const
370 return (dim == 2 ? elem.is2d() :
true) && elem.isLeafEntity();
374 bool containsItem (
const HGhostType & ghost)
const
378 return ghost.isLeafEntity();
382 bool containsInterior (
const HFaceType & face, PllElementType & pll)
const
384 return (dim == 2 ? face.is2d() :
true) && face.isInteriorLeaf();
388 bool containsGhost (
const HFaceType & face , PllElementType & pll)
const
390 return (dim == 2 ? face.is2d() :
true) && pll.ghostLeaf();
394 void setElement(
const HElementType & elem)
396 this->realEntity_.setElement(elem, grid_);
401 template <
class Gr
idType,
class DataCollectorType ,
int codim >
405 enum { dim = GridType::dimension };
407 typedef typename GridType::template Codim<codim>::Entity EntityType;
408 typedef typename GridType::template Codim<codim>::EntityImp RealEntityType;
410 typedef typename GridType::MPICommunicatorType Comm;
412 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
413 typedef typename ImplTraits::template Codim< dim, codim >::ImplementationType IMPLElementType;
418 typedef typename ImplTraits::template Codim< dim, 0 >::GhostInterfaceType HGhostType;
419 typedef typename ImplTraits::template Codim< dim, 0 >::GhostImplementationType ImplGhostType;
421 typedef typename ImplTraits::PllElementType PllElementType;
423 typedef typename GridType::LevelIndexSetImp LevelIndexSetImp;
425 const LevelIndexSetImp & levelSet_;
433 RealEntityType & realEntity , DataCollectorType & dc,
434 const LevelIndexSetImp & levelSet,
const int level)
435 :
BaseType(grid,en,realEntity,dc) , levelSet_(levelSet) , level_(level)
440 bool containsItem (
const HElementType & elem)
const
442 return (dim == 2 ? elem.is2d() :
true) && levelSet_.containsIndex(codim, elem.getIndex() );
446 void setElement(
const HElementType & elem)
448 this->realEntity_.setElement(elem,level_);
455 template <
class Gr
idType,
class DataCollectorType ,
int codim >
459 enum { dim = GridType::dimension };
461 typedef typename GridType::template Codim<codim>::Entity EntityType;
462 typedef typename GridType::template Codim<codim>::EntityImp RealEntityType;
464 typedef typename GridType::MPICommunicatorType Comm;
466 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
468 typedef typename ImplTraits::template Codim< 2, codim >::ImplementationType IMPLElementType;
471 typedef typename ImplTraits::template Codim< 3, codim >::ImplementationType RealIMPLElementType;
476 typedef typename ImplTraits::template Codim< dim, 0 >::GhostInterfaceType HGhostType;
477 typedef typename ImplTraits::template Codim< dim, 0 >::GhostImplementationType ImplGhostType;
479 typedef typename ImplTraits::PllElementType PllElementType;
481 typedef typename GridType::LevelIndexSetImp LevelIndexSetImp;
489 RealEntityType & realEntity , DataCollectorType & dc,
490 const LevelIndexSetImp & levelSet,
const int level)
497 RealEntityType & realEntity , DataCollectorType & dc)
503 bool containsItem (
const HElementType & elem)
const
509 bool containsItem (
const RealHElementType & elem)
const
515 void setElement(
const HElementType & elem)
518 alugrid_assert(
false);
523 void setElement(
const RealHElementType & elem)
526 alugrid_assert(
false);
534 template <
class Gr
idType,
class DataCollectorType>
539 enum { dim = GridType:: dimension };
541 typedef typename GridType::template Codim<codim>::Entity EntityType;
542 typedef typename GridType::template Codim<codim>::EntityImp RealEntityType;
544 typedef typename GridType::MPICommunicatorType Comm;
546 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
547 typedef typename ImplTraits::template Codim< dim, codim >::ImplementationType IMPLElementType;
552 typedef typename ImplTraits::template Codim< dim, 0 >::GhostInterfaceType HGhostType;
553 typedef typename ImplTraits::template Codim< dim, 0 >::GhostImplementationType ImplGhostType;
555 typedef typename ImplTraits::PllElementType PllElementType;
557 typedef typename GridType::LevelIndexSetImp LevelIndexSetImp;
559 const LevelIndexSetImp & levelSet_;
564 RealEntityType & realEntity , DataCollectorType & dc,
565 const LevelIndexSetImp & levelSet,
const int level)
566 :
BaseType(grid,en,realEntity,dc) , levelSet_(levelSet) , level_(level) {}
569 bool containsItem (
const HElementType & elem)
const
571 return levelSet_.containsIndex(codim, elem.getIndex() );
575 bool containsItem (
const HGhostType & ghost)
const
577 alugrid_assert ( ghost.getGhost().first );
578 return containsItem( * (ghost.getGhost().first) );
582 bool containsInterior (
const HFaceType & face, PllElementType & pll)
const
585 if(face.level() != level_)
return false;
587 typedef Gitter::helement_STI HElementType;
588 typedef Gitter::hbndseg_STI HBndSegType;
591 std::pair< HElementType *, HBndSegType * > p( (HElementType *)0, (HBndSegType *)0 );
592 pll.getAttachedElement( p );
593 alugrid_assert ( p.first );
595 bool contained = (p.first->level() == level_);
596 alugrid_assert ( contained == this->containsItem( *p.first ));
601 bool containsGhost (
const HFaceType & face, PllElementType & pll)
const
604 if(face.level() != level_)
return false;
606 return (pll.ghostLevel() == level_);
616 template <
class Gr
idType,
class LoadBalanceHandleType,
bool useExternal>
617 class GatherScatterLoadBalance :
public GatherScatter
620 typedef typename GridType::MPICommunicatorType Comm;
622 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
625 typedef typename GridType :: template
Codim< 0 > :: Entity EntityType ;
626 typedef typename GridType :: template
Codim< 0 > :: EntityImp EntityImpType ;
628 template <
bool useHandlerOpts,
typename D =
void>
629 struct UseExternalHandlerOpts
631 bool importRank(
const LoadBalanceHandleType &lb,
632 std::set<int>& ranks )
const
634 return lb.importRanks( ranks );
636 int destination(
const LoadBalanceHandleType &lb,
637 const EntityType& entity )
const
641 int loadWeight(
const LoadBalanceHandleType &lb,
642 const EntityType& entity )
const
647 template <
typename D>
648 struct UseExternalHandlerOpts< false, D >
650 bool importRank(
const LoadBalanceHandleType &lb,
651 std::set<int>& ranks )
const
655 int destination(
const LoadBalanceHandleType &lb,
656 const EntityType& entity )
const
661 int loadWeight(
const LoadBalanceHandleType &lb,
662 const EntityType& entity )
const
671 GatherScatterLoadBalance(
const GatherScatterLoadBalance& );
679 LoadBalanceHandleType* ldbHandle_;
686 GatherScatterLoadBalance( GridType & grid,
687 LoadBalanceHandleType& ldb)
689 entity_( EntityImpType() ),
694 explicit GatherScatterLoadBalance( GridType & grid )
696 entity_( EntityImpType() ),
701 bool hasUserData()
const {
return false ; }
704 bool userDefinedPartitioning ()
const
706 return useExternal && ldbHandle_ ;
710 bool userDefinedLoadWeights ()
const
712 return ! useExternal && ldbHandle_ ;
718 return userDefinedPartitioning();
723 bool importRanks( std::set<int>& ranks )
const
725 alugrid_assert( userDefinedPartitioning() );
726 return UseExternalHandlerOpts<useExternal>().importRank( ldbHandle(), ranks );
731 bool exportRanks( std::set<int>& ranks )
const
741 int destination ( HElementType &elem )
744 alugrid_assert ( elem.level () == 0 );
745 alugrid_assert ( userDefinedPartitioning() );
746 return UseExternalHandlerOpts<useExternal>().destination( ldbHandle(), setEntity( elem ) );
750 int loadWeight ( HElementType &elem )
753 alugrid_assert( userDefinedLoadWeights() );
754 alugrid_assert ( elem.level() == 0 );
755 static const bool useWeights = std::is_same<LoadBalanceHandleType, GatherScatter> :: value == false ;
756 return UseExternalHandlerOpts< useWeights >().loadWeight( ldbHandle(), setEntity( elem ) );
760 EntityType& setEntity( HElementType& elem )
762 entity_.impl().setElement( elem );
766 LoadBalanceHandleType& ldbHandle()
768 alugrid_assert( ldbHandle_ );
772 const LoadBalanceHandleType& ldbHandle()
const
774 alugrid_assert( ldbHandle_ );
785 template <
class Gr
idType,
class LoadBalanceHandleType,
class DataHandleImpl,
class Data,
bool useExternal>
786 class GatherScatterLoadBalanceDataHandle
787 :
public GatherScatterLoadBalance< GridType, LoadBalanceHandleType, useExternal >
790 GatherScatterLoadBalanceDataHandle(
const GatherScatterLoadBalanceDataHandle& );
792 typedef GatherScatterLoadBalance< GridType, LoadBalanceHandleType, useExternal > BaseType ;
794 static const int dimension = GridType :: dimension ;
795 typedef typename GridType :: Traits :: HierarchicIterator HierarchicIterator;
797 template<
int codim >
800 typedef typename GridType :: Traits :: template Codim< codim > :: Entity Entity;
803 typedef typename GridType::MPICommunicatorType Comm;
804 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
807 typedef typename BaseType :: EntityType EntityType ;
811 template <
class DH,
bool>
812 struct CompressAndReserve
814 static DataHandleImpl& asImp( DH& dh ) {
return static_cast<DataHandleImpl &
> (dh); }
816 static void reserveMemory( DH& dataHandle,
const size_t newElements )
818 asImp( dataHandle ).reserveMemory( newElements );
820 static void compress( DH& dataHandle )
822 asImp( dataHandle ).compress();
827 struct CompressAndReserve< DH, false >
829 static void reserveMemory( DH& dataHandle,
const size_t newElements ) {}
830 static void compress( DH& dataHandle ) {}
834 static const bool hasCompressAndReserve = std::is_base_of< LoadBalanceHandleWithReserveAndCompress, DataHandleImpl >::value;
836 static const bool transmitSize = ! hasCompressAndReserve ;
838 typedef CompressAndReserve< DataHandleType, hasCompressAndReserve > CompressAndReserveType;
841 DataHandleType& dataHandle_;
844 typedef typename GatherScatter :: ObjectStreamType ObjectStreamType;
846 using BaseType :: grid_ ;
847 using BaseType :: setEntity ;
848 using BaseType :: entity_ ;
851 bool maxLevelConsistency()
const
853 int maxLevel = grid_.maxLevel();
854 maxLevel = grid_.comm().max( maxLevel );
855 return maxLevel == grid_.maxLevel();
859 GatherScatterLoadBalanceDataHandle( GridType & grid,
861 LoadBalanceHandleType& ldb)
862 : BaseType( grid, ldb ),
865 alugrid_assert( maxLevelConsistency() );
869 GatherScatterLoadBalanceDataHandle( GridType& grid, DataHandleType& dh )
873 alugrid_assert( maxLevelConsistency() );
877 bool contains(
int dim,
int cd)
const
883 return dataHandle_.contains(dim,cd);
886 else if(dimension == 2)
892 return dataHandle_.contains(dimension, 2);
894 return dataHandle_.contains(dimension, cd);
899 std::cerr <<
"DataHandle.contains called with non-matching dim and codim" << std::endl;
905 bool hasUserData()
const {
return true ; }
909 void inlineData ( ObjectStreamType & str , HElementType & elem,
const int estimatedElements )
912 str.write(estimatedElements);
914 alugrid_assert ( elem.level () == 0 );
917 inlineHierarchy( str, elem );
922 void xtractData ( ObjectStreamType & str , HElementType & elem )
924 alugrid_assert ( elem.level () == 0 );
927 int newElements = 0 ;
928 str.read( newElements );
932 CompressAndReserveType :: reserveMemory( dataHandle_, newElements );
935 xtractHierarchy( str, elem );
943 CompressAndReserveType :: compress( dataHandle_ );
948 void inlineHierarchy( ObjectStreamType & str, HElementType& elem )
951 inlineElementData( str, setEntity( elem ) );
953 for( HElementType* son = elem.down(); son ; son = son->next() )
954 inlineHierarchy( str, *son );
958 void xtractHierarchy( ObjectStreamType & str, HElementType& elem )
960 xtractElementData( str, setEntity( elem ) );
962 elem.resetRefinedTag();
964 for( HElementType* son = elem.down(); son ; son = son->next() )
965 xtractHierarchy( str, *son );
968 void inlineElementData ( ObjectStreamType &stream,
const EntityType &element )
971 if( dataHandle_.contains( dimension, 0 ) )
973 inlineEntityData<0>( stream, element );
977 inlineCodimData< 1 >( stream, element );
978 inlineCodimData< 2 >( stream, element );
980 inlineCodimData< dimension >( stream, element );
983 void xtractElementData ( ObjectStreamType &stream,
const EntityType &element )
986 if( dataHandle_.contains( dimension, 0 ) )
988 xtractEntityData<0>( stream, element );
992 xtractCodimData< 1 >( stream, element );
993 xtractCodimData< 2 >( stream, element );
995 xtractCodimData< dimension >( stream, element );
999 int subEntities(
const EntityType &element )
const
1001 return element.subEntities( codim );
1004 template<
int codim >
1005 void inlineCodimData ( ObjectStreamType &stream,
const EntityType &element )
const
1007 if( dataHandle_.contains( dimension, codim ) )
1009 const int numSubEntities = this->
template subEntities< codim >( element );
1010 for(
int i = 0; i < numSubEntities; ++i )
1012 inlineEntityData< codim >( stream, element.template subEntity< codim >( i ) );
1017 template<
int codim >
1018 void xtractCodimData ( ObjectStreamType &stream,
const EntityType &element )
1020 if( dataHandle_.contains( dimension, codim ) )
1022 const int numSubEntities = this->
template subEntities< codim >( element );
1023 for(
int i = 0; i < numSubEntities; ++i )
1025 xtractEntityData< codim >( stream, element.template subEntity< codim >( i ) );
1030 template<
int codim >
1031 void inlineEntityData ( ObjectStreamType &stream,
1032 const typename Codim< codim > :: Entity &entity )
const
1036 const size_t size = dataHandle_.size( entity );
1037 stream.write( size );
1039 dataHandle_.gather( stream, entity );
1042 template<
int codim >
1043 void xtractEntityData ( ObjectStreamType &stream,
1044 const typename Codim< codim > :: Entity &entity )
1049 stream.read( size );
1051 dataHandle_.scatter( stream, entity, size );
1060 template<
class Gr
idType,
class AdaptDataHandle >
1061 class AdaptRestrictProlongImpl
1062 :
public AdaptRestrictProlongType
1065 typedef typename GridType::template Codim<0>::Entity EntityType;
1066 typedef typename GridType::template Codim<0>::EntityImp RealEntityType;
1070 AdaptDataHandle &rp_;
1072 typedef typename GridType::MPICommunicatorType Comm;
1074 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
1075 typedef typename ImplTraits::HElementType HElementType;
1076 typedef typename ImplTraits::HBndSegType HBndSegType;
1077 typedef typename ImplTraits::BNDFaceType BNDFaceType;
1084 AdaptRestrictProlongImpl ( GridType &grid,
1085 AdaptDataHandle &rp )
1087 , entity_( RealEntityType() )
1092 virtual ~AdaptRestrictProlongImpl ()
1097 int preCoarsening ( HElementType & father )
1099 entity_.impl().setElement( father );
1100 rp_.preCoarsening( entity_ );
1103 father.resetRefinedTag();
1108 int postRefinement ( HElementType & father )
1110 entity_.impl().setElement( father );
1111 rp_.postRefinement( entity_ );
1114 father.resetRefinedTag();
1115 for( HElementType *son = father.down(); son ; son = son->next() )
1116 son->resetRefinedTag();
1122 int preCoarsening ( HBndSegType & ghost ) {
return 0; }
1126 int postRefinement ( HBndSegType & ghost ) {
return 0; }
1131 template<
class Gr
idType,
class AdaptDataHandle,
class GlobalIdSetImp >
1132 class AdaptRestrictProlongGlSet
1133 :
public AdaptRestrictProlongImpl< GridType, AdaptDataHandle >
1135 typedef AdaptRestrictProlongImpl< GridType, AdaptDataHandle > BaseType;
1136 GlobalIdSetImp & set_;
1137 typedef typename GridType::template Codim<0>::Entity EntityType;
1138 typedef typename GridType::template Codim<0>::EntityImp RealEntityType;
1140 typedef typename GridType::MPICommunicatorType Comm;
1142 typedef Dune::ALU3dImplTraits< GridType::elementType, Comm > ImplTraits;
1143 typedef typename ImplTraits::HElementType HElementType;
1144 typedef typename ImplTraits::HBndSegType HBndSegType;
1146 using AdaptRestrictProlongType :: postRefinement ;
1147 using AdaptRestrictProlongType :: preCoarsening ;
1151 AdaptRestrictProlongGlSet ( GridType &grid,
1152 AdaptDataHandle &rp,
1153 GlobalIdSetImp & set )
1154 : BaseType( grid, rp ),
1158 virtual ~AdaptRestrictProlongGlSet () {}
1161 int postRefinement ( HElementType & elem )
1163 set_.postRefinement( elem );
1164 return BaseType :: postRefinement(elem );
interfaces and wrappers needed for the callback adaptation provided by AlbertaGrid and dune-ALUGrid
GatherScatterBaseImpl(const GridType &grid, EntityType &en, RealEntityType &realEntity, DataCollectorType &dc)
Constructor.
Definition: datahandle.hh:225
void sendData(ObjectStreamType &str, const HGhostType &ghost)
write Data of one ghost element to stream
Definition: datahandle.hh:262
void recvData(ObjectStreamType &str, HGhostType &ghost)
read Data of one element from stream
Definition: datahandle.hh:286
void sendData(ObjectStreamType &str, const HElementType &elem)
write Data of one element to stream
Definition: datahandle.hh:250
void recvData(ObjectStreamType &str, HElementType &elem)
read Data of one element from stream
Definition: datahandle.hh:276
the corresponding interface class is defined in bsinclude.hh
Definition: datahandle.hh:66
void recvData(ObjectStreamType &str, HElementType &elem)
read Data of one element from stream
Definition: datahandle.hh:151
GatherScatterBaseImpl(const GridType &grid, EntityType &en, RealEntityType &realEntity, DataCollectorType &dc)
Constructor.
Definition: datahandle.hh:97
void sendData(ObjectStreamType &str, HElementType &elem)
write Data of one element to stream
Definition: datahandle.hh:134
the corresponding interface class is defined in bsinclude.hh
Definition: datahandle.hh:325
GatherScatterLeafData(const GridType &grid, EntityType &en, RealEntityType &realEntity, DataCollectorType &dc)
Constructor.
Definition: datahandle.hh:351
GatherScatterLevelData(const GridType &grid, EntityType &en, RealEntityType &realEntity, DataCollectorType &dc, const LevelIndexSetImp &levelSet, const int level)
Constructor.
Definition: datahandle.hh:563
the corresponding interface class is defined in bsinclude.hh
Definition: datahandle.hh:404
GatherScatterLevelData(const GridType &grid, EntityType &en, RealEntityType &realEntity, DataCollectorType &dc, const LevelIndexSetImp &levelSet, const int level)
Constructor.
Definition: datahandle.hh:432
the corresponding interface class is defined in bsinclude.hh
Definition: datahandle.hh:458
GatherScatterNoData(const GridType &grid, EntityType &en, RealEntityType &realEntity, DataCollectorType &dc)
Leaf Constructor.
Definition: datahandle.hh:496
GatherScatterNoData(const GridType &grid, EntityType &en, RealEntityType &realEntity, DataCollectorType &dc, const LevelIndexSetImp &levelSet, const int level)
Level Constructor.
Definition: datahandle.hh:488
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:78
Different resources needed by all grid implementations.
std::size_t fixedSize
The number of data items per index if it is fixed, 0 otherwise.
Definition: variablesizecommunicator.hh:265
Various macros to work with Dune module version numbers.