Thyra Version of the Day
Loading...
Searching...
No Matches
Thyra_TpetraThyraWrappers_decl.hpp
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"
15#include "Thyra_TpetraVectorSpace_decl.hpp"
16#include "Thyra_TpetraVector_decl.hpp"
17#include "Thyra_TpetraMultiVector_decl.hpp"
18#include "Thyra_TpetraLinearOp_decl.hpp"
19#include "Thyra_LinearOpWithSolveFactoryHelpers.hpp"
20#include "Thyra_PreconditionerFactoryHelpers.hpp"
21#include "Tpetra_CrsMatrix.hpp"
22
23namespace Thyra {
24
25
33RCP<const Teuchos::Comm<Ordinal> >
34convertTpetraToThyraComm( const RCP<const Teuchos::Comm<int> > &tpetraComm );
35
43RCP<const Teuchos::Comm<int> >
44convertThyraToTpetraComm( const RCP<const Teuchos::Comm<Ordinal> > &thyraComm );
45
46
51template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
52RCP<const VectorSpaceBase<Scalar> >
53createVectorSpace(const RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > &tpetraMap);
54
55
60template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
63 const RCP<Tpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraVector,
64 const RCP<const VectorSpaceBase<Scalar> > space = Teuchos::null
65 );
66
67
72template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
75 const RCP<const Tpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node> > &tpetraVector,
76 const RCP<const VectorSpaceBase<Scalar> > space = Teuchos::null
77 );
78
79
84template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
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
97template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
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
110template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
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
123template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
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
134template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
136initializePrec(
137 const PreconditionerFactoryBase<Scalar> &precFactory,
138 const RCP<const Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
140 const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
141
145template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
147initializePrec(
148 const PreconditionerFactoryBase<Scalar> &precFactory,
149 const RCP<const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
151 const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
152
157template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
159linearOpWithSolve(
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
169template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
171linearOpWithSolve(
172 const LinearOpWithSolveFactoryBase<Scalar> &lowsFactory,
173 const RCP<const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>> &tpetraFwdOp,
174 const ESupportSolveUse supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED);
175
181template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
183initializePreconditionedOp(
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
194template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
196initializePreconditionedOp(
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
206template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
208solve(
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
234template <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>
283
284
285} // namespace Thyra
286
287
288#endif // THYRA_TPETRA_THYRA_WRAPPERS_DECL_HPP
Base class for all linear operators.
Base class for all linear operators that can support a high-level solve operation.
Factory interface for creating LinearOpWithSolveBase objects from compatible LinearOpBase objects.
Interface for a collection of column vectors called a multi-vector.
Simple interface class to access a precreated preconditioner as one or more linear operators objects ...
Factory interface for creating preconditioner objects from LinearOpBase objects.
Traits class that enables the extraction of Tpetra operator/vector objects wrapped in Thyra operator/...
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.
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.
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< 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.
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.
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.
Abstract interface for finite-dimensional dense vectors.
Abstract interface for objects that represent a space for vectors.
ESupportSolveUse
Enum that specifies how a LinearOpWithSolveBase object will be used for solves after it is constructe...
@ SUPPORT_SOLVE_UNSPECIFIED
How the output LOWSB object will be useded for solves in unspecified.
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
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 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)
RCP< const VectorSpaceBase< Scalar > > createVectorSpace(const RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > &tpetraMap)
Create a Thyra::VectorSpaceBase object given a Tpetra::Map.
RCP< VectorBase< Scalar > > createVector(const RCP< Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &tpetraVector, const RCP< const VectorSpaceBase< Scalar > > space=Teuchos::null)
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< 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< 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< 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.
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.
T_To & dyn_cast(T_From &from)
Simple struct that defines the requested solution criteria for a solve.
Simple struct for the return status from a solve.