1 #ifndef DUNE_FEM_GRIDPART_COMMON_GRIDVIEW2GRIDPART_HH 2 #define DUNE_FEM_GRIDPART_COMMON_GRIDVIEW2GRIDPART_HH 6 #include <dune/common/exceptions.hh> 8 #include <dune/grid/common/gridenums.hh> 24 template<
class Gr
idView,
class Implementation >
34 template<
class Gr
idView,
class Implementation >
35 struct GridView2GridPartTraits
40 static const bool conforming = GridView::conforming;
42 typedef typename GridViewType::Grid
GridType;
58 template< PartitionIteratorType pitype >
69 static const PartitionIteratorType indexSetPartitionType = All_Partition;
70 static const InterfaceType indexSetInterfaceType = All_All_Interface;
73 #endif // #ifndef DOXYGEN 80 template<
class Gr
idView,
class Implementation >
96 :
public BaseType::template
Codim< codim >
112 using BaseType::grid;
119 : gridView_( gridView ),
120 indexSet_( gridView_.indexSet() ),
121 dofManager_( DofManagerType::instance( gridView.grid() ) )
126 : gridView_(
std::
move( gridView ) ),
127 indexSet_( gridView_.indexSet() ),
128 dofManager_( DofManagerType::instance( gridView.grid() ) )
132 : gridView_( rhs.gridView_ ),
133 indexSet_( gridView_.indexSet() ),
134 dofManager_( DofManagerType::instance( rhs.grid() ) )
144 const GridType &
grid ()
const {
return gridView_.grid(); }
147 const IndexSetType &
indexSet ()
const {
return indexSet_; }
150 template<
int codim >
151 typename Codim< codim >::IteratorType
begin ()
const 153 return begin< codim, InteriorBorder_Partition >();
157 template<
int codim, PartitionIteratorType pitype >
158 typename Codim< codim >::template Partition< pitype >::IteratorType
begin ()
const 160 return gridView_.template begin< codim, pitype >();
164 template<
int codim >
165 typename Codim< codim >::IteratorType
end ()
const 167 return end< codim, InteriorBorder_Partition >();
171 template<
int codim, PartitionIteratorType pitype >
172 typename Codim< codim >::template Partition< pitype >::IteratorType
end ()
const 174 return gridView_.template end< codim, pitype >();
178 IntersectionIteratorType
ibegin (
const typename Codim< 0 >::EntityType &entity )
const 180 return gridView_.ibegin( entity );
184 IntersectionIteratorType
iend (
const typename Codim< 0 >::EntityType &entity )
const 186 return gridView_.iend( entity );
192 #if DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS 193 return intersection.boundaryId();
195 DUNE_THROW( NotImplemented,
"Method boundaryId() not implemented" );
200 const CollectiveCommunicationType &
comm ()
const {
return gridView_.comm(); }
203 template<
class DataHandle,
class DataType >
204 void communicate ( CommDataHandleIF< DataHandle, DataType > &dataHandle,
205 InterfaceType interface, CommunicationDirection direction )
const 207 gridView_.communicate( dataHandle, interface, direction );
211 int sequence ()
const {
return dofManager_.sequence(); }
214 template <
class EntitySeed >
215 typename Codim< EntitySeed::codimension >::EntityType
218 return grid().entity( seed );
222 template <
class Entity>
223 const Entity &
convert(
const Entity& entity )
const 225 return convert< Entity::codimension >( entity );
229 explicit operator GridView ()
const {
return gridView_; }
234 template<
int codim >
242 IndexSetType indexSet_;
243 DofManagerType &dofManager_;
250 #endif // #ifndef DUNE_FEM_GRIDPART_COMMON_GRIDVIEW2GRIDPART_HH const GridType & grid() const
Returns const reference to the underlying grid.
Definition: gridview2gridpart.hh:144
int sequence() const
return sequence number to update structures depending on the grid part
Definition: gridview2gridpart.hh:211
Utility to get twist from IntersectionIterator, if provided by grid (i.e. AlbertaGrid, ALUGrid) otherwise return default values (correct for YASP/SGRID).
Definition: twistutility.hh:83
Traits::CollectiveCommunicationType CollectiveCommunicationType
Collective communication.
Definition: gridpart.hh:96
BaseType::IntersectionIteratorType IntersectionIteratorType
type of IntersectionIterator
Definition: gridview2gridpart.hh:100
Definition: datacollector.hh:45
Definition: gridview2gridpart.hh:95
const CollectiveCommunicationType & comm() const
obtain collective communication object
Definition: gridview2gridpart.hh:200
Traits::GridPartType GridPartType
Type of the implementation.
Definition: gridpart.hh:87
BaseType::IndexSetType IndexSetType
Index set implementation.
Definition: gridview2gridpart.hh:103
GridView2GridPart(const ThisType &rhs)
Definition: gridview2gridpart.hh:131
Codim< codim >::template Partition< pitype >::IteratorType begin() const
obtain begin iterator for the interior-border partition
Definition: gridview2gridpart.hh:158
Traits::IntersectionIteratorType IntersectionIteratorType
type of IntersectionIterator
Definition: gridpart.hh:108
Codim< codim >::IteratorType end() const
obtain end iterator for the interior-border partition
Definition: gridview2gridpart.hh:165
BaseType::GridType GridType
type of Grid implementation
Definition: gridview2gridpart.hh:89
Codim< codim >::template Partition< pitype >::IteratorType end() const
obtain end iterator for the interior-border partition
Definition: gridview2gridpart.hh:172
Traits::TwistUtilityType TwistUtilityType
Twist utility type.
Definition: gridpart.hh:99
void communicate(CommDataHandleIF< DataHandle, DataType > &dataHandle, InterfaceType interface, CommunicationDirection direction) const
corresponding communication method for grid part
Definition: gridview2gridpart.hh:204
Definition: coordinate.hh:4
IntersectionIteratorType::Intersection IntersectionType
type of Intersection
Definition: gridpart.hh:111
Traits::IndexSetType IndexSetType
Index set implementation.
Definition: gridpart.hh:93
BaseType::CollectiveCommunicationType CollectiveCommunicationType
Collective communication.
Definition: gridview2gridpart.hh:106
BaseType::GridViewType GridViewType
Definition: gridview2gridpart.hh:92
IntersectionIteratorType ibegin(const typename Codim< 0 >::EntityType &entity) const
ibegin of corresponding intersection iterator for given entity
Definition: gridview2gridpart.hh:178
Codim< codim >::IteratorType begin() const
obtain begin iterator for the interior-border partition
Definition: gridview2gridpart.hh:151
Traits::GridType GridType
type of Grid implementation
Definition: gridpart.hh:90
void move(ArrayInterface< T > &array, const unsigned int oldOffset, const unsigned int newOffset, const unsigned int length)
Definition: array_inline.hh:38
const IndexSetType & indexSet() const
Returns reference to index set of the underlying grid.
Definition: gridview2gridpart.hh:147
const Entity & convert(const Entity &entity) const
return sequence number to update structures depending on the grid part
Definition: gridview2gridpart.hh:223
Interface for the GridPart classes A GridPart class allows to access only a specific subset of a grid...
Definition: gridpart.hh:75
wrapper for (adaptive) index sets that disables all support for adaptivity
Definition: nonadaptiveindexset.hh:20
GridView2GridPart(const GridView &gridView)
Definition: gridview2gridpart.hh:118
PoliciesType::GridViewType GridViewType
Definition: gridpart.hh:113
int boundaryId(const typename BaseType::IntersectionType &intersection) const
return boundary if given an intersection
Definition: gridview2gridpart.hh:190
Definition: gridview2gridpart.hh:25
GridView2GridPart(GridView &&gridView)
Definition: gridview2gridpart.hh:125
IntersectionIteratorType iend(const typename Codim< 0 >::EntityType &entity) const
iend of corresponding intersection iterator for given entity
Definition: gridview2gridpart.hh:184
Codim< EntitySeed::codimension >::EntityType entity(const EntitySeed &seed) const
obtain entity pointer from entity seed
Definition: gridview2gridpart.hh:216