4 #ifndef DUNE_PDELAB_ORDERING_ORDERINGBASE_HH
5 #define DUNE_PDELAB_ORDERING_ORDERINGBASE_HH
20 template<
typename DI,
typename CI>
25 template<
typename size_type>
26 friend struct ::Dune::PDELab::impl::update_ordering_data;
34 typedef Dune::PDELab::impl::GridFunctionSpaceOrderingData<typename Traits::SizeType>
GFSData;
127 "Invalid ordering structure: "
128 <<
"total number of blocks ("
130 <<
") is not a multiple of the interleaved block size ("
141 template<
typename Node>
143 bool container_blocked,
149 ,
_child_count(Node::has_dynamic_ordering_children ? Node::CHILDREN : 0)
164 template<
typename Node>
166 bool container_blocked,
167 const std::vector<std::size_t>& merge_offsets,
173 ,
_child_count(Node::has_dynamic_ordering_children ? Node::CHILDREN : 0)
236 size_type child_index = di.treeIndex().back();
237 _children[child_index]->mapIndex(di.back_popped(),ci);
241 ci.push_back(child_index);
249 size_type block_index = ci.back() / child_block_size;
250 size_type
offset = ci.back() % child_block_size;
253 ci.back() = child_block_offset +
offset;
254 ci.push_back(block_index);
259 ci.back() = block_index * block_size + child_block_offset +
offset;
302 #endif // DUNE_PDELAB_ORDERING_ORDERINGBASE_HH
const std::size_t offset
Definition: localfunctionspace.hh:74
void _mapIndex(typename Traits::DOFIndexView di, typename Traits::ContainerIndex &ci) const
Definition: orderingbase.hh:233
const OrderingBase & childOrdering(typename Traits::SizeType i) const
Definition: orderingbase.hh:205
std::vector< typename Traits::SizeType > _child_size_offsets
Definition: orderingbase.hh:282
Index merging algorithm for global orderings.
Definition: ordering/utility.hh:21
std::size_t _size
Definition: orderingbase.hh:289
OrderingBase(Node &node, bool container_blocked, const std::vector< std::size_t > &merge_offsets, GFSData *gfs_data, VirtualOrderingBase< DI, CI > *delegate=nullptr)
Definition: orderingbase.hh:165
bool fixedSize(typename Traits::SizeType codim) const
Definition: orderingbase.hh:215
const std::size_t _child_count
Definition: orderingbase.hh:279
DefaultLFSCacheTag CacheTag
Definition: orderingbase.hh:40
OrderingBase(Node &node, bool container_blocked, GFSData *gfs_data, VirtualOrderingBase< DI, CI > *delegate=nullptr)
Definition: orderingbase.hh:142
DI::size_type SizeType
Definition: ordering/utility.hh:201
std::vector< typename Traits::SizeType > _child_block_merge_offsets
Definition: orderingbase.hh:284
Lexicographically ordered ([i1,i2],[j1,j2] -> [i1,i2,j1,j2]).
Definition: ordering/utility.hh:25
std::vector< OrderingBase * > _children
Definition: orderingbase.hh:280
std::size_t _max_local_size
Definition: orderingbase.hh:288
Definition: ordering/utility.hh:243
Traits::SizeType maxLocalSize() const
Definition: orderingbase.hh:89
std::size_t _block_count
Definition: orderingbase.hh:290
Error related to the logical structure of an Ordering.
Definition: exceptions.hh:44
const bool _container_blocked
Definition: orderingbase.hh:276
const VirtualOrderingBase< DI, CI > * _delegate
Definition: orderingbase.hh:292
CI ContainerIndex
Definition: ordering/utility.hh:160
MergeMode::type mergeMode() const
Definition: orderingbase.hh:94
void mergePartitionSets(It begin, It end)
Adds the partitions from all PartitionInfoProviders in the range [begin,end).
Definition: partitioninfoprovider.hh:77
Traits::SizeType blockOffset(const typename Traits::SizeType child_index) const
Definition: orderingbase.hh:83
bool _fixed_size
Definition: orderingbase.hh:275
OrderingTraits< DI, CI > Traits
Definition: orderingbase.hh:30
OrderingBase & childOrdering(typename Traits::SizeType i)
Definition: orderingbase.hh:200
HierarchicContainerAllocationTag ContainerAllocationTag
Definition: orderingbase.hh:38
Definition: gridfunctionspace/tags.hh:288
std::size_t childOrderingCount() const
Definition: orderingbase.hh:195
Traits::SizeType size() const
Definition: orderingbase.hh:63
Definition: gridfunctionspace/tags.hh:280
DI::View DOFIndexView
Definition: ordering/utility.hh:198
Traits::CodimFlag _codim_used
Definition: orderingbase.hh:285
std::bitset< max_dim > CodimFlag
Definition: ordering/utility.hh:194
static const bool has_dynamic_ordering_children
Definition: orderingbase.hh:42
Traits::ContainerIndex mapIndex(const typename Traits::DOFIndex &di) const
Definition: orderingbase.hh:46
Traits::SizeType size(const typename Traits::SizeType child_index) const
Definition: orderingbase.hh:73
std::vector< typename Traits::SizeType > _child_block_offsets
Definition: orderingbase.hh:283
Definition: adaptivity.hh:27
void mapIndex(typename Traits::DOFIndexView di, typename Traits::ContainerIndex &ci) const
Definition: orderingbase.hh:53
Dune::PDELab::impl::GridFunctionSpaceOrderingData< typename Traits::SizeType > GFSData
Definition: orderingbase.hh:34
const MergeMode::type _merge_mode
Definition: orderingbase.hh:277
Traits::SizeType blockCount() const
Definition: orderingbase.hh:68
DI DOFIndex
Definition: ordering/utility.hh:158
PDELab-specific exceptions.
Mixin class for providing information about contained grid partitions.
Definition: partitioninfoprovider.hh:22
GFSData * _gfs_data
Definition: orderingbase.hh:293
void setDelegate(const VirtualOrderingBase< DI, CI > *delegate)
Set the delegate called in mapIndex().
Definition: orderingbase.hh:228
Definition: ordering/utility.hh:230
static const bool consume_tree_index
Definition: orderingbase.hh:44
bool containerBlocked() const
Definition: orderingbase.hh:190
Definition: orderingbase.hh:21
Traits::SizeType sizeOffset(const typename Traits::SizeType child_index) const
Definition: orderingbase.hh:78
Definition: ordering/utility.hh:186
Traits::CodimFlag _codim_fixed_size
Definition: orderingbase.hh:286
bool contains(typename Traits::SizeType codim) const
Definition: orderingbase.hh:210
type
Definition: ordering/utility.hh:24
void update()
Definition: orderingbase.hh:99