10 #ifndef TPETRA_LOCALOPERATOR_HPP
11 #define TPETRA_LOCALOPERATOR_HPP
14 #include "Teuchos_BLAS_types.hpp"
15 #if KOKKOS_VERSION >= 40799
16 #include "KokkosKernels_ArithTraits.hpp"
18 #include "Kokkos_ArithTraits.hpp"
20 #include <type_traits>
32 template <
class Scalar,
class Device>
35 #if KOKKOS_VERSION >= 40799
36 using scalar_type =
typename KokkosKernels::ArithTraits<Scalar>::val_type;
38 using scalar_type =
typename Kokkos::ArithTraits<Scalar>::val_type;
40 using array_layout = Kokkos::LayoutLeft;
42 Kokkos::Device<
typename Device::execution_space,
43 typename Device::memory_space>;
48 apply(Kokkos::View<
const scalar_type**, array_layout,
49 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> >
51 Kokkos::View<scalar_type**, array_layout,
52 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> >
54 const Teuchos::ETransp mode,
55 const scalar_type alpha,
56 const scalar_type beta)
const = 0;
58 virtual bool hasTransposeApply()
const {
return false; }
63 #endif // TPETRA_LOCALOPERATOR_HPP
Abstract interface for local operators (e.g., matrices and preconditioners).
Forward declaration of Tpetra::LocalCrsMatrixOperator.