15#ifndef dealii_vector_element_access_h
16#define dealii_vector_element_access_h
29 template <
typename VectorType>
34 add(
const typename VectorType::value_type
value,
39 set(
typename VectorType::value_type
value,
43 static typename VectorType::value_type
49 template <
typename VectorType>
60 template <
typename VectorType>
71 template <
typename VectorType>
72 inline typename VectorType::value_type
81#ifdef DEAL_II_WITH_TRILINOS
90 Epetra_FEVector vector = V.trilinos_vector();
94 vector[0][trilinos_i] +=
value;
107 Epetra_FEVector vector = V.trilinos_vector();
111 vector[0][trilinos_i] =
value;
121 Epetra_FEVector vector = V.trilinos_vector();
125 return vector[0][trilinos_i];
130# ifdef DEAL_II_TRILINOS_WITH_TPETRA
131 template <
typename NumberType,
typename MemorySpace>
133 LinearAlgebra::TpetraWrappers::Vector<NumberType, MemorySpace>>
154 template <
typename NumberType,
typename MemorySpace>
158 add(
const typename VectorType::value_type
value,
163 auto vector = V.trilinos_vector();
165 vector.getMap()->getLocalElement(
168# if DEAL_II_TRILINOS_VERSION_GTE(13, 2, 0)
169 auto vector_2d = vector.template getLocalView<Kokkos::HostSpace>(
170 Tpetra::Access::ReadWrite);
172 vector.template sync<Kokkos::HostSpace>();
173 auto vector_2d = vector.template getLocalView<Kokkos::HostSpace>();
175 auto vector_1d = Kokkos::subview(vector_2d, Kokkos::ALL(), 0);
176# if !DEAL_II_TRILINOS_VERSION_GTE(13, 2, 0)
178 vector.template modify<Kokkos::HostSpace>();
180 vector_1d(trilinos_i) +=
value;
181# if !DEAL_II_TRILINOS_VERSION_GTE(13, 2, 0)
182 vector.template sync<
183 typename Tpetra::Vector<NumberType, int, types::signed_global_dof_index>::
184 device_type::memory_space>();
190 template <
typename NumberType,
typename MemorySpace>
194 set(
const typename VectorType::value_type
value,
199 auto vector = V.trilinos_vector();
201 vector.getMap()->getLocalElement(
204# if DEAL_II_TRILINOS_VERSION_GTE(13, 2, 0)
205 auto vector_2d = vector.template getLocalView<Kokkos::HostSpace>(
206 Tpetra::Access::ReadWrite);
208 vector.template sync<Kokkos::HostSpace>();
209 auto vector_2d = vector.template getLocalView<Kokkos::HostSpace>();
211 auto vector_1d = Kokkos::subview(vector_2d, Kokkos::ALL(), 0);
213# if !DEAL_II_TRILINOS_VERSION_GTE(13, 2, 0)
214 vector.template modify<Kokkos::HostSpace>();
216 vector_1d(trilinos_i) =
value;
217# if !DEAL_II_TRILINOS_VERSION_GTE(13, 2, 0)
218 vector.template sync<
219 typename Tpetra::Vector<NumberType, int, types::signed_global_dof_index>::
220 device_type::memory_space>();
226 template <
typename NumberType,
typename MemorySpace>
227 inline typename LinearAlgebra::TpetraWrappers::Vector<
NumberType,
228 MemorySpace>::value_type
230 LinearAlgebra::TpetraWrappers::Vector<NumberType, MemorySpace>>::
231 get(
const LinearAlgebra::TpetraWrappers::Vector<NumberType, MemorySpace> &V,
235# if DEAL_II_TRILINOS_VERSION_GTE(13, 2, 0)
236 const auto &vector =
V.trilinos_vector();
238 vector.template getLocalView<Kokkos::HostSpace>(Tpetra::Access::ReadOnly);
240 auto vector =
V.trilinos_vector();
241 vector.template sync<Kokkos::HostSpace>();
242 auto vector_2d = vector.template getLocalView<Kokkos::HostSpace>();
244 auto vector_1d = Kokkos::subview(vector_2d, Kokkos::ALL(), 0);
246 vector.getMap()->getLocalElement(
248 return vector_1d(trilinos_i);
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
const bool IsBlockVector< VectorType >::value
unsigned int global_dof_index
static VectorType::value_type get(const VectorType &V, const types::global_dof_index i)
LinearAlgebra::TpetraWrappers::Vector< NumberType, MemorySpace > VectorType
static void set(typename VectorType::value_type value, const types::global_dof_index i, VectorType &V)
static void add(const typename VectorType::value_type value, const types::global_dof_index i, VectorType &V)
static VectorType::value_type get(const VectorType &V, const types::global_dof_index i)
static void set(typename VectorType::value_type value, const types::global_dof_index i, VectorType &V)
static void add(const typename VectorType::value_type value, const types::global_dof_index i, VectorType &V)