19 #ifndef OPM_ELEMENT_CHUNKS_HEADER 20 #define OPM_ELEMENT_CHUNKS_HEADER 22 #include <opm/grid/utility/createThreadIterators.hpp> 75 template <
class Gr
idView,
class PartitionSet>
79 using Iter = decltype(std::begin(elements(std::declval<const GridView&>(), PartitionSet())));
80 using Storage = std::vector<Iter>;
81 using StorageIter = decltype(Storage().cbegin());
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_;
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_;
132 #endif // OPM_ELEMENT_CHUNKS_HEADER Definition: ElementChunks.hpp:92
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
Holds the implementation of the CpGrid as a pimple.
Definition: CellQuadrature.cpp:71
Definition: ElementChunks.hpp:100
Class to simplify creating parallel yet performant threaded loops over a grid.
Definition: ElementChunks.hpp:76