10#ifndef MUELU_SHIFTEDLAPLACIANOPERATOR_DECL_HPP
11#define MUELU_SHIFTEDLAPLACIANOPERATOR_DECL_HPP
15#include <Tpetra_Operator.hpp>
16#include <Tpetra_MultiVector_decl.hpp>
19#include "MueLu_Utilities.hpp"
28template <class Scalar = Tpetra::Operator<>::scalar_type,
29 class LocalOrdinal =
typename Tpetra::Operator<Scalar>::local_ordinal_type,
30 class GlobalOrdinal =
typename Tpetra::Operator<Scalar, LocalOrdinal>::global_ordinal_type,
31 class Node =
typename Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
33 :
public Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node> {
34 typedef Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
Matrix;
35 typedef Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
CrsMatrix;
36 typedef Tpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
MV;
37 typedef Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>
OP;
51 const RCP<Matrix> A,
int cycles,
int iters,
int option,
double tol)
88 Teuchos::RCP<const Tpetra::Map<LocalOrdinal, GlobalOrdinal, Node> >
getDomainMap()
const;
91 Teuchos::RCP<const Tpetra::Map<LocalOrdinal, GlobalOrdinal, Node> >
getRangeMap()
const;
99 void apply(
const Tpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& X,
100 Tpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Y,
101 Teuchos::ETransp mode = Teuchos::NO_TRANS,
102 Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
103 Scalar beta = Teuchos::ScalarTraits<Scalar>::one())
const;
109 RCP<MueLu::Hierarchy<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
Hierarchy_;
110 RCP<Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
R_,
P_,
A_;
111 RCP<Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
Ac_;
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Provides methods to build a multigrid hierarchy and apply multigrid cycles.
Wraps an existing MueLu::Hierarchy as a Tpetra::Operator, with an optional two-level correction....
MueLu::Utilities< Scalar, LocalOrdinal, GlobalOrdinal, Node > MUtils
Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > CrsMatrix
RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > P_
Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > OP
RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > A_
ShiftedLaplacianOperator(const RCP< MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &H)
Constructor.
RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > R_
Teuchos::RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const
Returns the Tpetra::Map object associated with the range of this operator.
RCP< Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Ac_
RCP< Teuchos::ParameterList > BelosList_
Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > Matrix
bool hasTransposeApply() const
Indicates whether this operator supports applying the adjoint operator.
ShiftedLaplacianOperator(const RCP< MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &H, const RCP< Matrix > A, int cycles, int iters, int option, double tol)
Auxiliary Constructor.
RCP< MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Hierarchy_
Teuchos::RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const
Returns the Tpetra::Map object associated with the domain of this operator.
Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > MV
virtual ~ShiftedLaplacianOperator()
Destructor.
void apply(const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::one()) const
Returns in Y the result of a Tpetra::Operator applied to a Tpetra::MultiVector X.
Namespace for MueLu classes and methods.