5#ifndef DUNE_GEOMETRY_TYPEINDEX_HH
6#define DUNE_GEOMETRY_TYPEINDEX_HH
16#include <dune/common/indices.hh>
17#include <dune/common/hybridutilities.hh>
32 inline static constexpr std::size_t regular_size(std::size_t dim)
52 return (1 << dim) - ((1 << dim) >> 1);
61 inline static constexpr std::size_t
size(std::size_t dim)
64 return regular_size(dim) + 1;
75 return gt.
isNone() ? regular_size(gt.
dim()) : (gt.
id() >> 1);
80 return (
index == regular_size(dim)) ?
98 inline static constexpr std::size_t regular_offset(std::size_t dim)
105 return (1 << dim) >> 1;
113 inline static constexpr std::size_t
offset(std::size_t dim)
116 return regular_offset(dim) + dim;
125 inline static constexpr std::size_t
size(std::size_t maxdim)
147 template<
int dim,
class F>
148 static auto toGeometryTypeIdConstant(
const GeometryType& gt, F&& f) {
150 auto callWithId = [&](
auto index) {
152 return f(std::integral_constant<GeometryType::Id, id>{});
155 auto fallBack = [&]() {
return callWithId(Dune::Indices::_0); };
A unique label for each type of element that can occur in a grid.
constexpr GeometryType none(unsigned int dim)
Returns a GeometryType representing a singular of dimension dim.
Definition type.hh:482
Definition affinegeometry.hh:21
Unique label for each type of entities that can occur in DUNE grids.
Definition type.hh:126
constexpr Id toId() const
Create an Id representation of this GeometryType.
Definition type.hh:222
constexpr unsigned int dim() const
Return dimension of the type.
Definition type.hh:372
constexpr unsigned int id() const
Return the topology id of the type.
Definition type.hh:377
constexpr bool isNone() const
Return true if entity is a singular of any dimension.
Definition type.hh:367
Compute per-dimension indices for geometry types.
Definition typeindex.hh:25
static constexpr std::size_t size(std::size_t dim)
Compute total number of geometry types for the given dimension.
Definition typeindex.hh:61
static constexpr GeometryType type(std::size_t dim, std::size_t index)
compute the geometry type for the given local index and dimension
Definition typeindex.hh:79
static constexpr std::size_t index(const GeometryType >)
Compute the index for the given geometry type within its dimension.
Definition typeindex.hh:73
Compute indices for geometry types, taking the dimension into account.
Definition typeindex.hh:90
static constexpr std::size_t index(const GeometryType >)
Compute the index for the given geometry type over all dimensions.
Definition typeindex.hh:138
static constexpr std::size_t offset(std::size_t dim)
Compute the starting index for a given dimension including irregular geometry types.
Definition typeindex.hh:113
static constexpr std::size_t size(std::size_t maxdim)
Compute total number of geometry types up to and including the given dimension.
Definition typeindex.hh:125