5 #ifndef DUNE_GEOGRID_GRID_HH 6 #define DUNE_GEOGRID_GRID_HH 10 #include <dune/common/shared_ptr.hh> 27 template<
class HostGr
id >
77 template<
class HostGr
id,
class CoordFunction = DefaultCoordFunction< HostGr
id >,
class Allocator = std::allocator<
void > >
81 < HostGrid::dimension, CoordFunction::dimRange, typename HostGrid::ctype,
82 GeoGrid::GridFamily< HostGrid, CoordFunction, Allocator > >,
90 < HostGrid::dimension, CoordFunction::dimRange,
typename HostGrid::ctype,
115 typedef typename GridFamily::Traits
Traits;
124 template<
int codim >
209 typedef typename Traits::ctype
ctype;
230 : hostGrid_(
Dune::stackobject_to_shared_ptr(
hostGrid) ),
232 levelIndexSets_( hostGrid_->
maxLevel()+1 ),
233 storageAllocator_( allocator )
248 levelIndexSets_( hostGrid_->
maxLevel()+1 ),
249 storageAllocator_( allocator )
263 coordFunction_(
std::make_shared<CoordFunction>( this->
hostGrid() ) ),
264 levelIndexSets_( hostGrid_->
maxLevel()+1 ),
265 storageAllocator_( allocator )
295 int size (
int level,
int codim )
const 339 return hostGrid().numBoundarySegments( );
347 assert( globalIdSet_ );
355 assert( localIdSet_ );
361 assert( levelIndexSets_.size() == (size_t)(
maxLevel()+1) );
362 if( (level < 0) || (level >
maxLevel()) )
364 DUNE_THROW(
GridError,
"LevelIndexSet for nonexisting level " << level
368 auto& levelIndexSetPtr = levelIndexSets_[ level ];
369 if( !levelIndexSetPtr )
370 levelIndexSetPtr = std::make_unique<LevelIndexSet>(
hostGrid().levelIndexSet( level ) );
371 assert( levelIndexSetPtr );
372 return *levelIndexSetPtr;
379 assert( leafIndexSet_ );
380 return leafIndexSet_;
385 hostGrid().globalRefine( refCount );
391 return hostGrid().mark( refCount, getHostEntity< 0 >( entity_ ) );
396 return hostGrid().getMark( getHostEntity< 0 >( entity_ ) );
446 const bool gridChanged=
hostGrid().loadBalance();
467 template<
class DataHandle,
class Data >
468 bool loadBalance ( CommDataHandleIF< DataHandle, Data > &datahandle )
470 typedef CommDataHandleIF< DataHandle, Data > DataHandleIF;
471 typedef GeoGrid :: CommDataHandle< Grid, DataHandleIF > WrappedDataHandle;
473 WrappedDataHandle wrappedDataHandle( *
this, datahandle );
474 const bool gridChanged =
hostGrid().loadBalance( wrappedDataHandle );
500 template<
class EntitySeed >
505 return EntityImpl( *
this, seed );
516 typedef typename LevelGridView::GridViewImp ViewImp;
523 typedef typename LeafGridView::GridViewImp ViewImp;
557 levelIndexSets_.resize(
maxLevel()+1 );
570 template<
int codim >
579 return storageAllocator_.allocate(
size );
584 storageAllocator_.deallocate( (
char *)p,
size );
588 std::shared_ptr<HostGrid>
const hostGrid_;
589 std::shared_ptr<CoordFunction> coordFunction_;
590 mutable std::vector<std::unique_ptr<LevelIndexSet>> levelIndexSets_;
594 mutable typename std::allocator_traits<Allocator>::template rebind_alloc< char > storageAllocator_;
602 template<
class HostGr
id,
class CoordFunction,
class Allocator >
603 template<
int codim >
604 struct GeometryGrid< HostGrid, CoordFunction, Allocator >::Codim
605 :
public Base::template Codim< codim >
646 template< PartitionIteratorType pitype >
680 #endif // #ifndef DUNE_GEOGRID_GRID_HH GeometryGrid(std::shared_ptr< HostGrid > hostGrid, std::shared_ptr< CoordFunction > coordFunction, const Allocator &allocator=Allocator())
constructor
Definition: geometrygrid/grid.hh:245
const LocalIdSet & localIdSet() const
Definition: geometrygrid/grid.hh:351
int size(int level, int codim) const
obtain number of entities on a level
Definition: geometrygrid/grid.hh:295
Store a reference to an entity with a minimal memory footprint.
Definition: common/entityseed.hh:25
Definition: geometrygrid/intersection.hh:21
void postAdapt()
Definition: geometrygrid/grid.hh:411
const CoordFunction & coordFunction() const
obtain constant reference to the coordinate function
Definition: geometrygrid/grid.hh:562
void update()
update grid caches
Definition: geometrygrid/grid.hh:552
Definition: geometrygrid/geometry.hh:88
Traits::template Codim< codim >::LocalGeometry LocalGeometry
type of local geometry
Definition: geometrygrid/grid.hh:639
Traits::LevelIndexSet LevelIndexSet
type of level index set
Definition: geometrygrid/grid.hh:173
void globalRefine(int refCount)
Definition: geometrygrid/grid.hh:383
Traits::LeafIndexSet LeafIndexSet
type of leaf index set
Definition: geometrygrid/grid.hh:163
Partition< All_Partition >::LevelIterator LevelIterator
type of level iterator
Definition: geometrygrid/grid.hh:673
GeometryGrid(std::shared_ptr< HostGrid > hostGrid, const Allocator &allocator=Allocator())
constructor
Definition: geometrygrid/grid.hh:261
bool adapt()
Definition: geometrygrid/grid.hh:404
Implementation & impl()
access to the underlying implementation
Definition: common/entity.hh:80
GridFamily::Traits Traits
type of the grid traits
Definition: geometrygrid/grid.hh:116
GeometryGrid(HostGrid &hostGrid, CoordFunction &coordFunction, const Allocator &allocator=Allocator())
constructor
Definition: geometrygrid/grid.hh:229
Grid abstract base classThis class is the base class for all grid implementations. Although no virtual functions are used we call it abstract since its methods do not contain an implementation but forward to the methods of the derived class via the Barton-Nackman trick.
Definition: common/grid.hh:375
Traits::LevelIntersectionIterator LevelIntersectionIterator
iterator over intersections with other entities on the same level
Definition: geometrygrid/grid.hh:137
LevelGridView levelGridView(int level) const
View for a grid level.
Definition: geometrygrid/grid.hh:514
Traits::LocalIdSet LocalIdSet
type of local id set
Definition: geometrygrid/grid.hh:202
Definition: geometrygrid/gridfamily.hh:50
GridFamily::Traits::LevelGridView LevelGridView
type of view for level grid
Definition: geometrygrid/grid.hh:147
Different resources needed by all grid implementations.
Traits::template Codim< codim >::Entity Entity
type of entity
Definition: geometrygrid/grid.hh:614
size_t numBoundarySegments() const
returns the number of boundary segments within the macro grid
Definition: geometrygrid/grid.hh:337
static void adapt(CoordFunctionInterface &)
Definition: coordfunction.hh:326
HostGrid & hostGrid()
obtain mutable reference to the host grid
Definition: geometrygrid/grid.hh:539
traits structure containing types for a codimension
Definition: geometrygrid/grid.hh:125
Traits::HierarchicIterator HierarchicIterator
iterator over the grid hierarchy
Definition: geometrygrid/grid.hh:133
Definition: identity.hh:14
Definition: geometrygrid/entity.hh:57
Partition< All_Partition >::LeafIterator LeafIterator
type of leaf iterator
Definition: geometrygrid/grid.hh:664
const HostGrid & hostGrid() const
obtain constant reference to the host grid
Definition: geometrygrid/grid.hh:533
int getMark(const typename Codim< 0 >::Entity &entity_) const
Definition: geometrygrid/grid.hh:394
Definition: common/geometry.hh:28
const LevelIndexSet & levelIndexSet(int level) const
Definition: geometrygrid/grid.hh:359
Definition: geometrygrid/gridfamily.hh:34
GridFamily::Traits::LeafGridView LeafGridView
type of view for leaf grid
Definition: geometrygrid/grid.hh:145
Definition: geometrygrid/grid.hh:28
Include standard header files.
Definition: agrid.hh:59
Traits::Communication Communication
communicator with all other processes having some part of the grid
Definition: geometrygrid/grid.hh:213
Traits::template Codim< codim >::template Partition< pitype >::LeafIterator LeafIterator
Definition: geometrygrid/grid.hh:651
Traits::LeafIntersectionIterator LeafIntersectionIterator
iterator over intersections with other entities on the leaf level
Definition: geometrygrid/grid.hh:135
grid wrapper replacing the geometriesGeometryGrid wraps another DUNE grid and replaces its geometry b...
Definition: declaration.hh:12
const GlobalIdSet & globalIdSet() const
Definition: geometrygrid/grid.hh:343
LeafGridView leafGridView() const
View for the leaf grid.
Definition: geometrygrid/grid.hh:521
Definition: geometrygrid/gridview.hh:29
provides access to host grid objects from GeometryGrid
Definition: identitygrid.hh:37
void * allocateStorage(std::size_t size) const
Definition: geometrygrid/grid.hh:577
Traits::GlobalIdSet GlobalIdSet
type of global id set
Definition: geometrygrid/grid.hh:185
Definition: geometrygrid/grid.hh:647
int maxLevel() const
obtain maximal grid level
Definition: geometrygrid/grid.hh:282
bool mark(int refCount, const typename Codim< 0 >::Entity &entity_)
Definition: geometrygrid/grid.hh:389
Definition: geometrygrid/indexsets.hh:27
Traits::template Codim< codim >::Geometry Geometry
type of world geometry
Definition: geometrygrid/grid.hh:629
bool preAdapt()
Definition: geometrygrid/grid.hh:399
Traits::template Codim< codim >::template Partition< pitype >::LevelIterator LevelIterator
Definition: geometrygrid/grid.hh:654
int size(GeometryType type) const
obtain number of leaf entities
Definition: geometrygrid/grid.hh:328
Traits::template Codim< EntitySeed::codimension >::Entity entity(const EntitySeed &seed) const
obtain Entity from EntitySeed
Definition: geometrygrid/grid.hh:502
Definition: geometrygrid/datahandle.hh:25
const LeafIndexSet & leafIndexSet() const
Definition: geometrygrid/grid.hh:375
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:132
Base class for exceptions in Dune grid modules.
Definition: exceptions.hh:18
int size(int level, GeometryType type) const
obtain number of entities on a level
Definition: geometrygrid/grid.hh:319
int size(int codim) const
obtain number of leaf entities
Definition: geometrygrid/grid.hh:306
Traits::ctype ctype
type of vector coordinates (e.g., double)
Definition: geometrygrid/grid.hh:210
Definition: geometrygrid/entity.hh:60
CoordFunction & coordFunction()
obtain mutable reference to the coordinate function.
Definition: geometrygrid/grid.hh:565
const Communication & comm() const
obtain Communication object
Definition: geometrygrid/grid.hh:427
void deallocateStorage(void *p, std::size_t size) const
Definition: geometrygrid/grid.hh:582
actual implementation of the entity
Definition: geometrygrid/entity.hh:34
static const HostGrid::template Codim< codim >::Entity & getHostEntity(const typename Codim< codim >::Entity &entity)
Definition: geometrygrid/grid.hh:572
Definition: geometrygrid/backuprestore.hh:26