5 #ifndef DUNE_GRID_CONCEPTS_GRIDVIEW_HH 6 #define DUNE_GRID_CONCEPTS_GRIDVIEW_HH 24 template<
class GV,
int codim, Dune::PartitionIteratorType partition>
25 concept GridViewPartition =
26 EntityIterator<typename GV::template Codim<codim>::template Partition<partition>::Iterator> &&
29 { gv.template begin<codim,partition>() } -> std::same_as<typename GV::template Codim<codim>::template Partition<partition>::Iterator>;
30 { gv.template end<codim,partition>() } -> std::same_as<typename GV::template Codim<codim>::template Partition<partition>::Iterator>;
33 template<
class GV,
int codim>
34 concept GridViewAllPartitions =
35 GridViewPartition<GV,codim,Dune::PartitionIteratorType::InteriorBorder_Partition> &&
36 GridViewPartition<GV,codim,Dune::PartitionIteratorType::Overlap_Partition> &&
37 GridViewPartition<GV,codim,Dune::PartitionIteratorType::OverlapFront_Partition> &&
38 GridViewPartition<GV,codim,Dune::PartitionIteratorType::All_Partition> &&
39 GridViewPartition<GV,codim,Dune::PartitionIteratorType::Ghost_Partition>;
41 template<
class GV,
int codim>
42 concept GridViewCodim =
44 Geometry<typename GV::template Codim<codim>::LocalGeometry> &&
45 EntityIterator<typename GV::template Codim<codim>::Iterator> &&
48 { gv.template begin<codim>() } -> std::same_as<typename GV::template Codim<codim>::Iterator>;
49 { gv.template end<codim>() } -> std::same_as<typename GV::template Codim<codim>::Iterator>;
50 } && GridViewAllPartitions<GV,codim>;
52 template<
class GV,
class Gr
id,
int codim>
54 void requireGridViewCodim()
55 requires GridViewCodim<GV,codim> {}
57 template<
class GV,
class Gr
id,
int codim>
59 void requireGridViewCodim() {}
61 template <
class GV, std::size_t... c>
62 void gridViewAllCodims(std::index_sequence<c...>)
64 (requireGridViewCodim<GV,typename GV::Grid,int(c)>(),...);
84 { GV::dimension } -> std::convertible_to<int>;
85 { GV::dimensionworld } -> std::convertible_to<int>;
86 { gv.grid() } -> std::same_as<const typename GV::Grid&>;
87 { gv.indexSet() } -> std::same_as<const typename GV::IndexSet&>;
88 { gv.size(codim) } -> std::convertible_to<int>;
89 { gv.size(type) } -> std::convertible_to<int>;
90 { gv.comm() } -> std::convertible_to<typename GV::Communication>;
91 { gv.overlapSize(codim) } -> std::convertible_to<int>;
92 { gv.ghostSize(codim) } -> std::convertible_to<int>;
94 requires requires(Archetypes::CommDataHandle<std::byte>& handle,
97 gv.communicate(handle, iface, dir);
104 { gv.ibegin(entity) } -> std::same_as<typename GV::IntersectionIterator>;
105 { gv.iend(entity) } -> std::same_as<typename GV::IntersectionIterator>;
108 Impl::GridViewCodim<GV,0> &&
109 requires (index_constant<1> from, index_constant<GV::dimension+1> to) {
110 Impl::gridViewAllCodims<GV>(range(from, to).to_integer_sequence());
115 #endif // DUNE_GRID_CONCEPTS_GRIDVIEW_HH
concept Entity
Model of a grid entity.
Definition: concepts/entity.hh:119
Index Set Interface base class.
Definition: common/grid.hh:348
Specialize with 'true' for all codims that a grid implements entities for. (default=false) ...
Definition: common/capabilities.hh:57
Geometry(const Implementation &impl)
copy constructor from implementation
Definition: common/geometry.hh:384
CommunicationDirection
Define a type for communication direction parameter.
Definition: gridenums.hh:170
Grid view abstract base class.
Definition: common/gridview.hh:65
InterfaceType
Parameter to be used for the communication functions.
Definition: gridenums.hh:86
Definition: concepts/datahandle.hh:14
Mesh entities of codimension 0 ("elements") allow to visit all intersections with "neighboring" eleme...
Definition: common/grid.hh:347
specialize with 'true' for all codims that a grid provides an iterator for (default=hasEntity<codim>:...
Definition: common/capabilities.hh:73
Intersection of a mesh entity of codimension 0 ("element") with a "neighboring" element or with the d...
Definition: albertagrid/dgfparser.hh:28
GeometryType
Type representing VTK's entity geometry types.
Definition: common.hh:132
A set of traits classes to store static information about grid implementation.
Output conforming data.
Definition: common.hh:73