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);
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::CompositeNode<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::CompositeNode<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)
481 : NodeT(r.nodeStorage())
482 , BaseT(
std::move(r))
483 , _gv(
std::move(r._gv))
484 , _gt_dof_offsets(
std::move(r._gt_dof_offsets))
485 , _gt_entity_offsets(
std::move(r._gt_entity_offsets))
486 , _entity_dof_offsets(
std::move(r._entity_dof_offsets))
495 return this->
template child<0>();
500 return this->
template child<0>();
503 virtual void map_index_dynamic(
typename Traits::DOFIndexView di,
typename Traits::ContainerIndex& ci)
const
508 typename Traits::ContainerIndex
mapIndex(
const typename Traits::DOFIndex& di)
const
510 typename Traits::ContainerIndex ci;
515 void mapIndex(
typename Traits::DOFIndexView di,
typename Traits::ContainerIndex& ci)
const
517 typedef typename Traits::SizeType size_type;
518 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(di);
519 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(di);
520 localOrdering().map_local_index(geometry_type_index,entity_index,di.treeIndex(),ci);
525 ci.push_back(_gt_dof_offsets[geometry_type_index] + entity_index);
529 ci.push_back(_gt_entity_offsets[geometry_type_index] + entity_index);
536 ci.back() += _gt_dof_offsets[geometry_type_index] + entity_index *
localOrdering().size(geometry_type_index,entity_index);
540 ci.back() += _entity_dof_offsets[_gt_entity_offsets[geometry_type_index] + entity_index];
545 template<
typename ItIn,
typename ItOut>
548 typedef typename Traits::SizeType size_type;
552 for (ItIn in = begin; in != end; ++in, ++out)
554 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(*in);
555 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(*in);
556 out->push_back(_gt_dof_offsets[geometry_type_index] + entity_index);
559 for (ItIn in = begin; in != end; ++in, ++out)
561 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(*in);
562 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(*in);
563 out->push_back(_gt_entity_offsets[geometry_type_index] + entity_index);
568 for (ItIn in = begin; in != end; ++in, ++out)
570 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(*in);
571 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(*in);
572 out->back() += _gt_dof_offsets[geometry_type_index] + entity_index *
localOrdering().size(geometry_type_index,entity_index);
577 for (ItIn in = begin; in != end; ++in, ++out)
579 const size_type geometry_type_index = Traits::DOFIndexAccessor::geometryType(*in);
580 const size_type entity_index = Traits::DOFIndexAccessor::entityIndex(*in);
581 out->back() += _entity_dof_offsets[_gt_entity_offsets[geometry_type_index] + entity_index];
586 template<
typename CIOutIterator>
587 typename Traits::SizeType
589 typename Traits::SizeType child_index,
590 CIOutIterator ci_out,
const CIOutIterator ci_end)
const
592 typedef typename Traits::SizeType size_type;
594 const size_type geometry_type_index = Traits::DOFIndexAccessor::GeometryIndex::geometryType(ei);
595 const size_type entity_index = Traits::DOFIndexAccessor::GeometryIndex::entityIndex(ei);
600 for (; ci_out != ci_end; ++ci_out)
602 ci_out->push_back(_gt_dof_offsets[geometry_type_index] + entity_index);
605 for (; ci_out != ci_end; ++ci_out)
607 ci_out->push_back(_gt_entity_offsets[geometry_type_index] + entity_index);
612 for (; ci_out != ci_end; ++ci_out)
614 ci_out->back() += _gt_dof_offsets[geometry_type_index] + entity_index *
localOrdering().size(geometry_type_index,entity_index);
619 for (; ci_out != ci_end; ++ci_out)
621 ci_out->back() += _entity_dof_offsets[_gt_entity_offsets[geometry_type_index] + entity_index];
632 typedef std::vector<GeometryType> GTVector;
633 typedef typename Traits::SizeType size_type;
634 const size_type
dim = GV::dimension;
637 for (size_type cc = 0; cc <=
dim; ++cc)
639 auto per_codim_geom_types = _gv.indexSet().types(cc);
640 std::copy(per_codim_geom_types.begin(),per_codim_geom_types.end(),std::back_inserter(geom_types));
648 typedef std::vector<GeometryType> GTVector;
649 const size_type gt_index_count = GlobalGeometryTypeIndex::size(GV::dimension);
651 if (fixed_size_collector.
any)
657 if (!fixed_size_collector.
all)
661 typedef typename GV::template Codim<0>::Iterator CellIterator;
662 typedef typename GV::template Codim<0>::Entity Cell;
664 const CellIterator end_it = _gv.template end<0>();
665 for (CellIterator it = _gv.template begin<0>(); it != end_it; ++it)
674 for (CellIterator it = _gv.template begin<0>(); it != end_it; ++it)
687 _gt_dof_offsets.assign(gt_index_count + 1,0);
693 for (GTVector::const_iterator it = geom_types.begin(); it != geom_types.end(); ++it)
695 const size_type gt_index = GlobalGeometryTypeIndex::index(*it);
697 const size_type gt_entity_count = _gv.indexSet().size(*it);
698 _size += gt_size * gt_entity_count;
700 gt_size = gt_size > 0;
701 _gt_dof_offsets[gt_index + 1] = gt_size * gt_entity_count;
704 std::partial_sum(_gt_dof_offsets.begin(),_gt_dof_offsets.end(),_gt_dof_offsets.begin());
712 _gt_entity_offsets.assign(gt_index_count + 1,0);
714 for (GTVector::const_iterator it = geom_types.begin(); it != geom_types.end(); ++it)
718 const size_type gt_index = GlobalGeometryTypeIndex::index(*it);
719 _gt_entity_offsets[gt_index + 1] = _gv.indexSet().size(*it);
722 std::partial_sum(_gt_entity_offsets.begin(),_gt_entity_offsets.end(),_gt_entity_offsets.begin());
723 _entity_dof_offsets.assign(_gt_entity_offsets.back()+1,0);
728 for (size_type gt_index = 0; gt_index < GlobalGeometryTypeIndex::size(dim); ++gt_index)
732 const size_type entity_count = _gt_entity_offsets[gt_index + 1] - _gt_entity_offsets[gt_index];
733 for (size_type entity_index = 0; entity_index < entity_count; ++entity_index)
736 _entity_dof_offsets[++index] = (carry +=
size);
740 _size = _entity_dof_offsets.back();
763 typename Traits::GridView _gv;
764 std::vector<typename Traits::SizeType> _gt_dof_offsets;
765 std::vector<typename Traits::SizeType> _gt_entity_offsets;
766 std::vector<typename Traits::SizeType> _entity_dof_offsets;
775 #endif // DUNE_PDELAB_ORDERING_LEAFORDERING_HH
Traits::ContainerIndex mapIndex(const typename Traits::DOFIndex &di) const
Definition: gridviewordering.hh:508
Definition: gridviewordering.hh:271
std::size_t _size
Definition: orderingbase.hh:289
bool fixedSize(typename Traits::SizeType codim) const
Definition: orderingbase.hh:215
static const bool consume_tree_index
Definition: gridviewordering.hh:432
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:160
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:193
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:318
void pre(Node &node, TreePath tp) const
Definition: gridviewordering.hh:331
post_extract_per_entity_sizes(const GV &gv_, const GTVector &geom_types_)
Definition: gridviewordering.hh:408
void afterChild(Node &node, const Child &child, TreePath tp, ChildIndex childIndex) const
Definition: gridviewordering.hh:342
const std::size_t dim
Definition: gridviewordering.hh:181
void post(Node &node, TreePath tp) const
Definition: gridviewordering.hh:353
void pre(Node &node, TreePath tp) const
Definition: gridviewordering.hh:36
static const std::size_t dim
Definition: gridviewordering.hh:276
const GTVector & geom_types
Definition: gridviewordering.hh:414
std::size_t _max_local_size
Definition: orderingbase.hh:288
const Dune::ReferenceElement< typename Cell::Geometry::ctype, Cell::dimension > & ref_el
Definition: gridviewordering.hh:205
static const bool has_dynamic_ordering_children
Definition: gridviewordering.hh:430
collect_used_geometry_types_from_cell_visitor(const Cell &cell_)
Definition: gridviewordering.hh:199
pre_collect_used_geometry_types(std::size_t dimension)
Definition: gridviewordering.hh:177
update_fixed_size(const GV gv_, const GTVector &geom_types_)
Definition: gridviewordering.hh:143
std::size_t _block_count
Definition: orderingbase.hh:290
virtual void map_index_dynamic(typename Traits::DOFIndexView di, typename Traits::ContainerIndex &ci) const
Definition: gridviewordering.hh:503
std::vector< Dune::GeometryType > GTVector
Definition: gridviewordering.hh:64
Definition: gridviewordering.hh:187
const bool _container_blocked
Definition: orderingbase.hh:276
GridViewOrdering(const typename NodeT::NodeStorage &local_ordering, bool container_blocked, typename BaseT::GFSData *gfs_data)
Construct ordering object.
Definition: gridviewordering.hh:451
void set_cell(const Cell &cell_)
Definition: gridviewordering.hh:294
void map_lfs_indices(const ItIn begin, const ItIn end, ItOut out) const
Definition: gridviewordering.hh:546
bool _fixed_size
Definition: orderingbase.hh:275
bool all
Definition: gridviewordering.hh:53
void leaf(Node &node, TreePath tp)
Definition: gridviewordering.hh:281
LocalOrdering::Traits Traits
Definition: gridviewordering.hh:428
void mapIndex(typename Traits::DOFIndexView di, typename Traits::ContainerIndex &ci) const
Definition: gridviewordering.hh:515
Definition: gridviewordering.hh:59
void setPartitionSet(const std::bitset< 6 > &partitions)
Sets the set of contained partitions to the passed-in value.
Definition: partitioninfoprovider.hh:58
Traits::SizeType size() const
Definition: orderingbase.hh:63
Traits::CodimFlag _codim_used
Definition: orderingbase.hh:285
LocalOrdering & localOrdering()
Definition: gridviewordering.hh:493
Definition: gridviewordering.hh:309
extract_per_entity_sizes_from_cell_visitor(const GV &gv_)
Definition: gridviewordering.hh:287
Definition: gridviewordering.hh:22
Definition: adaptivity.hh:27
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:67
const Cell & cell
Definition: gridviewordering.hh:204
void pre(Node &node, TreePath tp) const
Definition: gridviewordering.hh:88
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:588
GV gv
Definition: gridviewordering.hh:264
void pre(Node &node, TreePath tp) const
Definition: gridviewordering.hh:172
post_collect_used_geometry_types(const GV &gv_, const GTVector &geom_types_)
Definition: gridviewordering.hh:259
Dune::PDELab::impl::GridFunctionSpaceOrderingData< typename Traits::SizeType > GFSData
Definition: orderingbase.hh:34
const Dune::ReferenceElement< typename GV::ctype, dim > * ref_el
Definition: gridviewordering.hh:302
std::vector< size_type > gt_sizes
Definition: gridviewordering.hh:303
Definition: gridviewordering.hh:420
GV gv
Definition: gridviewordering.hh:148
static const int dim
Definition: adaptivity.hh:83
const GTVector & geom_types
Definition: gridviewordering.hh:265
void afterChild(Node &node, const Child &child, TreePath tp, ChildIndex childIndex) const
Definition: gridviewordering.hh:102
void post(Node &node, TreePath tp) const
Definition: gridviewordering.hh:127
GV gv
Definition: gridviewordering.hh:300
void setDelegate(const VirtualOrderingBase< LocalOrdering::Traits::DOFIndex, LocalOrdering::Traits::ContainerIndex > *delegate)
Set the delegate called in mapIndex().
Definition: orderingbase.hh:228
void afterChild(Node &node, const Child &child, TreePath tp, ChildIndex childIndex) const
Definition: gridviewordering.hh:239
const GTVector & geom_types
Definition: gridviewordering.hh:149
const LocalOrdering & localOrdering() const
Definition: gridviewordering.hh:498
void leaf(Node &node, TreePath tp)
Definition: gridviewordering.hh:28
Definition: ordering/utility.hh:230
Definition: gridviewordering.hh:154
Definition: gridviewordering.hh:211
GV::template Codim< 0 >::Entity Cell
Definition: gridviewordering.hh:277
Definition: orderingbase.hh:21
collect_a_priori_fixed_size()
Definition: gridviewordering.hh:47
void update()
Definition: gridviewordering.hh:629
void leaf(Node &node, TreePath tp) const
Definition: gridviewordering.hh:220
Traits::CodimFlag _codim_fixed_size
Definition: orderingbase.hh:286
std::vector< GeometryType > GTVector
Definition: gridviewordering.hh:314
std::vector< Dune::GeometryType > GTVector
Definition: gridviewordering.hh:216
GV gv
Definition: gridviewordering.hh:413
std::size_t size_type
Definition: gridviewordering.hh:278
void afterChild(Node &node, const Child &child, TreePath tp, ChildIndex childIndex) const
Definition: gridviewordering.hh:42
const Cell * cell
Definition: gridviewordering.hh:301
bool any
Definition: gridviewordering.hh:52
void post(Node &node, TreePath tp) const
Definition: gridviewordering.hh:254