10 #ifndef THYRA_TPETRA_THYRA_WRAPPERS_DECL_HPP 
   11 #define THYRA_TPETRA_THYRA_WRAPPERS_DECL_HPP 
   14 #include "Thyra_OperatorVectorTypes.hpp" 
   19 #include "Thyra_LinearOpWithSolveFactoryHelpers.hpp" 
   20 #include "Thyra_PreconditionerFactoryHelpers.hpp" 
   21 #include "Tpetra_CrsMatrix.hpp" 
   33 RCP<const Teuchos::Comm<Ordinal> >
 
   43 RCP<const Teuchos::Comm<int> >
 
   51 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
   52 RCP<const VectorSpaceBase<Scalar> >
 
   53 createVectorSpace(
const RCP<
const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > &tpetraMap);
 
   60 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
   61 RCP<VectorBase<Scalar> >
 
   63   const RCP<Tpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraVector,
 
   64   const RCP<
const VectorSpaceBase<Scalar> > space = 
Teuchos::null 
   72 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
   73 RCP<const VectorBase<Scalar> >
 
   75   const RCP<
const Tpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraVector,
 
   76   const RCP<
const VectorSpaceBase<Scalar> > space = 
Teuchos::null 
   84 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
   85 RCP<MultiVectorBase<Scalar> >
 
   87   const RCP<Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraMultiVector,
 
   88   const RCP<
const VectorSpaceBase<Scalar> > rangeSpace = 
Teuchos::null,
 
   89   const RCP<
const VectorSpaceBase<Scalar> > domainSpace = 
Teuchos::null 
   97 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
   98 RCP<const MultiVectorBase<Scalar> >
 
  100   const RCP<
const Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraMultiVector,
 
  101   const RCP<
const VectorSpaceBase<Scalar> > rangeSpace = 
Teuchos::null,
 
  102   const RCP<
const VectorSpaceBase<Scalar> > domainSpace = 
Teuchos::null 
  110 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  111 RCP<LinearOpBase<Scalar> >
 
  113   const RCP<Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator,
 
  114   const RCP<
const VectorSpaceBase<Scalar> > rangeSpace = 
Teuchos::null,
 
  115   const RCP<
const VectorSpaceBase<Scalar> > domainSpace = 
Teuchos::null 
  123 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  124 RCP<const LinearOpBase<Scalar> >
 
  126   const RCP<
const Tpetra::Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraOperator,
 
  127   const RCP<
const VectorSpaceBase<Scalar> > rangeSpace = 
Teuchos::null,
 
  128   const RCP<
const VectorSpaceBase<Scalar> > domainSpace = 
Teuchos::null 
  134 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  137   const PreconditionerFactoryBase<Scalar> &precFactory,
 
  138   const RCP<
const Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
 
  140   const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
 
  145 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  148   const PreconditionerFactoryBase<Scalar> &precFactory,
 
  149   const RCP<
const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
 
  151   const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
 
  157 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  158 RCP<LinearOpWithSolveBase<Scalar>>
 
  160   const LinearOpWithSolveFactoryBase<Scalar> &lowsFactory,
 
  161   const RCP<
const Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
 
  162   const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
 
  169 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  170 RCP<LinearOpWithSolveBase<Scalar>>
 
  172   const LinearOpWithSolveFactoryBase<Scalar> &lowsFactory,
 
  173   const RCP<
const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
 
  174   const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
 
  181 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  182 RCP<LinearOpWithSolveBase<Scalar>>
 
  184   const LinearOpWithSolveFactoryBase<Scalar> &lowsFactory,
 
  185   const RCP<
const Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
 
  186   const RCP<PreconditionerBase<Scalar>> &prec,
 
  187   const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
 
  194 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  195 RCP<LinearOpWithSolveBase<Scalar>>
 
  197   const LinearOpWithSolveFactoryBase<Scalar> &lowsFactory,
 
  198   const RCP<
const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
 
  199   const RCP<PreconditionerBase<Scalar>> &prec,
 
  200   const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
 
  206 template <
class Scalar, 
class LocalOrdinal, 
class GlobalOrdinal, 
class Node>
 
  207 inline SolveStatus<Scalar>
 
  209   const LinearOpWithSolveBase<Scalar> &
A, 
const EOpTransp A_trans,
 
  210   const RCP<
const Tpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraB,
 
  211   const RCP<Tpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraX,
 
  212   const Ptr<
const SolveCriteria<Scalar>> solveCriteria = 
Teuchos::null);
 
  234 template <class Scalar = Tpetra::Vector<>::scalar_type,
 
  235           class LocalOrdinal = Tpetra::Vector<>::local_ordinal_type,
 
  236           class GlobalOrdinal = Tpetra::Vector<>::global_ordinal_type,
 
  237           class Node = Tpetra::Vector<>::node_type>
 
  288 #endif // THYRA_TPETRA_THYRA_WRAPPERS_DECL_HPP 
RCP< MultiVectorBase< Scalar > > createMultiVector(const RCP< Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraMultiVector, const RCP< const VectorSpaceBase< Scalar > > rangeSpace=Teuchos::null, const RCP< const VectorSpaceBase< Scalar > > domainSpace=Teuchos::null)
 
RCP< LinearOpWithSolveBase< Scalar > > linearOpWithSolve(const LinearOpWithSolveFactoryBase< Scalar > &lowsFactory, const RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraFwdOp, const ESupportSolveUse supportSolveUse)
 
RCP< const VectorBase< Scalar > > createConstVector(const RCP< const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraVector, const RCP< const VectorSpaceBase< Scalar > > space=Teuchos::null)
 
RCP< const LinearOpBase< Scalar > > createConstLinearOp(const RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator, const RCP< const VectorSpaceBase< Scalar > > rangeSpace=Teuchos::null, const RCP< const VectorSpaceBase< Scalar > > domainSpace=Teuchos::null)
 
RCP< LinearOpBase< Scalar > > createLinearOp(const RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraOperator, const RCP< const VectorSpaceBase< Scalar > > rangeSpace=Teuchos::null, const RCP< const VectorSpaceBase< Scalar > > domainSpace=Teuchos::null)
 
RCP< VectorBase< Scalar > > createVector(const RCP< Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraVector, const RCP< const VectorSpaceBase< Scalar > > space=Teuchos::null)
 
RCP< const MultiVectorBase< Scalar > > createConstMultiVector(const RCP< const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraMultiVector, const RCP< const VectorSpaceBase< Scalar > > rangeSpace=Teuchos::null, const RCP< const VectorSpaceBase< Scalar > > domainSpace=Teuchos::null)
 
Teuchos::RCP< Thyra::PreconditionerBase< Scalar > > initializePrec(const PreconditionerFactoryBase< Scalar > &precFactory, const RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &tpetraFwdOp, const Teuchos::RCP< PreconditionerBase< Scalar >> &prec=Teuchos::null, const ESupportSolveUse supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED)
Initialize a preconditioner from a forward linear operator. 
 
SolveStatus< Scalar > solve(const LinearOpWithSolveBase< Scalar > &A, const EOpTransp A_trans, const RCP< const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraB, const RCP< Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraX, const Ptr< const SolveCriteria< Scalar > > solveCriteria)
 
RCP< LinearOpWithSolveBase< Scalar > > initializePreconditionedOp(const LinearOpWithSolveFactoryBase< Scalar > &lowsFactory, const RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraFwdOp, const RCP< PreconditionerBase< Scalar > > &prec, const ESupportSolveUse supportSolveUse)
 
RCP< const VectorSpaceBase< Scalar > > createVectorSpace(const RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > &tpetraMap)
Create a Thyra::VectorSpaceBase object given a Tpetra::Map. 
 
RCP< const Teuchos::Comm< Ordinal > > convertTpetraToThyraComm(const RCP< const Teuchos::Comm< int > > &tpetraComm)
Given an Tpetra Teuchos::Comm<int> object, return an equivalent Teuchos::Comm<Ordinal> object...
 
RCP< const Teuchos::Comm< int > > convertThyraToTpetraComm(const RCP< const Teuchos::Comm< Ordinal > > &thyraComm)
Given an Tpetra Teuchos::Comm<Ordinal> object, return an equivalent Teuchos::Comm<int> object...