79 using Iter =
decltype(std::begin(elements(std::declval<const GridView&>(), PartitionSet())));
80 using Storage = std::vector<Iter>;
81 using StorageIter =
decltype(Storage().cbegin());
84 ElementChunks(
const GridView& gv,
85 const PartitionSet included_partition,
86 const std::size_t num_chunks)
94 Chunk(
const Iter& i1,
const Iter& i2) : pi_(i1, i2) {}
95 auto begin()
const {
return pi_.first; }
96 auto end()
const {
return pi_.second; }
97 std::pair<Iter, Iter> pi_;
100 struct ChunkIterator :
public StorageIter
102 explicit ChunkIterator(
const StorageIter& itit) : StorageIter(itit) {}
103 Chunk operator*()
const
105 const StorageIter it = *
this;
106 return Chunk{*it, *(it+1)};
119 return ChunkIterator(--grid_chunk_iterators_.end());
123 return grid_chunk_iterators_.size() - 1;
126 Storage grid_chunk_iterators_;
auto createChunkIterators(const Range &r, const std::size_t num_elem, const std::size_t num_chunks)
Create a vector containing a spread of iterators into the elements of the range, to facilitate for ex...
Definition createThreadIterators.hpp:48