24#include <itertools/itertools.hpp>
33 template <
class T>
auto mpi_view(
const T &mesh, mpi::communicator c = {}) {
35 auto slice = itertools::chunk_range(0, mesh.size(), c.size(), c.rank());
36 int size = slice.second - slice.first;
38 std::vector<typename T::mesh_point_t> arr{};
41 auto iter = std::next(mesh.begin(), slice.first);
42 for ([[maybe_unused]]
auto idx : range(0, size)) {
43 arr.emplace_back(*iter);