Go to the documentation of this file.
3 #ifndef DUNE_GEOGRID_GRID_HH
4 #define DUNE_GEOGRID_GRID_HH
6 #include <dune/common/deprecated.hh>
23 template<
class HostGr
id >
73 template<
class HostGr
id,
class CoordFunction = DefaultCoordFunction< HostGr
id >,
class Allocator = std::allocator<
void > >
77 < HostGrid::dimension, CoordFunction::dimRange, typename HostGrid::ctype,
78 GeoGrid::GridFamily< HostGrid, CoordFunction, Allocator > >,
86 < HostGrid::dimension, CoordFunction::dimRange,
typename HostGrid::ctype,
111 typedef typename GridFamily::Traits
Traits;
120 template<
int codim >
205 typedef typename Traits::ctype
ctype;
228 removeHostGrid_( false ),
229 levelIndexSets_( hostGrid_->
maxLevel()+1, nullptr, allocator ),
230 storageAllocator_( allocator )
245 removeHostGrid_( true ),
246 levelIndexSets_( hostGrid_->
maxLevel()+1, nullptr, allocator ),
247 storageAllocator_( allocator )
261 coordFunction_( new CoordFunction( this->
hostGrid() ) ),
262 removeHostGrid_( true ),
263 levelIndexSets_( hostGrid_->
maxLevel()+1, nullptr, allocator ),
264 storageAllocator_( allocator )
272 for(
unsigned int i = 0; i < levelIndexSets_.size(); ++i )
274 if( levelIndexSets_[ i ] )
275 delete( levelIndexSets_[ i ] );
278 if( removeHostGrid_ )
280 delete coordFunction_;
310 int size (
int level,
int codim )
const
354 return hostGrid().numBoundarySegments( );
362 assert( globalIdSet_ );
370 assert( localIdSet_ );
376 assert( levelIndexSets_.size() == (size_t)(
maxLevel()+1) );
377 if( (level < 0) || (level >
maxLevel()) )
379 DUNE_THROW(
GridError,
"LevelIndexSet for nonexisting level " << level
394 assert( leafIndexSet_ );
395 return leafIndexSet_;
400 hostGrid().globalRefine( refCount );
485 template<
class DataHandle,
class Data >
491 levelGridView( level ).communicate( dataHandle, interface, direction );
506 template<
class DataHandle,
class Data >
511 leafGridView().communicate( dataHandle, interface, direction );
541 const bool gridChanged=
hostGrid().loadBalance();
562 template<
class DataHandle,
class Data >
563 bool loadBalance ( CommDataHandleIF< DataHandle, Data > &datahandle )
565 typedef CommDataHandleIF< DataHandle, Data > DataHandleIF;
566 typedef GeoGrid :: CommDataHandle< Grid, DataHandleIF > WrappedDataHandle;
568 WrappedDataHandle wrappedDataHandle( *
this, datahandle );
569 const bool gridChanged =
hostGrid().loadBalance( wrappedDataHandle );
595 template<
class EntitySeed >
600 return EntityImpl( *
this, seed );
611 typedef typename LevelGridView::GridViewImp ViewImp;
618 typedef typename LeafGridView::GridViewImp ViewImp;
652 const int newNumLevels =
maxLevel()+1;
653 const int oldNumLevels = levelIndexSets_.size();
655 for(
int i = newNumLevels; i < oldNumLevels; ++i )
657 if( levelIndexSets_[ i ] )
658 delete levelIndexSets_[ i ];
660 levelIndexSets_.resize( newNumLevels,
nullptr );
675 template<
int codim >
684 return storageAllocator_.allocate(
size );
689 storageAllocator_.deallocate( (
char *)p,
size );
693 HostGrid *
const hostGrid_;
694 CoordFunction *coordFunction_;
695 bool removeHostGrid_;
696 mutable std::vector< LevelIndexSet *, typename Allocator::template rebind< LevelIndexSet * >::other > levelIndexSets_;
700 mutable typename Allocator::template rebind< char >::other storageAllocator_;
708 template<
class HostGr
id,
class CoordFunction,
class Allocator >
709 template<
int codim >
710 struct GeometryGrid< HostGrid, CoordFunction, Allocator >::Codim
711 :
public Base::template Codim< codim >
752 template< PartitionIteratorType pitype >
786 #endif // #ifndef DUNE_GEOGRID_GRID_HH
Definition: geometrygrid/grid.hh:753
Store a reference to an entity with a minimal memory footprint.
Definition: common/entityseed.hh:23
Different resources needed by all grid implementations.
Definition: geometrygrid/entity.hh:58
const LocalIdSet & localIdSet() const
Definition: geometrygrid/grid.hh:366
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator LeafIterator
Definition: geometrygrid/grid.hh:757
const GlobalIdSet & globalIdSet() const
Definition: geometrygrid/grid.hh:358
Definition: geometrygrid/gridview.hh:27
Include standard header files.
Definition: agrid.hh:59
Definition: geometrygrid/datahandle.hh:23
int size(int level, GeometryType type) const
obtain number of entites on a level
Definition: geometrygrid/grid.hh:334
Traits::template Codim< codim >::LocalGeometry LocalGeometry
type of local geometry
Definition: geometrygrid/grid.hh:745
provides access to host grid objects from GeometryGrid
Definition: identitygrid.hh:37
GridFamily::Traits::LeafGridView LeafGridView
type of view for leaf grid
Definition: geometrygrid/grid.hh:141
static void adapt(CoordFunctionInterface &coordFunction)
Definition: coordfunction.hh:287
const LevelIndexSet & levelIndexSet(int level) const
Definition: geometrygrid/grid.hh:374
Traits::CollectiveCommunication CollectiveCommunication
communicator with all other processes having some part of the grid
Definition: geometrygrid/grid.hh:209
LeafGridView leafGridView() const
View for the leaf grid.
Definition: geometrygrid/grid.hh:616
const LeafIndexSet & leafIndexSet() const
Definition: geometrygrid/grid.hh:390
Definition: geometrygrid/intersection.hh:19
GeometryGrid(HostGrid *hostGrid, const Allocator &allocator=Allocator())
constructor
Definition: geometrygrid/grid.hh:259
int size(int codim) const
obtain number of leaf entities
Definition: geometrygrid/grid.hh:321
Partition< All_Partition >::LevelIterator LevelIterator
type of level iterator
Definition: geometrygrid/grid.hh:779
Traits::LocalIdSet LocalIdSet
type of local id set
Definition: geometrygrid/grid.hh:198
CoordFunction & coordFunction()
obtain mutable reference to the coordinate function.
Definition: geometrygrid/grid.hh:670
Definition: geometrygrid/gridfamily.hh:49
GridFamily::Traits Traits
type of the grid traits
Definition: geometrygrid/grid.hh:112
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:178
Traits::HierarchicIterator HierarchicIterator
iterator over the grid hierarchy
Definition: geometrygrid/grid.hh:129
traits structure containing types for a codimension
Definition: geometrygrid/grid.hh:121
Traits::LeafIntersectionIterator LeafIntersectionIterator
iterator over intersections with other entities on the leaf level
Definition: geometrygrid/grid.hh:131
const HostGrid & hostGrid() const
obtain constant reference to the host grid
Definition: geometrygrid/grid.hh:628
Traits::template Codim< codim >::Geometry Geometry
type of world geometry
Definition: geometrygrid/grid.hh:735
int ghostSize(int level, int codim) const
obtain size of ghost region for a grid level
Definition: geometrygrid/grid.hh:467
void communicate(CommDataHandleIF< DataHandle, Data > &dataHandle, InterfaceType interface, CommunicationDirection direction) const
communicate information on leaf entities
Definition: geometrygrid/grid.hh:507
int size(int level, int codim) const
obtain number of entites on a level
Definition: geometrygrid/grid.hh:310
Traits::LeafIndexSet LeafIndexSet
type of leaf index set
Definition: geometrygrid/grid.hh:159
Definition: geometrygrid/gridfamily.hh:33
Definition: geometrygrid/grid.hh:24
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:84
Traits::ctype ctype
type of vector coordinates (e.g., double)
Definition: geometrygrid/grid.hh:206
bool adapt()
Definition: geometrygrid/grid.hh:419
Traits::GlobalIdSet GlobalIdSet
type of global id set
Definition: geometrygrid/grid.hh:181
~GeometryGrid()
destructor
Definition: geometrygrid/grid.hh:270
Definition: geometrygrid/geometry.hh:85
int overlapSize(int level, int codim) const
obtain size of overlap region for a grid level
Definition: geometrygrid/grid.hh:457
Grid abstract base class.
Definition: common/grid.hh:373
void postAdapt()
Definition: geometrygrid/grid.hh:426
Definition: common/geometry.hh:24
bool preAdapt()
Definition: geometrygrid/grid.hh:414
void communicate(CommDataHandleIF< DataHandle, Data > &dataHandle, InterfaceType interface, CommunicationDirection direction, int level) const
communicate information on a grid level
Definition: geometrygrid/grid.hh:486
Definition: geometrygrid/backuprestore.hh:21
int overlapSize(int codim) const
obtain size of overlap region for the leaf grid
Definition: geometrygrid/grid.hh:438
void * allocateStorage(std::size_t size) const
Definition: geometrygrid/grid.hh:682
static const HostGrid::template Codim< codim >::Entity & getHostEntity(const typename Codim< codim >::Entity &entity)
Definition: geometrygrid/grid.hh:677
const CoordFunction & coordFunction() const
obtain constant reference to the coordinate function
Definition: geometrygrid/grid.hh:667
static std::conditional< std::is_reference< InterfaceType >::value, typename std::add_lvalue_reference< typename ReturnImplementationType< typename std::remove_reference< InterfaceType >::type >::ImplementationType >::type, typename std::remove_const< typename ReturnImplementationType< typename std::remove_reference< InterfaceType >::type >::ImplementationType >::type >::type getRealImplementation(InterfaceType &&i)
return real implementation of interface class
Definition: common/grid.hh:1119
GridFamily::Traits::LevelGridView LevelGridView
type of view for level grid
Definition: geometrygrid/grid.hh:143
GeometryGrid(HostGrid &hostGrid, CoordFunction &coordFunction, const Allocator &allocator=Allocator())
constructor
Definition: geometrygrid/grid.hh:225
actual implementation of the entity
Definition: geometrygrid/entity.hh:32
int ghostSize(int codim) const
obtain size of ghost region for the leaf grid
Definition: geometrygrid/grid.hh:447
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
obtain Entity from EntitySeed
Definition: geometrygrid/grid.hh:597
Partition< All_Partition >::LeafIterator LeafIterator
type of leaf iterator
Definition: geometrygrid/grid.hh:770
GeometryGrid(HostGrid *hostGrid, CoordFunction *coordFunction, const Allocator &allocator=Allocator())
constructor
Definition: geometrygrid/grid.hh:242
void deallocateStorage(void *p, std::size_t size) const
Definition: geometrygrid/grid.hh:687
Definition: geometrygrid/indexsets.hh:25
Traits::LevelIntersectionIterator LevelIntersectionIterator
iterator over intersections with other entities on the same level
Definition: geometrygrid/grid.hh:133
static std::conditional< std::is_reference< InterfaceType >::value, typename std::add_lvalue_reference< typename ReturnImplementationType< typename std::remove_reference< InterfaceType >::type >::ImplementationType >::type, typename std::remove_const< typename ReturnImplementationType< typename std::remove_reference< InterfaceType >::type >::ImplementationType >::type >::type getRealImplementation(InterfaceType &&i)
return real implementation of interface class
Definition: common/grid.hh:1119
int getMark(const typename Codim< 0 >::Entity &entity) const
Definition: geometrygrid/grid.hh:409
int maxLevel() const
obtain maximal grid level
Definition: geometrygrid/grid.hh:297
Traits::LevelIndexSet LevelIndexSet
type of level index set
Definition: geometrygrid/grid.hh:169
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition: geometrygrid/grid.hh:352
void update()
update grid caches
Definition: geometrygrid/grid.hh:647
Definition: identity.hh:12
LevelGridView levelGridView(int level) const
View for a grid level.
Definition: geometrygrid/grid.hh:609
Base class for exceptions in Dune grid modules.
Definition: exceptions.hh:16
int size(GeometryType type) const
obtain number of leaf entities
Definition: geometrygrid/grid.hh:343
Traits::template Codim< codim >::Entity Entity
type of entity
Definition: geometrygrid/grid.hh:720
HostGrid & hostGrid()
obtain mutable reference to the host grid
Definition: geometrygrid/grid.hh:634
bool mark(int refCount, const typename Codim< 0 >::Entity &entity)
Definition: geometrygrid/grid.hh:404
const CollectiveCommunication & comm() const
obtain CollectiveCommunication object
Definition: geometrygrid/grid.hh:522
Definition: geometrygrid/entity.hh:55
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:168
void globalRefine(int refCount)
Definition: geometrygrid/grid.hh:398
grid wrapper replacing the geometries
Definition: declaration.hh:10
CommDataHandleIF describes the features of a data handle for communication in parallel runs using the...
Definition: datahandleif.hh:72
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator LevelIterator
Definition: geometrygrid/grid.hh:760