4 #ifndef DUNE_PDELAB_ORDERING_GRIDVIEWORDERING_HH
5 #define DUNE_PDELAB_ORDERING_GRIDVIEWORDERING_HH
7 #include <dune/typetree/typetree.hh>
23 :
public TypeTree::TreeVisitor
24 ,
public TypeTree::DynamicTraversal
27 template<
typename Node,
typename TreePath>
28 void leaf(Node& node, TreePath tp)
30 node.update_a_priori_fixed_size();
31 any =
any || node._fixed_size;
32 all =
all && node._fixed_size;
35 template<
typename Node,
typename TreePath>
36 void pre(Node& node, TreePath tp)
const
38 node._fixed_size =
true;
41 template<
typename Node,
typename Child,
typename TreePath,
typename ChildIndex>
42 void afterChild(Node& node,
const Child& child, TreePath tp, ChildIndex childIndex)
const
44 node._fixed_size = node._fixed_size && child._fixed_size;
60 :
public TypeTree::TreeVisitor
61 ,
public TypeTree::DynamicTraversal
64 typedef std::vector<Dune::GeometryType>
GTVector;
66 template<
typename Node,
typename TreePath>
67 void leaf(Node& node, TreePath tp)
const
71 typedef typename Node::Traits::SizeType size_type;
72 const size_type
dim = GV::dimension;
73 node._codim_used.reset();
74 node._gt_used.assign(GlobalGeometryTypeIndex::size(dim),
false);
75 node._gt_dof_offsets.assign(GlobalGeometryTypeIndex::size(dim),0);
78 size_type size = node.finiteElementMap().size(*it);
79 node._gt_dof_offsets[GlobalGeometryTypeIndex::index(*it)] = size;
80 node._gt_used[GlobalGeometryTypeIndex::index(*it)] = size > 0;
81 node._codim_used[dim - it->dim()] = node._codim_used[dim - it->dim()] || (size > 0);
83 node._max_local_size = node.finiteElementMap().maxLocalSize();
87 template<
typename Node,
typename TreePath>
88 void pre(Node& node, TreePath tp)
const
92 typedef typename Node::Traits::SizeType size_type;
93 const size_type
dim = GV::dimension;
94 node._codim_used.reset();
95 node._gt_used.assign(Dune::GlobalGeometryTypeIndex::size(dim),
false);
96 node._gt_dof_offsets.assign(Dune::GlobalGeometryTypeIndex::size(dim) * Node::CHILDREN,0);
97 node._max_local_size = 0;
101 template<
typename Node,
typename Child,
typename TreePath,
typename ChildIndex>
102 void afterChild(Node& node,
const Child& child, TreePath tp, ChildIndex childIndex)
const
104 if (node._fixed_size)
106 node._codim_used |= child._codim_used;
108 std::transform(node._gt_used.begin(),
110 child._gt_used.begin(),
111 node._gt_used.begin(),
112 std::logical_or<bool>());
114 node._max_local_size += child._max_local_size;
116 typedef typename Node::Traits::SizeType size_type;
118 const size_type per_gt_size = child._child_count > 0 ? child._child_count : 1;
119 const size_type size_offset = child._child_count > 0 ? child._child_count - 1 : 0;
121 for (size_type gt = 0; gt < Dune::GlobalGeometryTypeIndex::size(GV::dimension); ++gt)
122 node._gt_dof_offsets[gt * Node::CHILDREN + childIndex] = child._gt_dof_offsets[gt * per_gt_size + size_offset];
126 template<
typename Node,
typename TreePath>
127 void post(Node& node, TreePath tp)
const
129 if (node._fixed_size)
131 typedef typename std::vector<typename Node::Traits::SizeType>::iterator iterator;
133 iterator next_gt_it = node._gt_dof_offsets.begin() + Node::CHILDREN;
134 const iterator end_it = node._gt_dof_offsets.end();
136 for (iterator it = node._gt_dof_offsets.begin();
138 it += Node::CHILDREN, next_gt_it += Node::CHILDREN)
139 std::partial_sum(it,next_gt_it,it);
155 :
public TypeTree::TreeVisitor
156 ,
public TypeTree::DynamicTraversal
159 template<
typename Node,
typename TreePath>
160 void leaf(Node& node, TreePath tp)
const
162 if (!node._fixed_size)
164 node._codim_used.reset();
165 node._gt_used.assign(Dune::GlobalGeometryTypeIndex::size(
dim),
false);
166 node._gt_dof_offsets.assign(Dune::GlobalGeometryTypeIndex::size(
dim) * std::max(node._child_count,static_cast<std::size_t>(1)),0);
167 node._gt_entity_offsets.assign(Dune::GlobalGeometryTypeIndex::size(
dim) + 1,0);
171 template<
typename Node,
typename TreePath>
172 void pre(Node& node, TreePath tp)
const
186 template<
typename Cell>
188 :
public TypeTree::TreeVisitor
189 ,
public TypeTree::DynamicTraversal
192 template<
typename Node,
typename TreePath>
193 void leaf(Node& node, TreePath tp)
const
195 if (!node._fixed_size)
196 node.collect_used_geometry_types_from_cell(
cell);
201 ,
ref_el(Dune::ReferenceElements<typename Cell::Geometry::ctype,Cell::dimension>::general(cell_.type()))
205 const Dune::ReferenceElement<typename Cell::Geometry::ctype,Cell::dimension>&
ref_el;
210 template<
typename GV>
212 :
public TypeTree::TreeVisitor
213 ,
public TypeTree::DynamicTraversal
219 template<
typename Node,
typename TreePath>
220 void leaf(Node& node, TreePath tp)
const
222 if (!node._fixed_size)
224 typedef typename Node::Traits::SizeType size_type;
228 if (node._gt_used[Dune::GlobalGeometryTypeIndex::index(*it)])
229 node._gt_entity_offsets[Dune::GlobalGeometryTypeIndex::index(*it) + 1] =
gv.indexSet().size(*it);
232 std::partial_sum(node._gt_entity_offsets.begin(),node._gt_entity_offsets.end(),node._gt_entity_offsets.begin());
233 node._entity_dof_offsets.assign(node._gt_entity_offsets.back() * std::max(node._child_count,static_cast<size_type>(1)),0);
234 node.setup_fixed_size_possible();
238 template<
typename Node,
typename Child,
typename TreePath,
typename ChildIndex>
239 void afterChild(Node& node,
const Child& child, TreePath tp, ChildIndex childIndex)
const
241 if (!node._fixed_size)
243 node._codim_used |= child._codim_used;
245 std::transform(node._gt_used.begin(),
247 child._gt_used.begin(),
248 node._gt_used.begin(),
249 std::logical_or<bool>());
253 template<
typename Node,
typename TreePath>
254 void post(Node& node, TreePath tp)
const
270 template<
typename GV>
272 :
public TypeTree::TreeVisitor
273 ,
public TypeTree::DynamicTraversal
276 static const std::size_t
dim = GV::dimension;
277 typedef typename GV::template Codim<0>::Entity
Cell;
280 template<
typename Node,
typename TreePath>
281 void leaf(Node& node, TreePath tp)
283 if (!node._fixed_size)
284 node.extract_per_entity_sizes_from_cell(*
cell,
gt_sizes);
291 ,
gt_sizes(Dune::GlobalGeometryTypeIndex::size(
dim),0)
297 ref_el = &(Dune::ReferenceElements<typename GV::ctype,dim>::general(cell_.type()));
302 const Dune::ReferenceElement<typename GV::ctype,dim>*
ref_el;
308 template<
typename GV>
310 :
public TypeTree::TreeVisitor
311 ,
public TypeTree::DynamicTraversal
317 template<
typename Node,
typename TreePath>
318 void leaf(Node& node, TreePath tp)
const
320 if (!node._fixed_size)
322 if (node._fixed_size_possible)
324 node._entity_dof_offsets = std::vector<typename Node::Traits::SizeType>();
325 node._fixed_size =
true;
330 template<
typename Node,
typename TreePath>
331 void pre(Node& node, TreePath tp)
const
333 if (!node._fixed_size)
335 node._fixed_size_possible =
true;
336 node._max_local_size = 0;
341 template<
typename Node,
typename Child,
typename TreePath,
typename ChildIndex>
342 void afterChild(Node& node,
const Child& child, TreePath tp, ChildIndex childIndex)
const
344 if (!node._fixed_size)
346 node._fixed_size_possible = node._fixed_size_possible && child._fixed_size;
347 node._max_local_size += child._max_local_size;
352 template<
typename Node,
typename TreePath>
353 void post(Node& node, TreePath tp)
const
355 if (!node._fixed_size)
358 typedef typename Node::Traits::SizeType size_type;
359 const size_type
dim = GV::dimension;
361 if (node._fixed_size_possible)
364 for (size_type gt = 0; gt < GlobalGeometryTypeIndex::size(GV::dimension); ++gt)
366 for (size_type child_index = 0; child_index < Node::CHILDREN; ++child_index)
368 const size_type per_gt_size = node.childOrdering(child_index)._child_count > 0 ? node.childOrdering(child_index)._child_count : 1;
369 const size_type size_offset = node.childOrdering(child_index)._child_count > 0 ? node.childOrdering(child_index)._child_count - 1 : 0;
371 node._gt_dof_offsets[gt * Node::CHILDREN + child_index] = node.childOrdering(child_index)._gt_dof_offsets[gt * per_gt_size + size_offset];
375 typedef typename std::vector<typename Node::Traits::SizeType>::iterator iterator;
377 const iterator end_it = node._gt_dof_offsets.end();
379 for (iterator it = node._gt_dof_offsets.begin();
381 it += Node::CHILDREN)
382 std::partial_sum(it,it + Node::CHILDREN,it);
384 node._fixed_size =
true;
388 typedef typename Node::Traits::SizeType size_type;
391 for (size_type geometry_type_index = 0; geometry_type_index < GlobalGeometryTypeIndex::size(dim); ++geometry_type_index)
393 if (!node._gt_used[geometry_type_index])
395 const size_type entity_count = node._gt_entity_offsets[geometry_type_index+1] - node._gt_entity_offsets[geometry_type_index];
396 for (size_type entity_index = 0; entity_index < entity_count; ++entity_index)
399 for (size_type child_index = 0; child_index < Node::CHILDREN; ++child_index)
400 node._entity_dof_offsets[index++] = (carry += node.childOrdering(child_index).size(geometry_type_index,entity_index));
419 template<
typename LocalOrdering>
421 :
public TypeTree::VariadicCompositeNode<LocalOrdering>
423 typename LocalOrdering::Traits::ContainerIndex>
424 ,
public OrderingBase<typename LocalOrdering::Traits::DOFIndex,
425 typename LocalOrdering::Traits::ContainerIndex>
428 typedef typename LocalOrdering::Traits
Traits;
436 typedef TypeTree::VariadicCompositeNode<LocalOrdering> NodeT;
438 typename LocalOrdering::Traits::DOFIndex,
439 typename LocalOrdering::Traits::ContainerIndex
442 typedef typename Traits::GridView GV;
452 : NodeT(local_ordering)
453 ,
BaseT(*this,container_blocked,gfs_data,this)
470 : NodeT(r.nodeStorage())
473 , _gt_dof_offsets(r._gt_dof_offsets)
474 , _gt_entity_offsets(r._gt_entity_offsets)
475 , _entity_dof_offsets(r._entity_dof_offsets)
480 #if HAVE_RVALUE_REFERENCES
483 : NodeT(r.nodeStorage())
484 , BaseT(std::move(r))
485 , _gv(std::move(r._gv))
486 , _gt_dof_offsets(std::move(r._gt_dof_offsets))
487 , _gt_entity_offsets(std::move(r._gt_entity_offsets))
488 , _entity_dof_offsets(std::move(r._entity_dof_offsets))
493 #endif // HAVE_RVALUE_REFERENCES
499 return this->
template child<0>();
504 return this->
template child<0>();
507 virtual void map_index_dynamic(
typename Traits::DOFIndexView di,
typename Traits::ContainerIndex& ci)
const
512 typename Traits::ContainerIndex
mapIndex(
const typename Traits::DOFIndex& di)
const
514 typename Traits::ContainerIndex ci;
519 void mapIndex(
typename Traits::DOFIndexView di,
typename Traits::ContainerIndex& ci)
const
521 typedef typename Traits::SizeType size_type;
522 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(di);
523 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(di);
524 localOrdering().map_local_index(geometry_type_index,entity_index,di.treeIndex(),ci);
529 ci.push_back(_gt_dof_offsets[geometry_type_index] + entity_index);
533 ci.push_back(_gt_entity_offsets[geometry_type_index] + entity_index);
540 ci.back() += _gt_dof_offsets[geometry_type_index] + entity_index *
localOrdering().size(geometry_type_index,entity_index);
544 ci.back() += _entity_dof_offsets[_gt_entity_offsets[geometry_type_index] + entity_index];
549 template<
typename ItIn,
typename ItOut>
552 typedef typename Traits::SizeType size_type;
556 for (ItIn in = begin; in != end; ++in, ++out)
558 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(*in);
559 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(*in);
560 out->push_back(_gt_dof_offsets[geometry_type_index] + entity_index);
563 for (ItIn in = begin; in != end; ++in, ++out)
565 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(*in);
566 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(*in);
567 out->push_back(_gt_entity_offsets[geometry_type_index] + entity_index);
572 for (ItIn in = begin; in != end; ++in, ++out)
574 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(*in);
575 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(*in);
576 out->back() += _gt_dof_offsets[geometry_type_index] + entity_index *
localOrdering().size(geometry_type_index,entity_index);
581 for (ItIn in = begin; in != end; ++in, ++out)
583 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(*in);
584 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(*in);
585 out->back() += _entity_dof_offsets[_gt_entity_offsets[geometry_type_index] + entity_index];
590 template<
typename CIOutIterator>
591 typename Traits::SizeType
593 typename Traits::SizeType child_index,
594 CIOutIterator ci_out,
const CIOutIterator ci_end)
const
596 typedef typename Traits::SizeType size_type;
598 const size_type geometry_type_index = Traits::DOFIndexAccessor::GeometryIndex::geometryType(ei);
599 const size_type entity_index = Traits::DOFIndexAccessor::GeometryIndex::entityIndex(ei);
604 for (; ci_out != ci_end; ++ci_out)
606 ci_out->push_back(_gt_dof_offsets[geometry_type_index] + entity_index);
609 for (; ci_out != ci_end; ++ci_out)
611 ci_out->push_back(_gt_entity_offsets[geometry_type_index] + entity_index);
616 for (; ci_out != ci_end; ++ci_out)
618 ci_out->back() += _gt_dof_offsets[geometry_type_index] + entity_index *
localOrdering().size(geometry_type_index,entity_index);
623 for (; ci_out != ci_end; ++ci_out)
625 ci_out->back() += _entity_dof_offsets[_gt_entity_offsets[geometry_type_index] + entity_index];
636 typedef std::vector<GeometryType> GTVector;
637 typedef typename Traits::SizeType size_type;
638 const size_type
dim = GV::dimension;
641 for (size_type cc = 0; cc <=
dim; ++cc)
643 const GTVector& per_codim_geom_types = _gv.indexSet().geomTypes(cc);
644 std::copy(per_codim_geom_types.begin(),per_codim_geom_types.end(),std::back_inserter(geom_types));
652 typedef std::vector<GeometryType> GTVector;
653 const size_type gt_index_count = GlobalGeometryTypeIndex::size(GV::dimension);
655 if (fixed_size_collector.
any)
661 if (!fixed_size_collector.
all)
665 typedef typename GV::template Codim<0>::Iterator CellIterator;
666 typedef typename GV::template Codim<0>::Entity Cell;
668 const CellIterator end_it = _gv.template end<0>();
669 for (CellIterator it = _gv.template begin<0>(); it != end_it; ++it)
678 for (CellIterator it = _gv.template begin<0>(); it != end_it; ++it)
691 _gt_dof_offsets.assign(gt_index_count + 1,0);
697 for (GTVector::const_iterator it = geom_types.begin(); it != geom_types.end(); ++it)
699 const size_type gt_index = GlobalGeometryTypeIndex::index(*it);
701 const size_type gt_entity_count = _gv.indexSet().size(*it);
702 _size += gt_size * gt_entity_count;
704 gt_size = gt_size > 0;
705 _gt_dof_offsets[gt_index + 1] = gt_size * gt_entity_count;
708 std::partial_sum(_gt_dof_offsets.begin(),_gt_dof_offsets.end(),_gt_dof_offsets.begin());
716 _gt_entity_offsets.assign(gt_index_count + 1,0);
718 for (GTVector::const_iterator it = geom_types.begin(); it != geom_types.end(); ++it)
722 const size_type gt_index = GlobalGeometryTypeIndex::index(*it);
723 _gt_entity_offsets[gt_index + 1] = _gv.indexSet().size(*it);
726 std::partial_sum(_gt_entity_offsets.begin(),_gt_entity_offsets.end(),_gt_entity_offsets.begin());
727 _entity_dof_offsets.assign(_gt_entity_offsets.back()+1,0);
732 for (size_type gt_index = 0; gt_index < GlobalGeometryTypeIndex::size(dim); ++gt_index)
736 const size_type entity_count = _gt_entity_offsets[gt_index + 1] - _gt_entity_offsets[gt_index];
737 for (size_type entity_index = 0; entity_index < entity_count; ++entity_index)
740 _entity_dof_offsets[++index] = (carry +=
size);
744 _size = _entity_dof_offsets.back();
767 typename Traits::GridView _gv;
768 std::vector<typename Traits::SizeType> _gt_dof_offsets;
769 std::vector<typename Traits::SizeType> _gt_entity_offsets;
770 std::vector<typename Traits::SizeType> _entity_dof_offsets;
779 #endif // DUNE_PDELAB_ORDERING_LEAFORDERING_HH
GV gv
Definition: gridviewordering.hh:264
bool all
Definition: gridviewordering.hh:53
post_collect_used_geometry_types(const GV &gv_, const GTVector &geom_types_)
Definition: gridviewordering.hh:259
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:193
bool fixedSize(typename Traits::SizeType codim) const
Definition: orderingbase.hh:214
void leaf(Node &node, TreePath tp)
Definition: gridviewordering.hh:281
Traits::SizeType extract_entity_indices(const typename Traits::DOFIndex::EntityIndex &ei, typename Traits::SizeType child_index, CIOutIterator ci_out, const CIOutIterator ci_end) const
Definition: gridviewordering.hh:592
GV gv
Definition: gridviewordering.hh:300
Definition: gridviewordering.hh:211
Traits::CodimFlag _codim_fixed_size
Definition: orderingbase.hh:285
std::size_t _max_local_size
Definition: orderingbase.hh:287
GV::template Codim< 0 >::Entity Cell
Definition: gridviewordering.hh:277
void post(Node &node, TreePath tp) const
Definition: gridviewordering.hh:353
const LocalOrdering & localOrdering() const
Definition: gridviewordering.hh:502
Definition: gridviewordering.hh:271
void post(Node &node, TreePath tp) const
Definition: gridviewordering.hh:127
GV gv
Definition: gridviewordering.hh:148
bool _fixed_size
Definition: orderingbase.hh:274
void setPartitionSet(const std::bitset< 6 > &partitions)
Sets the set of contained partitions to the passed-in value.
Definition: partitioninfoprovider.hh:58
const GTVector & geom_types
Definition: gridviewordering.hh:149
Definition: orderingbase.hh:22
void pre(Node &node, TreePath tp) const
Definition: gridviewordering.hh:172
const Dune::ReferenceElement< typename Cell::Geometry::ctype, Cell::dimension > & ref_el
Definition: gridviewordering.hh:205
const Dune::ReferenceElement< typename GV::ctype, dim > * ref_el
Definition: gridviewordering.hh:302
void afterChild(Node &node, const Child &child, TreePath tp, ChildIndex childIndex) const
Definition: gridviewordering.hh:342
std::vector< Dune::GeometryType > GTVector
Definition: gridviewordering.hh:64
Definition: gridviewordering.hh:309
Definition: gridviewordering.hh:59
static const int dim
Definition: adaptivity.hh:82
std::vector< size_type > gt_sizes
Definition: gridviewordering.hh:303
post_extract_per_entity_sizes(const GV &gv_, const GTVector &geom_types_)
Definition: gridviewordering.hh:408
Definition: ordering/utility.hh:230
Definition: gridviewordering.hh:154
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:160
GV gv
Definition: gridviewordering.hh:413
collect_used_geometry_types_from_cell_visitor(const Cell &cell_)
Definition: gridviewordering.hh:199
Traits::ContainerIndex mapIndex(const typename Traits::DOFIndex &di) const
Definition: gridviewordering.hh:512
void pre(Node &node, TreePath tp) const
Definition: gridviewordering.hh:36
void update()
Definition: gridviewordering.hh:633
collect_a_priori_fixed_size()
Definition: gridviewordering.hh:47
static const bool consume_tree_index
Definition: gridviewordering.hh:432
Definition: gridviewordering.hh:187
void pre(Node &node, TreePath tp) const
Definition: gridviewordering.hh:88
const GTVector & geom_types
Definition: gridviewordering.hh:265
void pre(Node &node, TreePath tp) const
Definition: gridviewordering.hh:331
std::size_t size_type
Definition: gridviewordering.hh:278
static const bool has_dynamic_ordering_children
Definition: gridviewordering.hh:430
bool any
Definition: gridviewordering.hh:52
const Cell & cell
Definition: gridviewordering.hh:204
const Cell * cell
Definition: gridviewordering.hh:301
void afterChild(Node &node, const Child &child, TreePath tp, ChildIndex childIndex) const
Definition: gridviewordering.hh:102
void set_cell(const Cell &cell_)
Definition: gridviewordering.hh:294
std::vector< GeometryType > GTVector
Definition: gridviewordering.hh:314
Traits::SizeType size() const
Definition: orderingbase.hh:64
GridViewOrdering(const typename NodeT::NodeStorage &local_ordering, bool container_blocked, typename BaseT::GFSData *gfs_data)
Construct ordering object.
Definition: gridviewordering.hh:451
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:67
void post(Node &node, TreePath tp) const
Definition: gridviewordering.hh:254
const GTVector & geom_types
Definition: gridviewordering.hh:414
update_fixed_size(const GV gv_, const GTVector &geom_types_)
Definition: gridviewordering.hh:143
const std::size_t dim
Definition: gridviewordering.hh:181
Traits::CodimFlag _codim_used
Definition: orderingbase.hh:284
static const std::size_t dim
Definition: gridviewordering.hh:276
std::size_t _block_count
Definition: orderingbase.hh:289
virtual void map_index_dynamic(typename Traits::DOFIndexView di, typename Traits::ContainerIndex &ci) const
Definition: gridviewordering.hh:507
void afterChild(Node &node, const Child &child, TreePath tp, ChildIndex childIndex) const
Definition: gridviewordering.hh:239
LocalOrdering::Traits Traits
Definition: gridviewordering.hh:428
std::size_t _size
Definition: orderingbase.hh:288
void mapIndex(typename Traits::DOFIndexView di, typename Traits::ContainerIndex &ci) const
Definition: gridviewordering.hh:519
void afterChild(Node &node, const Child &child, TreePath tp, ChildIndex childIndex) const
Definition: gridviewordering.hh:42
const bool _container_blocked
Definition: orderingbase.hh:275
Definition: gridviewordering.hh:22
std::vector< Dune::GeometryType > GTVector
Definition: gridviewordering.hh:216
Dune::PDELab::impl::GridFunctionSpaceOrderingData< typename Traits::SizeType > GFSData
Definition: orderingbase.hh:35
Definition: gridviewordering.hh:420
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:220
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:318
void map_lfs_indices(const ItIn begin, const ItIn end, ItOut out) const
Definition: gridviewordering.hh:550
void leaf(Node &node, TreePath tp)
Definition: gridviewordering.hh:28
extract_per_entity_sizes_from_cell_visitor(const GV &gv_)
Definition: gridviewordering.hh:287
pre_collect_used_geometry_types(std::size_t dimension)
Definition: gridviewordering.hh:177
LocalOrdering & localOrdering()
Definition: gridviewordering.hh:497
void setDelegate(const VirtualOrderingBase< LocalOrdering::Traits::DOFIndex, LocalOrdering::Traits::ContainerIndex > *delegate)
Set the delegate called in mapIndex().
Definition: orderingbase.hh:227