4#ifndef DUNE_PDELAB_ORDERING_ORDERINGBASE_HH
5#define DUNE_PDELAB_ORDERING_ORDERINGBASE_HH
19 template<
typename DI,
typename CI>
23 template<
typename size_type>
24 friend struct ::Dune::PDELab::impl::update_ordering_data;
32 typedef Dune::PDELab::impl::GridFunctionSpaceOrderingData<typename Traits::SizeType>
GFSData;
44 typename Traits::ContainerIndex
mapIndex(
const typename Traits::DOFIndex& di)
const
46 typename Traits::ContainerIndex ci;
51 void mapIndex(
typename Traits::DOFIndexView di,
typename Traits::ContainerIndex& ci)
const
125 "Invalid ordering structure: "
126 <<
"total number of blocks ("
128 <<
") is not a multiple of the interleaved block size ("
139 template<
typename Node>
141 bool container_blocked,
160 template<
typename Node>
162 bool container_blocked,
163 const std::vector<std::size_t>& merge_offsets,
232 void _mapIndex(
typename Traits::DOFIndexView di,
typename Traits::ContainerIndex& ci)
const
235 size_type child_index = di.treeIndex().back();
236 _children[child_index]->mapIndex(di.back_popped(),ci);
240 ci.push_back(child_index);
248 size_type block_index = ci.back() / child_block_size;
249 size_type
offset = ci.back() % child_block_size;
252 ci.back() = child_block_offset +
offset;
253 ci.push_back(block_index);
258 ci.back() = block_index * block_size + child_block_offset +
offset;
265 bool update_gfs_data_size(
typename Traits::SizeType&
size,
typename Traits::SizeType& block_count)
const
PDELab-specific exceptions.
const std::size_t offset
Definition localfunctionspace.hh:75
For backward compatibility – Do not use this!
Definition adaptivity.hh:28
Error related to the logical structure of an Ordering.
Definition exceptions.hh:46
Definition gridfunctionspace/tags.hh:204
Definition gridfunctionspace/tags.hh:212
Definition orderingbase.hh:21
std::size_t childOrderingCount() const
Definition orderingbase.hh:189
Dune::PDELab::impl::GridFunctionSpaceOrderingData< typename Traits::SizeType > GFSData
Definition orderingbase.hh:32
void mapIndex(typename Traits::DOFIndexView di, typename Traits::ContainerIndex &ci) const
Definition orderingbase.hh:51
Traits::SizeType blockOffset(const typename Traits::SizeType child_index) const
Definition orderingbase.hh:81
std::vector< typename Traits::SizeType > _child_block_merge_offsets
Definition orderingbase.hh:283
Traits::CodimFlag _codim_fixed_size
Definition orderingbase.hh:285
bool fixedSize() const
Definition orderingbase.hh:209
std::vector< typename Traits::SizeType > _child_size_offsets
Definition orderingbase.hh:281
Traits::CodimFlag _codim_used
Definition orderingbase.hh:284
bool containerBlocked() const
Definition orderingbase.hh:184
std::size_t _size
Definition orderingbase.hh:288
OrderingBase(Node &node, bool container_blocked, GFSData *gfs_data, VirtualOrderingBase< DI, CI > *delegate=nullptr)
Definition orderingbase.hh:140
Traits::SizeType size(const typename Traits::SizeType child_index) const
Definition orderingbase.hh:71
const MergeMode::type _merge_mode
Definition orderingbase.hh:276
void update()
Definition orderingbase.hh:97
std::vector< OrderingBase * > _children
Definition orderingbase.hh:279
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:161
OrderingTraits< DI, CI > Traits
Definition orderingbase.hh:28
Traits::SizeType maxLocalSize() const
Definition orderingbase.hh:87
Traits::SizeType blockCount() const
Definition orderingbase.hh:66
Traits::SizeType sizeOffset(const typename Traits::SizeType child_index) const
Definition orderingbase.hh:76
void setDelegate(const VirtualOrderingBase< DI, CI > *delegate)
Set the delegate called in mapIndex().
Definition orderingbase.hh:227
static const bool consume_tree_index
Definition orderingbase.hh:42
const std::size_t _child_count
Definition orderingbase.hh:278
Traits::SizeType size() const
Definition orderingbase.hh:61
OrderingBase & childOrdering(typename Traits::SizeType i)
Definition orderingbase.hh:194
std::size_t _max_local_size
Definition orderingbase.hh:287
std::size_t _block_count
Definition orderingbase.hh:289
bool contains(typename Traits::SizeType codim) const
Definition orderingbase.hh:204
MergeMode::type mergeMode() const
Definition orderingbase.hh:92
Traits::ContainerIndex mapIndex(const typename Traits::DOFIndex &di) const
Definition orderingbase.hh:44
DefaultLFSCacheTag CacheTag
Definition orderingbase.hh:38
bool fixedSize(typename Traits::SizeType codim) const
Definition orderingbase.hh:214
std::vector< typename Traits::SizeType > _child_block_offsets
Definition orderingbase.hh:282
const OrderingBase & childOrdering(typename Traits::SizeType i) const
Definition orderingbase.hh:199
const VirtualOrderingBase< DI, CI > * _delegate
Definition orderingbase.hh:291
GFSData * _gfs_data
Definition orderingbase.hh:292
bool _fixed_size
Definition orderingbase.hh:274
HierarchicContainerAllocationTag ContainerAllocationTag
Definition orderingbase.hh:36
const bool _container_blocked
Definition orderingbase.hh:275
static const bool has_dynamic_ordering_children
Definition orderingbase.hh:40
void _mapIndex(typename Traits::DOFIndexView di, typename Traits::ContainerIndex &ci) const
Definition orderingbase.hh:232
Index merging algorithm for global orderings.
Definition ordering/utility.hh:22
type
Definition ordering/utility.hh:24
@ lexicographic
Lexicographically ordered ([i1,i2],[j1,j2] -> [i1,i2,j1,j2]).
Definition ordering/utility.hh:25
Definition ordering/utility.hh:188
DI::size_type SizeType
Definition ordering/utility.hh:201
Definition ordering/utility.hh:232
Definition ordering/utility.hh:248