Go to the documentation of this file.
4 #ifndef DUNE_PDELAB_ORDERING_LOCALORDERINGBASE_HH
5 #define DUNE_PDELAB_ORDERING_LOCALORDERINGBASE_HH
18 template<
typename ES,
typename DI,
typename CI>
44 template<
typename size_type>
45 friend struct ::Dune::PDELab::impl::update_ordering_data;
47 typedef std::vector<LocalOrderingBase*> ChildVector;
48 typedef typename ChildVector::iterator ChildIterator;
49 typedef typename ChildVector::const_iterator ConstChildIterator;
61 typedef impl::GridFunctionSpaceOrderingData<typename Traits::SizeType>
GFSData;
72 assert(mi.size() == 1 &&
"MultiIndex length must match GridFunctionSpace tree depth");
73 ci.push_back(mi.back());
79 _children[child_index]->map_local_index(geometry_type_index,entity_index,mi.back_popped(),ci);
82 ci.push_back(child_index);
84 else if (child_index > 0)
93 assert(
_gt_used[geometry_type_index]);
102 template<
typename ItIn,
typename ItOut>
107 for (ItIn in = begin; in != end; ++in, ++out)
109 assert(in->size() == 1 &&
"MultiIndex length must match GridFunctionSpace tree depth");
110 out->push_back(in->treeIndex().back());
115 for (ItIn in = begin; in != end; ++in, ++out)
116 out->push_back(in->treeIndex().back());
120 for (ItIn in = begin; in != end; ++in, ++out)
133 for (ItIn in = begin; in != end; ++in, ++out)
150 template<
typename CIOutIterator,
typename DIOutIterator = DummyDOFIndexIterator>
154 CIOutIterator ci_out,
const CIOutIterator ci_end,
155 DIOutIterator di_out = DIOutIterator())
const
159 const size_type geometry_type_index = Traits::DOFIndexAccessor::GeometryIndex::geometryType(ei);
160 const size_type entity_index = Traits::DOFIndexAccessor::GeometryIndex::entityIndex(ei);
171 for (size_type i = 0; i <
size; ++i, ++ci_out, ++di_out)
173 ci_out->push_back(i);
174 di_out->treeIndex().push_back(i);
182 for (; ci_out != ci_end; ++ci_out)
184 ci_out->push_back(child_index);
187 else if (child_index > 0)
190 for (; ci_out != ci_end; ++ci_out)
196 for (; ci_out != ci_end; ++ci_out)
211 Traits::DOFIndexAccessor::GeometryIndex::geometryType(
index),
212 Traits::DOFIndexAccessor::GeometryIndex::entityIndex(
index)
256 assert(
_gt_used[geometry_type_index]);
263 template<
typename Node>
270 ,
_children(TypeTree::degree(node),nullptr)
338 for (ConstChildIterator it =
_children.begin(),
371 #endif // DUNE_PDELAB_ORDERING_LOCALORDERINGBASE_HH
Traits::SizeType size(const typename Traits::SizeType geometry_type_index, const typename Traits::SizeType entity_index, const typename Traits::SizeType child_index) const
Definition: localorderingbase.hh:231
std::vector< bool > _gt_used
Definition: localorderingbase.hh:356
Definition: ordering/utility.hh:244
bool fixedSize() const
Definition: localorderingbase.hh:276
bool contains_geometry_type(typename Traits::SizeType gt_index) const
Definition: localorderingbase.hh:286
std::bitset< max_dim > CodimFlag
Definition: ordering/utility.hh:194
void disable_container_blocking()
Definition: localorderingbase.hh:320
std::vector< typename Traits::SizeType > _gt_entity_offsets
Definition: localorderingbase.hh:358
Traits::SizeType size(const typename Traits::DOFIndex::EntityIndex &index) const
Definition: localorderingbase.hh:208
LocalOrderingBase & childOrdering(typename Traits::SizeType i)
Definition: localorderingbase.hh:310
std::size_t index
Definition: interpolate.hh:118
bool _container_blocked
Definition: localorderingbase.hh:349
For backward compatibility – Do not use this!
Definition: adaptivity.hh:28
Definition: gridviewordering.hh:80
Traits::SizeType extract_entity_indices(const typename Traits::DOFIndex::EntityIndex &ei, typename Traits::SizeType child_index, CIOutIterator ci_out, const CIOutIterator ci_end, DIOutIterator di_out=DIOutIterator()) const
Definition: localorderingbase.hh:152
friend struct collect_used_geometry_types_from_cell
Definition: localorderingbase.hh:36
void map_lfs_indices(const ItIn begin, const ItIn end, ItOut out) const
Definition: localorderingbase.hh:103
Definition: ordering/utility.hh:208
static const bool has_dynamic_ordering_children
Definition: localorderingbase.hh:53
static const bool consume_tree_index
Definition: localorderingbase.hh:55
void setup_fixed_size_possible()
Initial setup of the flag indicating whether a fixed size ordering is possible.
Definition: localorderingbase.hh:335
bool _fixed_size_possible
Definition: localorderingbase.hh:348
Definition: gridviewordering.hh:430
Traits::SizeType maxLocalSize() const
Definition: localorderingbase.hh:296
friend struct extract_per_entity_sizes_from_cell
Definition: localorderingbase.hh:39
std::vector< typename Traits::SizeType > _gt_dof_offsets
Definition: localorderingbase.hh:359
GFSData * _gfs_data
Definition: localorderingbase.hh:362
const std::size_t _child_count
Definition: localorderingbase.hh:352
DI::size_type SizeType
Definition: ordering/utility.hh:201
Definition: localorderingbase.hh:19
Definition: gridviewordering.hh:171
Traits::SizeType size(const typename Traits::SizeType geometry_type_index, const typename Traits::SizeType entity_index) const
Definition: localorderingbase.hh:216
static std::size_t geometryType(const DOFIndex &dof_index)
Definition: ordering/utility.hh:129
Traits::SizeType offset(const typename Traits::SizeType geometry_type_index, const typename Traits::SizeType entity_index, const typename Traits::SizeType child_index) const
Definition: localorderingbase.hh:253
static std::size_t entityIndex(const DOFIndex &dof_index)
Definition: ordering/utility.hh:135
DI::View::TreeIndex TreeIndexView
Definition: ordering/utility.hh:199
std::size_t _max_local_size
Definition: localorderingbase.hh:350
bool contains(typename Traits::SizeType codim) const
Definition: localorderingbase.hh:291
LocalOrderingTraits< ES, DI, CI > Traits
Definition: localorderingbase.hh:57
bool _fixed_size
Definition: localorderingbase.hh:347
void map_local_index(const typename Traits::SizeType geometry_type_index, const typename Traits::SizeType entity_index, typename Traits::TreeIndexView mi, typename Traits::ContainerIndex &ci) const
Definition: localorderingbase.hh:65
Definition: gridviewordering.hh:43
Traits::CodimFlag _codim_used
Definition: localorderingbase.hh:355
std::size_t SizeType
Definition: ordering/utility.hh:162
Definition: gridviewordering.hh:321
bool contains(const GeometryType >) const
Definition: localorderingbase.hh:281
LocalOrderingBase(Node &node, bool container_blocked, GFSData *gfs_data)
Definition: localorderingbase.hh:264
Definition: gridviewordering.hh:228
const LocalOrderingBase & childOrdering(typename Traits::SizeType i) const
Definition: localorderingbase.hh:315
std::vector< typename Traits::SizeType > _entity_dof_offsets
Definition: localorderingbase.hh:360
CI ContainerIndex
Definition: ordering/utility.hh:160
std::vector< LocalOrderingBase * > _children
Definition: localorderingbase.hh:353
impl::GridFunctionSpaceOrderingData< typename Traits::SizeType > GFSData
Definition: localorderingbase.hh:61