44 #ifndef THYRA_AMESOS2_LINEAR_OP_WITH_SOLVE_DECL_HPP
45 #define THYRA_AMESOS2_LINEAR_OP_WITH_SOLVE_DECL_HPP
47 #include "Thyra_LinearOpWithSolveBase.hpp"
48 #include "Thyra_LinearOpSourceBase.hpp"
49 #include <Tpetra_DefaultPlatform.hpp>
50 #include <Tpetra_Map.hpp>
51 #include <Tpetra_MultiVector.hpp>
52 #include <Tpetra_CrsMatrix.hpp>
54 #include "Thyra_TpetraLinearOp.hpp"
55 #include "Thyra_TpetraThyraWrappers.hpp"
56 #include "Thyra_DefaultDiagonalLinearOp.hpp"
57 #include "Thyra_LinearOpTester.hpp"
59 #include "Amesos2.hpp"
60 #include "Amesos2_Version.hpp"
61 #include "Amesos2_Solver.hpp"
72 template<
typename Scalar>
76 using MAT = Tpetra::CrsMatrix<Scalar>;
77 using Op = Tpetra::Operator<Scalar>;
78 using MV = Tpetra::MultiVector<Scalar>;
79 using Solver = ::Amesos2::Solver<MAT, MV>;
80 using ConverterT = TpetraOperatorVectorExtraction<Scalar>;
90 const Teuchos::RCP<
const LinearOpBase<Scalar> > &fwdOp,
91 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc,
92 const Teuchos::RCP< Solver > &amesos2Solver,
93 const EOpTransp amesos2SolverTransp,
94 const Scalar amesos2SolverScalar
99 const Teuchos::RCP<
const LinearOpBase<Scalar> > &fwdOp,
100 const Teuchos::RCP<
const LinearOpSourceBase<Scalar> > &fwdOpSrc,
101 const Teuchos::RCP< Solver > &amesos2Solver
115 Teuchos::RCP<const LinearOpBase<Scalar> >
get_fwdOp()
const;
121 Teuchos::RCP<const LinearOpSourceBase<Scalar> >
get_fwdOpSrc()
const;
126 Teuchos::RCP< const VectorSpaceBase<Scalar> >
range()
const;
128 Teuchos::RCP< const VectorSpaceBase<Scalar> >
domain()
const;
130 Teuchos::RCP<const LinearOpBase<Scalar> >
clone()
const;
139 Teuchos::FancyOStream &out,
140 const Teuchos::EVerbosityLevel verbLevel
152 const EOpTransp M_trans,
153 const MultiVectorBase<Scalar> &X,
154 const Ptr<MultiVectorBase<Scalar> > &Y,
166 EOpTransp M_trans,
const SolveMeasureType& solveMeasureType
170 const EOpTransp M_trans,
171 const MultiVectorBase<Scalar> &B,
172 const Ptr<MultiVectorBase<Scalar> > &X,
173 const Ptr<
const SolveCriteria<Scalar> > solveCriteria
179 Teuchos::RCP<const LinearOpBase<Scalar> >
fwdOp_;
180 Teuchos::RCP<const LinearOpSourceBase<Scalar> >
fwdOpSrc_;
190 template<
typename Scalar>
192 Teuchos::RCP<const LinearOpBase<Scalar> >
198 template<
typename Scalar>
200 Teuchos::RCP<typename Amesos2LinearOpWithSolve<Scalar>::Solver>
203 return amesos2Solver_;
206 template<
typename Scalar>
208 Teuchos::RCP<const LinearOpSourceBase<Scalar> >
216 #endif // THYRA_AMESOS2_LINEAR_OP_WITH_SOLVE_HPP