10#ifndef MUELU_MATRIXFREETENTATIVEP_DECL_HPP
11#define MUELU_MATRIXFREETENTATIVEP_DECL_HPP
17#include <Tpetra_KokkosCompat_ClassicNodeAPI_Wrapper.hpp>
19#include <Teuchos_BLAS_types.hpp>
20#include "Teuchos_ScalarTraits.hpp"
23#include "Xpetra_Map_fwd.hpp"
24#include "Xpetra_MultiVector_fwd.hpp"
25#include "Xpetra_Operator_fwd.hpp"
36template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
42 typedef Kokkos::RangePolicy<local_ordinal_type, execution_space>
range_type;
43 typedef Kokkos::MDRangePolicy<local_ordinal_type, execution_space, Kokkos::Rank<2>>
md_range_type;
45 typedef typename Teuchos::ScalarTraits<Scalar>::coordinateType
real_type;
48#undef MUELU_MATRIXFREETENTATIVEP_SHORT
56 MatrixFreeTentativeP(Teuchos::RCP<const Map> coarse_map, Teuchos::RCP<const Map> fine_map, Teuchos::RCP<const Aggregates> aggregates)
66 void apply(
const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode = Teuchos::NO_TRANS,
Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
Scalar beta = Teuchos::ScalarTraits<Scalar>::zero())
const override;
69 void residual(
const MultiVector &X,
const MultiVector &B, MultiVector &R)
const override;
99#define MUELU_MATRIXFREETENTATIVEP_SHORT
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Matrix-free tentative restrictor operator.
Teuchos::RCP< const Aggregates > getAggregates() const
const Teuchos::RCP< const Map > fine_map_
Node::execution_space execution_space
LocalOrdinal local_ordinal_type
const Teuchos::RCP< const Map > getRangeMap() const override
void residual(const MultiVector &X, const MultiVector &B, MultiVector &R) const override
Kokkos::MDRangePolicy< local_ordinal_type, execution_space, Kokkos::Rank< 2 > > md_range_type
const Teuchos::RCP< const Map > coarse_map_
~MatrixFreeTentativeP()=default
Destructor.
const Teuchos::RCP< const Map > getDomainMap() const override
MatrixFreeTentativeP(Teuchos::RCP< const Map > coarse_map, Teuchos::RCP< const Map > fine_map, Teuchos::RCP< const Aggregates > aggregates)
Constructor.
Kokkos::RangePolicy< local_ordinal_type, execution_space > range_type
Teuchos::ScalarTraits< Scalar >::coordinateType real_type
const Teuchos::RCP< const Aggregates > aggregates_
void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const override
GlobalOrdinal global_ordinal_type
Namespace for MueLu classes and methods.