1 #ifndef DUNE_FEM_GRIDPART_GEOGRIDPART_HH 2 #define DUNE_FEM_GRIDPART_GEOGRIDPART_HH 4 #if not DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS 5 #error "Experimental grid extensions required for GeoGridPart. Reconfigure with --enable-experimental-grid-extensions to enable GeoGridPart." 8 #include <dune/grid/common/gridview.hh> 32 template<
class CoordFunction >
35 template<
class CoordFunction >
44 template<
class CoordFunction >
47 typedef typename CoordFunction::RangeFieldType
ctype;
49 static const int dimension = CoordFunction::GridPartType::dimension;
50 static const int dimensionworld = CoordFunction::FunctionSpaceType::dimRange;
65 typedef Dune::Entity< codim, dimension, const GridPartFamily, GeoEntity >
Entity;
67 typedef Dune::EntityPointer< const GridPartFamily, DefaultEntityPointer< Entity > >
EntityPointer;
73 typedef Dune::Intersection< const GridPartFamily, IntersectionImplType >
LeafIntersection;
76 typedef Dune::IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType >
LeafIntersectionIterator;
77 typedef Dune::IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType >
LevelIntersectionIterator;
79 typedef Dune::EntityIterator< 0, const GridPartFamily, DeadIterator< typename Codim< 0 >::Entity > >
HierarchicIterator;
84 :
public Traits::template
Codim< codim >
95 template<
class CoordFunction >
104 typedef typename HostGridPartType::GridType
GridType;
111 static const PartitionIteratorType indexSetPartitionType = HostGridPartType::indexSetPartitionType;
112 static const InterfaceType indexSetInterfaceType = HostGridPartType::indexSetInterfaceType;
119 template<
int codim >
130 template< PartitionIteratorType pitype >
133 typedef EntityIterator< codim, const GridPartFamily, GeoIterator< codim, pitype, const GridPartFamily > >
IteratorType;
139 static const bool conforming = HostGridPartType::Traits::conforming;
147 template<
class CoordFunction >
167 template<
int codim >
169 :
public BaseType::template
Codim< codim >
173 : coordFunction_( coordFunction ),
174 indexSet_( hostGridPart().indexSet() )
179 return hostGridPart().grid();
184 return const_cast< GridType &
>( hostGridPart().grid() );
192 template<
int codim >
196 return begin< codim, InteriorBorder_Partition >();
199 template<
int codim, PartitionIteratorType pitype >
206 template<
int codim >
210 return end< codim, InteriorBorder_Partition >();
213 template<
int codim, PartitionIteratorType pitype >
222 return hostGridPart().level();
235 int boundaryId (
const IntersectionType &intersection )
const 237 return hostGridPart().boundaryId( intersection.impl().hostIntersection() );
240 const CollectiveCommunicationType &
comm ()
const {
return hostGridPart().comm(); }
242 template<
class DataHandle,
class Data >
244 InterfaceType iftype, CommunicationDirection dir )
const 246 typedef CommDataHandleIF< DataHandle, Data > HostHandleType;
248 hostGridPart().communicate( handleWrapper, iftype, dir );
251 template<
class LocalFunction >
259 template <
class EntitySeed >
268 template<
class Entity >
269 MakeableInterfaceObject< typename Codim< Entity::codimension >::EntityType >
274 typedef typename EntityType::Implementation Implementation;
275 typedef MakeableInterfaceObject< EntityType > EntityObj;
278 return EntityObj( Implementation( coordFunction_, entity ) );
285 const HostGridPartType &hostGridPart ()
const 287 return coordFunction_.gridPart();
290 const CoordFunctionType &coordFunction_;
291 IndexSetType indexSet_;
299 template<
int codim,
int dim,
class Gr
idFamily >
302 typedef Dune::Entity< codim, dim, GridFamily, GeoEntity >
EntityType;
306 static const GridEntityType &
gridEntity (
const EntityType &entity )
317 template<
class CoordFunction,
int codim, PartitionIteratorType partition >
328 : BaseType( gridPart )
336 #endif // #if not DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS 337 #endif // #ifndef DUNE_FEM_GRIDPART_GEOGRIDPART_HH CoordFunction CoordFunctionType
Definition: geogridpart.hh:56
Traits::CollectiveCommunicationType CollectiveCommunicationType
Collective communication.
Definition: gridpart.hh:96
GeoGridPartFamily< CoordFunction > GridPartFamily
Definition: geogridpart.hh:52
Definition: gridpart.hh:394
EntitySearch(const GridPartType &gridPart)
Definition: geogridpart.hh:327
Definition: geogridpart.hh:318
static const GridEntityType & gridEntity(const EntityType &entity)
Definition: geogridpart.hh:306
GeoGridPartFamily< CoordFunction > GridFamily
Definition: geogridpart.hh:100
HostGridPartType::template Codim< codim >::LocalGeometryType LocalGeometry
Definition: geogridpart.hh:63
Dune::Entity< codim, dim, GridFamily, GeoEntity > EntityType
Definition: geogridpart.hh:302
Definition: geogridpart/intersection.hh:20
const CollectiveCommunicationType & comm() const
Definition: geogridpart.hh:240
MetaTwistUtility< typename HostGridPartType::TwistUtilityType > TwistUtilityType
type of twist utility
Definition: geogridpart.hh:107
BaseType::IntersectionType IntersectionType
Definition: geogridpart.hh:164
static const int dimensionworld
Definition: geogridpart.hh:50
GridPartFamily::Traits::template Codim< codim >::EntitySeed EntitySeedType
Definition: geogridpart.hh:128
Codim< codim >::template Partition< pitype >::IteratorType end() const
Definition: geogridpart.hh:215
GridPartFamily::Traits::template Codim< codim >::EntityPointer EntityPointerType
Definition: geogridpart.hh:125
void communicate(CommDataHandleIF< DataHandle, Data > &handle, InterfaceType iftype, CommunicationDirection dir) const
Definition: geogridpart.hh:243
BaseType::GridPartType GridPartType
Definition: geogridpart.hh:325
HostGridPartType::GridType::template Codim< codim >::EntitySeed EntitySeed
Definition: geogridpart.hh:66
Definition: geogridpart/iterator.hh:22
GeoGridPart< CoordFunction > GridPartType
Definition: geogridpart.hh:98
Definition: deaditerator.hh:157
GridPartFamily::Traits::template Codim< codim >::Entity EntityType
Definition: geogridpart.hh:126
Definition: geogridpart.hh:168
Definition: geogridpart.hh:54
Definition: geogridpart.hh:83
Dune::Geometry< dimension-codim, dimensionworld, const GridPartFamily, GeoGeometry > Geometry
Definition: geogridpart.hh:62
Definition: entitysearch.hh:131
GridType & grid()
Definition: geogridpart.hh:182
BaseType::IndexSetType IndexSetType
Definition: geogridpart.hh:162
MakeableInterfaceObject< typename Codim< Entity::codimension >::EntityType > convert(const Entity &entity) const
Definition: geogridpart.hh:270
IntersectionIteratorType ibegin(const typename Codim< 0 >::EntityType &entity) const
Definition: geogridpart.hh:225
Definition: geogridpart.hh:131
Dune::EntityIterator< 0, const GridPartFamily, DeadIterator< typename Codim< 0 >::Entity > > HierarchicIterator
Definition: geogridpart.hh:79
interface for local functions
Definition: localfunction.hh:41
Traits::IntersectionIteratorType IntersectionIteratorType
type of IntersectionIterator
Definition: gridpart.hh:108
Definition: geogridpart.hh:96
CoordFunctionType::GridPartType HostGridPartType
Definition: geogridpart.hh:57
HostGridPartType::GridType GridType
Definition: geogridpart.hh:104
Definition: idgridpart/indexset.hh:24
GridPartFamily::Traits::template Codim< codim >::LocalGeometry LocalGeometryType
Definition: geogridpart.hh:123
IntersectionIteratorType iend(const typename Codim< 0 >::EntityType &entity) const
Definition: geogridpart.hh:230
Dune::IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType > LeafIntersectionIterator
Definition: geogridpart.hh:76
GridEntityAccess< typename EntityType::Implementation::HostEntityType > HostAccessType
Definition: geogridpart.hh:303
Definition: geogridpart.hh:120
Definition: coordinate.hh:4
IntersectionIteratorType::Intersection IntersectionType
type of Intersection
Definition: gridpart.hh:111
int boundaryId(const IntersectionType &intersection) const
Definition: geogridpart.hh:235
Definition: geogridpart.hh:60
int level() const
Definition: geogridpart.hh:220
BaseType::GridType GridType
Definition: geogridpart.hh:161
HostGridPartType::CollectiveCommunicationType CollectiveCommunicationType
Definition: geogridpart.hh:137
GridPartFamily::Traits::template Codim< codim >::Geometry GeometryType
Definition: geogridpart.hh:122
const CoordFunctionType & coordFunction() const
Definition: geogridpart.hh:282
Codim< EntitySeed::codimension >::EntityType entity(const EntitySeed &seed) const
Definition: geogridpart.hh:261
Definition: geogridpart/intersectioniterator.hh:21
Definition: deaditerator.hh:48
CoordFunction::RangeFieldType ctype
Definition: geogridpart.hh:47
Definition: geogridpart/datahandle.hh:20
Codim< codim >::template Partition< pitype >::IteratorType begin() const
Definition: geogridpart.hh:201
Dune::Intersection< const GridPartFamily, IntersectionImplType > LevelIntersection
Definition: geogridpart.hh:74
GridPartFamily::Traits::HostGridPartType HostGridPartType
Definition: geogridpart.hh:102
const GridEntityAccess< Entity >::GridEntityType & gridEntity(const Entity &entity)
Definition: gridpart.hh:410
GeoIntersection< const GridPartFamily > IntersectionImplType
Definition: geogridpart.hh:114
MetaTwistUtility forwards the twist calls to the TwistUtility of the underlying HostTwistUtility.
Definition: metatwistutility.hh:21
IdIndexSet< const GridPartFamily > IndexSetType
Definition: geogridpart.hh:109
Definition: entitysearch.hh:25
GeoGridPartFamily< CoordFunction > GridPartFamily
Definition: geogridpart.hh:99
Traits::GridType GridType
type of Grid implementation
Definition: gridpart.hh:90
Definition: geogridpart.hh:36
Codim< codim >::IteratorType end() const
Definition: geogridpart.hh:208
HostAccessType::GridEntityType GridEntityType
Definition: geogridpart.hh:304
Codim< codim >::IteratorType begin() const
Definition: geogridpart.hh:194
GeoGridPart(const CoordFunctionType &coordFunction)
Definition: geogridpart.hh:172
Interface for the GridPart classes A GridPart class allows to access only a specific subset of a grid...
Definition: gridpart.hh:75
GeoIntersectionIterator< const GridPartFamily > IntersectionIteratorImplType
Definition: geogridpart.hh:115
const GridType & grid() const
Definition: geogridpart.hh:177
DeadIntersectionIterator< const GridPartFamily > IntersectionIteratorImplType
Definition: geogridpart.hh:71
const IndexSetType & indexSet() const
Definition: geogridpart.hh:187
static const int dimension
Definition: geogridpart.hh:49
IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType > IntersectionIteratorType
Definition: geogridpart.hh:117
Traits::LeafIntersectionIterator LeafIntersectionIterator
Definition: geogridpart.hh:87
Traits::LevelIntersectionIterator LevelIntersectionIterator
Definition: geogridpart.hh:88
CoordFunction CoordFunctionType
Definition: geogridpart.hh:159
DeadIntersection< const GridPartFamily > IntersectionImplType
Definition: geogridpart.hh:70
EntityIterator< codim, const GridPartFamily, GeoIterator< codim, pitype, const GridPartFamily > > IteratorType
Definition: geogridpart.hh:133
Traits::HierarchicIterator HierarchicIterator
Definition: geogridpart.hh:90
Dune::Intersection< const GridPartFamily, IntersectionImplType > LeafIntersection
Definition: geogridpart.hh:73
BaseType::IntersectionIteratorType IntersectionIteratorType
Definition: geogridpart.hh:163
Dune::IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType > LevelIntersectionIterator
Definition: geogridpart.hh:77
BaseType::CollectiveCommunicationType CollectiveCommunicationType
Definition: geogridpart.hh:165
Dune::EntityPointer< const GridPartFamily, DefaultEntityPointer< Entity > > EntityPointer
Definition: geogridpart.hh:67
Codim< 0 >::EntityType exchangeGeometry(const typename Codim< 0 >::EntityType &entity, const LocalFunction &localCoordFunction) const
Definition: geogridpart.hh:253
Definition: gridpart/geogridpart/capabilities.hh:17
Dune::Entity< codim, dimension, const GridPartFamily, GeoEntity > Entity
Definition: geogridpart.hh:65
Definition: geogridpart/geometry.hh:56