Thyra Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Thyra_TpetraThyraWrappers_decl.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Thyra: Interfaces and Support for Abstract Numerical Algorithms
4 //
5 // Copyright 2004 NTESS and the Thyra contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef THYRA_TPETRA_THYRA_WRAPPERS_DECL_HPP
11 #define THYRA_TPETRA_THYRA_WRAPPERS_DECL_HPP
12 
13 
14 #include "Thyra_OperatorVectorTypes.hpp"
19 #include "Thyra_LinearOpWithSolveFactoryHelpers.hpp"
20 #include "Thyra_PreconditionerFactoryHelpers.hpp"
21 #include "Tpetra_CrsMatrix.hpp"
22 
23 namespace Thyra {
24 
25 
33 RCP<const Teuchos::Comm<Ordinal> >
34 convertTpetraToThyraComm( const RCP<const Teuchos::Comm<int> > &tpetraComm );
35 
43 RCP<const Teuchos::Comm<int> >
44 convertThyraToTpetraComm( const RCP<const Teuchos::Comm<Ordinal> > &thyraComm );
45 
46 
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);
54 
55 
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
65  );
66 
67 
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
77  );
78 
79 
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
90  );
91 
92 
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
103  );
104 
105 
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
116  );
117 
118 
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
129  );
130 
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,
139  const Teuchos::RCP<PreconditionerBase<Scalar>> &prec = Teuchos::null,
140  const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
141 
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,
150  const Teuchos::RCP<PreconditionerBase<Scalar>> &prec = Teuchos::null,
151  const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
152 
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);
163 
164 
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);
175 
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);
188 
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);
201 
206 template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
207 inline SolveStatus<Scalar>
208 solve(
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);
213 
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>
239 public:
240 
244  getTpetraMap(const RCP<const VectorSpaceBase<Scalar> > &vs);
245 
250  getTpetraVector(const RCP<VectorBase<Scalar> > &v);
251 
256  getConstTpetraVector(const RCP<const VectorBase<Scalar> > &v);
257 
262  getTpetraMultiVector(const RCP<MultiVectorBase<Scalar> > &mv);
263 
268  getConstTpetraMultiVector(const RCP<const MultiVectorBase<Scalar> > &mv);
269 
274  getTpetraOperator(const RCP<LinearOpBase<Scalar> > &op);
275 
280  getConstTpetraOperator(const RCP<const LinearOpBase<Scalar> > &op);
281 
282 };
283 
284 
285 } // namespace Thyra
286 
287 
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)
static RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getTpetraMap(const RCP< const VectorSpaceBase< Scalar > > &vs)
Get a const Tpetra::Map from a const Thyra::VectorSpaceBase object.
Traits class that enables the extraction of Tpetra operator/vector objects wrapped in Thyra operator/...
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)
static RCP< const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getConstTpetraVector(const RCP< const VectorBase< Scalar > > &v)
Get a const Tpetra::Vector from a const Thyra::VectorBase object.
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)
static RCP< Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetraMultiVector(const RCP< MultiVectorBase< Scalar > > &mv)
Get a non-const Tpetra::MultiVector from a non-const Thyra::MultiVectorBase object.
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.
static RCP< Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetraVector(const RCP< VectorBase< Scalar > > &v)
Get a non-const Tpetra::Vector from a non-const Thyra::VectorBase object.
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)
static RCP< const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getConstTpetraMultiVector(const RCP< const MultiVectorBase< Scalar > > &mv)
Get a const Tpetra::MultiVector from a const Thyra::MultiVectorBase object.
static RCP< const Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getConstTpetraOperator(const RCP< const LinearOpBase< Scalar > > &op)
Get a const Tpetra::Operator from a const Thyra::LinearOpBase object.
static RCP< Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetraOperator(const RCP< LinearOpBase< Scalar > > &op)
Get a non-const Tpetra::Operator from a non-const Thyra::LinearOpBase object.
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&lt;int&gt; object, return an equivalent Teuchos::Comm&lt;Ordinal&gt; object...
RCP< const Teuchos::Comm< int > > convertThyraToTpetraComm(const RCP< const Teuchos::Comm< Ordinal > > &thyraComm)
Given an Tpetra Teuchos::Comm&lt;Ordinal&gt; object, return an equivalent Teuchos::Comm&lt;int&gt; object...