From 3196308c77eda4cae028ffcc89cc6f2eccc36f0f Mon Sep 17 00:00:00 2001 From: Daniel Arndt Date: Thu, 13 Jul 2023 09:09:20 -0400 Subject: [PATCH] Copy Tpetra vector if we need to call "sync" --- include/deal.II/lac/vector_element_access.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/include/deal.II/lac/vector_element_access.h b/include/deal.II/lac/vector_element_access.h index fbc849e1b9..4d7d687301 100644 --- a/include/deal.II/lac/vector_element_access.h +++ b/include/deal.II/lac/vector_element_access.h @@ -228,20 +228,21 @@ namespace internal const types::global_dof_index i) { // Extract local indices in the vector. - const Tpetra::Vector - & vector = V.trilinos_vector(); - TrilinosWrappers::types::int_type trilinos_i = - vector.getMap()->getLocalElement( - static_cast(i)); - # if DEAL_II_TRILINOS_VERSION_GTE(13, 2, 0) + const Tpetra::Vector + & vector = V.trilinos_vector(); auto vector_2d = vector.template getLocalView(Tpetra::Access::ReadOnly); # else + Tpetra::Vector vector = + V.trilinos_vector(); vector.template sync(); auto vector_2d = vector.template getLocalView(); # endif auto vector_1d = Kokkos::subview(vector_2d, Kokkos::ALL(), 0); + TrilinosWrappers::types::int_type trilinos_i = + vector.getMap()->getLocalElement( + static_cast(i)); return vector_1d(trilinos_i); } # endif -- 2.39.5