19#ifndef OPM_ELEMENT_CHUNKS_HEADER
20#define OPM_ELEMENT_CHUNKS_HEADER
22#include <opm/grid/utility/createThreadIterators.hpp>
75template <
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_;
Class to simplify creating parallel yet performant threaded loops over a grid.
Definition ElementChunks.hpp:77
Holds the implementation of the CpGrid as a pimple.
Definition CellQuadrature.cpp:68
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
Definition ElementChunks.hpp:101
Definition ElementChunks.hpp:93