Hello
I am trying to copy a
TrilinosWrappers::MPI::Vector tmp;
into a
LinearAlgebra::distributed::Vector euler;
Code is below.
This seems to work with one rank in the sense that my code runs as expected.
But not with more than one rank; my code fails at a later stage and I suspect this copying is not working correctly.
Both vector use same triangulation and dofhandler.
Is there a proper way to do this ?
I have seen ReadWriteVector; should I use this to transfer b/w the two vectors ?
thanks
praveen
const FESystem<dim> fe(FE_Q<dim>(degree), dim);
dof_handler.clear();
dof_handler.distribute_dofs(fe);
TrilinosWrappers::MPI::Vector tmp;
Winslow::compute_mapping(degree,
*triangulation,
dof_handler,
tmp); // compute tmp vector
// Copy tmp into euler
const auto &locally_owned_dofs = dof_handler.locally_owned_dofs();
const auto locally_relevant_dofs =
DoFTools::extract_locally_relevant_dofs(dof_handler);
euler.reinit(locally_owned_dofs,
locally_relevant_dofs,
dof_handler.get_mpi_communicator());
// Copy local elements
std::copy_n(tmp.trilinos_vector().Values(),
tmp.locally_owned_elements().n_elements(),
euler.begin());
euler.update_ghost_values();