1 #ifndef DUNE_FEM_GRIDPART_IDGRIDPART_HH 2 #define DUNE_FEM_GRIDPART_IDGRIDPART_HH 4 #if not DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS 5 #error "Experimental grid extensions required for IdGridPart. Reconfigure with --enable-experimental-grid-extensions to enable IdGridPart." 8 #include <dune/grid/common/gridview.hh> 32 template<
class HostGr
idPart >
39 template<
class HostGr
idPart >
50 typedef typename HostGridPart::ctype
ctype;
52 static const int dimension = HostGridPart::dimension;
71 typedef Dune::Entity< codim, dimension, const GridFamily, IdEntity >
Entity;
73 typedef Dune::EntityPointer< const GridFamily, DefaultEntityPointer< Entity > >
EntityPointer;
82 typedef Dune::IntersectionIterator< const GridFamily, IntersectionIteratorImplType, IntersectionImplType >
LeafIntersectionIterator;
83 typedef Dune::IntersectionIterator< const GridFamily, IntersectionIteratorImplType, IntersectionImplType >
LevelIntersectionIterator;
85 typedef Dune::EntityIterator< 0, const GridFamily, DeadIterator< typename Codim< 0 >::Entity > >
HierarchicIterator;
90 :
public Traits::template
Codim< codim >
99 typedef typename HostGridPart::GridType
GridType;
110 template<
int codim >
121 template< PartitionIteratorType pitype >
124 typedef EntityIterator< codim, const GridFamily, IdIterator< codim, pitype, const GridFamily > >
IteratorType;
130 static const bool conforming = HostGridPart::Traits::conforming;
138 template<
class HostGr
idPart >
156 template<
int codim >
158 :
public BaseType::template
Codim< codim >
162 : hostGridPart_( grid ),
163 indexSet_( hostGridPart_.indexSet() )
167 : hostGridPart_( hostGridPart ),
168 indexSet_( hostGridPart_.indexSet() )
173 return hostGridPart().grid();
178 return hostGridPart_.grid();
186 template<
int codim >
190 return begin< codim, InteriorBorder_Partition >();
193 template<
int codim, PartitionIteratorType pitype >
200 template<
int codim >
204 return end< codim, InteriorBorder_Partition >();
207 template<
int codim, PartitionIteratorType pitype >
216 return hostGridPart().level();
229 int boundaryId (
const IntersectionType &intersection )
const 231 return hostGridPart().boundaryId( intersection.impl().hostIntersection() );
234 const CollectiveCommunicationType &
comm ()
const {
return hostGridPart().comm(); }
236 template<
class DataHandle,
class Data >
238 InterfaceType iftype, CommunicationDirection dir )
const 240 typedef CommDataHandleIF< DataHandle, Data > HostHandleType;
242 hostGridPart().communicate( handleWrapper, iftype, dir );
245 template <
class EntitySeed >
250 return EntityImp( data(), hostGridPart().entity( seed ) );
254 template<
class Entity >
255 MakeableInterfaceObject< typename Codim< Entity::codimension >::EntityType >
260 typedef typename EntityType::Implementation Implementation;
261 typedef MakeableInterfaceObject< EntityType > EntityObj;
263 return EntityObj( Implementation( entity ) );
266 const HostGridPartType &
hostGridPart ()
const {
return hostGridPart_; }
281 template<
int codim,
int dim,
class Gr
idFamily >
284 typedef Dune::Entity< codim, dim, GridFamily, IdEntity >
EntityType;
288 static const GridEntityType &
gridEntity (
const EntityType &entity )
299 template<
class HostGr
idPart,
int codim, PartitionIteratorType partition >
313 : hostEntitySearch_( gridPart.hostGridPart() ),
314 data_( gridPart.data() )
317 EntityType operator() (
const GlobalCoordinateType &x )
const 319 typedef typename EntityType::Implementation EntityImpl;
320 return EntityImpl( data_, hostEntitySearch_( x ) );
332 #endif // #if not DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS 333 #endif // #ifndef DUNE_FEM_GRIDPART_IDGRIDPART_HH ExtraData data() const
Definition: idgridpart.hh:269
GridEntityAccess< typename EntityType::Implementation::HostEntityType > HostAccessType
Definition: idgridpart.hh:285
Definition: gridpart/idgridpart/capabilities.hh:23
Codim< codim >::IteratorType begin() const
Definition: idgridpart.hh:188
Codim< EntitySeed::codimension >::EntityType entity(const EntitySeed &seed) const
Definition: idgridpart.hh:247
Dune::Geometry< dimension-codim, dimension, const GridFamily, IdLocalGeometry > LocalGeometry
Definition: idgridpart.hh:69
IndexSetType indexSet_
Definition: idgridpart.hh:273
Codim< codim >::template Partition< pitype >::IteratorType begin() const
Definition: idgridpart.hh:195
HostGridPartType hostGridPart_
Definition: idgridpart.hh:272
const IndexSetType & indexSet() const
Definition: idgridpart.hh:181
Definition: idgridpart/intersection.hh:20
Traits::CollectiveCommunicationType CollectiveCommunicationType
Collective communication.
Definition: gridpart.hh:96
Definition: gridpart.hh:394
HostGridPart::GridType GridType
Definition: idgridpart.hh:99
IdGridPart< HostGridPart > GridPartType
Definition: idgridpart.hh:42
IntersectionIterator< const GridFamily, IntersectionIteratorImplType, IntersectionImplType > IntersectionIteratorType
Definition: idgridpart.hh:108
EntityType::Geometry::GlobalCoordinate GlobalCoordinateType
Definition: idgridpart.hh:310
Dune::Intersection< const GridFamily, IntersectionImplType > LeafIntersection
Definition: idgridpart.hh:79
void communicate(CommDataHandleIF< DataHandle, Data > &handle, InterfaceType iftype, CommunicationDirection dir) const
Definition: idgridpart.hh:237
MakeableInterfaceObject< typename Codim< Entity::codimension >::EntityType > convert(const Entity &entity) const
Definition: idgridpart.hh:256
static const int dimension
Definition: idgridpart.hh:52
Definition: idgridpart/datahandle.hh:21
Definition: idgridpart.hh:122
Traits::LevelIntersectionIterator LevelIntersectionIterator
Definition: idgridpart.hh:94
IdGridPart< HostGridPart > GridPartType
Definition: idgridpart.hh:305
BaseType::IntersectionType IntersectionType
Definition: idgridpart.hh:153
GridType & grid()
Definition: idgridpart.hh:176
DeadIntersectionIterator< const GridFamily > IntersectionIteratorImplType
Definition: idgridpart.hh:77
BaseType::IndexSetType IndexSetType
Definition: idgridpart.hh:151
MetaTwistUtility< typename HostGridPart::TwistUtilityType > TwistUtilityType
type of twist utility
Definition: idgridpart.hh:45
IdIndexSet< const GridFamily > IndexSetType
Definition: idgridpart.hh:101
Definition: idgridpart.hh:89
BaseType::CollectiveCommunicationType CollectiveCommunicationType
Definition: idgridpart.hh:154
Definition: deaditerator.hh:157
Dune::Intersection< const GridFamily, IntersectionImplType > LevelIntersection
Definition: idgridpart.hh:80
GridPartType::ExtraData ExtraData
Definition: idgridpart.hh:306
Definition: idgridpart.hh:300
static const GridEntityType & gridEntity(const EntityType &entity)
Definition: idgridpart.hh:288
IdGridPart(const HostGridPartType &hostGridPart)
Definition: idgridpart.hh:166
Definition: entitysearch.hh:131
HostGridPart HostGridPartType
Definition: idgridpart.hh:57
Traits::IntersectionIteratorType IntersectionIteratorType
type of IntersectionIterator
Definition: gridpart.hh:108
GridFamily::Traits::template Codim< codim >::Entity EntityType
Definition: idgridpart.hh:117
const CollectiveCommunicationType & comm() const
Definition: idgridpart.hh:234
GridFamily::Traits::template Codim< codim >::LocalGeometry LocalGeometryType
Definition: idgridpart.hh:114
Dune::IntersectionIterator< const GridFamily, IntersectionIteratorImplType, IntersectionImplType > LeafIntersectionIterator
Definition: idgridpart.hh:82
Definition: idgridpart/indexset.hh:24
Codim< codim >::IteratorType end() const
Definition: idgridpart.hh:202
HostAccessType::GridEntityType GridEntityType
Definition: idgridpart.hh:286
Dune::EntityIterator< 0, const GridFamily, DeadIterator< typename Codim< 0 >::Entity > > HierarchicIterator
Definition: idgridpart.hh:85
ExtraData data_
Definition: idgridpart.hh:325
HostGridPart::ctype ctype
Definition: idgridpart.hh:50
EmptyData ExtraData
Definition: idgridpart.hh:63
EntitySearch(const GridPartType &gridPart)
Definition: idgridpart.hh:312
Definition: idgridpart/iterator.hh:20
Dune::IntersectionIterator< const GridFamily, IntersectionIteratorImplType, IntersectionImplType > LevelIntersectionIterator
Definition: idgridpart.hh:83
const EntitySearch< HostGridPart > hostEntitySearch_
Definition: idgridpart.hh:324
Definition: coordinate.hh:4
IntersectionIteratorType::Intersection IntersectionType
type of Intersection
Definition: gridpart.hh:111
Dune::Entity< codim, dim, GridFamily, IdEntity > EntityType
Definition: idgridpart.hh:284
Dune::Entity< codim, dimension, const GridFamily, IdEntity > Entity
Definition: idgridpart.hh:71
const GridType & grid() const
Definition: idgridpart.hh:171
Definition: idgridpart/geometry.hh:17
Codim< codim >::template Partition< pitype >::IteratorType end() const
Definition: idgridpart.hh:209
Traits::LeafIntersectionIterator LeafIntersectionIterator
Definition: idgridpart.hh:93
HostGridPartType::GridType::template Codim< codim >::EntitySeed EntitySeed
Definition: idgridpart.hh:72
GridFamily::Traits::template Codim< codim >::EntityPointer EntityPointerType
Definition: idgridpart.hh:116
Definition: idgridpart.hh:111
HostGridPart HostGridPartType
Definition: idgridpart.hh:148
Definition: deaditerator.hh:48
GridFamily::Traits::template Codim< codim >::Geometry GeometryType
Definition: idgridpart.hh:113
IntersectionIteratorType iend(const typename Codim< 0 >::EntityType &entity) const
Definition: idgridpart.hh:224
Definition: idgridpart/geometry.hh:18
const GridEntityAccess< Entity >::GridEntityType & gridEntity(const Entity &entity)
Definition: gridpart.hh:410
static const bool conforming
Definition: idgridpart.hh:130
IdGridPart(GridType &grid)
Definition: idgridpart.hh:161
MetaTwistUtility forwards the twist calls to the TwistUtility of the underlying HostTwistUtility.
Definition: metatwistutility.hh:21
int level() const
Definition: idgridpart.hh:214
Definition: idgridpart/intersectioniterator.hh:21
Traits::GridType GridType
type of Grid implementation
Definition: gridpart.hh:90
const HostGridPartType & hostGridPart() const
Definition: idgridpart.hh:266
BaseType::IntersectionIteratorType IntersectionIteratorType
Definition: idgridpart.hh:152
IdIntersection< const GridFamily > IntersectionImplType
Definition: idgridpart.hh:107
IntersectionIteratorType ibegin(const typename Codim< 0 >::EntityType &entity) const
Definition: idgridpart.hh:219
Definition: idgridpart.hh:40
Interface for the GridPart classes A GridPart class allows to access only a specific subset of a grid...
Definition: gridpart.hh:75
Definition: idgridpart.hh:59
GridFamily::Traits::template Codim< codim >::EntitySeed EntitySeedType
Definition: idgridpart.hh:119
Traits::HierarchicIterator HierarchicIterator
Definition: idgridpart.hh:96
GridPartType::template Codim< codim >::EntityType EntityType
Definition: idgridpart.hh:308
static const InterfaceType indexSetInterfaceType
Definition: idgridpart.hh:104
DeadIntersection< const GridFamily > IntersectionImplType
Definition: idgridpart.hh:76
static const PartitionIteratorType indexSetPartitionType
Definition: idgridpart.hh:103
IdIntersectionIterator< const GridFamily > IntersectionIteratorImplType
Definition: idgridpart.hh:106
Definition: idgridpart.hh:157
Definition: idgridpart.hh:55
HostGridPart::CollectiveCommunicationType CollectiveCommunicationType
Definition: idgridpart.hh:128
int boundaryId(const IntersectionType &intersection) const
Definition: idgridpart.hh:229
Dune::Geometry< dimension-codim, dimensionworld, const GridFamily, IdGeometry > Geometry
Definition: idgridpart.hh:68
Definition: idgridpart.hh:48
EntityIterator< codim, const GridFamily, IdIterator< codim, pitype, const GridFamily > > IteratorType
Definition: idgridpart.hh:124
GridFamily::Traits::ExtraData ExtraData
Definition: idgridpart.hh:268
Definition: idgridpart.hh:66
static const int dimensionworld
Definition: idgridpart.hh:53
BaseType::GridType GridType
Definition: idgridpart.hh:150
Dune::EntityPointer< const GridFamily, DefaultEntityPointer< Entity > > EntityPointer
Definition: idgridpart.hh:73