1#ifndef DUNE_FEM_GRIDPART_GEOMETRYGRIDPART_HH
2#define DUNE_FEM_GRIDPART_GEOMETRYGRIDPART_HH
6#include <dune/common/version.hh>
36 template<
class Gr
idFunctionType >
37 class GeometryGridPart;
44 template<
class Gr
idFunction >
52 operator const GridFunctionType & ()
const { assert( gridFunction_ );
return *gridFunction_; }
63 template<
class Gr
idFunction >
67 typedef typename GridFunction::RangeFieldType
ctype;
69 static const int dimension = GridFunction::GridPartType::dimension;
87 template<
int mydim,
int cdim,
class Gr
id >
88 using GeometryImpl = std::conditional_t< mydim == dimension, ElementGeometryImpl, CompositeGeometry< ElementGeometryImpl, LocalGeometry > >;
92 typedef Dune::Entity< codim, dimension, const GridPartFamily, GeometryGridPartEntity >
Entity;
99 typedef Dune::Intersection< const GridPartFamily, IntersectionImplType >
LeafIntersection;
102 typedef Dune::IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType >
LeafIntersectionIterator;
103 typedef Dune::IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType >
LevelIntersectionIterator;
105 typedef Dune::EntityIterator< 0, const GridPartFamily, DeadIterator< typename Codim< 0 >::Entity > >
HierarchicIterator;
108 template<
int codim >
110 :
public Traits::template
Codim< codim >
124 template<
class Gr
idFunction >
135 static const int dimension = GridFunction::GridPartType::dimension;
143 typedef typename HostGridPartType::GridType
GridType;
152 template<
int codim >
161 template< PartitionIteratorType pitype >
164 typedef EntityIterator< codim, const GridFamily, IdIterator< codim, pitype, const GridFamily > >
IteratorType;
169 static const bool conforming = HostGridPartType::Traits::conforming;
177 template<
class Gr
idFunction >
180 ,
public AddGridView< GeometryGridPartTraits< GridFunction > >
203 template<
int codim >
205 :
public BaseType::template
Codim< codim >
210 gridFunction_( gridFunction ),
216 gridFunction_( gridFunction ),
238 template<
int codim >
239 typename Codim< codim >::IteratorType
242 return begin< codim, InteriorBorder_Partition >();
245 template<
int codim, PartitionIteratorType pitype >
246 typename Codim< codim >::template Partition< pitype >::IteratorType
252 template<
int codim >
253 typename Codim< codim >::IteratorType
256 return end< codim, InteriorBorder_Partition >();
259 template<
int codim, PartitionIteratorType pitype >
260 typename Codim< codim >::template Partition< pitype >::IteratorType
283 return hostGridPart().boundaryId( intersection.impl().hostIntersection() );
293 template<
class DataHandle,
class Data >
295 InterfaceType iftype, CommunicationDirection dir )
const
297 typedef CommDataHandleIF< DataHandle, Data > HostHandleType;
299 hostGridPart().communicate( handleWrapper, iftype, dir );
303 template<
class Entity >
304 MakeableInterfaceObject< typename Codim< Entity::codimension >::EntityType >
309 typedef typename EntityType::Implementation Implementation;
310 typedef MakeableInterfaceObject< EntityType > EntityObj;
312 return EntityObj( Implementation( gridFunction_,
entity ) );
314 template <
class EntitySeed >
315 typename Codim< EntitySeed::codimension >::EntityType
323 return gridFunction_.gridPart();
336 template<
int codim,
int dim,
class Gr
idFamily >
339 typedef Dune::Entity< codim, dim, GridFamily, GeometryGridPartEntity >
EntityType;
345 return HostAccessType::gridEntity( entity.impl().hostEntity() );
354 template<
class Gr
idFunction,
int codim, PartitionIteratorType partition >
Definition: bindguard.hh:11
Definition: deaditerator.hh:49
Definition: deaditerator.hh:158
Definition: entitysearch.hh:25
Definition: entitysearch.hh:131
Interface for the GridPart classes A GridPart class allows to access only a specific subset of a grid...
Definition: gridpart.hh:77
PoliciesType::GridViewType GridViewType
Definition: gridpart.hh:113
Traits::CollectiveCommunicationType CollectiveCommunicationType
Collective communication.
Definition: gridpart.hh:96
Traits::GridType GridType
type of Grid implementation
Definition: gridpart.hh:90
IntersectionIteratorType::Intersection IntersectionType
type of Intersection
Definition: gridpart.hh:111
Traits::IntersectionIteratorType IntersectionIteratorType
type of IntersectionIterator
Definition: gridpart.hh:108
Traits::IndexSetType IndexSetType
Index set implementation.
Definition: gridpart.hh:93
Definition: gridpart.hh:396
Definition: gridpart.hh:419
const GridViewType & gridView() const
Definition: gridpart.hh:441
Definition: gridpart2gridview.hh:69
MetaTwistUtility forwards the twist calls to the TwistUtility of the underlying HostTwistUtility.
Definition: metatwistutility.hh:22
Definition: sharedgeometry.hh:20
Definition: geometrygridpart.hh:181
void communicate(CommDataHandleIF< DataHandle, Data > &handle, InterfaceType iftype, CommunicationDirection dir) const
Definition: geometrygridpart.hh:294
GeometryGridPart(const GridFunctionType &gridFunction)
Definition: geometrygridpart.hh:208
GridFunctionType::GridPartType HostGridPartType
Definition: geometrygridpart.hh:192
~GeometryGridPart()
Definition: geometrygridpart.hh:220
static const int dimensionworld
Definition: geometrygridpart.hh:201
IntersectionIteratorType iend(const typename Codim< 0 >::EntityType &entity) const
Definition: geometrygridpart.hh:276
Codim< codim >::IteratorType begin() const
Definition: geometrygridpart.hh:240
BaseType::IntersectionIteratorType IntersectionIteratorType
Definition: geometrygridpart.hh:195
GridType & grid()
Definition: geometrygridpart.hh:228
int boundaryId(const IntersectionType &intersection) const
Definition: geometrygridpart.hh:281
const GridType & grid() const
Definition: geometrygridpart.hh:223
GeometryGridPart(const GridFunctionType &gridFunction, const GridViewType *gridView)
Definition: geometrygridpart.hh:214
BaseType::IndexSetType IndexSetType
Definition: geometrygridpart.hh:194
Codim< codim >::template Partition< pitype >::IteratorType begin() const
Definition: geometrygridpart.hh:247
const CollectiveCommunicationType & comm() const
Definition: geometrygridpart.hh:291
Codim< codim >::IteratorType end() const
Definition: geometrygridpart.hh:254
BaseType::IntersectionType IntersectionType
Definition: geometrygridpart.hh:196
IntersectionIteratorType ibegin(const typename Codim< 0 >::EntityType &entity) const
Definition: geometrygridpart.hh:271
BaseType::GridViewType GridViewType
Definition: geometrygridpart.hh:198
Codim< codim >::template Partition< pitype >::IteratorType end() const
Definition: geometrygridpart.hh:261
BaseType::CollectiveCommunicationType CollectiveCommunicationType
Definition: geometrygridpart.hh:197
GridFunction GridFunctionType
Definition: geometrygridpart.hh:183
int sequence() const
Definition: geometrygridpart.hh:286
AddGridView< GeometryGridPartTraits< GridFunction > > AddGridViewType
Definition: geometrygridpart.hh:184
const IndexSetType & indexSet() const
Definition: geometrygridpart.hh:233
BaseType::GridType GridType
Definition: geometrygridpart.hh:193
const HostGridPartType & hostGridPart() const
Definition: geometrygridpart.hh:321
int level() const
Definition: geometrygridpart.hh:266
MakeableInterfaceObject< typename Codim< Entity::codimension >::EntityType > convert(const Entity &entity) const
Definition: geometrygridpart.hh:305
Codim< EntitySeed::codimension >::EntityType entity(const EntitySeed &seed) const
Definition: geometrygridpart.hh:316
Definition: geometrygridpart.hh:46
GeometryGridPartData() noexcept=default
GridFunction GridFunctionType
Definition: geometrygridpart.hh:47
Definition: geometrygridpart.hh:65
Traits::LeafIntersectionIterator LeafIntersectionIterator
Definition: geometrygridpart.hh:113
Traits::HierarchicIterator HierarchicIterator
Definition: geometrygridpart.hh:116
static const int dimensionworld
Definition: geometrygridpart.hh:70
GridFunction GridFunctionType
Definition: geometrygridpart.hh:66
GeometryGridPartFamily< GridFunction > GridPartFamily
Definition: geometrygridpart.hh:72
Traits::LevelIntersectionIterator LevelIntersectionIterator
Definition: geometrygridpart.hh:114
GridFunction::RangeFieldType ctype
Definition: geometrygridpart.hh:67
static const int dimension
Definition: geometrygridpart.hh:69
Definition: geometrygridpart.hh:75
SharedGeometry< LocalFunctionGeometry< ConstLocalFunction< GridFunction > > > ElementGeometryImpl
Definition: geometrygridpart.hh:80
Dune::Intersection< const GridPartFamily, IntersectionImplType > LeafIntersection
Definition: geometrygridpart.hh:99
Dune::Intersection< const GridPartFamily, IntersectionImplType > LevelIntersection
Definition: geometrygridpart.hh:100
Dune::IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType > LeafIntersectionIterator
Definition: geometrygridpart.hh:102
DeadIntersectionIterator< const GridPartFamily > IntersectionIteratorImplType
Definition: geometrygridpart.hh:97
Dune::IntersectionIterator< const GridPartFamily, IntersectionIteratorImplType, IntersectionImplType > LevelIntersectionIterator
Definition: geometrygridpart.hh:103
DeadIntersection< const GridPartFamily > IntersectionImplType
Definition: geometrygridpart.hh:96
GridFunctionType::GridPartType HostGridPartType
Definition: geometrygridpart.hh:78
GridFunction GridFunctionType
Definition: geometrygridpart.hh:77
GeometryGridPartData< GridFunction > ExtraData
Definition: geometrygridpart.hh:76
Dune::EntityIterator< 0, const GridPartFamily, DeadIterator< typename Codim< 0 >::Entity > > HierarchicIterator
Definition: geometrygridpart.hh:105
Definition: geometrygridpart.hh:84
std::conditional_t< mydim==dimension, ElementGeometryImpl, CompositeGeometry< ElementGeometryImpl, LocalGeometry > > GeometryImpl
Definition: geometrygridpart.hh:88
Dune::Geometry< dimension - codim, dimensionworld, const GridPartFamily, GeometryImpl > Geometry
Definition: geometrygridpart.hh:90
Dune::Entity< codim, dimension, const GridPartFamily, GeometryGridPartEntity > Entity
Definition: geometrygridpart.hh:92
HostGridPartType::template Codim< codim >::LocalGeometryType LocalGeometry
Definition: geometrygridpart.hh:85
HostGridPartType::GridType::template Codim< codim >::EntitySeed EntitySeed
Definition: geometrygridpart.hh:93
Definition: geometrygridpart.hh:111
Definition: geometrygridpart.hh:126
static const bool conforming
Definition: geometrygridpart.hh:169
GeometryGridPartFamily< GridFunction > GridPartFamily
Definition: geometrygridpart.hh:130
IntersectionIterator< const GridFamily, IntersectionIteratorImplType, IntersectionImplType > IntersectionIteratorType
Definition: geometrygridpart.hh:150
HostGridPartType::GridType GridType
Definition: geometrygridpart.hh:143
GeometryGridPartIntersectionIterator< const GridFamily > IntersectionIteratorImplType
Definition: geometrygridpart.hh:148
IdIndexSet< const GridPartFamily > IndexSetType
Definition: geometrygridpart.hh:141
GeometryGridPart< GridFunction > GridPartType
Definition: geometrygridpart.hh:129
GeometryGridPartIntersection< const GridFamily > IntersectionImplType
Definition: geometrygridpart.hh:149
GridFunction::GridPartType HostGridPartType
Definition: geometrygridpart.hh:128
GridFunction GridFunctionType
Definition: geometrygridpart.hh:127
static const PartitionIteratorType indexSetPartitionType
Definition: geometrygridpart.hh:145
HostGridPartType::CollectiveCommunicationType CollectiveCommunicationType
Definition: geometrygridpart.hh:168
GridPart2GridViewImpl< GridPartType > GridViewType
Definition: geometrygridpart.hh:133
static const InterfaceType indexSetInterfaceType
Definition: geometrygridpart.hh:146
MetaTwistUtility< typename HostGridPartType::TwistUtilityType > TwistUtilityType
type of twist utility
Definition: geometrygridpart.hh:139
static const int dimension
Definition: geometrygridpart.hh:135
GeometryGridPartFamily< GridFunction > GridFamily
Definition: geometrygridpart.hh:131
static const int dimensionworld
Definition: geometrygridpart.hh:136
Definition: geometrygridpart.hh:154
GridFamily::Traits::template Codim< codim >::Entity EntityType
Definition: geometrygridpart.hh:158
GridFamily::Traits::template Codim< codim >::LocalGeometry LocalGeometryType
Definition: geometrygridpart.hh:156
GridFamily::Traits::template Codim< codim >::EntitySeed EntitySeedType
Definition: geometrygridpart.hh:159
GridFamily::Traits::template Codim< codim >::Geometry GeometryType
Definition: geometrygridpart.hh:155
Definition: geometrygridpart.hh:163
EntityIterator< codim, const GridFamily, IdIterator< codim, pitype, const GridFamily > > IteratorType
Definition: geometrygridpart.hh:164
Definition: geometrygridpart.hh:206
static const GridEntityType & gridEntity(const EntityType &entity)
Definition: geometrygridpart.hh:343
GridEntityAccess< typename EntityType::Implementation::HostEntityType > HostAccessType
Definition: geometrygridpart.hh:340
HostAccessType::GridEntityType GridEntityType
Definition: geometrygridpart.hh:341
Dune::Entity< codim, dim, GridFamily, GeometryGridPartEntity > EntityType
Definition: geometrygridpart.hh:339
Definition: geometrygridpart.hh:357
BaseType::GridPartType GridPartType
Definition: geometrygridpart.hh:362
EntitySearch(const GridPartType &gridPart)
Definition: geometrygridpart.hh:364
Definition: gridpart/geometrygridpart/datahandle.hh:22
Definition: geometrygridpart/intersection.hh:23
Definition: geometrygridpart/intersectioniterator.hh:21
Definition: idgridpart/indexset.hh:260
Definition: idgridpart/iterator.hh:21