#include <deal.II/base/utilities.h>
#include <deal.II/base/mpi.h>
#include <deal.II/base/array_view.h>
#include <iostream>
#include <vector>

using namespace dealii;

int main(int argc, char *argv[])
{
  using namespace dealii;
  
  Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1);
  MPI_Comm mpi_communicator(MPI_COMM_WORLD);
  std::vector<int> local_vector({1, 2, 3});
  ArrayView<int> my_view(local_vector);
  Utilities::MPI::sum(my_view, mpi_communicator, my_view);
  if (Utilities::MPI::this_mpi_process(mpi_communicator) == 0)
  {
    std::cout << "Summed vector is:" << std::endl;
    for (auto i : {0, 1, 2})
    {
      std::cout << local_vector[i] << " ";
    }
    std::cout << std::endl;
  }
  return 0;
}

