46 #ifndef MUELU_SHIFTEDLAPLACIANOPERATOR_DECL_HPP 47 #define MUELU_SHIFTEDLAPLACIANOPERATOR_DECL_HPP 51 #ifdef HAVE_MUELU_TPETRA 52 #include <Tpetra_Operator.hpp> 53 #include <Tpetra_MultiVector_decl.hpp> 56 #include "MueLu_Utilities.hpp" 59 #include <BelosConfigDefs.hpp> 60 #include <BelosLinearProblem.hpp> 61 #include <BelosBlockGmresSolMgr.hpp> 70 template <class Scalar = Tpetra::Operator<>::scalar_type,
71 class LocalOrdinal =
typename Tpetra::Operator<Scalar>::local_ordinal_type,
72 class GlobalOrdinal =
typename Tpetra::Operator<Scalar, LocalOrdinal>::global_ordinal_type,
73 class Node =
typename Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
74 class ShiftedLaplacianOperator
75 :
public Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node>
78 typedef Xpetra::Matrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>
Matrix;
79 typedef Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>
CrsMatrix;
80 typedef Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>
MV;
81 typedef Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node>
OP;
129 Teuchos::RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
getDomainMap()
const;
132 Teuchos::RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
getRangeMap()
const;
140 void apply(
const Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>& X,
141 Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>& Y,
142 Teuchos::ETransp mode = Teuchos::NO_TRANS,
143 Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
144 Scalar beta = Teuchos::ScalarTraits<Scalar>::one())
const;
151 RCP<MueLu::Hierarchy<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
Hierarchy_;
152 RCP< Xpetra::Matrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> >
R_,
P_,
A_;
153 RCP< Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> >
Ac_;
155 RCP< Belos::LinearProblem<Scalar,MV,OP> >
BelosLP_;
156 RCP< Belos::SolverManager<Scalar,MV,OP> >
BelosSM_;
167 #endif //ifdef HAVE_MUELU_TPETRA 169 #endif // MUELU_SHIFTEDLAPLACIANOPERATOR_DECL_HPP RCP< Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Ac_
Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > MV
Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > CrsMatrix
RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > R_
Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > OP
Teuchos::RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const
Returns the Tpetra::Map object associated with the domain of this operator.
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.
virtual ~ShiftedLaplacianOperator()
Destructor.
bool hasTransposeApply() const
Indicates whether this operator supports applying the adjoint operator.
MueLu::Utils< Scalar, LocalOrdinal, GlobalOrdinal, Node > MUtils
Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > Matrix
RCP< MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Hierarchy_
RCP< Teuchos::ParameterList > BelosList_
RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > A_
RCP< Belos::LinearProblem< Scalar, MV, OP > > BelosLP_
Teuchos::RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const
Returns the Tpetra::Map object associated with the range of this operator.
ShiftedLaplacianOperator(const RCP< MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &H)
Constructor.
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< Belos::SolverManager< Scalar, MV, OP > > BelosSM_
RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > P_
Provides methods to build a multigrid hierarchy and apply multigrid cycles.