Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
Tpetra_LocalOperator.hpp
1// @HEADER
2// *****************************************************************************
3// Tpetra: Templated Linear Algebra Services Package
4//
5// Copyright 2008 NTESS and the Tpetra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef TPETRA_LOCALOPERATOR_HPP
11#define TPETRA_LOCALOPERATOR_HPP
12
14#include "Teuchos_BLAS_types.hpp"
15#include "KokkosKernels_ArithTraits.hpp"
16#include <type_traits>
17
18namespace Tpetra {
19
28template <class Scalar, class Device>
30 public:
31 using scalar_type = typename KokkosKernels::ArithTraits<Scalar>::val_type;
32 using array_layout = Kokkos::LayoutLeft;
33 using device_type =
34 Kokkos::Device<typename Device::execution_space,
35 typename Device::memory_space>;
36
37 virtual ~LocalOperator() = default;
38
39 virtual void
40 apply(Kokkos::View<const scalar_type**, array_layout,
41 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> >
42 X,
43 Kokkos::View<scalar_type**, array_layout,
44 device_type, Kokkos::MemoryTraits<Kokkos::Unmanaged> >
45 Y,
46 const Teuchos::ETransp mode,
47 const scalar_type alpha,
48 const scalar_type beta) const = 0;
49
50 virtual bool hasTransposeApply() const { return false; }
51};
52
53} // namespace Tpetra
54
55#endif // TPETRA_LOCALOPERATOR_HPP
Forward declaration of Tpetra::LocalCrsMatrixOperator.
Struct that holds views of the contents of a CrsMatrix.
Abstract interface for local operators (e.g., matrices and preconditioners).
Namespace Tpetra contains the class and methods constituting the Tpetra library.